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 <li 772 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li> 773 774 <li 775 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li> 776 <li 777 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li> 778 <li 779 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li> 780 <li 781 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li> 782 <li 783 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li> 784 <li 785 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li> 786 <li 787 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li> 788 <li 789 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li> 790 <li 791 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> 792 <li 793 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li> 794 <li 795 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> 796 <li 797 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li> 798 <li 799 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li> 800 <li 801 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li> 802 </ul> 803 </li> 804 <li> 805 <span class="toc_kind_header">dynamic</span> 806 <ul class="toc_section"> 807 <li 808 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 809 <li 810 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 811 <li 812 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 813 <li 814 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> 815 <li 816 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> 817 <li 818 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li> 819 <li 820 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li> 821 <li 822 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li> 823 <li 824 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li> 825 <li 826 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li> 827 <li 828 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 829 <li 830 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 831 <li 832 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li> 833 </ul> 834 </li> 835 </ul> <!-- toc_section --> 836 </li> 837 <li> 838 <span class="toc_section_header"><a href="#section_shading">shading</a></span> 839 <ul class="toc_section"> 840 <li> 841 <span class="toc_kind_header">controls</span> 842 <ul class="toc_section"> 843 <li 844 ><a href="#controls_android.shading.mode">android.shading.mode</a></li> 845 <li 846 ><a href="#controls_android.shading.strength">android.shading.strength</a></li> 847 </ul> 848 </li> 849 <li> 850 <span class="toc_kind_header">dynamic</span> 851 <ul class="toc_section"> 852 <li 853 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> 854 </ul> 855 </li> 856 <li> 857 <span class="toc_kind_header">static</span> 858 <ul class="toc_section"> 859 <li 860 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li> 861 </ul> 862 </li> 863 </ul> <!-- toc_section --> 864 </li> 865 <li> 866 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span> 867 <ul class="toc_section"> 868 <li> 869 <span class="toc_kind_header">controls</span> 870 <ul class="toc_section"> 871 <li 872 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 873 <li 874 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 875 <li 876 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 877 <li 878 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 879 <li 880 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 881 </ul> 882 </li> 883 <li> 884 <span class="toc_kind_header">static</span> 885 <ul class="toc_section"> 886 887 <li 888 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> 889 <li 890 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> 891 <li 892 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> 893 <li 894 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> 895 <li 896 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> 897 <li 898 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> 899 <li 900 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li> 901 <li 902 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li> 903 904 </ul> 905 </li> 906 <li> 907 <span class="toc_kind_header">dynamic</span> 908 <ul class="toc_section"> 909 <li 910 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 911 <li 912 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> 913 <li 914 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> 915 <li 916 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> 917 <li 918 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> 919 <li 920 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li> 921 <li 922 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> 923 <li 924 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 925 <li 926 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> 927 <li 928 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 929 <li 930 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li> 931 <li 932 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> 933 <li 934 class="toc_deprecated" 935 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> 936 <li 937 class="toc_deprecated" 938 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> 939 <li 940 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> 941 <li 942 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 943 <li 944 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li> 945 <li 946 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 947 </ul> 948 </li> 949 </ul> <!-- toc_section --> 950 </li> 951 <li> 952 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> 953 <ul class="toc_section"> 954 <li> 955 <span class="toc_kind_header">controls</span> 956 <ul class="toc_section"> 957 <li 958 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 959 <li 960 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 961 <li 962 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 963 <li 964 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li> 965 <li 966 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> 967 <li 968 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li> 969 <li 970 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 971 </ul> 972 </li> 973 <li> 974 <span class="toc_kind_header">static</span> 975 <ul class="toc_section"> 976 <li 977 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> 978 <li 979 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li> 980 </ul> 981 </li> 982 <li> 983 <span class="toc_kind_header">dynamic</span> 984 <ul class="toc_section"> 985 <li 986 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 987 <li 988 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 989 <li 990 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 991 <li 992 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li> 993 <li 994 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> 995 <li 996 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li> 997 <li 998 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 999 </ul> 1000 </li> 1001 </ul> <!-- toc_section --> 1002 </li> 1003 <li> 1004 <span class="toc_section_header"><a href="#section_led">led</a></span> 1005 <ul class="toc_section"> 1006 <li> 1007 <span class="toc_kind_header">controls</span> 1008 <ul class="toc_section"> 1009 <li 1010 ><a href="#controls_android.led.transmit">android.led.transmit</a></li> 1011 </ul> 1012 </li> 1013 <li> 1014 <span class="toc_kind_header">dynamic</span> 1015 <ul class="toc_section"> 1016 <li 1017 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> 1018 </ul> 1019 </li> 1020 <li> 1021 <span class="toc_kind_header">static</span> 1022 <ul class="toc_section"> 1023 <li 1024 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> 1025 </ul> 1026 </li> 1027 </ul> <!-- toc_section --> 1028 </li> 1029 <li> 1030 <span class="toc_section_header"><a href="#section_info">info</a></span> 1031 <ul class="toc_section"> 1032 <li> 1033 <span class="toc_kind_header">static</span> 1034 <ul class="toc_section"> 1035 <li 1036 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> 1037 </ul> 1038 </li> 1039 </ul> <!-- toc_section --> 1040 </li> 1041 <li> 1042 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> 1043 <ul class="toc_section"> 1044 <li> 1045 <span class="toc_kind_header">controls</span> 1046 <ul class="toc_section"> 1047 <li 1048 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> 1049 </ul> 1050 </li> 1051 <li> 1052 <span class="toc_kind_header">dynamic</span> 1053 <ul class="toc_section"> 1054 <li 1055 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> 1056 </ul> 1057 </li> 1058 </ul> <!-- toc_section --> 1059 </li> 1060 <li> 1061 <span class="toc_section_header"><a href="#section_sync">sync</a></span> 1062 <ul class="toc_section"> 1063 <li> 1064 <span class="toc_kind_header">dynamic</span> 1065 <ul class="toc_section"> 1066 <li 1067 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> 1068 </ul> 1069 </li> 1070 <li> 1071 <span class="toc_kind_header">static</span> 1072 <ul class="toc_section"> 1073 <li 1074 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> 1075 </ul> 1076 </li> 1077 </ul> <!-- toc_section --> 1078 </li> 1079 <li> 1080 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span> 1081 <ul class="toc_section"> 1082 <li> 1083 <span class="toc_kind_header">controls</span> 1084 <ul class="toc_section"> 1085 <li 1086 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1087 </ul> 1088 </li> 1089 <li> 1090 <span class="toc_kind_header">dynamic</span> 1091 <ul class="toc_section"> 1092 <li 1093 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1094 </ul> 1095 </li> 1096 <li> 1097 <span class="toc_kind_header">static</span> 1098 <ul class="toc_section"> 1099 <li 1100 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li> 1101 </ul> 1102 </li> 1103 </ul> <!-- toc_section --> 1104 </li> 1105 <li> 1106 <span class="toc_section_header"><a href="#section_depth">depth</a></span> 1107 <ul class="toc_section"> 1108 <li> 1109 <span class="toc_kind_header">static</span> 1110 <ul class="toc_section"> 1111 <li 1112 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li> 1113 <li 1114 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li> 1115 <li 1116 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li> 1117 <li 1118 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li> 1119 <li 1120 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li> 1121 </ul> 1122 </li> 1123 </ul> <!-- toc_section --> 1124 </li> 1125 </ul> 1126 1127 1128 <h1>Properties</h1> 1129 <table class="properties"> 1130 1131 <thead class="thead_dummy"> 1132 <tr> 1133 <th class="th_name">Property Name</th> 1134 <th class="th_type">Type</th> 1135 <th class="th_description">Description</th> 1136 <th class="th_units">Units</th> 1137 <th class="th_range">Range</th> 1138 <th class="th_tags">Tags</th> 1139 </tr> 1140 </thead> <!-- so that the first occurrence of thead is not 1141 above the first occurrence of tr --> 1142 <!-- <namespace name="android"> --> 1143 <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr> 1144 1145 1146 <tr><td colspan="6" class="kind">controls</td></tr> 1147 1148 <thead class="entries_header"> 1149 <tr> 1150 <th class="th_name">Property Name</th> 1151 <th class="th_type">Type</th> 1152 <th class="th_description">Description</th> 1153 <th class="th_units">Units</th> 1154 <th class="th_range">Range</th> 1155 <th class="th_tags">Tags</th> 1156 </tr> 1157 </thead> 1158 1159 <tbody> 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 <tr class="entry" id="controls_android.colorCorrection.mode"> 1171 <td class="entry_name 1172 " rowspan="5"> 1173 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1174 </td> 1175 <td class="entry_type"> 1176 <span class="entry_type_name entry_type_name_enum">byte</span> 1177 1178 <span class="entry_type_visibility"> [public]</span> 1179 1180 1181 <span class="entry_type_hwlevel">[full] </span> 1182 1183 1184 1185 <ul class="entry_type_enum"> 1186 <li> 1187 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1188 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1189 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1190 <p>All advanced white balance adjustments (not specified 1191 by our white balance pipeline) must be disabled.<wbr/></p> 1192 <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 1193 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1194 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1195 </li> 1196 <li> 1197 <span class="entry_type_enum_name">FAST</span> 1198 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1199 capture rate relative to sensor raw output.<wbr/></p> 1200 <p>Advanced white balance adjustments above and beyond 1201 the 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 1203 the camera device uses the last frame's AWB values 1204 (or defaults if AWB has never been run).<wbr/></p></span> 1205 </li> 1206 <li> 1207 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1208 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1209 quality but the capture rate might be reduced (relative to sensor 1210 raw output rate)</p> 1211 <p>Advanced white balance adjustments above and beyond 1212 the specified white balance pipeline may be applied.<wbr/></p> 1213 <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 1214 the camera device uses the last frame's AWB values 1215 (or defaults if AWB has never been run).<wbr/></p></span> 1216 </li> 1217 </ul> 1218 1219 </td> <!-- entry_type --> 1220 1221 <td class="entry_description"> 1222 <p>The mode control selects how the image data is converted from the 1223 sensor's native color into linear sRGB color.<wbr/></p> 1224 </td> 1225 1226 <td class="entry_units"> 1227 </td> 1228 1229 <td class="entry_range"> 1230 </td> 1231 1232 <td class="entry_tags"> 1233 </td> 1234 1235 </tr> 1236 <tr class="entries_header"> 1237 <th class="th_details" colspan="5">Details</th> 1238 </tr> 1239 <tr class="entry_cont"> 1240 <td class="entry_details" colspan="5"> 1241 <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 1242 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1243 application controls how the color mapping is performed.<wbr/></p> 1244 <p>We define the expected processing pipeline below.<wbr/> For consistency 1245 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1246 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1247 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1248 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1249 camera device (in the results) and be roughly correct.<wbr/></p> 1250 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1251 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1252 as what was produced by the camera device in the earlier frame.<wbr/></p> 1253 <p>The expected processing pipeline is as follows:</p> 1254 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1255 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1256 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1257 matrix (applied after demosaic).<wbr/></p> 1258 <p>The 4-channel white-balance gains are defined as:</p> 1259 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1260 </code></pre> 1261 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1262 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1263 These may be identical for a given camera device implementation; if 1264 the camera device does not support a separate gain for even/<wbr/>odd green 1265 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1266 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1267 <p>The matrices for color transforms are defined as a 9-entry vector:</p> 1268 <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 ] 1269 </code></pre> 1270 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1271 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1272 <p>with colors as follows:</p> 1273 <pre><code>r' = I0r + I1g + I2b 1274 g' = I3r + I4g + I5b 1275 b' = I6r + I7g + I8b 1276 </code></pre> 1277 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1278 values are clipped to fit within the range.<wbr/></p> 1279 </td> 1280 </tr> 1281 1282 <tr class="entries_header"> 1283 <th class="th_details" colspan="5">HAL Implementation Details</th> 1284 </tr> 1285 <tr class="entry_cont"> 1286 <td class="entry_details" colspan="5"> 1287 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1288 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1289 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1290 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1291 </td> 1292 </tr> 1293 1294 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1295 <!-- end of entry --> 1296 1297 1298 <tr class="entry" id="controls_android.colorCorrection.transform"> 1299 <td class="entry_name 1300 " rowspan="3"> 1301 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1302 </td> 1303 <td class="entry_type"> 1304 <span class="entry_type_name">rational</span> 1305 <span class="entry_type_container">x</span> 1306 1307 <span class="entry_type_array"> 1308 3 x 3 1309 </span> 1310 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1311 1312 1313 <span class="entry_type_hwlevel">[full] </span> 1314 1315 1316 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1317 1318 1319 </td> <!-- entry_type --> 1320 1321 <td class="entry_description"> 1322 <p>A color transform matrix to use to transform 1323 from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1324 </td> 1325 1326 <td class="entry_units"> 1327 Unitless scale factors 1328 </td> 1329 1330 <td class="entry_range"> 1331 </td> 1332 1333 <td class="entry_tags"> 1334 </td> 1335 1336 </tr> 1337 <tr class="entries_header"> 1338 <th class="th_details" colspan="5">Details</th> 1339 </tr> 1340 <tr class="entry_cont"> 1341 <td class="entry_details" colspan="5"> 1342 <p>This matrix is either set by the camera device when the request 1343 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1344 directly by the application in the request when the 1345 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1346 <p>In the latter case,<wbr/> the camera device may round the matrix to account 1347 for precision issues; the final rounded matrix should be reported back 1348 in this matrix result metadata.<wbr/> The transform should keep the magnitude 1349 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1350 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1351 <p>The valid range of each matrix element varies on different devices,<wbr/> but 1352 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1353 </td> 1354 </tr> 1355 1356 1357 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1358 <!-- end of entry --> 1359 1360 1361 <tr class="entry" id="controls_android.colorCorrection.gains"> 1362 <td class="entry_name 1363 " rowspan="5"> 1364 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1365 </td> 1366 <td class="entry_type"> 1367 <span class="entry_type_name">float</span> 1368 <span class="entry_type_container">x</span> 1369 1370 <span class="entry_type_array"> 1371 4 1372 </span> 1373 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1374 1375 1376 <span class="entry_type_hwlevel">[full] </span> 1377 1378 1379 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1380 1381 1382 </td> <!-- entry_type --> 1383 1384 <td class="entry_description"> 1385 <p>Gains applying to Bayer raw color channels for 1386 white-balance.<wbr/></p> 1387 </td> 1388 1389 <td class="entry_units"> 1390 Unitless gain factors 1391 </td> 1392 1393 <td class="entry_range"> 1394 </td> 1395 1396 <td class="entry_tags"> 1397 </td> 1398 1399 </tr> 1400 <tr class="entries_header"> 1401 <th class="th_details" colspan="5">Details</th> 1402 </tr> 1403 <tr class="entry_cont"> 1404 <td class="entry_details" colspan="5"> 1405 <p>These per-channel gains are either set by the camera device 1406 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1407 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1408 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1409 TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1410 <p>The gains in the result metadata are the gains actually 1411 applied by the camera device to the current frame.<wbr/></p> 1412 <p>The valid range of gains varies on different devices,<wbr/> but gains 1413 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1414 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1415 this can create color artifacts.<wbr/></p> 1416 </td> 1417 </tr> 1418 1419 <tr class="entries_header"> 1420 <th class="th_details" colspan="5">HAL Implementation Details</th> 1421 </tr> 1422 <tr class="entry_cont"> 1423 <td class="entry_details" colspan="5"> 1424 <p>The 4-channel white-balance gains are defined in 1425 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1426 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1427 is the gain for green pixels on the odd rows.<wbr/></p> 1428 <p>If a HAL does not support a separate gain for even/<wbr/>odd green 1429 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1430 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1431 </td> 1432 </tr> 1433 1434 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1435 <!-- end of entry --> 1436 1437 1438 <tr class="entry" id="controls_android.colorCorrection.aberrationMode"> 1439 <td class="entry_name 1440 " rowspan="3"> 1441 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1442 </td> 1443 <td class="entry_type"> 1444 <span class="entry_type_name entry_type_name_enum">byte</span> 1445 1446 <span class="entry_type_visibility"> [public]</span> 1447 1448 1449 <span class="entry_type_hwlevel">[legacy] </span> 1450 1451 1452 1453 <ul class="entry_type_enum"> 1454 <li> 1455 <span class="entry_type_enum_name">OFF</span> 1456 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1457 </li> 1458 <li> 1459 <span class="entry_type_enum_name">FAST</span> 1460 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1461 relative to sensor raw output.<wbr/></p></span> 1462 </li> 1463 <li> 1464 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1465 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1466 reduced (relative to sensor raw output rate)</p></span> 1467 </li> 1468 </ul> 1469 1470 </td> <!-- entry_type --> 1471 1472 <td class="entry_description"> 1473 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1474 </td> 1475 1476 <td class="entry_units"> 1477 </td> 1478 1479 <td class="entry_range"> 1480 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1481 </td> 1482 1483 <td class="entry_tags"> 1484 </td> 1485 1486 </tr> 1487 <tr class="entries_header"> 1488 <th class="th_details" colspan="5">Details</th> 1489 </tr> 1490 <tr class="entry_cont"> 1491 <td class="entry_details" colspan="5"> 1492 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1493 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1494 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1495 minimize the chromatic artifacts that may occur along the object boundaries in an 1496 image.<wbr/></p> 1497 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1498 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1499 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1500 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1501 applying aberration correction.<wbr/></p> 1502 <p>LEGACY devices will always be in FAST mode.<wbr/></p> 1503 </td> 1504 </tr> 1505 1506 1507 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1508 <!-- end of entry --> 1509 1510 1511 1512 <!-- end of kind --> 1513 </tbody> 1514 <tr><td colspan="6" class="kind">dynamic</td></tr> 1515 1516 <thead class="entries_header"> 1517 <tr> 1518 <th class="th_name">Property Name</th> 1519 <th class="th_type">Type</th> 1520 <th class="th_description">Description</th> 1521 <th class="th_units">Units</th> 1522 <th class="th_range">Range</th> 1523 <th class="th_tags">Tags</th> 1524 </tr> 1525 </thead> 1526 1527 <tbody> 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 <tr class="entry" id="dynamic_android.colorCorrection.mode"> 1539 <td class="entry_name 1540 " rowspan="5"> 1541 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1542 </td> 1543 <td class="entry_type"> 1544 <span class="entry_type_name entry_type_name_enum">byte</span> 1545 1546 <span class="entry_type_visibility"> [public]</span> 1547 1548 1549 <span class="entry_type_hwlevel">[full] </span> 1550 1551 1552 1553 <ul class="entry_type_enum"> 1554 <li> 1555 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1556 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1557 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1558 <p>All advanced white balance adjustments (not specified 1559 by our white balance pipeline) must be disabled.<wbr/></p> 1560 <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 1561 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1562 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1563 </li> 1564 <li> 1565 <span class="entry_type_enum_name">FAST</span> 1566 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1567 capture rate relative to sensor raw output.<wbr/></p> 1568 <p>Advanced white balance adjustments above and beyond 1569 the 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 1571 the camera device uses the last frame's AWB values 1572 (or defaults if AWB has never been run).<wbr/></p></span> 1573 </li> 1574 <li> 1575 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1576 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1577 quality but the capture rate might be reduced (relative to sensor 1578 raw output rate)</p> 1579 <p>Advanced white balance adjustments above and beyond 1580 the specified white balance pipeline may be applied.<wbr/></p> 1581 <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 1582 the camera device uses the last frame's AWB values 1583 (or defaults if AWB has never been run).<wbr/></p></span> 1584 </li> 1585 </ul> 1586 1587 </td> <!-- entry_type --> 1588 1589 <td class="entry_description"> 1590 <p>The mode control selects how the image data is converted from the 1591 sensor's native color into linear sRGB color.<wbr/></p> 1592 </td> 1593 1594 <td class="entry_units"> 1595 </td> 1596 1597 <td class="entry_range"> 1598 </td> 1599 1600 <td class="entry_tags"> 1601 </td> 1602 1603 </tr> 1604 <tr class="entries_header"> 1605 <th class="th_details" colspan="5">Details</th> 1606 </tr> 1607 <tr class="entry_cont"> 1608 <td class="entry_details" colspan="5"> 1609 <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 1610 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1611 application controls how the color mapping is performed.<wbr/></p> 1612 <p>We define the expected processing pipeline below.<wbr/> For consistency 1613 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1614 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1615 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1616 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1617 camera device (in the results) and be roughly correct.<wbr/></p> 1618 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1619 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1620 as what was produced by the camera device in the earlier frame.<wbr/></p> 1621 <p>The expected processing pipeline is as follows:</p> 1622 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1623 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1624 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1625 matrix (applied after demosaic).<wbr/></p> 1626 <p>The 4-channel white-balance gains are defined as:</p> 1627 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1628 </code></pre> 1629 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1630 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1631 These may be identical for a given camera device implementation; if 1632 the camera device does not support a separate gain for even/<wbr/>odd green 1633 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1634 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1635 <p>The matrices for color transforms are defined as a 9-entry vector:</p> 1636 <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 ] 1637 </code></pre> 1638 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1639 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1640 <p>with colors as follows:</p> 1641 <pre><code>r' = I0r + I1g + I2b 1642 g' = I3r + I4g + I5b 1643 b' = I6r + I7g + I8b 1644 </code></pre> 1645 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1646 values are clipped to fit within the range.<wbr/></p> 1647 </td> 1648 </tr> 1649 1650 <tr class="entries_header"> 1651 <th class="th_details" colspan="5">HAL Implementation Details</th> 1652 </tr> 1653 <tr class="entry_cont"> 1654 <td class="entry_details" colspan="5"> 1655 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1656 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1657 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1658 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1659 </td> 1660 </tr> 1661 1662 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1663 <!-- end of entry --> 1664 1665 1666 <tr class="entry" id="dynamic_android.colorCorrection.transform"> 1667 <td class="entry_name 1668 " rowspan="3"> 1669 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1670 </td> 1671 <td class="entry_type"> 1672 <span class="entry_type_name">rational</span> 1673 <span class="entry_type_container">x</span> 1674 1675 <span class="entry_type_array"> 1676 3 x 3 1677 </span> 1678 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1679 1680 1681 <span class="entry_type_hwlevel">[full] </span> 1682 1683 1684 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1685 1686 1687 </td> <!-- entry_type --> 1688 1689 <td class="entry_description"> 1690 <p>A color transform matrix to use to transform 1691 from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1692 </td> 1693 1694 <td class="entry_units"> 1695 Unitless scale factors 1696 </td> 1697 1698 <td class="entry_range"> 1699 </td> 1700 1701 <td class="entry_tags"> 1702 </td> 1703 1704 </tr> 1705 <tr class="entries_header"> 1706 <th class="th_details" colspan="5">Details</th> 1707 </tr> 1708 <tr class="entry_cont"> 1709 <td class="entry_details" colspan="5"> 1710 <p>This matrix is either set by the camera device when the request 1711 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1712 directly by the application in the request when the 1713 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1714 <p>In the latter case,<wbr/> the camera device may round the matrix to account 1715 for precision issues; the final rounded matrix should be reported back 1716 in this matrix result metadata.<wbr/> The transform should keep the magnitude 1717 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1718 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1719 <p>The valid range of each matrix element varies on different devices,<wbr/> but 1720 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1721 </td> 1722 </tr> 1723 1724 1725 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1726 <!-- end of entry --> 1727 1728 1729 <tr class="entry" id="dynamic_android.colorCorrection.gains"> 1730 <td class="entry_name 1731 " rowspan="5"> 1732 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1733 </td> 1734 <td class="entry_type"> 1735 <span class="entry_type_name">float</span> 1736 <span class="entry_type_container">x</span> 1737 1738 <span class="entry_type_array"> 1739 4 1740 </span> 1741 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1742 1743 1744 <span class="entry_type_hwlevel">[full] </span> 1745 1746 1747 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1748 1749 1750 </td> <!-- entry_type --> 1751 1752 <td class="entry_description"> 1753 <p>Gains applying to Bayer raw color channels for 1754 white-balance.<wbr/></p> 1755 </td> 1756 1757 <td class="entry_units"> 1758 Unitless gain factors 1759 </td> 1760 1761 <td class="entry_range"> 1762 </td> 1763 1764 <td class="entry_tags"> 1765 </td> 1766 1767 </tr> 1768 <tr class="entries_header"> 1769 <th class="th_details" colspan="5">Details</th> 1770 </tr> 1771 <tr class="entry_cont"> 1772 <td class="entry_details" colspan="5"> 1773 <p>These per-channel gains are either set by the camera device 1774 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1775 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1776 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1777 TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1778 <p>The gains in the result metadata are the gains actually 1779 applied by the camera device to the current frame.<wbr/></p> 1780 <p>The valid range of gains varies on different devices,<wbr/> but gains 1781 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1782 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1783 this can create color artifacts.<wbr/></p> 1784 </td> 1785 </tr> 1786 1787 <tr class="entries_header"> 1788 <th class="th_details" colspan="5">HAL Implementation Details</th> 1789 </tr> 1790 <tr class="entry_cont"> 1791 <td class="entry_details" colspan="5"> 1792 <p>The 4-channel white-balance gains are defined in 1793 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1794 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1795 is the gain for green pixels on the odd rows.<wbr/></p> 1796 <p>If a HAL does not support a separate gain for even/<wbr/>odd green 1797 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1798 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1799 </td> 1800 </tr> 1801 1802 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1803 <!-- end of entry --> 1804 1805 1806 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode"> 1807 <td class="entry_name 1808 " rowspan="3"> 1809 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1810 </td> 1811 <td class="entry_type"> 1812 <span class="entry_type_name entry_type_name_enum">byte</span> 1813 1814 <span class="entry_type_visibility"> [public]</span> 1815 1816 1817 <span class="entry_type_hwlevel">[legacy] </span> 1818 1819 1820 1821 <ul class="entry_type_enum"> 1822 <li> 1823 <span class="entry_type_enum_name">OFF</span> 1824 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1825 </li> 1826 <li> 1827 <span class="entry_type_enum_name">FAST</span> 1828 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1829 relative to sensor raw output.<wbr/></p></span> 1830 </li> 1831 <li> 1832 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1833 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1834 reduced (relative to sensor raw output rate)</p></span> 1835 </li> 1836 </ul> 1837 1838 </td> <!-- entry_type --> 1839 1840 <td class="entry_description"> 1841 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1842 </td> 1843 1844 <td class="entry_units"> 1845 </td> 1846 1847 <td class="entry_range"> 1848 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1849 </td> 1850 1851 <td class="entry_tags"> 1852 </td> 1853 1854 </tr> 1855 <tr class="entries_header"> 1856 <th class="th_details" colspan="5">Details</th> 1857 </tr> 1858 <tr class="entry_cont"> 1859 <td class="entry_details" colspan="5"> 1860 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1861 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1862 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1863 minimize the chromatic artifacts that may occur along the object boundaries in an 1864 image.<wbr/></p> 1865 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1866 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1867 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1868 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1869 applying aberration correction.<wbr/></p> 1870 <p>LEGACY devices will always be in FAST mode.<wbr/></p> 1871 </td> 1872 </tr> 1873 1874 1875 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1876 <!-- end of entry --> 1877 1878 1879 1880 <!-- end of kind --> 1881 </tbody> 1882 <tr><td colspan="6" class="kind">static</td></tr> 1883 1884 <thead class="entries_header"> 1885 <tr> 1886 <th class="th_name">Property Name</th> 1887 <th class="th_type">Type</th> 1888 <th class="th_description">Description</th> 1889 <th class="th_units">Units</th> 1890 <th class="th_range">Range</th> 1891 <th class="th_tags">Tags</th> 1892 </tr> 1893 </thead> 1894 1895 <tbody> 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes"> 1907 <td class="entry_name 1908 " rowspan="5"> 1909 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes 1910 </td> 1911 <td class="entry_type"> 1912 <span class="entry_type_name">byte</span> 1913 <span class="entry_type_container">x</span> 1914 1915 <span class="entry_type_array"> 1916 n 1917 </span> 1918 <span class="entry_type_visibility"> [public as enumList]</span> 1919 1920 1921 <span class="entry_type_hwlevel">[legacy] </span> 1922 1923 1924 <div class="entry_type_notes">list of enums</div> 1925 1926 1927 </td> <!-- entry_type --> 1928 1929 <td class="entry_description"> 1930 <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 1931 supported by this camera device.<wbr/></p> 1932 </td> 1933 1934 <td class="entry_units"> 1935 </td> 1936 1937 <td class="entry_range"> 1938 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p> 1939 </td> 1940 1941 <td class="entry_tags"> 1942 <ul class="entry_tags"> 1943 <li><a href="#tag_V1">V1</a></li> 1944 </ul> 1945 </td> 1946 1947 </tr> 1948 <tr class="entries_header"> 1949 <th class="th_details" colspan="5">Details</th> 1950 </tr> 1951 <tr class="entry_cont"> 1952 <td class="entry_details" colspan="5"> 1953 <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 1954 aberration correction modes are available for a device,<wbr/> this list will solely include 1955 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p> 1956 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list 1957 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p> 1958 <p>LEGACY devices will always only support FAST mode.<wbr/></p> 1959 </td> 1960 </tr> 1961 1962 <tr class="entries_header"> 1963 <th class="th_details" colspan="5">HAL Implementation Details</th> 1964 </tr> 1965 <tr class="entry_cont"> 1966 <td class="entry_details" colspan="5"> 1967 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available 1968 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1969 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1970 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 1971 </td> 1972 </tr> 1973 1974 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1975 <!-- end of entry --> 1976 1977 1978 1979 <!-- end of kind --> 1980 </tbody> 1981 1982 <!-- end of section --> 1983 <tr><td colspan="6" id="section_control" class="section">control</td></tr> 1984 1985 1986 <tr><td colspan="6" class="kind">controls</td></tr> 1987 1988 <thead class="entries_header"> 1989 <tr> 1990 <th class="th_name">Property Name</th> 1991 <th class="th_type">Type</th> 1992 <th class="th_description">Description</th> 1993 <th class="th_units">Units</th> 1994 <th class="th_range">Range</th> 1995 <th class="th_tags">Tags</th> 1996 </tr> 1997 </thead> 1998 1999 <tbody> 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 <tr class="entry" id="controls_android.control.aeAntibandingMode"> 2011 <td class="entry_name 2012 " rowspan="5"> 2013 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 2014 </td> 2015 <td class="entry_type"> 2016 <span class="entry_type_name entry_type_name_enum">byte</span> 2017 2018 <span class="entry_type_visibility"> [public]</span> 2019 2020 2021 <span class="entry_type_hwlevel">[legacy] </span> 2022 2023 2024 2025 <ul class="entry_type_enum"> 2026 <li> 2027 <span class="entry_type_enum_name">OFF</span> 2028 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 2029 avoid banding problems.<wbr/></p></span> 2030 </li> 2031 <li> 2032 <span class="entry_type_enum_name">50HZ</span> 2033 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2034 avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 2035 </li> 2036 <li> 2037 <span class="entry_type_enum_name">60HZ</span> 2038 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2039 avoid banding problems with 60Hz illumination 2040 sources.<wbr/></p></span> 2041 </li> 2042 <li> 2043 <span class="entry_type_enum_name">AUTO</span> 2044 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 2045 antibanding routine to the current illumination 2046 condition.<wbr/> This is the default mode if AUTO is 2047 available on given camera device.<wbr/></p></span> 2048 </li> 2049 </ul> 2050 2051 </td> <!-- entry_type --> 2052 2053 <td class="entry_description"> 2054 <p>The desired setting for the camera device's auto-exposure 2055 algorithm's antibanding compensation.<wbr/></p> 2056 </td> 2057 2058 <td class="entry_units"> 2059 </td> 2060 2061 <td class="entry_range"> 2062 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 2063 </td> 2064 2065 <td class="entry_tags"> 2066 <ul class="entry_tags"> 2067 <li><a href="#tag_BC">BC</a></li> 2068 </ul> 2069 </td> 2070 2071 </tr> 2072 <tr class="entries_header"> 2073 <th class="th_details" colspan="5">Details</th> 2074 </tr> 2075 <tr class="entry_cont"> 2076 <td class="entry_details" colspan="5"> 2077 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 2078 lights,<wbr/> flicker at the rate of the power supply frequency 2079 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 2080 typically not noticeable to a person,<wbr/> it can be visible to 2081 a camera device.<wbr/> If a camera sets its exposure time to the 2082 wrong value,<wbr/> the flicker may become visible in the 2083 viewfinder as flicker or in a final captured image,<wbr/> as a 2084 set of variable-brightness bands across the image.<wbr/></p> 2085 <p>Therefore,<wbr/> the auto-exposure routines of camera devices 2086 include antibanding routines that ensure that the chosen 2087 exposure value will not cause such banding.<wbr/> The choice of 2088 exposure time depends on the rate of flicker,<wbr/> which the 2089 camera device can detect automatically,<wbr/> or the expected 2090 rate can be selected by the application using this 2091 control.<wbr/></p> 2092 <p>A given camera device may not support all of the possible 2093 options for the antibanding mode.<wbr/> The 2094 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 2095 the available modes for a given camera device.<wbr/></p> 2096 <p>AUTO mode is the default if it is available on given 2097 camera device.<wbr/> When AUTO mode is not available,<wbr/> the 2098 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 2099 and 60HZ will be available.<wbr/></p> 2100 <p>If manual exposure control is enabled (by setting 2101 <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/> 2102 then this setting has no effect,<wbr/> and the application must 2103 ensure it selects exposure times that do not cause banding 2104 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 2105 the application in this.<wbr/></p> 2106 </td> 2107 </tr> 2108 2109 <tr class="entries_header"> 2110 <th class="th_details" colspan="5">HAL Implementation Details</th> 2111 </tr> 2112 <tr class="entry_cont"> 2113 <td class="entry_details" colspan="5"> 2114 <p>For all capture request templates,<wbr/> this field must be set 2115 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 2116 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 2117 60HZ must be available.<wbr/></p> 2118 <p>If manual exposure control is enabled (by setting 2119 <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/> 2120 then the exposure values provided by the application must not be 2121 adjusted for antibanding.<wbr/></p> 2122 </td> 2123 </tr> 2124 2125 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2126 <!-- end of entry --> 2127 2128 2129 <tr class="entry" id="controls_android.control.aeExposureCompensation"> 2130 <td class="entry_name 2131 " rowspan="3"> 2132 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 2133 </td> 2134 <td class="entry_type"> 2135 <span class="entry_type_name">int32</span> 2136 2137 <span class="entry_type_visibility"> [public]</span> 2138 2139 2140 <span class="entry_type_hwlevel">[legacy] </span> 2141 2142 2143 2144 2145 </td> <!-- entry_type --> 2146 2147 <td class="entry_description"> 2148 <p>Adjustment to auto-exposure (AE) target image 2149 brightness.<wbr/></p> 2150 </td> 2151 2152 <td class="entry_units"> 2153 Compensation steps 2154 </td> 2155 2156 <td class="entry_range"> 2157 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 2158 </td> 2159 2160 <td class="entry_tags"> 2161 <ul class="entry_tags"> 2162 <li><a href="#tag_BC">BC</a></li> 2163 </ul> 2164 </td> 2165 2166 </tr> 2167 <tr class="entries_header"> 2168 <th class="th_details" colspan="5">Details</th> 2169 </tr> 2170 <tr class="entry_cont"> 2171 <td class="entry_details" colspan="5"> 2172 <p>The adjustment is measured as a count of steps,<wbr/> with the 2173 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 2174 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 2175 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 2176 will mean an exposure compensation of +2 EV; -3 will mean an 2177 exposure compensation of -1 EV.<wbr/> One EV represents a doubling 2178 of image brightness.<wbr/> Note that this control will only be 2179 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 2180 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 2181 <p>In the event of exposure compensation value being changed,<wbr/> camera device 2182 may take several frames to reach the newly requested exposure target.<wbr/> 2183 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 2184 state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 2185 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 2186 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 2187 </td> 2188 </tr> 2189 2190 2191 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2192 <!-- end of entry --> 2193 2194 2195 <tr class="entry" id="controls_android.control.aeLock"> 2196 <td class="entry_name 2197 " rowspan="3"> 2198 android.<wbr/>control.<wbr/>ae<wbr/>Lock 2199 </td> 2200 <td class="entry_type"> 2201 <span class="entry_type_name entry_type_name_enum">byte</span> 2202 2203 <span class="entry_type_visibility"> [public as boolean]</span> 2204 2205 2206 <span class="entry_type_hwlevel">[legacy] </span> 2207 2208 2209 2210 <ul class="entry_type_enum"> 2211 <li> 2212 <span class="entry_type_enum_name">OFF</span> 2213 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 2214 is free to update its parameters.<wbr/></p></span> 2215 </li> 2216 <li> 2217 <span class="entry_type_enum_name">ON</span> 2218 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 2219 must not update the exposure and sensitivity parameters 2220 while the lock is active.<wbr/></p> 2221 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 2222 will still take effect while auto-exposure is locked.<wbr/></p> 2223 <p>Some rare LEGACY devices may not support 2224 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 2225 </li> 2226 </ul> 2227 2228 </td> <!-- entry_type --> 2229 2230 <td class="entry_description"> 2231 <p>Whether auto-exposure (AE) is currently locked to its latest 2232 calculated values.<wbr/></p> 2233 </td> 2234 2235 <td class="entry_units"> 2236 </td> 2237 2238 <td class="entry_range"> 2239 </td> 2240 2241 <td class="entry_tags"> 2242 <ul class="entry_tags"> 2243 <li><a href="#tag_BC">BC</a></li> 2244 </ul> 2245 </td> 2246 2247 </tr> 2248 <tr class="entries_header"> 2249 <th class="th_details" colspan="5">Details</th> 2250 </tr> 2251 <tr class="entry_cont"> 2252 <td class="entry_details" colspan="5"> 2253 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 2254 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 2255 <p>Note that even when AE is locked,<wbr/> the flash may be fired if 2256 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 2257 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 2258 <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 2259 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 2260 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 2261 when AE is already locked,<wbr/> the camera device will not change the exposure time 2262 (<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>) 2263 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 2264 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 2265 <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/> 2266 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 2267 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 2268 the AE if AE is locked by the camera device internally during precapture metering 2269 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 2270 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 2271 will never succeed in a sequence of preview requests where AE lock is always set 2272 to <code>false</code>.<wbr/></p> 2273 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 2274 get locked do not necessarily correspond to the settings that were present in the 2275 latest capture result received from the camera device,<wbr/> since additional captures 2276 and AE updates may have occurred even before the result was sent out.<wbr/> If an 2277 application is switching between automatic and manual control and wishes to eliminate 2278 any flicker during the switch,<wbr/> the following procedure is recommended:</p> 2279 <ol> 2280 <li>Starting in auto-AE mode:</li> 2281 <li>Lock AE</li> 2282 <li>Wait for the first result to be output that has the AE locked</li> 2283 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 2284 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 2285 </ol> 2286 <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> 2287 </td> 2288 </tr> 2289 2290 2291 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2292 <!-- end of entry --> 2293 2294 2295 <tr class="entry" id="controls_android.control.aeMode"> 2296 <td class="entry_name 2297 " rowspan="3"> 2298 android.<wbr/>control.<wbr/>ae<wbr/>Mode 2299 </td> 2300 <td class="entry_type"> 2301 <span class="entry_type_name entry_type_name_enum">byte</span> 2302 2303 <span class="entry_type_visibility"> [public]</span> 2304 2305 2306 <span class="entry_type_hwlevel">[legacy] </span> 2307 2308 2309 2310 <ul class="entry_type_enum"> 2311 <li> 2312 <span class="entry_type_enum_name">OFF</span> 2313 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 2314 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2315 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 2316 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 2317 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 2318 a flash unit for this camera device.<wbr/></p> 2319 <p>Note that auto-white balance (AWB) and auto-focus (AF) 2320 behavior is device dependent when AE is in OFF mode.<wbr/> 2321 To have consistent behavior across different devices,<wbr/> 2322 it is recommended to either set AWB and AF to OFF mode 2323 or lock AWB and AF before setting AE to OFF.<wbr/> 2324 See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/> 2325 <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> 2326 for more details.<wbr/></p> 2327 <p>LEGACY devices do not support the OFF mode and will 2328 override attempts to use this value to ON.<wbr/></p></span> 2329 </li> 2330 <li> 2331 <span class="entry_type_enum_name">ON</span> 2332 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 2333 with no flash control.<wbr/></p> 2334 <p>The application's values for 2335 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2336 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2337 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 2338 application has control over the various 2339 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 2340 </li> 2341 <li> 2342 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 2343 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2344 the camera's flash unit,<wbr/> firing it in low-light 2345 conditions.<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 2348 may 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 2350 STILL_<wbr/>CAPTURE</p></span> 2351 </li> 2352 <li> 2353 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 2354 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2355 the camera's flash unit,<wbr/> always firing it for still 2356 captures.<wbr/></p> 2357 <p>The flash may be fired during a precapture sequence 2358 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2359 will always be fired for captures for which the 2360 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2361 STILL_<wbr/>CAPTURE</p></span> 2362 </li> 2363 <li> 2364 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 2365 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 2366 reduction.<wbr/></p> 2367 <p>If deemed necessary by the camera device,<wbr/> a red eye 2368 reduction flash will fire during the precapture 2369 sequence.<wbr/></p></span> 2370 </li> 2371 </ul> 2372 2373 </td> <!-- entry_type --> 2374 2375 <td class="entry_description"> 2376 <p>The desired mode for the camera device's 2377 auto-exposure routine.<wbr/></p> 2378 </td> 2379 2380 <td class="entry_units"> 2381 </td> 2382 2383 <td class="entry_range"> 2384 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 2385 </td> 2386 2387 <td class="entry_tags"> 2388 <ul class="entry_tags"> 2389 <li><a href="#tag_BC">BC</a></li> 2390 </ul> 2391 </td> 2392 2393 </tr> 2394 <tr class="entries_header"> 2395 <th class="th_details" colspan="5">Details</th> 2396 </tr> 2397 <tr class="entry_cont"> 2398 <td class="entry_details" colspan="5"> 2399 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 2400 AUTO.<wbr/></p> 2401 <p>When set to any of the ON modes,<wbr/> the camera device's 2402 auto-exposure routine is enabled,<wbr/> overriding the 2403 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 2404 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2405 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2406 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 2407 is selected,<wbr/> the camera device's flash unit controls are 2408 also overridden.<wbr/></p> 2409 <p>The FLASH modes are only available if the camera device 2410 has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 2411 <p>If flash TORCH mode is desired,<wbr/> this field must be set to 2412 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 2413 <p>When set to any of the ON modes,<wbr/> the values chosen by the 2414 camera device auto-exposure routine for the overridden 2415 fields for a given capture will be available in its 2416 CaptureResult.<wbr/></p> 2417 </td> 2418 </tr> 2419 2420 2421 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2422 <!-- end of entry --> 2423 2424 2425 <tr class="entry" id="controls_android.control.aeRegions"> 2426 <td class="entry_name 2427 " rowspan="5"> 2428 android.<wbr/>control.<wbr/>ae<wbr/>Regions 2429 </td> 2430 <td class="entry_type"> 2431 <span class="entry_type_name">int32</span> 2432 <span class="entry_type_container">x</span> 2433 2434 <span class="entry_type_array"> 2435 5 x area_count 2436 </span> 2437 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2438 2439 2440 2441 2442 2443 2444 </td> <!-- entry_type --> 2445 2446 <td class="entry_description"> 2447 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 2448 </td> 2449 2450 <td class="entry_units"> 2451 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 2452 </td> 2453 2454 <td class="entry_range"> 2455 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2456 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 2457 </td> 2458 2459 <td class="entry_tags"> 2460 <ul class="entry_tags"> 2461 <li><a href="#tag_BC">BC</a></li> 2462 </ul> 2463 </td> 2464 2465 </tr> 2466 <tr class="entries_header"> 2467 <th class="th_details" colspan="5">Details</th> 2468 </tr> 2469 <tr class="entry_cont"> 2470 <td class="entry_details" colspan="5"> 2471 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 2472 Otherwise will always be present.<wbr/></p> 2473 <p>The maximum number of regions supported by the device is determined by the value 2474 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 2475 <p>The coordinate system is based on the active pixel array,<wbr/> 2476 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2477 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2478 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2479 bottom-right pixel in the active pixel array.<wbr/></p> 2480 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2481 for every pixel in the area.<wbr/> This means that a large metering area 2482 with the same weight as a smaller area will have more effect in 2483 the metering result.<wbr/> Metering areas can partially overlap and the 2484 camera device will add the weights in the overlap region.<wbr/></p> 2485 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 2486 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 2487 weight is ignored.<wbr/></p> 2488 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2489 camera device.<wbr/></p> 2490 <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 2491 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2492 region and output only the intersection rectangle as the metering region in the result 2493 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2494 not reported in the result metadata.<wbr/></p> 2495 </td> 2496 </tr> 2497 2498 <tr class="entries_header"> 2499 <th class="th_details" colspan="5">HAL Implementation Details</th> 2500 </tr> 2501 <tr class="entry_cont"> 2502 <td class="entry_details" colspan="5"> 2503 <p>The HAL level representation of MeteringRectangle[] is a 2504 int[5 * area_<wbr/>count].<wbr/> 2505 Every five elements represent a metering region of 2506 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2507 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2508 exclusive on xmax and ymax.<wbr/></p> 2509 </td> 2510 </tr> 2511 2512 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2513 <!-- end of entry --> 2514 2515 2516 <tr class="entry" id="controls_android.control.aeTargetFpsRange"> 2517 <td class="entry_name 2518 " rowspan="3"> 2519 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 2520 </td> 2521 <td class="entry_type"> 2522 <span class="entry_type_name">int32</span> 2523 <span class="entry_type_container">x</span> 2524 2525 <span class="entry_type_array"> 2526 2 2527 </span> 2528 <span class="entry_type_visibility"> [public as rangeInt]</span> 2529 2530 2531 <span class="entry_type_hwlevel">[legacy] </span> 2532 2533 2534 2535 2536 </td> <!-- entry_type --> 2537 2538 <td class="entry_description"> 2539 <p>Range over which the auto-exposure routine can 2540 adjust the capture frame rate to maintain good 2541 exposure.<wbr/></p> 2542 </td> 2543 2544 <td class="entry_units"> 2545 Frames per second (FPS) 2546 </td> 2547 2548 <td class="entry_range"> 2549 <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> 2550 </td> 2551 2552 <td class="entry_tags"> 2553 <ul class="entry_tags"> 2554 <li><a href="#tag_BC">BC</a></li> 2555 </ul> 2556 </td> 2557 2558 </tr> 2559 <tr class="entries_header"> 2560 <th class="th_details" colspan="5">Details</th> 2561 </tr> 2562 <tr class="entry_cont"> 2563 <td class="entry_details" colspan="5"> 2564 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 2565 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 2566 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 2567 </td> 2568 </tr> 2569 2570 2571 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2572 <!-- end of entry --> 2573 2574 2575 <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> 2576 <td class="entry_name 2577 " rowspan="5"> 2578 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 2579 </td> 2580 <td class="entry_type"> 2581 <span class="entry_type_name entry_type_name_enum">byte</span> 2582 2583 <span class="entry_type_visibility"> [public]</span> 2584 2585 2586 <span class="entry_type_hwlevel">[limited] </span> 2587 2588 2589 2590 <ul class="entry_type_enum"> 2591 <li> 2592 <span class="entry_type_enum_name">IDLE</span> 2593 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2594 </li> 2595 <li> 2596 <span class="entry_type_enum_name">START</span> 2597 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 2598 by the camera device.<wbr/></p> 2599 <p>The exact effect of the precapture trigger depends on 2600 the current AE mode and state.<wbr/></p></span> 2601 </li> 2602 <li> 2603 <span class="entry_type_enum_name">CANCEL</span> 2604 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 2605 precapture metering sequence,<wbr/> the auto-exposure routine will return to its 2606 initial state.<wbr/></p></span> 2607 </li> 2608 </ul> 2609 2610 </td> <!-- entry_type --> 2611 2612 <td class="entry_description"> 2613 <p>Whether the camera device will trigger a precapture 2614 metering sequence when it processes this request.<wbr/></p> 2615 </td> 2616 2617 <td class="entry_units"> 2618 </td> 2619 2620 <td class="entry_range"> 2621 </td> 2622 2623 <td class="entry_tags"> 2624 <ul class="entry_tags"> 2625 <li><a href="#tag_BC">BC</a></li> 2626 </ul> 2627 </td> 2628 2629 </tr> 2630 <tr class="entries_header"> 2631 <th class="th_details" colspan="5">Details</th> 2632 </tr> 2633 <tr class="entry_cont"> 2634 <td class="entry_details" colspan="5"> 2635 <p>This entry is normally set to IDLE,<wbr/> or is not 2636 included at all in the request settings.<wbr/> When included and 2637 set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 2638 precapture metering sequence.<wbr/></p> 2639 <p>When set to CANCEL,<wbr/> the camera device will cancel any active 2640 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 2641 If a precapture metering sequence is already completed,<wbr/> and the camera 2642 device has implicitly locked the AE for subsequent still capture,<wbr/> the 2643 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 2644 <p>The precapture sequence should be triggered before starting a 2645 high-quality still capture for final metering decisions to 2646 be made,<wbr/> and for firing pre-capture flash pulses to estimate 2647 scene brightness and required final capture flash power,<wbr/> when 2648 the flash is enabled.<wbr/></p> 2649 <p>Normally,<wbr/> this entry should be set to START for only a 2650 single request,<wbr/> and the application should wait until the 2651 sequence completes before starting a new one.<wbr/></p> 2652 <p>When a precapture metering sequence is finished,<wbr/> the camera device 2653 may lock the auto-exposure routine internally to be able to accurately expose the 2654 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 2655 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 2656 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 2657 submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request 2658 with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a 2659 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 2660 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 2661 internally locked AE if the application doesn't submit a still capture request after 2662 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 2663 be used in devices that have earlier API levels.<wbr/></p> 2664 <p>The exact effect of auto-exposure (AE) precapture trigger 2665 depends on the current AE mode and state; see 2666 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 2667 details.<wbr/></p> 2668 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 2669 capturing a high-resolution JPEG image will automatically trigger a 2670 precapture sequence before the high-resolution capture,<wbr/> including 2671 potentially firing a pre-capture flash.<wbr/></p> 2672 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 2673 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 2674 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 2675 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 2676 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 2677 changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 2678 example.<wbr/></p> 2679 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 2680 the camera device will complete them in the optimal order for that device.<wbr/></p> 2681 </td> 2682 </tr> 2683 2684 <tr class="entries_header"> 2685 <th class="th_details" colspan="5">HAL Implementation Details</th> 2686 </tr> 2687 <tr class="entry_cont"> 2688 <td class="entry_details" colspan="5"> 2689 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 2690 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 2691 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 2692 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 2693 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 2694 </td> 2695 </tr> 2696 2697 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2698 <!-- end of entry --> 2699 2700 2701 <tr class="entry" id="controls_android.control.afMode"> 2702 <td class="entry_name 2703 " rowspan="5"> 2704 android.<wbr/>control.<wbr/>af<wbr/>Mode 2705 </td> 2706 <td class="entry_type"> 2707 <span class="entry_type_name entry_type_name_enum">byte</span> 2708 2709 <span class="entry_type_visibility"> [public]</span> 2710 2711 2712 <span class="entry_type_hwlevel">[legacy] </span> 2713 2714 2715 2716 <ul class="entry_type_enum"> 2717 <li> 2718 <span class="entry_type_enum_name">OFF</span> 2719 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 2720 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 2721 application.<wbr/></p></span> 2722 </li> 2723 <li> 2724 <span class="entry_type_enum_name">AUTO</span> 2725 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 2726 <p>In this mode,<wbr/> the lens does not move unless 2727 the autofocus trigger action is called.<wbr/> When that trigger 2728 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2729 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 2730 <p>Always supported if lens is not fixed focus.<wbr/></p> 2731 <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 2732 is fixed-focus.<wbr/></p> 2733 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 2734 and sets the AF state to INACTIVE.<wbr/></p></span> 2735 </li> 2736 <li> 2737 <span class="entry_type_enum_name">MACRO</span> 2738 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 2739 <p>In this mode,<wbr/> the lens does not move unless the 2740 autofocus trigger action is called.<wbr/> When that trigger is 2741 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2742 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 2743 mode is optimized for focusing on objects very close to 2744 the camera.<wbr/></p> 2745 <p>When that trigger is activated,<wbr/> AF will transition to 2746 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 2747 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 2748 position to default,<wbr/> and sets the AF state to 2749 INACTIVE.<wbr/></p></span> 2750 </li> 2751 <li> 2752 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 2753 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2754 position continually to attempt to provide a 2755 constantly-in-focus image stream.<wbr/></p> 2756 <p>The focusing behavior should be suitable for good quality 2757 video recording; typically this means slower focus 2758 movement and no overshoots.<wbr/> When the AF trigger is not 2759 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 2760 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 2761 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 2762 the algorithm should immediately transition into 2763 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2764 lens position until a cancel AF trigger is received.<wbr/></p> 2765 <p>Once cancel is received,<wbr/> the algorithm should transition 2766 back to INACTIVE and resume passive scan.<wbr/> Note that this 2767 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 2768 ongoing PASSIVE_<wbr/>SCAN must immediately be 2769 canceled.<wbr/></p></span> 2770 </li> 2771 <li> 2772 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 2773 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2774 position continually to attempt to provide a 2775 constantly-in-focus image stream.<wbr/></p> 2776 <p>The focusing behavior should be suitable for still image 2777 capture; typically this means focusing as fast as 2778 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 2779 algorithm should start in INACTIVE state,<wbr/> and then 2780 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 2781 appropriate as it attempts to maintain focus.<wbr/> When the AF 2782 trigger is activated,<wbr/> the algorithm should finish its 2783 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 2784 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2785 lens position until a cancel AF trigger is received.<wbr/></p> 2786 <p>When the AF cancel trigger is activated,<wbr/> the algorithm 2787 should transition back to INACTIVE and then act as if it 2788 has just been started.<wbr/></p></span> 2789 </li> 2790 <li> 2791 <span class="entry_type_enum_name">EDOF</span> 2792 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 2793 <p>The camera device will produce images with an extended 2794 depth of field automatically; no special focusing 2795 operations need to be done before taking a picture.<wbr/></p> 2796 <p>AF triggers are ignored,<wbr/> and the AF state will always be 2797 INACTIVE.<wbr/></p></span> 2798 </li> 2799 </ul> 2800 2801 </td> <!-- entry_type --> 2802 2803 <td class="entry_description"> 2804 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 2805 mode it is set to.<wbr/></p> 2806 </td> 2807 2808 <td class="entry_units"> 2809 </td> 2810 2811 <td class="entry_range"> 2812 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 2813 </td> 2814 2815 <td class="entry_tags"> 2816 <ul class="entry_tags"> 2817 <li><a href="#tag_BC">BC</a></li> 2818 </ul> 2819 </td> 2820 2821 </tr> 2822 <tr class="entries_header"> 2823 <th class="th_details" colspan="5">Details</th> 2824 </tr> 2825 <tr class="entry_cont"> 2826 <td class="entry_details" colspan="5"> 2827 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 2828 (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 2829 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 2830 dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 2831 setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p> 2832 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 2833 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 2834 in result metadata.<wbr/></p> 2835 </td> 2836 </tr> 2837 2838 <tr class="entries_header"> 2839 <th class="th_details" colspan="5">HAL Implementation Details</th> 2840 </tr> 2841 <tr class="entry_cont"> 2842 <td class="entry_details" colspan="5"> 2843 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 2844 request (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> <code>==</code> START).<wbr/> After an AF trigger,<wbr/> the afState will end 2845 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 2846 <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 2847 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 2848 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 2849 the same focal plane remains in focus.<wbr/></p> 2850 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 2851 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 2852 (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 2853 same lock behavior as above.<wbr/></p> 2854 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 2855 focus distance control depends on the <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a>.<wbr/> 2856 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 2857 manual control.<wbr/></p> 2858 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 2859 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 2860 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 2861 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 2862 that will arise on camera modules with open-loop VCMs.<wbr/></p> 2863 </td> 2864 </tr> 2865 2866 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2867 <!-- end of entry --> 2868 2869 2870 <tr class="entry" id="controls_android.control.afRegions"> 2871 <td class="entry_name 2872 " rowspan="5"> 2873 android.<wbr/>control.<wbr/>af<wbr/>Regions 2874 </td> 2875 <td class="entry_type"> 2876 <span class="entry_type_name">int32</span> 2877 <span class="entry_type_container">x</span> 2878 2879 <span class="entry_type_array"> 2880 5 x area_count 2881 </span> 2882 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2883 2884 2885 2886 2887 2888 2889 </td> <!-- entry_type --> 2890 2891 <td class="entry_description"> 2892 <p>List of metering areas to use for auto-focus.<wbr/></p> 2893 </td> 2894 2895 <td class="entry_units"> 2896 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 2897 </td> 2898 2899 <td class="entry_range"> 2900 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2901 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 2902 </td> 2903 2904 <td class="entry_tags"> 2905 <ul class="entry_tags"> 2906 <li><a href="#tag_BC">BC</a></li> 2907 </ul> 2908 </td> 2909 2910 </tr> 2911 <tr class="entries_header"> 2912 <th class="th_details" colspan="5">Details</th> 2913 </tr> 2914 <tr class="entry_cont"> 2915 <td class="entry_details" colspan="5"> 2916 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 2917 Otherwise will always be present.<wbr/></p> 2918 <p>The maximum number of focus areas supported by the device is determined by the value 2919 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 2920 <p>The coordinate system is based on the active pixel array,<wbr/> 2921 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2922 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2923 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2924 bottom-right pixel in the active pixel array.<wbr/></p> 2925 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2926 for every pixel in the area.<wbr/> This means that a large metering area 2927 with the same weight as a smaller area will have more effect in 2928 the metering result.<wbr/> Metering areas can partially overlap and the 2929 camera device will add the weights in the overlap region.<wbr/></p> 2930 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 2931 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 2932 ignored.<wbr/></p> 2933 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2934 camera device.<wbr/></p> 2935 <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 2936 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2937 region and output only the intersection rectangle as the metering region in the result 2938 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2939 not reported in the result metadata.<wbr/></p> 2940 </td> 2941 </tr> 2942 2943 <tr class="entries_header"> 2944 <th class="th_details" colspan="5">HAL Implementation Details</th> 2945 </tr> 2946 <tr class="entry_cont"> 2947 <td class="entry_details" colspan="5"> 2948 <p>The HAL level representation of MeteringRectangle[] is a 2949 int[5 * area_<wbr/>count].<wbr/> 2950 Every five elements represent a metering region of 2951 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2952 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2953 exclusive on xmax and ymax.<wbr/></p> 2954 </td> 2955 </tr> 2956 2957 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2958 <!-- end of entry --> 2959 2960 2961 <tr class="entry" id="controls_android.control.afTrigger"> 2962 <td class="entry_name 2963 " rowspan="5"> 2964 android.<wbr/>control.<wbr/>af<wbr/>Trigger 2965 </td> 2966 <td class="entry_type"> 2967 <span class="entry_type_name entry_type_name_enum">byte</span> 2968 2969 <span class="entry_type_visibility"> [public]</span> 2970 2971 2972 <span class="entry_type_hwlevel">[legacy] </span> 2973 2974 2975 2976 <ul class="entry_type_enum"> 2977 <li> 2978 <span class="entry_type_enum_name">IDLE</span> 2979 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2980 </li> 2981 <li> 2982 <span class="entry_type_enum_name">START</span> 2983 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 2984 </li> 2985 <li> 2986 <span class="entry_type_enum_name">CANCEL</span> 2987 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 2988 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 2989 </li> 2990 </ul> 2991 2992 </td> <!-- entry_type --> 2993 2994 <td class="entry_description"> 2995 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 2996 </td> 2997 2998 <td class="entry_units"> 2999 </td> 3000 3001 <td class="entry_range"> 3002 </td> 3003 3004 <td class="entry_tags"> 3005 <ul class="entry_tags"> 3006 <li><a href="#tag_BC">BC</a></li> 3007 </ul> 3008 </td> 3009 3010 </tr> 3011 <tr class="entries_header"> 3012 <th class="th_details" colspan="5">Details</th> 3013 </tr> 3014 <tr class="entry_cont"> 3015 <td class="entry_details" colspan="5"> 3016 <p>This entry is normally set to IDLE,<wbr/> or is not 3017 included at all in the request settings.<wbr/></p> 3018 <p>When included and set to START,<wbr/> the camera device will trigger the 3019 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 3020 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 3021 and return to its initial AF state.<wbr/></p> 3022 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 3023 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 3024 START for multiple captures in a row means restarting the AF operation over 3025 and over again.<wbr/></p> 3026 <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> 3027 <p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> 3028 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 3029 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 3030 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 3031 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 3032 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 3033 </td> 3034 </tr> 3035 3036 <tr class="entries_header"> 3037 <th class="th_details" colspan="5">HAL Implementation Details</th> 3038 </tr> 3039 <tr class="entry_cont"> 3040 <td class="entry_details" colspan="5"> 3041 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 3042 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 3043 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 3044 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 3045 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 3046 </td> 3047 </tr> 3048 3049 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3050 <!-- end of entry --> 3051 3052 3053 <tr class="entry" id="controls_android.control.awbLock"> 3054 <td class="entry_name 3055 " rowspan="3"> 3056 android.<wbr/>control.<wbr/>awb<wbr/>Lock 3057 </td> 3058 <td class="entry_type"> 3059 <span class="entry_type_name entry_type_name_enum">byte</span> 3060 3061 <span class="entry_type_visibility"> [public as boolean]</span> 3062 3063 3064 <span class="entry_type_hwlevel">[legacy] </span> 3065 3066 3067 3068 <ul class="entry_type_enum"> 3069 <li> 3070 <span class="entry_type_enum_name">OFF</span> 3071 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 3072 algorithm is free to update its parameters if in AUTO 3073 mode.<wbr/></p></span> 3074 </li> 3075 <li> 3076 <span class="entry_type_enum_name">ON</span> 3077 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 3078 algorithm will not update its parameters while the lock 3079 is active.<wbr/></p></span> 3080 </li> 3081 </ul> 3082 3083 </td> <!-- entry_type --> 3084 3085 <td class="entry_description"> 3086 <p>Whether auto-white balance (AWB) is currently locked to its 3087 latest calculated values.<wbr/></p> 3088 </td> 3089 3090 <td class="entry_units"> 3091 </td> 3092 3093 <td class="entry_range"> 3094 </td> 3095 3096 <td class="entry_tags"> 3097 <ul class="entry_tags"> 3098 <li><a href="#tag_BC">BC</a></li> 3099 </ul> 3100 </td> 3101 3102 </tr> 3103 <tr class="entries_header"> 3104 <th class="th_details" colspan="5">Details</th> 3105 </tr> 3106 <tr class="entry_cont"> 3107 <td class="entry_details" colspan="5"> 3108 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 3109 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 3110 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 3111 get locked do not necessarily correspond to the settings that were present in the 3112 latest capture result received from the camera device,<wbr/> since additional captures 3113 and AWB updates may have occurred even before the result was sent out.<wbr/> If an 3114 application is switching between automatic and manual control and wishes to eliminate 3115 any flicker during the switch,<wbr/> the following procedure is recommended:</p> 3116 <ol> 3117 <li>Starting in auto-AWB mode:</li> 3118 <li>Lock AWB</li> 3119 <li>Wait for the first result to be output that has the AWB locked</li> 3120 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 3121 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 3122 </ol> 3123 <p>Note that AWB lock is only meaningful when 3124 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 3125 AWB is already fixed to a specific setting.<wbr/></p> 3126 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 3127 </td> 3128 </tr> 3129 3130 3131 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3132 <!-- end of entry --> 3133 3134 3135 <tr class="entry" id="controls_android.control.awbMode"> 3136 <td class="entry_name 3137 " rowspan="3"> 3138 android.<wbr/>control.<wbr/>awb<wbr/>Mode 3139 </td> 3140 <td class="entry_type"> 3141 <span class="entry_type_name entry_type_name_enum">byte</span> 3142 3143 <span class="entry_type_visibility"> [public]</span> 3144 3145 3146 <span class="entry_type_hwlevel">[legacy] </span> 3147 3148 3149 3150 <ul class="entry_type_enum"> 3151 <li> 3152 <span class="entry_type_enum_name">OFF</span> 3153 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 3154 <p>The application-selected color transform matrix 3155 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 3156 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 3157 device for manual white balance control.<wbr/></p></span> 3158 </li> 3159 <li> 3160 <span class="entry_type_enum_name">AUTO</span> 3161 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 3162 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3163 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3164 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3165 values used by the camera device for the transform and gains 3166 will be available in the capture result for this request.<wbr/></p></span> 3167 </li> 3168 <li> 3169 <span class="entry_type_enum_name">INCANDESCENT</span> 3170 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3171 the camera device uses incandescent light as the assumed scene 3172 illumination for white balance.<wbr/></p> 3173 <p>While the exact white balance transforms are up to the 3174 camera device,<wbr/> they will approximately match the CIE 3175 standard illuminant A.<wbr/></p> 3176 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3177 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3178 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3179 values used by the camera device for the transform and gains 3180 will be available in the capture result for this request.<wbr/></p></span> 3181 </li> 3182 <li> 3183 <span class="entry_type_enum_name">FLUORESCENT</span> 3184 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3185 the camera device uses fluorescent light as the assumed scene 3186 illumination for white balance.<wbr/></p> 3187 <p>While the exact white balance transforms are up to the 3188 camera device,<wbr/> they will approximately match the CIE 3189 standard illuminant F2.<wbr/></p> 3190 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3191 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3192 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3193 values used by the camera device for the transform and gains 3194 will be available in the capture result for this request.<wbr/></p></span> 3195 </li> 3196 <li> 3197 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 3198 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3199 the camera device uses warm fluorescent light as the assumed scene 3200 illumination for white balance.<wbr/></p> 3201 <p>While the exact white balance transforms are up to the 3202 camera device,<wbr/> they will approximately match the CIE 3203 standard illuminant F4.<wbr/></p> 3204 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3205 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3206 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3207 values used by the camera device for the transform and gains 3208 will be available in the capture result for this request.<wbr/></p></span> 3209 </li> 3210 <li> 3211 <span class="entry_type_enum_name">DAYLIGHT</span> 3212 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3213 the camera device uses daylight light as the assumed scene 3214 illumination for white balance.<wbr/></p> 3215 <p>While the exact white balance transforms are up to the 3216 camera device,<wbr/> they will approximately match the CIE 3217 standard illuminant D65.<wbr/></p> 3218 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3219 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3220 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3221 values used by the camera device for the transform and gains 3222 will be available in the capture result for this request.<wbr/></p></span> 3223 </li> 3224 <li> 3225 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 3226 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3227 the camera device uses cloudy daylight light as the assumed scene 3228 illumination for white balance.<wbr/></p> 3229 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3230 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3231 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3232 values used by the camera device for the transform and gains 3233 will be available in the capture result for this request.<wbr/></p></span> 3234 </li> 3235 <li> 3236 <span class="entry_type_enum_name">TWILIGHT</span> 3237 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3238 the camera device uses twilight light as the assumed scene 3239 illumination for white balance.<wbr/></p> 3240 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3241 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3242 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3243 values used by the camera device for the transform and gains 3244 will be available in the capture result for this request.<wbr/></p></span> 3245 </li> 3246 <li> 3247 <span class="entry_type_enum_name">SHADE</span> 3248 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3249 the camera device uses shade light as the assumed scene 3250 illumination for white balance.<wbr/></p> 3251 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3252 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3253 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3254 values used by the camera device for the transform and gains 3255 will be available in the capture result for this request.<wbr/></p></span> 3256 </li> 3257 </ul> 3258 3259 </td> <!-- entry_type --> 3260 3261 <td class="entry_description"> 3262 <p>Whether auto-white balance (AWB) is currently setting the color 3263 transform fields,<wbr/> and what its illumination target 3264 is.<wbr/></p> 3265 </td> 3266 3267 <td class="entry_units"> 3268 </td> 3269 3270 <td class="entry_range"> 3271 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 3272 </td> 3273 3274 <td class="entry_tags"> 3275 <ul class="entry_tags"> 3276 <li><a href="#tag_BC">BC</a></li> 3277 </ul> 3278 </td> 3279 3280 </tr> 3281 <tr class="entries_header"> 3282 <th class="th_details" colspan="5">Details</th> 3283 </tr> 3284 <tr class="entry_cont"> 3285 <td class="entry_details" colspan="5"> 3286 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 3287 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance 3288 routine is enabled,<wbr/> overriding the application's selected 3289 <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 3290 <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> 3291 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 3292 also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before 3293 setting AE mode to OFF.<wbr/></p> 3294 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 3295 routine is disabled.<wbr/> The application manually controls the white 3296 balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> 3297 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 3298 <p>When set to any other modes,<wbr/> the camera device's auto-white 3299 balance routine is disabled.<wbr/> The camera device uses each 3300 particular illumination target for white balance 3301 adjustment.<wbr/> The application's values for 3302 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 3303 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 3304 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 3305 </td> 3306 </tr> 3307 3308 3309 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3310 <!-- end of entry --> 3311 3312 3313 <tr class="entry" id="controls_android.control.awbRegions"> 3314 <td class="entry_name 3315 " rowspan="5"> 3316 android.<wbr/>control.<wbr/>awb<wbr/>Regions 3317 </td> 3318 <td class="entry_type"> 3319 <span class="entry_type_name">int32</span> 3320 <span class="entry_type_container">x</span> 3321 3322 <span class="entry_type_array"> 3323 5 x area_count 3324 </span> 3325 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3326 3327 3328 3329 3330 3331 3332 </td> <!-- entry_type --> 3333 3334 <td class="entry_description"> 3335 <p>List of metering areas to use for auto-white-balance illuminant 3336 estimation.<wbr/></p> 3337 </td> 3338 3339 <td class="entry_units"> 3340 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 3341 </td> 3342 3343 <td class="entry_range"> 3344 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3345 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 3346 </td> 3347 3348 <td class="entry_tags"> 3349 <ul class="entry_tags"> 3350 <li><a href="#tag_BC">BC</a></li> 3351 </ul> 3352 </td> 3353 3354 </tr> 3355 <tr class="entries_header"> 3356 <th class="th_details" colspan="5">Details</th> 3357 </tr> 3358 <tr class="entry_cont"> 3359 <td class="entry_details" colspan="5"> 3360 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 3361 Otherwise will always be present.<wbr/></p> 3362 <p>The maximum number of regions supported by the device is determined by the value 3363 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 3364 <p>The coordinate system is based on the active pixel array,<wbr/> 3365 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 3366 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3367 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 3368 bottom-right pixel in the active pixel array.<wbr/></p> 3369 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight 3370 for every pixel in the area.<wbr/> This means that a large metering area 3371 with the same weight as a smaller area will have more effect in 3372 the metering result.<wbr/> Metering areas can partially overlap and the 3373 camera device will add the weights in the overlap region.<wbr/></p> 3374 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 3375 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 3376 0 weight is ignored.<wbr/></p> 3377 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3378 camera device.<wbr/></p> 3379 <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 3380 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3381 region and output only the intersection rectangle as the metering region in the result 3382 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3383 not reported in the result metadata.<wbr/></p> 3384 </td> 3385 </tr> 3386 3387 <tr class="entries_header"> 3388 <th class="th_details" colspan="5">HAL Implementation Details</th> 3389 </tr> 3390 <tr class="entry_cont"> 3391 <td class="entry_details" colspan="5"> 3392 <p>The HAL level representation of MeteringRectangle[] is a 3393 int[5 * area_<wbr/>count].<wbr/> 3394 Every five elements represent a metering region of 3395 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3396 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3397 exclusive on xmax and ymax.<wbr/></p> 3398 </td> 3399 </tr> 3400 3401 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3402 <!-- end of entry --> 3403 3404 3405 <tr class="entry" id="controls_android.control.captureIntent"> 3406 <td class="entry_name 3407 " rowspan="3"> 3408 android.<wbr/>control.<wbr/>capture<wbr/>Intent 3409 </td> 3410 <td class="entry_type"> 3411 <span class="entry_type_name entry_type_name_enum">byte</span> 3412 3413 <span class="entry_type_visibility"> [public]</span> 3414 3415 3416 <span class="entry_type_hwlevel">[legacy] </span> 3417 3418 3419 3420 <ul class="entry_type_enum"> 3421 <li> 3422 <span class="entry_type_enum_name">CUSTOM</span> 3423 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 3424 categories.<wbr/> The camera device will default to preview-like 3425 behavior.<wbr/></p></span> 3426 </li> 3427 <li> 3428 <span class="entry_type_enum_name">PREVIEW</span> 3429 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 3430 <p>The precapture trigger may be used to start off a metering 3431 w/<wbr/>flash sequence.<wbr/></p></span> 3432 </li> 3433 <li> 3434 <span class="entry_type_enum_name">STILL_CAPTURE</span> 3435 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 3436 use case.<wbr/></p> 3437 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 3438 </li> 3439 <li> 3440 <span class="entry_type_enum_name">VIDEO_RECORD</span> 3441 <span class="entry_type_enum_notes"><p>This request is for a video recording 3442 use case.<wbr/></p></span> 3443 </li> 3444 <li> 3445 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 3446 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 3447 image while recording video) use case.<wbr/></p> 3448 <p>The camera device should take the highest-quality image 3449 possible (given the other settings) without disrupting the 3450 frame rate of video recording.<wbr/> </p></span> 3451 </li> 3452 <li> 3453 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 3454 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 3455 application will stream full-resolution images and 3456 reprocess one or several later for a final 3457 capture.<wbr/></p></span> 3458 </li> 3459 <li> 3460 <span class="entry_type_enum_name">MANUAL</span> 3461 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 3462 the applications want to directly control the capture parameters.<wbr/></p> 3463 <p>For example,<wbr/> the application may wish to manually control 3464 <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> 3465 </li> 3466 </ul> 3467 3468 </td> <!-- entry_type --> 3469 3470 <td class="entry_description"> 3471 <p>Information to the camera device 3A (auto-exposure,<wbr/> 3472 auto-focus,<wbr/> auto-white balance) routines about the purpose 3473 of this capture,<wbr/> to help the camera device to decide optimal 3A 3474 strategy.<wbr/></p> 3475 </td> 3476 3477 <td class="entry_units"> 3478 </td> 3479 3480 <td class="entry_range"> 3481 </td> 3482 3483 <td class="entry_tags"> 3484 <ul class="entry_tags"> 3485 <li><a href="#tag_BC">BC</a></li> 3486 </ul> 3487 </td> 3488 3489 </tr> 3490 <tr class="entries_header"> 3491 <th class="th_details" colspan="5">Details</th> 3492 </tr> 3493 <tr class="entry_cont"> 3494 <td class="entry_details" colspan="5"> 3495 <p>This control (except for MANUAL) is only effective if 3496 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 3497 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 3498 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if 3499 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are 3500 always supported.<wbr/></p> 3501 </td> 3502 </tr> 3503 3504 3505 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3506 <!-- end of entry --> 3507 3508 3509 <tr class="entry" id="controls_android.control.effectMode"> 3510 <td class="entry_name 3511 " rowspan="3"> 3512 android.<wbr/>control.<wbr/>effect<wbr/>Mode 3513 </td> 3514 <td class="entry_type"> 3515 <span class="entry_type_name entry_type_name_enum">byte</span> 3516 3517 <span class="entry_type_visibility"> [public]</span> 3518 3519 3520 <span class="entry_type_hwlevel">[legacy] </span> 3521 3522 3523 3524 <ul class="entry_type_enum"> 3525 <li> 3526 <span class="entry_type_enum_name">OFF</span> 3527 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 3528 </li> 3529 <li> 3530 <span class="entry_type_enum_name">MONO</span> 3531 <span class="entry_type_enum_optional">[optional]</span> 3532 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 3533 a single color.<wbr/></p> 3534 <p>This will typically be grayscale.<wbr/></p></span> 3535 </li> 3536 <li> 3537 <span class="entry_type_enum_name">NEGATIVE</span> 3538 <span class="entry_type_enum_optional">[optional]</span> 3539 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 3540 are inverted.<wbr/></p></span> 3541 </li> 3542 <li> 3543 <span class="entry_type_enum_name">SOLARIZE</span> 3544 <span class="entry_type_enum_optional">[optional]</span> 3545 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 3546 image is wholly or partially reversed in 3547 tone.<wbr/></p></span> 3548 </li> 3549 <li> 3550 <span class="entry_type_enum_name">SEPIA</span> 3551 <span class="entry_type_enum_optional">[optional]</span> 3552 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 3553 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 3554 </li> 3555 <li> 3556 <span class="entry_type_enum_name">POSTERIZE</span> 3557 <span class="entry_type_enum_optional">[optional]</span> 3558 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 3559 discrete regions of tone rather than a continuous 3560 gradient of tones.<wbr/></p></span> 3561 </li> 3562 <li> 3563 <span class="entry_type_enum_name">WHITEBOARD</span> 3564 <span class="entry_type_enum_optional">[optional]</span> 3565 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 3566 as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 3567 </li> 3568 <li> 3569 <span class="entry_type_enum_name">BLACKBOARD</span> 3570 <span class="entry_type_enum_optional">[optional]</span> 3571 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 3572 as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 3573 </li> 3574 <li> 3575 <span class="entry_type_enum_name">AQUA</span> 3576 <span class="entry_type_enum_optional">[optional]</span> 3577 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 3578 </li> 3579 </ul> 3580 3581 </td> <!-- entry_type --> 3582 3583 <td class="entry_description"> 3584 <p>A special color effect to apply.<wbr/></p> 3585 </td> 3586 3587 <td class="entry_units"> 3588 </td> 3589 3590 <td class="entry_range"> 3591 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 3592 </td> 3593 3594 <td class="entry_tags"> 3595 <ul class="entry_tags"> 3596 <li><a href="#tag_BC">BC</a></li> 3597 </ul> 3598 </td> 3599 3600 </tr> 3601 <tr class="entries_header"> 3602 <th class="th_details" colspan="5">Details</th> 3603 </tr> 3604 <tr class="entry_cont"> 3605 <td class="entry_details" colspan="5"> 3606 <p>When this mode is set,<wbr/> a color effect will be applied 3607 to images produced by the camera device.<wbr/> The interpretation 3608 and implementation of these color effects is left to the 3609 implementor of the camera device,<wbr/> and should not be 3610 depended on to be consistent (or present) across all 3611 devices.<wbr/></p> 3612 </td> 3613 </tr> 3614 3615 3616 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3617 <!-- end of entry --> 3618 3619 3620 <tr class="entry" id="controls_android.control.mode"> 3621 <td class="entry_name 3622 " rowspan="3"> 3623 android.<wbr/>control.<wbr/>mode 3624 </td> 3625 <td class="entry_type"> 3626 <span class="entry_type_name entry_type_name_enum">byte</span> 3627 3628 <span class="entry_type_visibility"> [public]</span> 3629 3630 3631 <span class="entry_type_hwlevel">[legacy] </span> 3632 3633 3634 3635 <ul class="entry_type_enum"> 3636 <li> 3637 <span class="entry_type_enum_name">OFF</span> 3638 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 3639 <p>All control by the device's metering and focusing (3A) 3640 routines is disabled,<wbr/> and no other settings in 3641 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 3642 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 3643 device to select post-processing values for processing 3644 blocks that do not allow for manual control,<wbr/> or are not 3645 exposed by the camera API.<wbr/></p> 3646 <p>However,<wbr/> the camera device's 3A routines may continue to 3647 collect statistics and update their internal state so that 3648 when control is switched to AUTO mode,<wbr/> good control values 3649 can be immediately applied.<wbr/></p></span> 3650 </li> 3651 <li> 3652 <span class="entry_type_enum_name">AUTO</span> 3653 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 3654 <p>Manual control of capture parameters is disabled.<wbr/> All 3655 controls in android.<wbr/>control.<wbr/>* besides sceneMode take 3656 effect.<wbr/></p></span> 3657 </li> 3658 <li> 3659 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 3660 <span class="entry_type_enum_optional">[optional]</span> 3661 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 3662 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 3663 control.<wbr/>afMode controls; the camera device will ignore 3664 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 3665 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 3666 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 3667 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 3668 contain some modes other than DISABLED).<wbr/></p></span> 3669 </li> 3670 <li> 3671 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 3672 <span class="entry_type_enum_optional">[optional]</span> 3673 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 3674 used by camera device background auto-exposure,<wbr/> auto-white balance and 3675 auto-focus algorithms (3A) to update their statistics.<wbr/></p> 3676 <p>Specifically,<wbr/> the 3A routines are locked to the last 3677 values set from a request with AUTO,<wbr/> OFF,<wbr/> or 3678 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 3679 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 3680 discarded by the camera device.<wbr/></p></span> 3681 </li> 3682 </ul> 3683 3684 </td> <!-- entry_type --> 3685 3686 <td class="entry_description"> 3687 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 3688 routines.<wbr/></p> 3689 </td> 3690 3691 <td class="entry_units"> 3692 </td> 3693 3694 <td class="entry_range"> 3695 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 3696 </td> 3697 3698 <td class="entry_tags"> 3699 <ul class="entry_tags"> 3700 <li><a href="#tag_BC">BC</a></li> 3701 </ul> 3702 </td> 3703 3704 </tr> 3705 <tr class="entries_header"> 3706 <th class="th_details" colspan="5">Details</th> 3707 </tr> 3708 <tr class="entry_cont"> 3709 <td class="entry_details" colspan="5"> 3710 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 3711 by the camera device is disabled.<wbr/> The application must set the fields for 3712 capture parameters itself.<wbr/></p> 3713 <p>When set to AUTO,<wbr/> the individual algorithm controls in 3714 android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p> 3715 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 3716 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 3717 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 3718 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 3719 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 3720 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 3721 is that this frame will not be used by camera device background 3A statistics 3722 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 3723 where the application doesn't want a 3A manual control capture to affect 3724 the subsequent auto 3A capture results.<wbr/></p> 3725 </td> 3726 </tr> 3727 3728 3729 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3730 <!-- end of entry --> 3731 3732 3733 <tr class="entry" id="controls_android.control.sceneMode"> 3734 <td class="entry_name 3735 " rowspan="5"> 3736 android.<wbr/>control.<wbr/>scene<wbr/>Mode 3737 </td> 3738 <td class="entry_type"> 3739 <span class="entry_type_name entry_type_name_enum">byte</span> 3740 3741 <span class="entry_type_visibility"> [public]</span> 3742 3743 3744 <span class="entry_type_hwlevel">[legacy] </span> 3745 3746 3747 3748 <ul class="entry_type_enum"> 3749 <li> 3750 <span class="entry_type_enum_name">DISABLED</span> 3751 <span class="entry_type_enum_value">0</span> 3752 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 3753 </li> 3754 <li> 3755 <span class="entry_type_enum_name">FACE_PRIORITY</span> 3756 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 3757 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 3758 auto-exposure routines.<wbr/></p> 3759 <p>If face detection statistics are disabled 3760 (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/> 3761 this should still operate correctly (but will not return 3762 face detection statistics to the framework).<wbr/></p> 3763 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3764 <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> 3765 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 3766 </li> 3767 <li> 3768 <span class="entry_type_enum_name">ACTION</span> 3769 <span class="entry_type_enum_optional">[optional]</span> 3770 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 3771 <p>Similar to SPORTS.<wbr/></p></span> 3772 </li> 3773 <li> 3774 <span class="entry_type_enum_name">PORTRAIT</span> 3775 <span class="entry_type_enum_optional">[optional]</span> 3776 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 3777 </li> 3778 <li> 3779 <span class="entry_type_enum_name">LANDSCAPE</span> 3780 <span class="entry_type_enum_optional">[optional]</span> 3781 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 3782 </li> 3783 <li> 3784 <span class="entry_type_enum_name">NIGHT</span> 3785 <span class="entry_type_enum_optional">[optional]</span> 3786 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 3787 </li> 3788 <li> 3789 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 3790 <span class="entry_type_enum_optional">[optional]</span> 3791 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 3792 settings.<wbr/></p></span> 3793 </li> 3794 <li> 3795 <span class="entry_type_enum_name">THEATRE</span> 3796 <span class="entry_type_enum_optional">[optional]</span> 3797 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 3798 remain off.<wbr/></p></span> 3799 </li> 3800 <li> 3801 <span class="entry_type_enum_name">BEACH</span> 3802 <span class="entry_type_enum_optional">[optional]</span> 3803 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 3804 </li> 3805 <li> 3806 <span class="entry_type_enum_name">SNOW</span> 3807 <span class="entry_type_enum_optional">[optional]</span> 3808 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 3809 </li> 3810 <li> 3811 <span class="entry_type_enum_name">SUNSET</span> 3812 <span class="entry_type_enum_optional">[optional]</span> 3813 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 3814 </li> 3815 <li> 3816 <span class="entry_type_enum_name">STEADYPHOTO</span> 3817 <span class="entry_type_enum_optional">[optional]</span> 3818 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 3819 device motion (for example: due to hand shake).<wbr/></p></span> 3820 </li> 3821 <li> 3822 <span class="entry_type_enum_name">FIREWORKS</span> 3823 <span class="entry_type_enum_optional">[optional]</span> 3824 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 3825 </li> 3826 <li> 3827 <span class="entry_type_enum_name">SPORTS</span> 3828 <span class="entry_type_enum_optional">[optional]</span> 3829 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 3830 <p>Similar to ACTION.<wbr/></p></span> 3831 </li> 3832 <li> 3833 <span class="entry_type_enum_name">PARTY</span> 3834 <span class="entry_type_enum_optional">[optional]</span> 3835 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 3836 people.<wbr/></p></span> 3837 </li> 3838 <li> 3839 <span class="entry_type_enum_name">CANDLELIGHT</span> 3840 <span class="entry_type_enum_optional">[optional]</span> 3841 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 3842 is a flame.<wbr/></p></span> 3843 </li> 3844 <li> 3845 <span class="entry_type_enum_name">BARCODE</span> 3846 <span class="entry_type_enum_optional">[optional]</span> 3847 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 3848 for use by camera applications that wish to read the 3849 barcode value.<wbr/></p></span> 3850 </li> 3851 <li> 3852 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> 3853 <span class="entry_type_enum_deprecated">[deprecated]</span> 3854 <span class="entry_type_enum_optional">[optional]</span> 3855 <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> 3856 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 3857 for high speed video recording.<wbr/></p> 3858 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 3859 <p>The supported high speed video sizes and fps ranges are specified in 3860 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 3861 output frame rates,<wbr/> the application is only allowed to select video size 3862 and fps range combinations listed in this static metadata.<wbr/> The fps range 3863 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 3864 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 3865 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 3866 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 3867 and post-processing parameters is possible.<wbr/> All other controls operate the 3868 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 3869 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 3870 <ul> 3871 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 3872 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 3873 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 3874 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 3875 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 3876 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 3877 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 3878 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 3879 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 3880 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 3881 </ul> 3882 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 3883 <ul> 3884 <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> 3885 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 3886 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 3887 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 3888 </ul> 3889 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 3890 be lower than what camera can output,<wbr/> depending on the destination Surfaces for 3891 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 3892 the application need check if the video encoder is capable of supporting the 3893 high frame rate for a given video size,<wbr/> or it will end up with lower recording 3894 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 3895 rate will be bounded by the screen refresh rate.<wbr/></p> 3896 <p>The camera device will only support up to 2 output high speed streams 3897 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 3898 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 3899 <ul> 3900 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling 3901 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 3902 min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li> 3903 <li>The stream sizes are selected from the sizes reported by 3904 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 3905 <li>No processed non-stalling or raw streams are configured.<wbr/></li> 3906 </ul> 3907 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 3908 <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/> 3909 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 3910 and the returned capture result metadata will give the fps range choosen 3911 by the camera device.<wbr/></p> 3912 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 3913 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 3914 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 3915 </li> 3916 <li> 3917 <span class="entry_type_enum_name">HDR</span> 3918 <span class="entry_type_enum_optional">[optional]</span> 3919 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 3920 <p>In this scene mode,<wbr/> the camera device captures images 3921 that keep a larger range of scene illumination levels 3922 visible in the final image.<wbr/> For example,<wbr/> when taking a 3923 picture of a object in front of a bright window,<wbr/> both 3924 the object and the scene through the window may be 3925 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 3926 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 3927 HDR mode generally takes much longer to capture a single 3928 image,<wbr/> has no user control,<wbr/> and may have other artifacts 3929 depending on the HDR method used.<wbr/></p> 3930 <p>Therefore,<wbr/> HDR captures operate at a much slower rate 3931 than regular captures.<wbr/></p> 3932 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 3933 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 3934 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 3935 using a high dynamic range capture technique.<wbr/> On LEGACY 3936 devices,<wbr/> captures that target a JPEG-format output will 3937 be captured with HDR,<wbr/> and the capture intent is not 3938 relevant.<wbr/></p> 3939 <p>The HDR capture may involve the device capturing a burst 3940 of images internally and combining them into one,<wbr/> or it 3941 may involve the device using specialized high dynamic 3942 range capture hardware.<wbr/> In all cases,<wbr/> a single image is 3943 produced in response to a capture request submitted 3944 while in HDR mode.<wbr/></p> 3945 <p>Since substantial post-processing is generally needed to 3946 produce an HDR image,<wbr/> only YUV and JPEG outputs are 3947 supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only 3948 JPEG outputs are supported for LEGACY HDR 3949 captures.<wbr/> Using a RAW output for HDR capture is not 3950 supported.<wbr/></p></span> 3951 </li> 3952 <li> 3953 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span> 3954 <span class="entry_type_enum_optional">[optional]</span> 3955 <span class="entry_type_enum_hidden">[hidden]</span> 3956 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 3957 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 3958 under low light conditions.<wbr/></p> 3959 <p>The camera device may be tuned to expose the images in a reduced 3960 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 3961 if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/> 3962 the camera device auto-exposure routine tuning process may limit the actual 3963 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 3964 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 3965 low light may be under-exposed when the sensor max exposure time (bounded by the 3966 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the 3967 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 3968 camera device auto-exposure routine to increase the sensitivity up to the max 3969 sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 3970 dark and the max exposure time is reached.<wbr/> The captured images may be noisier 3971 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 3972 recommended that the application only use this scene mode when it is capable of 3973 reducing the noise level of the captured images.<wbr/></p> 3974 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3975 <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> 3976 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 3977 </li> 3978 </ul> 3979 3980 </td> <!-- entry_type --> 3981 3982 <td class="entry_description"> 3983 <p>Control for which scene mode is currently active.<wbr/></p> 3984 </td> 3985 3986 <td class="entry_units"> 3987 </td> 3988 3989 <td class="entry_range"> 3990 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 3991 </td> 3992 3993 <td class="entry_tags"> 3994 <ul class="entry_tags"> 3995 <li><a href="#tag_BC">BC</a></li> 3996 </ul> 3997 </td> 3998 3999 </tr> 4000 <tr class="entries_header"> 4001 <th class="th_details" colspan="5">Details</th> 4002 </tr> 4003 <tr class="entry_cont"> 4004 <td class="entry_details" colspan="5"> 4005 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 4006 capture settings.<wbr/></p> 4007 <p>This is the mode that that is active when 4008 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will 4009 disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> 4010 while in use.<wbr/></p> 4011 <p>The interpretation and implementation of these scene modes is left 4012 to the implementor of the camera device.<wbr/> Their behavior will not be 4013 consistent across all devices,<wbr/> and any given device may only implement 4014 a subset of these modes.<wbr/></p> 4015 </td> 4016 </tr> 4017 4018 <tr class="entries_header"> 4019 <th class="th_details" colspan="5">HAL Implementation Details</th> 4020 </tr> 4021 <tr class="entry_cont"> 4022 <td class="entry_details" colspan="5"> 4023 <p>HAL implementations that include scene modes are expected to provide 4024 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4025 <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 4026 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 4027 <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/> 4028 the HAL must list supported video size and fps range in 4029 <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/> 4030 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming 4031 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture 4032 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/> 4033 This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 4034 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO 4035 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 4036 </td> 4037 </tr> 4038 4039 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4040 <!-- end of entry --> 4041 4042 4043 <tr class="entry" id="controls_android.control.videoStabilizationMode"> 4044 <td class="entry_name 4045 " rowspan="3"> 4046 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 4047 </td> 4048 <td class="entry_type"> 4049 <span class="entry_type_name entry_type_name_enum">byte</span> 4050 4051 <span class="entry_type_visibility"> [public]</span> 4052 4053 4054 <span class="entry_type_hwlevel">[legacy] </span> 4055 4056 4057 4058 <ul class="entry_type_enum"> 4059 <li> 4060 <span class="entry_type_enum_name">OFF</span> 4061 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 4062 </li> 4063 <li> 4064 <span class="entry_type_enum_name">ON</span> 4065 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 4066 </li> 4067 </ul> 4068 4069 </td> <!-- entry_type --> 4070 4071 <td class="entry_description"> 4072 <p>Whether video stabilization is 4073 active.<wbr/></p> 4074 </td> 4075 4076 <td class="entry_units"> 4077 </td> 4078 4079 <td class="entry_range"> 4080 </td> 4081 4082 <td class="entry_tags"> 4083 <ul class="entry_tags"> 4084 <li><a href="#tag_BC">BC</a></li> 4085 </ul> 4086 </td> 4087 4088 </tr> 4089 <tr class="entries_header"> 4090 <th class="th_details" colspan="5">Details</th> 4091 </tr> 4092 <tr class="entry_cont"> 4093 <td class="entry_details" colspan="5"> 4094 <p>Video stabilization automatically translates and scales images from 4095 the camera in order to stabilize motion between consecutive frames.<wbr/></p> 4096 <p>If enabled,<wbr/> video stabilization can modify the 4097 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 4098 <p>Switching between different video stabilization modes may take several 4099 frames to initialize,<wbr/> the camera device will report the current mode 4100 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 4101 the video stabilization modes in the first several capture results may 4102 still be "OFF",<wbr/> and it will become "ON" when the initialization is 4103 done.<wbr/></p> 4104 <p>If a camera device supports both this mode and OIS 4105 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 4106 produce undesirable interaction,<wbr/> so it is recommended not to enable 4107 both at the same time.<wbr/></p> 4108 </td> 4109 </tr> 4110 4111 4112 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4113 <!-- end of entry --> 4114 4115 4116 4117 <!-- end of kind --> 4118 </tbody> 4119 <tr><td colspan="6" class="kind">static</td></tr> 4120 4121 <thead class="entries_header"> 4122 <tr> 4123 <th class="th_name">Property Name</th> 4124 <th class="th_type">Type</th> 4125 <th class="th_description">Description</th> 4126 <th class="th_units">Units</th> 4127 <th class="th_range">Range</th> 4128 <th class="th_tags">Tags</th> 4129 </tr> 4130 </thead> 4131 4132 <tbody> 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> 4144 <td class="entry_name 4145 " rowspan="3"> 4146 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes 4147 </td> 4148 <td class="entry_type"> 4149 <span class="entry_type_name">byte</span> 4150 <span class="entry_type_container">x</span> 4151 4152 <span class="entry_type_array"> 4153 n 4154 </span> 4155 <span class="entry_type_visibility"> [public as enumList]</span> 4156 4157 4158 <span class="entry_type_hwlevel">[legacy] </span> 4159 4160 4161 <div class="entry_type_notes">list of enums</div> 4162 4163 4164 </td> <!-- entry_type --> 4165 4166 <td class="entry_description"> 4167 <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 4168 supported by this camera device.<wbr/></p> 4169 </td> 4170 4171 <td class="entry_units"> 4172 </td> 4173 4174 <td class="entry_range"> 4175 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p> 4176 </td> 4177 4178 <td class="entry_tags"> 4179 <ul class="entry_tags"> 4180 <li><a href="#tag_BC">BC</a></li> 4181 </ul> 4182 </td> 4183 4184 </tr> 4185 <tr class="entries_header"> 4186 <th class="th_details" colspan="5">Details</th> 4187 </tr> 4188 <tr class="entry_cont"> 4189 <td class="entry_details" colspan="5"> 4190 <p>Not all of the auto-exposure anti-banding modes may be 4191 supported by a given camera device.<wbr/> This field lists the 4192 valid anti-banding modes that the application may request 4193 for this camera device with the 4194 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p> 4195 </td> 4196 </tr> 4197 4198 4199 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4200 <!-- end of entry --> 4201 4202 4203 <tr class="entry" id="static_android.control.aeAvailableModes"> 4204 <td class="entry_name 4205 " rowspan="3"> 4206 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes 4207 </td> 4208 <td class="entry_type"> 4209 <span class="entry_type_name">byte</span> 4210 <span class="entry_type_container">x</span> 4211 4212 <span class="entry_type_array"> 4213 n 4214 </span> 4215 <span class="entry_type_visibility"> [public as enumList]</span> 4216 4217 4218 <span class="entry_type_hwlevel">[legacy] </span> 4219 4220 4221 <div class="entry_type_notes">list of enums</div> 4222 4223 4224 </td> <!-- entry_type --> 4225 4226 <td class="entry_description"> 4227 <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 4228 device.<wbr/></p> 4229 </td> 4230 4231 <td class="entry_units"> 4232 </td> 4233 4234 <td class="entry_range"> 4235 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p> 4236 </td> 4237 4238 <td class="entry_tags"> 4239 <ul class="entry_tags"> 4240 <li><a href="#tag_BC">BC</a></li> 4241 </ul> 4242 </td> 4243 4244 </tr> 4245 <tr class="entries_header"> 4246 <th class="th_details" colspan="5">Details</th> 4247 </tr> 4248 <tr class="entry_cont"> 4249 <td class="entry_details" colspan="5"> 4250 <p>Not all the auto-exposure modes may be supported by a 4251 given camera device,<wbr/> especially if no flash unit is 4252 available.<wbr/> This entry lists the valid modes for 4253 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> 4254 <p>All camera devices support ON,<wbr/> and all camera devices with flash 4255 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> 4256 <p>FULL mode camera devices always support OFF mode,<wbr/> 4257 which enables application control of camera exposure time,<wbr/> 4258 sensitivity,<wbr/> and frame duration.<wbr/></p> 4259 <p>LEGACY mode camera devices never support OFF mode.<wbr/> 4260 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR 4261 capability.<wbr/></p> 4262 </td> 4263 </tr> 4264 4265 4266 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4267 <!-- end of entry --> 4268 4269 4270 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> 4271 <td class="entry_name 4272 " rowspan="3"> 4273 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges 4274 </td> 4275 <td class="entry_type"> 4276 <span class="entry_type_name">int32</span> 4277 <span class="entry_type_container">x</span> 4278 4279 <span class="entry_type_array"> 4280 2 x n 4281 </span> 4282 <span class="entry_type_visibility"> [public as rangeInt]</span> 4283 4284 4285 <span class="entry_type_hwlevel">[legacy] </span> 4286 4287 4288 <div class="entry_type_notes">list of pairs of frame rates</div> 4289 4290 4291 </td> <!-- entry_type --> 4292 4293 <td class="entry_description"> 4294 <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 4295 this camera device.<wbr/></p> 4296 </td> 4297 4298 <td class="entry_units"> 4299 Frames per second (FPS) 4300 </td> 4301 4302 <td class="entry_range"> 4303 </td> 4304 4305 <td class="entry_tags"> 4306 <ul class="entry_tags"> 4307 <li><a href="#tag_BC">BC</a></li> 4308 </ul> 4309 </td> 4310 4311 </tr> 4312 <tr class="entries_header"> 4313 <th class="th_details" colspan="5">Details</th> 4314 </tr> 4315 <tr class="entry_cont"> 4316 <td class="entry_details" colspan="5"> 4317 <p>For devices at the LEGACY level or above:</p> 4318 <ul> 4319 <li>This list will always include (30,<wbr/> 30).<wbr/></li> 4320 <li>Also,<wbr/> for constant-framerate recording,<wbr/> for each normal 4321 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 4322 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in 4323 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/> 4324 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is 4325 supported by the device and has 4326 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will 4327 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></li> 4328 <li>For preview streaming use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) where 4329 <code>min</code> <= 15 and <code>max</code> >= 30.<wbr/></li> 4330 </ul> 4331 <p>For devices at the LIMITED level or above:</p> 4332 <ul> 4333 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) 4334 and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the 4335 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li> 4336 </ul> 4337 </td> 4338 </tr> 4339 4340 4341 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4342 <!-- end of entry --> 4343 4344 4345 <tr class="entry" id="static_android.control.aeCompensationRange"> 4346 <td class="entry_name 4347 " rowspan="1"> 4348 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 4349 </td> 4350 <td class="entry_type"> 4351 <span class="entry_type_name">int32</span> 4352 <span class="entry_type_container">x</span> 4353 4354 <span class="entry_type_array"> 4355 2 4356 </span> 4357 <span class="entry_type_visibility"> [public as rangeInt]</span> 4358 4359 4360 <span class="entry_type_hwlevel">[legacy] </span> 4361 4362 4363 4364 4365 </td> <!-- entry_type --> 4366 4367 <td class="entry_description"> 4368 <p>Maximum and minimum exposure compensation values for 4369 <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/> 4370 that are supported by this camera device.<wbr/></p> 4371 </td> 4372 4373 <td class="entry_units"> 4374 </td> 4375 4376 <td class="entry_range"> 4377 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p> 4378 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure 4379 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p> 4380 <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> 4381 <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> 4382 <p>LEGACY devices may support a smaller range than this.<wbr/></p> 4383 </td> 4384 4385 <td class="entry_tags"> 4386 <ul class="entry_tags"> 4387 <li><a href="#tag_BC">BC</a></li> 4388 </ul> 4389 </td> 4390 4391 </tr> 4392 4393 4394 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4395 <!-- end of entry --> 4396 4397 4398 <tr class="entry" id="static_android.control.aeCompensationStep"> 4399 <td class="entry_name 4400 " rowspan="5"> 4401 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 4402 </td> 4403 <td class="entry_type"> 4404 <span class="entry_type_name">rational</span> 4405 4406 <span class="entry_type_visibility"> [public]</span> 4407 4408 4409 <span class="entry_type_hwlevel">[legacy] </span> 4410 4411 4412 4413 4414 </td> <!-- entry_type --> 4415 4416 <td class="entry_description"> 4417 <p>Smallest step by which the exposure compensation 4418 can be changed.<wbr/></p> 4419 </td> 4420 4421 <td class="entry_units"> 4422 Exposure Value (EV) 4423 </td> 4424 4425 <td class="entry_range"> 4426 </td> 4427 4428 <td class="entry_tags"> 4429 <ul class="entry_tags"> 4430 <li><a href="#tag_BC">BC</a></li> 4431 </ul> 4432 </td> 4433 4434 </tr> 4435 <tr class="entries_header"> 4436 <th class="th_details" colspan="5">Details</th> 4437 </tr> 4438 <tr class="entry_cont"> 4439 <td class="entry_details" colspan="5"> 4440 <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 4441 a value of <code>1/<wbr/>2</code>,<wbr/> then a setting of <code>-2</code> for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> means 4442 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p> 4443 <p>One unit of EV compensation changes the brightness of the captured image by a factor 4444 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p> 4445 </td> 4446 </tr> 4447 4448 <tr class="entries_header"> 4449 <th class="th_details" colspan="5">HAL Implementation Details</th> 4450 </tr> 4451 <tr class="entry_cont"> 4452 <td class="entry_details" colspan="5"> 4453 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p> 4454 </td> 4455 </tr> 4456 4457 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4458 <!-- end of entry --> 4459 4460 4461 <tr class="entry" id="static_android.control.afAvailableModes"> 4462 <td class="entry_name 4463 " rowspan="3"> 4464 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 4465 </td> 4466 <td class="entry_type"> 4467 <span class="entry_type_name">byte</span> 4468 <span class="entry_type_container">x</span> 4469 4470 <span class="entry_type_array"> 4471 n 4472 </span> 4473 <span class="entry_type_visibility"> [public as enumList]</span> 4474 4475 4476 <span class="entry_type_hwlevel">[legacy] </span> 4477 4478 4479 <div class="entry_type_notes">List of enums</div> 4480 4481 4482 </td> <!-- entry_type --> 4483 4484 <td class="entry_description"> 4485 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are 4486 supported by this camera device.<wbr/></p> 4487 </td> 4488 4489 <td class="entry_units"> 4490 </td> 4491 4492 <td class="entry_range"> 4493 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p> 4494 </td> 4495 4496 <td class="entry_tags"> 4497 <ul class="entry_tags"> 4498 <li><a href="#tag_BC">BC</a></li> 4499 </ul> 4500 </td> 4501 4502 </tr> 4503 <tr class="entries_header"> 4504 <th class="th_details" colspan="5">Details</th> 4505 </tr> 4506 <tr class="entry_cont"> 4507 <td class="entry_details" colspan="5"> 4508 <p>Not all the auto-focus modes may be supported by a 4509 given camera device.<wbr/> This entry lists the valid modes for 4510 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 4511 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all 4512 camera devices with adjustable focuser units 4513 (<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> 4514 <p>LEGACY devices will support OFF mode only if they support 4515 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to 4516 <code>0.<wbr/>0f</code>).<wbr/></p> 4517 </td> 4518 </tr> 4519 4520 4521 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4522 <!-- end of entry --> 4523 4524 4525 <tr class="entry" id="static_android.control.availableEffects"> 4526 <td class="entry_name 4527 " rowspan="3"> 4528 android.<wbr/>control.<wbr/>available<wbr/>Effects 4529 </td> 4530 <td class="entry_type"> 4531 <span class="entry_type_name">byte</span> 4532 <span class="entry_type_container">x</span> 4533 4534 <span class="entry_type_array"> 4535 n 4536 </span> 4537 <span class="entry_type_visibility"> [public as enumList]</span> 4538 4539 4540 <span class="entry_type_hwlevel">[legacy] </span> 4541 4542 4543 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 4544 4545 4546 </td> <!-- entry_type --> 4547 4548 <td class="entry_description"> 4549 <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 4550 device.<wbr/></p> 4551 </td> 4552 4553 <td class="entry_units"> 4554 </td> 4555 4556 <td class="entry_range"> 4557 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p> 4558 </td> 4559 4560 <td class="entry_tags"> 4561 <ul class="entry_tags"> 4562 <li><a href="#tag_BC">BC</a></li> 4563 </ul> 4564 </td> 4565 4566 </tr> 4567 <tr class="entries_header"> 4568 <th class="th_details" colspan="5">Details</th> 4569 </tr> 4570 <tr class="entry_cont"> 4571 <td class="entry_details" colspan="5"> 4572 <p>This list contains the color effect modes that can be applied to 4573 images produced by the camera device.<wbr/> 4574 Implementations are not expected to be consistent across all devices.<wbr/> 4575 If no color effect modes are available for a device,<wbr/> this will only list 4576 OFF.<wbr/></p> 4577 <p>A color effect will only be applied if 4578 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p> 4579 <p>This control has no effect on the operation of other control routines such 4580 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p> 4581 </td> 4582 </tr> 4583 4584 4585 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4586 <!-- end of entry --> 4587 4588 4589 <tr class="entry" id="static_android.control.availableSceneModes"> 4590 <td class="entry_name 4591 " rowspan="3"> 4592 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 4593 </td> 4594 <td class="entry_type"> 4595 <span class="entry_type_name">byte</span> 4596 <span class="entry_type_container">x</span> 4597 4598 <span class="entry_type_array"> 4599 n 4600 </span> 4601 <span class="entry_type_visibility"> [public as enumList]</span> 4602 4603 4604 <span class="entry_type_hwlevel">[legacy] </span> 4605 4606 4607 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 4608 4609 4610 </td> <!-- entry_type --> 4611 4612 <td class="entry_description"> 4613 <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 4614 device.<wbr/></p> 4615 </td> 4616 4617 <td class="entry_units"> 4618 </td> 4619 4620 <td class="entry_range"> 4621 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p> 4622 </td> 4623 4624 <td class="entry_tags"> 4625 <ul class="entry_tags"> 4626 <li><a href="#tag_BC">BC</a></li> 4627 </ul> 4628 </td> 4629 4630 </tr> 4631 <tr class="entries_header"> 4632 <th class="th_details" colspan="5">Details</th> 4633 </tr> 4634 <tr class="entry_cont"> 4635 <td class="entry_details" colspan="5"> 4636 <p>This list contains scene modes that can be set for the camera device.<wbr/> 4637 Only scene modes that have been fully implemented for the 4638 camera device may be included here.<wbr/> Implementations are not expected 4639 to be consistent across all devices.<wbr/></p> 4640 <p>If no scene modes are supported by the camera device,<wbr/> this 4641 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p> 4642 <p>FACE_<wbr/>PRIORITY is always listed if face detection is 4643 supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> > 4644 0</code>).<wbr/></p> 4645 </td> 4646 </tr> 4647 4648 4649 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4650 <!-- end of entry --> 4651 4652 4653 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 4654 <td class="entry_name 4655 " rowspan="3"> 4656 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 4657 </td> 4658 <td class="entry_type"> 4659 <span class="entry_type_name">byte</span> 4660 <span class="entry_type_container">x</span> 4661 4662 <span class="entry_type_array"> 4663 n 4664 </span> 4665 <span class="entry_type_visibility"> [public as enumList]</span> 4666 4667 4668 <span class="entry_type_hwlevel">[legacy] </span> 4669 4670 4671 <div class="entry_type_notes">List of enums.<wbr/></div> 4672 4673 4674 </td> <!-- entry_type --> 4675 4676 <td class="entry_description"> 4677 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> 4678 that are supported by this camera device.<wbr/></p> 4679 </td> 4680 4681 <td class="entry_units"> 4682 </td> 4683 4684 <td class="entry_range"> 4685 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p> 4686 </td> 4687 4688 <td class="entry_tags"> 4689 <ul class="entry_tags"> 4690 <li><a href="#tag_BC">BC</a></li> 4691 </ul> 4692 </td> 4693 4694 </tr> 4695 <tr class="entries_header"> 4696 <th class="th_details" colspan="5">Details</th> 4697 </tr> 4698 <tr class="entry_cont"> 4699 <td class="entry_details" colspan="5"> 4700 <p>OFF will always be listed.<wbr/></p> 4701 </td> 4702 </tr> 4703 4704 4705 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4706 <!-- end of entry --> 4707 4708 4709 <tr class="entry" id="static_android.control.awbAvailableModes"> 4710 <td class="entry_name 4711 " rowspan="3"> 4712 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 4713 </td> 4714 <td class="entry_type"> 4715 <span class="entry_type_name">byte</span> 4716 <span class="entry_type_container">x</span> 4717 4718 <span class="entry_type_array"> 4719 n 4720 </span> 4721 <span class="entry_type_visibility"> [public as enumList]</span> 4722 4723 4724 <span class="entry_type_hwlevel">[legacy] </span> 4725 4726 4727 <div class="entry_type_notes">List of enums</div> 4728 4729 4730 </td> <!-- entry_type --> 4731 4732 <td class="entry_description"> 4733 <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 4734 camera device.<wbr/></p> 4735 </td> 4736 4737 <td class="entry_units"> 4738 </td> 4739 4740 <td class="entry_range"> 4741 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p> 4742 </td> 4743 4744 <td class="entry_tags"> 4745 <ul class="entry_tags"> 4746 <li><a href="#tag_BC">BC</a></li> 4747 </ul> 4748 </td> 4749 4750 </tr> 4751 <tr class="entries_header"> 4752 <th class="th_details" colspan="5">Details</th> 4753 </tr> 4754 <tr class="entry_cont"> 4755 <td class="entry_details" colspan="5"> 4756 <p>Not all the auto-white-balance modes may be supported by a 4757 given camera device.<wbr/> This entry lists the valid modes for 4758 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 4759 <p>All camera devices will support ON mode.<wbr/></p> 4760 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF 4761 mode,<wbr/> which enables application control of white balance,<wbr/> by using 4762 <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 4763 mode camera devices.<wbr/></p> 4764 </td> 4765 </tr> 4766 4767 4768 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4769 <!-- end of entry --> 4770 4771 4772 <tr class="entry" id="static_android.control.maxRegions"> 4773 <td class="entry_name 4774 " rowspan="1"> 4775 android.<wbr/>control.<wbr/>max<wbr/>Regions 4776 </td> 4777 <td class="entry_type"> 4778 <span class="entry_type_name">int32</span> 4779 <span class="entry_type_container">x</span> 4780 4781 <span class="entry_type_array"> 4782 3 4783 </span> 4784 <span class="entry_type_visibility"> [hidden]</span> 4785 4786 4787 <span class="entry_type_hwlevel">[legacy] </span> 4788 4789 4790 4791 4792 </td> <!-- entry_type --> 4793 4794 <td class="entry_description"> 4795 <p>List of the maximum number of regions that can be used for metering in 4796 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 4797 this corresponds to the the maximum number of elements in 4798 <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/> 4799 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 4800 </td> 4801 4802 <td class="entry_units"> 4803 </td> 4804 4805 <td class="entry_range"> 4806 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 4807 this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 4808 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 4809 </td> 4810 4811 <td class="entry_tags"> 4812 <ul class="entry_tags"> 4813 <li><a href="#tag_BC">BC</a></li> 4814 </ul> 4815 </td> 4816 4817 </tr> 4818 4819 4820 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4821 <!-- end of entry --> 4822 4823 4824 <tr class="entry" id="static_android.control.maxRegionsAe"> 4825 <td class="entry_name 4826 " rowspan="5"> 4827 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae 4828 </td> 4829 <td class="entry_type"> 4830 <span class="entry_type_name">int32</span> 4831 4832 <span class="entry_type_visibility"> [public]</span> 4833 4834 <span class="entry_type_synthetic">[synthetic] </span> 4835 4836 <span class="entry_type_hwlevel">[legacy] </span> 4837 4838 4839 4840 4841 </td> <!-- entry_type --> 4842 4843 <td class="entry_description"> 4844 <p>The maximum number of metering regions that can be used by the auto-exposure (AE) 4845 routine.<wbr/></p> 4846 </td> 4847 4848 <td class="entry_units"> 4849 </td> 4850 4851 <td class="entry_range"> 4852 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 4853 value will be >= 1.<wbr/></p> 4854 </td> 4855 4856 <td class="entry_tags"> 4857 </td> 4858 4859 </tr> 4860 <tr class="entries_header"> 4861 <th class="th_details" colspan="5">Details</th> 4862 </tr> 4863 <tr class="entry_cont"> 4864 <td class="entry_details" colspan="5"> 4865 <p>This corresponds to the the maximum allowed number of elements in 4866 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 4867 </td> 4868 </tr> 4869 4870 <tr class="entries_header"> 4871 <th class="th_details" colspan="5">HAL Implementation Details</th> 4872 </tr> 4873 <tr class="entry_cont"> 4874 <td class="entry_details" colspan="5"> 4875 <p>This entry is private to the framework.<wbr/> Fill in 4876 maxRegions to have this entry be automatically populated.<wbr/></p> 4877 </td> 4878 </tr> 4879 4880 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4881 <!-- end of entry --> 4882 4883 4884 <tr class="entry" id="static_android.control.maxRegionsAwb"> 4885 <td class="entry_name 4886 " rowspan="5"> 4887 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb 4888 </td> 4889 <td class="entry_type"> 4890 <span class="entry_type_name">int32</span> 4891 4892 <span class="entry_type_visibility"> [public]</span> 4893 4894 <span class="entry_type_synthetic">[synthetic] </span> 4895 4896 <span class="entry_type_hwlevel">[legacy] </span> 4897 4898 4899 4900 4901 </td> <!-- entry_type --> 4902 4903 <td class="entry_description"> 4904 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB) 4905 routine.<wbr/></p> 4906 </td> 4907 4908 <td class="entry_units"> 4909 </td> 4910 4911 <td class="entry_range"> 4912 <p>Value will be >= 0.<wbr/></p> 4913 </td> 4914 4915 <td class="entry_tags"> 4916 </td> 4917 4918 </tr> 4919 <tr class="entries_header"> 4920 <th class="th_details" colspan="5">Details</th> 4921 </tr> 4922 <tr class="entry_cont"> 4923 <td class="entry_details" colspan="5"> 4924 <p>This corresponds to the the maximum allowed number of elements in 4925 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 4926 </td> 4927 </tr> 4928 4929 <tr class="entries_header"> 4930 <th class="th_details" colspan="5">HAL Implementation Details</th> 4931 </tr> 4932 <tr class="entry_cont"> 4933 <td class="entry_details" colspan="5"> 4934 <p>This entry is private to the framework.<wbr/> Fill in 4935 maxRegions to have this entry be automatically populated.<wbr/></p> 4936 </td> 4937 </tr> 4938 4939 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4940 <!-- end of entry --> 4941 4942 4943 <tr class="entry" id="static_android.control.maxRegionsAf"> 4944 <td class="entry_name 4945 " rowspan="5"> 4946 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af 4947 </td> 4948 <td class="entry_type"> 4949 <span class="entry_type_name">int32</span> 4950 4951 <span class="entry_type_visibility"> [public]</span> 4952 4953 <span class="entry_type_synthetic">[synthetic] </span> 4954 4955 <span class="entry_type_hwlevel">[legacy] </span> 4956 4957 4958 4959 4960 </td> <!-- entry_type --> 4961 4962 <td class="entry_description"> 4963 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p> 4964 </td> 4965 4966 <td class="entry_units"> 4967 </td> 4968 4969 <td class="entry_range"> 4970 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 4971 value will be >= 1.<wbr/></p> 4972 </td> 4973 4974 <td class="entry_tags"> 4975 </td> 4976 4977 </tr> 4978 <tr class="entries_header"> 4979 <th class="th_details" colspan="5">Details</th> 4980 </tr> 4981 <tr class="entry_cont"> 4982 <td class="entry_details" colspan="5"> 4983 <p>This corresponds to the the maximum allowed number of elements in 4984 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 4985 </td> 4986 </tr> 4987 4988 <tr class="entries_header"> 4989 <th class="th_details" colspan="5">HAL Implementation Details</th> 4990 </tr> 4991 <tr class="entry_cont"> 4992 <td class="entry_details" colspan="5"> 4993 <p>This entry is private to the framework.<wbr/> Fill in 4994 maxRegions to have this entry be automatically populated.<wbr/></p> 4995 </td> 4996 </tr> 4997 4998 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4999 <!-- end of entry --> 5000 5001 5002 <tr class="entry" id="static_android.control.sceneModeOverrides"> 5003 <td class="entry_name 5004 " rowspan="5"> 5005 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 5006 </td> 5007 <td class="entry_type"> 5008 <span class="entry_type_name">byte</span> 5009 <span class="entry_type_container">x</span> 5010 5011 <span class="entry_type_array"> 5012 3 x length(availableSceneModes) 5013 </span> 5014 <span class="entry_type_visibility"> [system]</span> 5015 5016 5017 <span class="entry_type_hwlevel">[limited] </span> 5018 5019 5020 5021 5022 </td> <!-- entry_type --> 5023 5024 <td class="entry_description"> 5025 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 5026 settings to use with each available scene mode.<wbr/></p> 5027 </td> 5028 5029 <td class="entry_units"> 5030 </td> 5031 5032 <td class="entry_range"> 5033 <p>For each available scene mode,<wbr/> the list must contain three 5034 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5035 <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 5036 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 5037 where aeMode has the lowest index position.<wbr/></p> 5038 </td> 5039 5040 <td class="entry_tags"> 5041 <ul class="entry_tags"> 5042 <li><a href="#tag_BC">BC</a></li> 5043 </ul> 5044 </td> 5045 5046 </tr> 5047 <tr class="entries_header"> 5048 <th class="th_details" colspan="5">Details</th> 5049 </tr> 5050 <tr class="entry_cont"> 5051 <td class="entry_details" colspan="5"> 5052 <p>When a scene mode is enabled,<wbr/> the camera device is expected 5053 to override <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> 5054 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 5055 that scene mode.<wbr/></p> 5056 <p>The order of this list matches that of availableSceneModes,<wbr/> 5057 with 3 entries for each mode.<wbr/> The overrides listed 5058 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/> 5059 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5060 <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 5061 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 5062 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and 5063 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p> 5064 <p>For example,<wbr/> if availableSceneModes contains 5065 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 5066 expects sceneModeOverrides to have 9 entries formatted like: 5067 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 5068 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 5069 </td> 5070 </tr> 5071 5072 <tr class="entries_header"> 5073 <th class="th_details" colspan="5">HAL Implementation Details</th> 5074 </tr> 5075 <tr class="entry_cont"> 5076 <td class="entry_details" colspan="5"> 5077 <p>To maintain backward compatibility,<wbr/> this list will be made available 5078 in the static metadata of the camera service.<wbr/> The camera service will 5079 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5080 <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 5081 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p> 5082 </td> 5083 </tr> 5084 5085 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5086 <!-- end of entry --> 5087 5088 5089 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations"> 5090 <td class="entry_name 5091 " rowspan="5"> 5092 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations 5093 </td> 5094 <td class="entry_type"> 5095 <span class="entry_type_name">int32</span> 5096 <span class="entry_type_container">x</span> 5097 5098 <span class="entry_type_array"> 5099 5 x n 5100 </span> 5101 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> 5102 5103 5104 <span class="entry_type_hwlevel">[limited] </span> 5105 5106 5107 5108 5109 </td> <!-- entry_type --> 5110 5111 <td class="entry_description"> 5112 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations 5113 supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max).<wbr/></p> 5114 </td> 5115 5116 <td class="entry_units"> 5117 </td> 5118 5119 <td class="entry_range"> 5120 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p> 5121 </td> 5122 5123 <td class="entry_tags"> 5124 <ul class="entry_tags"> 5125 <li><a href="#tag_V1">V1</a></li> 5126 </ul> 5127 </td> 5128 5129 </tr> 5130 <tr class="entries_header"> 5131 <th class="th_details" colspan="5">Details</th> 5132 </tr> 5133 <tr class="entry_cont"> 5134 <td class="entry_details" colspan="5"> 5135 <p>When CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>,<wbr/> 5136 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size 5137 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes 5138 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> 5139 for processed non-stalling formats.<wbr/></p> 5140 <p>For the high speed video use case,<wbr/> the application must 5141 select the video size and fps range from this metadata to configure the recording and 5142 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends 5143 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to 5144 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata 5145 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the 5146 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application 5147 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams 5148 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p> 5149 <p>The min and max fps will be multiple times of 30fps.<wbr/></p> 5150 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/> 5151 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate 5152 multiple frames together and send to camera device for processing where the request 5153 controls are same for all the frames in this batch.<wbr/> Max batch size indicates 5154 the max possible number of frames the camera device will group together for this high 5155 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed 5156 recording request list by 5157 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/> 5158 The max batch size for each configuration will satisfy below conditions:</p> 5159 <ul> 5160 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/> 5161 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li> 5162 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but 5163 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch 5164 size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li> 5165 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li> 5166 </ul> 5167 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/> 5168 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p> 5169 <p>This fps ranges in this configuration list can only be used to create requests 5170 that are submitted to a high speed camera capture session created by 5171 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> 5172 The fps ranges reported in this metadata must not be used to setup capture requests for 5173 normal capture session,<wbr/> or it will cause request error.<wbr/></p> 5174 </td> 5175 </tr> 5176 5177 <tr class="entries_header"> 5178 <th class="th_details" colspan="5">HAL Implementation Details</th> 5179 </tr> 5180 <tr class="entry_cont"> 5181 <td class="entry_details" colspan="5"> 5182 <p>All the sizes listed in this configuration will be a subset of the sizes reported by 5183 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/> 5184 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum 5185 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p> 5186 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps 5187 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application 5188 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused 5189 stutter when starting recording as much as possible,<wbr/> the application may want to ensure 5190 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise 5191 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/> 5192 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise 5193 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to 5194 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start 5195 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps 5196 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps 5197 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must 5198 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p> 5199 </td> 5200 </tr> 5201 5202 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5203 <!-- end of entry --> 5204 5205 5206 <tr class="entry" id="static_android.control.aeLockAvailable"> 5207 <td class="entry_name 5208 " rowspan="3"> 5209 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available 5210 </td> 5211 <td class="entry_type"> 5212 <span class="entry_type_name entry_type_name_enum">byte</span> 5213 5214 <span class="entry_type_visibility"> [public as boolean]</span> 5215 5216 5217 <span class="entry_type_hwlevel">[legacy] </span> 5218 5219 5220 5221 <ul class="entry_type_enum"> 5222 <li> 5223 <span class="entry_type_enum_name">FALSE</span> 5224 </li> 5225 <li> 5226 <span class="entry_type_enum_name">TRUE</span> 5227 </li> 5228 </ul> 5229 5230 </td> <!-- entry_type --> 5231 5232 <td class="entry_description"> 5233 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p> 5234 </td> 5235 5236 <td class="entry_units"> 5237 </td> 5238 5239 <td class="entry_range"> 5240 </td> 5241 5242 <td class="entry_tags"> 5243 <ul class="entry_tags"> 5244 <li><a href="#tag_BC">BC</a></li> 5245 </ul> 5246 </td> 5247 5248 </tr> 5249 <tr class="entries_header"> 5250 <th class="th_details" colspan="5">Details</th> 5251 </tr> 5252 <tr class="entry_cont"> 5253 <td class="entry_details" colspan="5"> 5254 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always 5255 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5256 </td> 5257 </tr> 5258 5259 5260 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5261 <!-- end of entry --> 5262 5263 5264 <tr class="entry" id="static_android.control.awbLockAvailable"> 5265 <td class="entry_name 5266 " rowspan="3"> 5267 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available 5268 </td> 5269 <td class="entry_type"> 5270 <span class="entry_type_name entry_type_name_enum">byte</span> 5271 5272 <span class="entry_type_visibility"> [public as boolean]</span> 5273 5274 5275 <span class="entry_type_hwlevel">[legacy] </span> 5276 5277 5278 5279 <ul class="entry_type_enum"> 5280 <li> 5281 <span class="entry_type_enum_name">FALSE</span> 5282 </li> 5283 <li> 5284 <span class="entry_type_enum_name">TRUE</span> 5285 </li> 5286 </ul> 5287 5288 </td> <!-- entry_type --> 5289 5290 <td class="entry_description"> 5291 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p> 5292 </td> 5293 5294 <td class="entry_units"> 5295 </td> 5296 5297 <td class="entry_range"> 5298 </td> 5299 5300 <td class="entry_tags"> 5301 <ul class="entry_tags"> 5302 <li><a href="#tag_BC">BC</a></li> 5303 </ul> 5304 </td> 5305 5306 </tr> 5307 <tr class="entries_header"> 5308 <th class="th_details" colspan="5">Details</th> 5309 </tr> 5310 <tr class="entry_cont"> 5311 <td class="entry_details" colspan="5"> 5312 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will 5313 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5314 </td> 5315 </tr> 5316 5317 5318 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5319 <!-- end of entry --> 5320 5321 5322 <tr class="entry" id="static_android.control.availableModes"> 5323 <td class="entry_name 5324 " rowspan="3"> 5325 android.<wbr/>control.<wbr/>available<wbr/>Modes 5326 </td> 5327 <td class="entry_type"> 5328 <span class="entry_type_name">byte</span> 5329 <span class="entry_type_container">x</span> 5330 5331 <span class="entry_type_array"> 5332 n 5333 </span> 5334 <span class="entry_type_visibility"> [public as enumList]</span> 5335 5336 5337 <span class="entry_type_hwlevel">[legacy] </span> 5338 5339 5340 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div> 5341 5342 5343 </td> <!-- entry_type --> 5344 5345 <td class="entry_description"> 5346 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera 5347 device.<wbr/></p> 5348 </td> 5349 5350 <td class="entry_units"> 5351 </td> 5352 5353 <td class="entry_range"> 5354 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p> 5355 </td> 5356 5357 <td class="entry_tags"> 5358 </td> 5359 5360 </tr> 5361 <tr class="entries_header"> 5362 <th class="th_details" colspan="5">Details</th> 5363 </tr> 5364 <tr class="entry_cont"> 5365 <td class="entry_details" colspan="5"> 5366 <p>This list contains control modes that can be set for the camera device.<wbr/> 5367 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL 5368 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p> 5369 </td> 5370 </tr> 5371 5372 5373 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5374 <!-- end of entry --> 5375 5376 5377 5378 <!-- end of kind --> 5379 </tbody> 5380 <tr><td colspan="6" class="kind">dynamic</td></tr> 5381 5382 <thead class="entries_header"> 5383 <tr> 5384 <th class="th_name">Property Name</th> 5385 <th class="th_type">Type</th> 5386 <th class="th_description">Description</th> 5387 <th class="th_units">Units</th> 5388 <th class="th_range">Range</th> 5389 <th class="th_tags">Tags</th> 5390 </tr> 5391 </thead> 5392 5393 <tbody> 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 5405 <td class="entry_name 5406 entry_name_deprecated 5407 " rowspan="3"> 5408 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 5409 </td> 5410 <td class="entry_type"> 5411 <span class="entry_type_name">int32</span> 5412 5413 <span class="entry_type_visibility"> [system]</span> 5414 5415 5416 5417 <span class="entry_type_deprecated">[deprecated] </span> 5418 5419 5420 5421 </td> <!-- entry_type --> 5422 5423 <td class="entry_description"> 5424 <p>The ID sent with the latest 5425 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 5426 </td> 5427 5428 <td class="entry_units"> 5429 </td> 5430 5431 <td class="entry_range"> 5432 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 5433 </td> 5434 5435 <td class="entry_tags"> 5436 </td> 5437 5438 </tr> 5439 <tr class="entries_header"> 5440 <th class="th_details" colspan="5">Details</th> 5441 </tr> 5442 <tr class="entry_cont"> 5443 <td class="entry_details" colspan="5"> 5444 <p>Must be 0 if no 5445 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 5446 by HAL.<wbr/> Always updated even if AE algorithm ignores the 5447 trigger</p> 5448 </td> 5449 </tr> 5450 5451 5452 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5453 <!-- end of entry --> 5454 5455 5456 <tr class="entry" id="dynamic_android.control.aeAntibandingMode"> 5457 <td class="entry_name 5458 " rowspan="5"> 5459 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 5460 </td> 5461 <td class="entry_type"> 5462 <span class="entry_type_name entry_type_name_enum">byte</span> 5463 5464 <span class="entry_type_visibility"> [public]</span> 5465 5466 5467 <span class="entry_type_hwlevel">[legacy] </span> 5468 5469 5470 5471 <ul class="entry_type_enum"> 5472 <li> 5473 <span class="entry_type_enum_name">OFF</span> 5474 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 5475 avoid banding problems.<wbr/></p></span> 5476 </li> 5477 <li> 5478 <span class="entry_type_enum_name">50HZ</span> 5479 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5480 avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 5481 </li> 5482 <li> 5483 <span class="entry_type_enum_name">60HZ</span> 5484 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5485 avoid banding problems with 60Hz illumination 5486 sources.<wbr/></p></span> 5487 </li> 5488 <li> 5489 <span class="entry_type_enum_name">AUTO</span> 5490 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 5491 antibanding routine to the current illumination 5492 condition.<wbr/> This is the default mode if AUTO is 5493 available on given camera device.<wbr/></p></span> 5494 </li> 5495 </ul> 5496 5497 </td> <!-- entry_type --> 5498 5499 <td class="entry_description"> 5500 <p>The desired setting for the camera device's auto-exposure 5501 algorithm's antibanding compensation.<wbr/></p> 5502 </td> 5503 5504 <td class="entry_units"> 5505 </td> 5506 5507 <td class="entry_range"> 5508 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 5509 </td> 5510 5511 <td class="entry_tags"> 5512 <ul class="entry_tags"> 5513 <li><a href="#tag_BC">BC</a></li> 5514 </ul> 5515 </td> 5516 5517 </tr> 5518 <tr class="entries_header"> 5519 <th class="th_details" colspan="5">Details</th> 5520 </tr> 5521 <tr class="entry_cont"> 5522 <td class="entry_details" colspan="5"> 5523 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 5524 lights,<wbr/> flicker at the rate of the power supply frequency 5525 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 5526 typically not noticeable to a person,<wbr/> it can be visible to 5527 a camera device.<wbr/> If a camera sets its exposure time to the 5528 wrong value,<wbr/> the flicker may become visible in the 5529 viewfinder as flicker or in a final captured image,<wbr/> as a 5530 set of variable-brightness bands across the image.<wbr/></p> 5531 <p>Therefore,<wbr/> the auto-exposure routines of camera devices 5532 include antibanding routines that ensure that the chosen 5533 exposure value will not cause such banding.<wbr/> The choice of 5534 exposure time depends on the rate of flicker,<wbr/> which the 5535 camera device can detect automatically,<wbr/> or the expected 5536 rate can be selected by the application using this 5537 control.<wbr/></p> 5538 <p>A given camera device may not support all of the possible 5539 options for the antibanding mode.<wbr/> The 5540 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 5541 the available modes for a given camera device.<wbr/></p> 5542 <p>AUTO mode is the default if it is available on given 5543 camera device.<wbr/> When AUTO mode is not available,<wbr/> the 5544 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 5545 and 60HZ will be available.<wbr/></p> 5546 <p>If manual exposure control is enabled (by setting 5547 <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/> 5548 then this setting has no effect,<wbr/> and the application must 5549 ensure it selects exposure times that do not cause banding 5550 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 5551 the application in this.<wbr/></p> 5552 </td> 5553 </tr> 5554 5555 <tr class="entries_header"> 5556 <th class="th_details" colspan="5">HAL Implementation Details</th> 5557 </tr> 5558 <tr class="entry_cont"> 5559 <td class="entry_details" colspan="5"> 5560 <p>For all capture request templates,<wbr/> this field must be set 5561 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 5562 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 5563 60HZ must be available.<wbr/></p> 5564 <p>If manual exposure control is enabled (by setting 5565 <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/> 5566 then the exposure values provided by the application must not be 5567 adjusted for antibanding.<wbr/></p> 5568 </td> 5569 </tr> 5570 5571 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5572 <!-- end of entry --> 5573 5574 5575 <tr class="entry" id="dynamic_android.control.aeExposureCompensation"> 5576 <td class="entry_name 5577 " rowspan="3"> 5578 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 5579 </td> 5580 <td class="entry_type"> 5581 <span class="entry_type_name">int32</span> 5582 5583 <span class="entry_type_visibility"> [public]</span> 5584 5585 5586 <span class="entry_type_hwlevel">[legacy] </span> 5587 5588 5589 5590 5591 </td> <!-- entry_type --> 5592 5593 <td class="entry_description"> 5594 <p>Adjustment to auto-exposure (AE) target image 5595 brightness.<wbr/></p> 5596 </td> 5597 5598 <td class="entry_units"> 5599 Compensation steps 5600 </td> 5601 5602 <td class="entry_range"> 5603 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 5604 </td> 5605 5606 <td class="entry_tags"> 5607 <ul class="entry_tags"> 5608 <li><a href="#tag_BC">BC</a></li> 5609 </ul> 5610 </td> 5611 5612 </tr> 5613 <tr class="entries_header"> 5614 <th class="th_details" colspan="5">Details</th> 5615 </tr> 5616 <tr class="entry_cont"> 5617 <td class="entry_details" colspan="5"> 5618 <p>The adjustment is measured as a count of steps,<wbr/> with the 5619 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 5620 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 5621 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 5622 will mean an exposure compensation of +2 EV; -3 will mean an 5623 exposure compensation of -1 EV.<wbr/> One EV represents a doubling 5624 of image brightness.<wbr/> Note that this control will only be 5625 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 5626 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 5627 <p>In the event of exposure compensation value being changed,<wbr/> camera device 5628 may take several frames to reach the newly requested exposure target.<wbr/> 5629 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 5630 state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 5631 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 5632 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 5633 </td> 5634 </tr> 5635 5636 5637 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5638 <!-- end of entry --> 5639 5640 5641 <tr class="entry" id="dynamic_android.control.aeLock"> 5642 <td class="entry_name 5643 " rowspan="3"> 5644 android.<wbr/>control.<wbr/>ae<wbr/>Lock 5645 </td> 5646 <td class="entry_type"> 5647 <span class="entry_type_name entry_type_name_enum">byte</span> 5648 5649 <span class="entry_type_visibility"> [public as boolean]</span> 5650 5651 5652 <span class="entry_type_hwlevel">[legacy] </span> 5653 5654 5655 5656 <ul class="entry_type_enum"> 5657 <li> 5658 <span class="entry_type_enum_name">OFF</span> 5659 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 5660 is free to update its parameters.<wbr/></p></span> 5661 </li> 5662 <li> 5663 <span class="entry_type_enum_name">ON</span> 5664 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 5665 must not update the exposure and sensitivity parameters 5666 while the lock is active.<wbr/></p> 5667 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 5668 will still take effect while auto-exposure is locked.<wbr/></p> 5669 <p>Some rare LEGACY devices may not support 5670 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 5671 </li> 5672 </ul> 5673 5674 </td> <!-- entry_type --> 5675 5676 <td class="entry_description"> 5677 <p>Whether auto-exposure (AE) is currently locked to its latest 5678 calculated values.<wbr/></p> 5679 </td> 5680 5681 <td class="entry_units"> 5682 </td> 5683 5684 <td class="entry_range"> 5685 </td> 5686 5687 <td class="entry_tags"> 5688 <ul class="entry_tags"> 5689 <li><a href="#tag_BC">BC</a></li> 5690 </ul> 5691 </td> 5692 5693 </tr> 5694 <tr class="entries_header"> 5695 <th class="th_details" colspan="5">Details</th> 5696 </tr> 5697 <tr class="entry_cont"> 5698 <td class="entry_details" colspan="5"> 5699 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 5700 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 5701 <p>Note that even when AE is locked,<wbr/> the flash may be fired if 5702 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 5703 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 5704 <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 5705 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 5706 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 5707 when AE is already locked,<wbr/> the camera device will not change the exposure time 5708 (<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>) 5709 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 5710 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 5711 <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/> 5712 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 5713 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 5714 the AE if AE is locked by the camera device internally during precapture metering 5715 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 5716 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 5717 will never succeed in a sequence of preview requests where AE lock is always set 5718 to <code>false</code>.<wbr/></p> 5719 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 5720 get locked do not necessarily correspond to the settings that were present in the 5721 latest capture result received from the camera device,<wbr/> since additional captures 5722 and AE updates may have occurred even before the result was sent out.<wbr/> If an 5723 application is switching between automatic and manual control and wishes to eliminate 5724 any flicker during the switch,<wbr/> the following procedure is recommended:</p> 5725 <ol> 5726 <li>Starting in auto-AE mode:</li> 5727 <li>Lock AE</li> 5728 <li>Wait for the first result to be output that has the AE locked</li> 5729 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 5730 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 5731 </ol> 5732 <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> 5733 </td> 5734 </tr> 5735 5736 5737 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5738 <!-- end of entry --> 5739 5740 5741 <tr class="entry" id="dynamic_android.control.aeMode"> 5742 <td class="entry_name 5743 " rowspan="3"> 5744 android.<wbr/>control.<wbr/>ae<wbr/>Mode 5745 </td> 5746 <td class="entry_type"> 5747 <span class="entry_type_name entry_type_name_enum">byte</span> 5748 5749 <span class="entry_type_visibility"> [public]</span> 5750 5751 5752 <span class="entry_type_hwlevel">[legacy] </span> 5753 5754 5755 5756 <ul class="entry_type_enum"> 5757 <li> 5758 <span class="entry_type_enum_name">OFF</span> 5759 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 5760 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5761 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 5762 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 5763 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 5764 a flash unit for this camera device.<wbr/></p> 5765 <p>Note that auto-white balance (AWB) and auto-focus (AF) 5766 behavior is device dependent when AE is in OFF mode.<wbr/> 5767 To have consistent behavior across different devices,<wbr/> 5768 it is recommended to either set AWB and AF to OFF mode 5769 or lock AWB and AF before setting AE to OFF.<wbr/> 5770 See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/> 5771 <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> 5772 for more details.<wbr/></p> 5773 <p>LEGACY devices do not support the OFF mode and will 5774 override attempts to use this value to ON.<wbr/></p></span> 5775 </li> 5776 <li> 5777 <span class="entry_type_enum_name">ON</span> 5778 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 5779 with no flash control.<wbr/></p> 5780 <p>The application's values for 5781 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5782 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 5783 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 5784 application has control over the various 5785 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 5786 </li> 5787 <li> 5788 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 5789 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 5790 the camera's flash unit,<wbr/> firing it in low-light 5791 conditions.<wbr/></p> 5792 <p>The flash may be fired during a precapture sequence 5793 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 5794 may be fired for captures for which the 5795 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 5796 STILL_<wbr/>CAPTURE</p></span> 5797 </li> 5798 <li> 5799 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 5800 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 5801 the camera's flash unit,<wbr/> always firing it for still 5802 captures.<wbr/></p> 5803 <p>The flash may be fired during a precapture sequence 5804 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 5805 will always be fired for captures for which the 5806 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 5807 STILL_<wbr/>CAPTURE</p></span> 5808 </li> 5809 <li> 5810 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 5811 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 5812 reduction.<wbr/></p> 5813 <p>If deemed necessary by the camera device,<wbr/> a red eye 5814 reduction flash will fire during the precapture 5815 sequence.<wbr/></p></span> 5816 </li> 5817 </ul> 5818 5819 </td> <!-- entry_type --> 5820 5821 <td class="entry_description"> 5822 <p>The desired mode for the camera device's 5823 auto-exposure routine.<wbr/></p> 5824 </td> 5825 5826 <td class="entry_units"> 5827 </td> 5828 5829 <td class="entry_range"> 5830 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 5831 </td> 5832 5833 <td class="entry_tags"> 5834 <ul class="entry_tags"> 5835 <li><a href="#tag_BC">BC</a></li> 5836 </ul> 5837 </td> 5838 5839 </tr> 5840 <tr class="entries_header"> 5841 <th class="th_details" colspan="5">Details</th> 5842 </tr> 5843 <tr class="entry_cont"> 5844 <td class="entry_details" colspan="5"> 5845 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 5846 AUTO.<wbr/></p> 5847 <p>When set to any of the ON modes,<wbr/> the camera device's 5848 auto-exposure routine is enabled,<wbr/> overriding the 5849 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 5850 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5851 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 5852 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 5853 is selected,<wbr/> the camera device's flash unit controls are 5854 also overridden.<wbr/></p> 5855 <p>The FLASH modes are only available if the camera device 5856 has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 5857 <p>If flash TORCH mode is desired,<wbr/> this field must be set to 5858 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 5859 <p>When set to any of the ON modes,<wbr/> the values chosen by the 5860 camera device auto-exposure routine for the overridden 5861 fields for a given capture will be available in its 5862 CaptureResult.<wbr/></p> 5863 </td> 5864 </tr> 5865 5866 5867 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5868 <!-- end of entry --> 5869 5870 5871 <tr class="entry" id="dynamic_android.control.aeRegions"> 5872 <td class="entry_name 5873 " rowspan="5"> 5874 android.<wbr/>control.<wbr/>ae<wbr/>Regions 5875 </td> 5876 <td class="entry_type"> 5877 <span class="entry_type_name">int32</span> 5878 <span class="entry_type_container">x</span> 5879 5880 <span class="entry_type_array"> 5881 5 x area_count 5882 </span> 5883 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 5884 5885 5886 5887 5888 5889 5890 </td> <!-- entry_type --> 5891 5892 <td class="entry_description"> 5893 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 5894 </td> 5895 5896 <td class="entry_units"> 5897 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 5898 </td> 5899 5900 <td class="entry_range"> 5901 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 5902 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 5903 </td> 5904 5905 <td class="entry_tags"> 5906 <ul class="entry_tags"> 5907 <li><a href="#tag_BC">BC</a></li> 5908 </ul> 5909 </td> 5910 5911 </tr> 5912 <tr class="entries_header"> 5913 <th class="th_details" colspan="5">Details</th> 5914 </tr> 5915 <tr class="entry_cont"> 5916 <td class="entry_details" colspan="5"> 5917 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 5918 Otherwise will always be present.<wbr/></p> 5919 <p>The maximum number of regions supported by the device is determined by the value 5920 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 5921 <p>The coordinate system is based on the active pixel array,<wbr/> 5922 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 5923 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 5924 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 5925 bottom-right pixel in the active pixel array.<wbr/></p> 5926 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 5927 for every pixel in the area.<wbr/> This means that a large metering area 5928 with the same weight as a smaller area will have more effect in 5929 the metering result.<wbr/> Metering areas can partially overlap and the 5930 camera device will add the weights in the overlap region.<wbr/></p> 5931 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 5932 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 5933 weight is ignored.<wbr/></p> 5934 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 5935 camera device.<wbr/></p> 5936 <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 5937 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 5938 region and output only the intersection rectangle as the metering region in the result 5939 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 5940 not reported in the result metadata.<wbr/></p> 5941 </td> 5942 </tr> 5943 5944 <tr class="entries_header"> 5945 <th class="th_details" colspan="5">HAL Implementation Details</th> 5946 </tr> 5947 <tr class="entry_cont"> 5948 <td class="entry_details" colspan="5"> 5949 <p>The HAL level representation of MeteringRectangle[] is a 5950 int[5 * area_<wbr/>count].<wbr/> 5951 Every five elements represent a metering region of 5952 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 5953 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 5954 exclusive on xmax and ymax.<wbr/></p> 5955 </td> 5956 </tr> 5957 5958 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5959 <!-- end of entry --> 5960 5961 5962 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange"> 5963 <td class="entry_name 5964 " rowspan="3"> 5965 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 5966 </td> 5967 <td class="entry_type"> 5968 <span class="entry_type_name">int32</span> 5969 <span class="entry_type_container">x</span> 5970 5971 <span class="entry_type_array"> 5972 2 5973 </span> 5974 <span class="entry_type_visibility"> [public as rangeInt]</span> 5975 5976 5977 <span class="entry_type_hwlevel">[legacy] </span> 5978 5979 5980 5981 5982 </td> <!-- entry_type --> 5983 5984 <td class="entry_description"> 5985 <p>Range over which the auto-exposure routine can 5986 adjust the capture frame rate to maintain good 5987 exposure.<wbr/></p> 5988 </td> 5989 5990 <td class="entry_units"> 5991 Frames per second (FPS) 5992 </td> 5993 5994 <td class="entry_range"> 5995 <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> 5996 </td> 5997 5998 <td class="entry_tags"> 5999 <ul class="entry_tags"> 6000 <li><a href="#tag_BC">BC</a></li> 6001 </ul> 6002 </td> 6003 6004 </tr> 6005 <tr class="entries_header"> 6006 <th class="th_details" colspan="5">Details</th> 6007 </tr> 6008 <tr class="entry_cont"> 6009 <td class="entry_details" colspan="5"> 6010 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 6011 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 6012 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 6013 </td> 6014 </tr> 6015 6016 6017 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6018 <!-- end of entry --> 6019 6020 6021 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger"> 6022 <td class="entry_name 6023 " rowspan="5"> 6024 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 6025 </td> 6026 <td class="entry_type"> 6027 <span class="entry_type_name entry_type_name_enum">byte</span> 6028 6029 <span class="entry_type_visibility"> [public]</span> 6030 6031 6032 <span class="entry_type_hwlevel">[limited] </span> 6033 6034 6035 6036 <ul class="entry_type_enum"> 6037 <li> 6038 <span class="entry_type_enum_name">IDLE</span> 6039 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 6040 </li> 6041 <li> 6042 <span class="entry_type_enum_name">START</span> 6043 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 6044 by the camera device.<wbr/></p> 6045 <p>The exact effect of the precapture trigger depends on 6046 the current AE mode and state.<wbr/></p></span> 6047 </li> 6048 <li> 6049 <span class="entry_type_enum_name">CANCEL</span> 6050 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 6051 precapture metering sequence,<wbr/> the auto-exposure routine will return to its 6052 initial state.<wbr/></p></span> 6053 </li> 6054 </ul> 6055 6056 </td> <!-- entry_type --> 6057 6058 <td class="entry_description"> 6059 <p>Whether the camera device will trigger a precapture 6060 metering sequence when it processes this request.<wbr/></p> 6061 </td> 6062 6063 <td class="entry_units"> 6064 </td> 6065 6066 <td class="entry_range"> 6067 </td> 6068 6069 <td class="entry_tags"> 6070 <ul class="entry_tags"> 6071 <li><a href="#tag_BC">BC</a></li> 6072 </ul> 6073 </td> 6074 6075 </tr> 6076 <tr class="entries_header"> 6077 <th class="th_details" colspan="5">Details</th> 6078 </tr> 6079 <tr class="entry_cont"> 6080 <td class="entry_details" colspan="5"> 6081 <p>This entry is normally set to IDLE,<wbr/> or is not 6082 included at all in the request settings.<wbr/> When included and 6083 set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 6084 precapture metering sequence.<wbr/></p> 6085 <p>When set to CANCEL,<wbr/> the camera device will cancel any active 6086 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 6087 If a precapture metering sequence is already completed,<wbr/> and the camera 6088 device has implicitly locked the AE for subsequent still capture,<wbr/> the 6089 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 6090 <p>The precapture sequence should be triggered before starting a 6091 high-quality still capture for final metering decisions to 6092 be made,<wbr/> and for firing pre-capture flash pulses to estimate 6093 scene brightness and required final capture flash power,<wbr/> when 6094 the flash is enabled.<wbr/></p> 6095 <p>Normally,<wbr/> this entry should be set to START for only a 6096 single request,<wbr/> and the application should wait until the 6097 sequence completes before starting a new one.<wbr/></p> 6098 <p>When a precapture metering sequence is finished,<wbr/> the camera device 6099 may lock the auto-exposure routine internally to be able to accurately expose the 6100 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 6101 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 6102 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 6103 submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request 6104 with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a 6105 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 6106 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 6107 internally locked AE if the application doesn't submit a still capture request after 6108 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 6109 be used in devices that have earlier API levels.<wbr/></p> 6110 <p>The exact effect of auto-exposure (AE) precapture trigger 6111 depends on the current AE mode and state; see 6112 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 6113 details.<wbr/></p> 6114 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 6115 capturing a high-resolution JPEG image will automatically trigger a 6116 precapture sequence before the high-resolution capture,<wbr/> including 6117 potentially firing a pre-capture flash.<wbr/></p> 6118 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 6119 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 6120 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 6121 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 6122 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 6123 changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 6124 example.<wbr/></p> 6125 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 6126 the camera device will complete them in the optimal order for that device.<wbr/></p> 6127 </td> 6128 </tr> 6129 6130 <tr class="entries_header"> 6131 <th class="th_details" colspan="5">HAL Implementation Details</th> 6132 </tr> 6133 <tr class="entry_cont"> 6134 <td class="entry_details" colspan="5"> 6135 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 6136 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 6137 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 6138 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 6139 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 6140 </td> 6141 </tr> 6142 6143 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6144 <!-- end of entry --> 6145 6146 6147 <tr class="entry" id="dynamic_android.control.aeState"> 6148 <td class="entry_name 6149 " rowspan="3"> 6150 android.<wbr/>control.<wbr/>ae<wbr/>State 6151 </td> 6152 <td class="entry_type"> 6153 <span class="entry_type_name entry_type_name_enum">byte</span> 6154 6155 <span class="entry_type_visibility"> [public]</span> 6156 6157 6158 <span class="entry_type_hwlevel">[limited] </span> 6159 6160 6161 6162 <ul class="entry_type_enum"> 6163 <li> 6164 <span class="entry_type_enum_name">INACTIVE</span> 6165 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p> 6166 <p>When a camera device is opened,<wbr/> it starts in 6167 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 6168 this state in capture result.<wbr/></p></span> 6169 </li> 6170 <li> 6171 <span class="entry_type_enum_name">SEARCHING</span> 6172 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 6173 for the current scene.<wbr/></p> 6174 <p>This is a transient state,<wbr/> the camera device may skip 6175 reporting this state in capture result.<wbr/></p></span> 6176 </li> 6177 <li> 6178 <span class="entry_type_enum_name">CONVERGED</span> 6179 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 6180 current scene.<wbr/></p></span> 6181 </li> 6182 <li> 6183 <span class="entry_type_enum_name">LOCKED</span> 6184 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 6185 </li> 6186 <li> 6187 <span class="entry_type_enum_name">FLASH_REQUIRED</span> 6188 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 6189 needs to be fired for good quality still 6190 capture.<wbr/></p></span> 6191 </li> 6192 <li> 6193 <span class="entry_type_enum_name">PRECAPTURE</span> 6194 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 6195 and is currently executing it.<wbr/></p> 6196 <p>Precapture can be triggered through setting 6197 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently 6198 active and completed (if it causes camera device internal AE lock) precapture 6199 metering sequence can be canceled through setting 6200 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p> 6201 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED 6202 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient 6203 state,<wbr/> the camera device may skip reporting this state in 6204 capture result.<wbr/></p></span> 6205 </li> 6206 </ul> 6207 6208 </td> <!-- entry_type --> 6209 6210 <td class="entry_description"> 6211 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p> 6212 </td> 6213 6214 <td class="entry_units"> 6215 </td> 6216 6217 <td class="entry_range"> 6218 </td> 6219 6220 <td class="entry_tags"> 6221 </td> 6222 6223 </tr> 6224 <tr class="entries_header"> 6225 <th class="th_details" colspan="5">Details</th> 6226 </tr> 6227 <tr class="entry_cont"> 6228 <td class="entry_details" colspan="5"> 6229 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 6230 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6231 or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all 6232 the algorithm states to INACTIVE.<wbr/></p> 6233 <p>The camera device can do several state transitions between two results,<wbr/> if it is 6234 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6235 seen in a result.<wbr/></p> 6236 <p>The state in the result is the state for this image (in sync with this image): if 6237 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 6238 be good to use.<wbr/></p> 6239 <p>Below are state transition tables for different AE modes.<wbr/></p> 6240 <table> 6241 <thead> 6242 <tr> 6243 <th align="center">State</th> 6244 <th align="center">Transition Cause</th> 6245 <th align="center">New State</th> 6246 <th align="center">Notes</th> 6247 </tr> 6248 </thead> 6249 <tbody> 6250 <tr> 6251 <td align="center">INACTIVE</td> 6252 <td align="center"></td> 6253 <td align="center">INACTIVE</td> 6254 <td align="center">Camera device auto exposure algorithm is disabled</td> 6255 </tr> 6256 </tbody> 6257 </table> 6258 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p> 6259 <table> 6260 <thead> 6261 <tr> 6262 <th align="center">State</th> 6263 <th align="center">Transition Cause</th> 6264 <th align="center">New State</th> 6265 <th align="center">Notes</th> 6266 </tr> 6267 </thead> 6268 <tbody> 6269 <tr> 6270 <td align="center">INACTIVE</td> 6271 <td align="center">Camera device initiates AE scan</td> 6272 <td align="center">SEARCHING</td> 6273 <td align="center">Values changing</td> 6274 </tr> 6275 <tr> 6276 <td align="center">INACTIVE</td> 6277 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6278 <td align="center">LOCKED</td> 6279 <td align="center">Values locked</td> 6280 </tr> 6281 <tr> 6282 <td align="center">SEARCHING</td> 6283 <td align="center">Camera device finishes AE scan</td> 6284 <td align="center">CONVERGED</td> 6285 <td align="center">Good values,<wbr/> not changing</td> 6286 </tr> 6287 <tr> 6288 <td align="center">SEARCHING</td> 6289 <td align="center">Camera device finishes AE scan</td> 6290 <td align="center">FLASH_<wbr/>REQUIRED</td> 6291 <td align="center">Converged but too dark w/<wbr/>o flash</td> 6292 </tr> 6293 <tr> 6294 <td align="center">SEARCHING</td> 6295 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6296 <td align="center">LOCKED</td> 6297 <td align="center">Values locked</td> 6298 </tr> 6299 <tr> 6300 <td align="center">CONVERGED</td> 6301 <td align="center">Camera device initiates AE scan</td> 6302 <td align="center">SEARCHING</td> 6303 <td align="center">Values changing</td> 6304 </tr> 6305 <tr> 6306 <td align="center">CONVERGED</td> 6307 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6308 <td align="center">LOCKED</td> 6309 <td align="center">Values locked</td> 6310 </tr> 6311 <tr> 6312 <td align="center">FLASH_<wbr/>REQUIRED</td> 6313 <td align="center">Camera device initiates AE scan</td> 6314 <td align="center">SEARCHING</td> 6315 <td align="center">Values changing</td> 6316 </tr> 6317 <tr> 6318 <td align="center">FLASH_<wbr/>REQUIRED</td> 6319 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6320 <td align="center">LOCKED</td> 6321 <td align="center">Values locked</td> 6322 </tr> 6323 <tr> 6324 <td align="center">LOCKED</td> 6325 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6326 <td align="center">SEARCHING</td> 6327 <td align="center">Values not good after unlock</td> 6328 </tr> 6329 <tr> 6330 <td align="center">LOCKED</td> 6331 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6332 <td align="center">CONVERGED</td> 6333 <td align="center">Values good after unlock</td> 6334 </tr> 6335 <tr> 6336 <td align="center">LOCKED</td> 6337 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6338 <td align="center">FLASH_<wbr/>REQUIRED</td> 6339 <td align="center">Exposure good,<wbr/> but too dark</td> 6340 </tr> 6341 <tr> 6342 <td align="center">PRECAPTURE</td> 6343 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6344 <td align="center">CONVERGED</td> 6345 <td align="center">Ready for high-quality capture</td> 6346 </tr> 6347 <tr> 6348 <td align="center">PRECAPTURE</td> 6349 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6350 <td align="center">LOCKED</td> 6351 <td align="center">Ready for high-quality capture</td> 6352 </tr> 6353 <tr> 6354 <td align="center">LOCKED</td> 6355 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td> 6356 <td align="center">LOCKED</td> 6357 <td align="center">Precapture trigger is ignored when AE is already locked</td> 6358 </tr> 6359 <tr> 6360 <td align="center">LOCKED</td> 6361 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td> 6362 <td align="center">LOCKED</td> 6363 <td align="center">Precapture trigger is ignored when AE is already locked</td> 6364 </tr> 6365 <tr> 6366 <td align="center">Any state (excluding LOCKED)</td> 6367 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 6368 <td align="center">PRECAPTURE</td> 6369 <td align="center">Start AE precapture metering sequence</td> 6370 </tr> 6371 <tr> 6372 <td align="center">Any state (excluding LOCKED)</td> 6373 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td> 6374 <td align="center">INACTIVE</td> 6375 <td align="center">Currently active precapture metering sequence is canceled</td> 6376 </tr> 6377 </tbody> 6378 </table> 6379 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 6380 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 6381 can be skipped in that manner is called a transient state.<wbr/></p> 6382 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions 6383 listed in above table,<wbr/> it is also legal for the camera device to skip one or more 6384 transient states between two results.<wbr/> See below table for examples:</p> 6385 <table> 6386 <thead> 6387 <tr> 6388 <th align="center">State</th> 6389 <th align="center">Transition Cause</th> 6390 <th align="center">New State</th> 6391 <th align="center">Notes</th> 6392 </tr> 6393 </thead> 6394 <tbody> 6395 <tr> 6396 <td align="center">INACTIVE</td> 6397 <td align="center">Camera device finished AE scan</td> 6398 <td align="center">CONVERGED</td> 6399 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 6400 </tr> 6401 <tr> 6402 <td align="center">Any state (excluding LOCKED)</td> 6403 <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> 6404 <td align="center">FLASH_<wbr/>REQUIRED</td> 6405 <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> 6406 </tr> 6407 <tr> 6408 <td align="center">Any state (excluding LOCKED)</td> 6409 <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> 6410 <td align="center">CONVERGED</td> 6411 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 6412 </tr> 6413 <tr> 6414 <td align="center">Any state (excluding LOCKED)</td> 6415 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 6416 <td align="center">FLASH_<wbr/>REQUIRED</td> 6417 <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> 6418 </tr> 6419 <tr> 6420 <td align="center">Any state (excluding LOCKED)</td> 6421 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 6422 <td align="center">CONVERGED</td> 6423 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> 6424 </tr> 6425 <tr> 6426 <td align="center">CONVERGED</td> 6427 <td align="center">Camera device finished AE scan</td> 6428 <td align="center">FLASH_<wbr/>REQUIRED</td> 6429 <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> 6430 </tr> 6431 <tr> 6432 <td align="center">FLASH_<wbr/>REQUIRED</td> 6433 <td align="center">Camera device finished AE scan</td> 6434 <td align="center">CONVERGED</td> 6435 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 6436 </tr> 6437 </tbody> 6438 </table> 6439 </td> 6440 </tr> 6441 6442 6443 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6444 <!-- end of entry --> 6445 6446 6447 <tr class="entry" id="dynamic_android.control.afMode"> 6448 <td class="entry_name 6449 " rowspan="5"> 6450 android.<wbr/>control.<wbr/>af<wbr/>Mode 6451 </td> 6452 <td class="entry_type"> 6453 <span class="entry_type_name entry_type_name_enum">byte</span> 6454 6455 <span class="entry_type_visibility"> [public]</span> 6456 6457 6458 <span class="entry_type_hwlevel">[legacy] </span> 6459 6460 6461 6462 <ul class="entry_type_enum"> 6463 <li> 6464 <span class="entry_type_enum_name">OFF</span> 6465 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 6466 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 6467 application.<wbr/></p></span> 6468 </li> 6469 <li> 6470 <span class="entry_type_enum_name">AUTO</span> 6471 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 6472 <p>In this mode,<wbr/> the lens does not move unless 6473 the autofocus trigger action is called.<wbr/> When that trigger 6474 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 6475 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 6476 <p>Always supported if lens is not fixed focus.<wbr/></p> 6477 <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 6478 is fixed-focus.<wbr/></p> 6479 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 6480 and sets the AF state to INACTIVE.<wbr/></p></span> 6481 </li> 6482 <li> 6483 <span class="entry_type_enum_name">MACRO</span> 6484 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 6485 <p>In this mode,<wbr/> the lens does not move unless the 6486 autofocus trigger action is called.<wbr/> When that trigger is 6487 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 6488 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 6489 mode is optimized for focusing on objects very close to 6490 the camera.<wbr/></p> 6491 <p>When that trigger is activated,<wbr/> AF will transition to 6492 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 6493 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 6494 position to default,<wbr/> and sets the AF state to 6495 INACTIVE.<wbr/></p></span> 6496 </li> 6497 <li> 6498 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 6499 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 6500 position continually to attempt to provide a 6501 constantly-in-focus image stream.<wbr/></p> 6502 <p>The focusing behavior should be suitable for good quality 6503 video recording; typically this means slower focus 6504 movement and no overshoots.<wbr/> When the AF trigger is not 6505 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 6506 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 6507 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 6508 the algorithm should immediately transition into 6509 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 6510 lens position until a cancel AF trigger is received.<wbr/></p> 6511 <p>Once cancel is received,<wbr/> the algorithm should transition 6512 back to INACTIVE and resume passive scan.<wbr/> Note that this 6513 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 6514 ongoing PASSIVE_<wbr/>SCAN must immediately be 6515 canceled.<wbr/></p></span> 6516 </li> 6517 <li> 6518 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 6519 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 6520 position continually to attempt to provide a 6521 constantly-in-focus image stream.<wbr/></p> 6522 <p>The focusing behavior should be suitable for still image 6523 capture; typically this means focusing as fast as 6524 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 6525 algorithm should start in INACTIVE state,<wbr/> and then 6526 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 6527 appropriate as it attempts to maintain focus.<wbr/> When the AF 6528 trigger is activated,<wbr/> the algorithm should finish its 6529 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 6530 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 6531 lens position until a cancel AF trigger is received.<wbr/></p> 6532 <p>When the AF cancel trigger is activated,<wbr/> the algorithm 6533 should transition back to INACTIVE and then act as if it 6534 has just been started.<wbr/></p></span> 6535 </li> 6536 <li> 6537 <span class="entry_type_enum_name">EDOF</span> 6538 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 6539 <p>The camera device will produce images with an extended 6540 depth of field automatically; no special focusing 6541 operations need to be done before taking a picture.<wbr/></p> 6542 <p>AF triggers are ignored,<wbr/> and the AF state will always be 6543 INACTIVE.<wbr/></p></span> 6544 </li> 6545 </ul> 6546 6547 </td> <!-- entry_type --> 6548 6549 <td class="entry_description"> 6550 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 6551 mode it is set to.<wbr/></p> 6552 </td> 6553 6554 <td class="entry_units"> 6555 </td> 6556 6557 <td class="entry_range"> 6558 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 6559 </td> 6560 6561 <td class="entry_tags"> 6562 <ul class="entry_tags"> 6563 <li><a href="#tag_BC">BC</a></li> 6564 </ul> 6565 </td> 6566 6567 </tr> 6568 <tr class="entries_header"> 6569 <th class="th_details" colspan="5">Details</th> 6570 </tr> 6571 <tr class="entry_cont"> 6572 <td class="entry_details" colspan="5"> 6573 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 6574 (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 6575 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 6576 dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 6577 setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p> 6578 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 6579 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 6580 in result metadata.<wbr/></p> 6581 </td> 6582 </tr> 6583 6584 <tr class="entries_header"> 6585 <th class="th_details" colspan="5">HAL Implementation Details</th> 6586 </tr> 6587 <tr class="entry_cont"> 6588 <td class="entry_details" colspan="5"> 6589 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 6590 request (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> <code>==</code> START).<wbr/> After an AF trigger,<wbr/> the afState will end 6591 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 6592 <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 6593 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 6594 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 6595 the same focal plane remains in focus.<wbr/></p> 6596 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 6597 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 6598 (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 6599 same lock behavior as above.<wbr/></p> 6600 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 6601 focus distance control depends on the <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a>.<wbr/> 6602 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 6603 manual control.<wbr/></p> 6604 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 6605 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 6606 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 6607 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 6608 that will arise on camera modules with open-loop VCMs.<wbr/></p> 6609 </td> 6610 </tr> 6611 6612 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6613 <!-- end of entry --> 6614 6615 6616 <tr class="entry" id="dynamic_android.control.afRegions"> 6617 <td class="entry_name 6618 " rowspan="5"> 6619 android.<wbr/>control.<wbr/>af<wbr/>Regions 6620 </td> 6621 <td class="entry_type"> 6622 <span class="entry_type_name">int32</span> 6623 <span class="entry_type_container">x</span> 6624 6625 <span class="entry_type_array"> 6626 5 x area_count 6627 </span> 6628 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 6629 6630 6631 6632 6633 6634 6635 </td> <!-- entry_type --> 6636 6637 <td class="entry_description"> 6638 <p>List of metering areas to use for auto-focus.<wbr/></p> 6639 </td> 6640 6641 <td class="entry_units"> 6642 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 6643 </td> 6644 6645 <td class="entry_range"> 6646 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 6647 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 6648 </td> 6649 6650 <td class="entry_tags"> 6651 <ul class="entry_tags"> 6652 <li><a href="#tag_BC">BC</a></li> 6653 </ul> 6654 </td> 6655 6656 </tr> 6657 <tr class="entries_header"> 6658 <th class="th_details" colspan="5">Details</th> 6659 </tr> 6660 <tr class="entry_cont"> 6661 <td class="entry_details" colspan="5"> 6662 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 6663 Otherwise will always be present.<wbr/></p> 6664 <p>The maximum number of focus areas supported by the device is determined by the value 6665 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 6666 <p>The coordinate system is based on the active pixel array,<wbr/> 6667 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 6668 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 6669 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 6670 bottom-right pixel in the active pixel array.<wbr/></p> 6671 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 6672 for every pixel in the area.<wbr/> This means that a large metering area 6673 with the same weight as a smaller area will have more effect in 6674 the metering result.<wbr/> Metering areas can partially overlap and the 6675 camera device will add the weights in the overlap region.<wbr/></p> 6676 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 6677 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 6678 ignored.<wbr/></p> 6679 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 6680 camera device.<wbr/></p> 6681 <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 6682 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 6683 region and output only the intersection rectangle as the metering region in the result 6684 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 6685 not reported in the result metadata.<wbr/></p> 6686 </td> 6687 </tr> 6688 6689 <tr class="entries_header"> 6690 <th class="th_details" colspan="5">HAL Implementation Details</th> 6691 </tr> 6692 <tr class="entry_cont"> 6693 <td class="entry_details" colspan="5"> 6694 <p>The HAL level representation of MeteringRectangle[] is a 6695 int[5 * area_<wbr/>count].<wbr/> 6696 Every five elements represent a metering region of 6697 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 6698 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 6699 exclusive on xmax and ymax.<wbr/></p> 6700 </td> 6701 </tr> 6702 6703 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6704 <!-- end of entry --> 6705 6706 6707 <tr class="entry" id="dynamic_android.control.afTrigger"> 6708 <td class="entry_name 6709 " rowspan="5"> 6710 android.<wbr/>control.<wbr/>af<wbr/>Trigger 6711 </td> 6712 <td class="entry_type"> 6713 <span class="entry_type_name entry_type_name_enum">byte</span> 6714 6715 <span class="entry_type_visibility"> [public]</span> 6716 6717 6718 <span class="entry_type_hwlevel">[legacy] </span> 6719 6720 6721 6722 <ul class="entry_type_enum"> 6723 <li> 6724 <span class="entry_type_enum_name">IDLE</span> 6725 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 6726 </li> 6727 <li> 6728 <span class="entry_type_enum_name">START</span> 6729 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 6730 </li> 6731 <li> 6732 <span class="entry_type_enum_name">CANCEL</span> 6733 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 6734 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 6735 </li> 6736 </ul> 6737 6738 </td> <!-- entry_type --> 6739 6740 <td class="entry_description"> 6741 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 6742 </td> 6743 6744 <td class="entry_units"> 6745 </td> 6746 6747 <td class="entry_range"> 6748 </td> 6749 6750 <td class="entry_tags"> 6751 <ul class="entry_tags"> 6752 <li><a href="#tag_BC">BC</a></li> 6753 </ul> 6754 </td> 6755 6756 </tr> 6757 <tr class="entries_header"> 6758 <th class="th_details" colspan="5">Details</th> 6759 </tr> 6760 <tr class="entry_cont"> 6761 <td class="entry_details" colspan="5"> 6762 <p>This entry is normally set to IDLE,<wbr/> or is not 6763 included at all in the request settings.<wbr/></p> 6764 <p>When included and set to START,<wbr/> the camera device will trigger the 6765 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 6766 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 6767 and return to its initial AF state.<wbr/></p> 6768 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 6769 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 6770 START for multiple captures in a row means restarting the AF operation over 6771 and over again.<wbr/></p> 6772 <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> 6773 <p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> 6774 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 6775 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 6776 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 6777 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 6778 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 6779 </td> 6780 </tr> 6781 6782 <tr class="entries_header"> 6783 <th class="th_details" colspan="5">HAL Implementation Details</th> 6784 </tr> 6785 <tr class="entry_cont"> 6786 <td class="entry_details" colspan="5"> 6787 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 6788 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 6789 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 6790 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 6791 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 6792 </td> 6793 </tr> 6794 6795 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6796 <!-- end of entry --> 6797 6798 6799 <tr class="entry" id="dynamic_android.control.afState"> 6800 <td class="entry_name 6801 " rowspan="3"> 6802 android.<wbr/>control.<wbr/>af<wbr/>State 6803 </td> 6804 <td class="entry_type"> 6805 <span class="entry_type_name entry_type_name_enum">byte</span> 6806 6807 <span class="entry_type_visibility"> [public]</span> 6808 6809 6810 <span class="entry_type_hwlevel">[legacy] </span> 6811 6812 6813 6814 <ul class="entry_type_enum"> 6815 <li> 6816 <span class="entry_type_enum_name">INACTIVE</span> 6817 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked 6818 to scan.<wbr/></p> 6819 <p>When a camera device is opened,<wbr/> it starts in this 6820 state.<wbr/> This is a transient state,<wbr/> the camera device may 6821 skip reporting this state in capture 6822 result.<wbr/></p></span> 6823 </li> 6824 <li> 6825 <span class="entry_type_enum_name">PASSIVE_SCAN</span> 6826 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the 6827 camera device in a continuous autofocus mode.<wbr/></p> 6828 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 6829 state,<wbr/> the camera device may skip reporting this state in 6830 capture result.<wbr/></p></span> 6831 </li> 6832 <li> 6833 <span class="entry_type_enum_name">PASSIVE_FOCUSED</span> 6834 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may 6835 restart scanning at any time.<wbr/></p> 6836 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 6837 state,<wbr/> the camera device may skip reporting this state in 6838 capture result.<wbr/></p></span> 6839 </li> 6840 <li> 6841 <span class="entry_type_enum_name">ACTIVE_SCAN</span> 6842 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was 6843 triggered by AF trigger.<wbr/></p> 6844 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient 6845 state,<wbr/> the camera device may skip reporting this state in 6846 capture result.<wbr/></p></span> 6847 </li> 6848 <li> 6849 <span class="entry_type_enum_name">FOCUSED_LOCKED</span> 6850 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked 6851 focus.<wbr/></p> 6852 <p>This state is reached only after an explicit START AF trigger has been 6853 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p> 6854 <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 6855 a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span> 6856 </li> 6857 <li> 6858 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span> 6859 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked 6860 focus.<wbr/></p> 6861 <p>This state is reached only after an explicit START AF trigger has been 6862 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p> 6863 <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 6864 a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span> 6865 </li> 6866 <li> 6867 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span> 6868 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/> 6869 and may restart scanning at any time.<wbr/></p> 6870 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera 6871 device may skip reporting this state in capture result.<wbr/></p> 6872 <p>LEGACY camera devices do not support this state.<wbr/> When a passive 6873 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span> 6874 </li> 6875 </ul> 6876 6877 </td> <!-- entry_type --> 6878 6879 <td class="entry_description"> 6880 <p>Current state of auto-focus (AF) algorithm.<wbr/></p> 6881 </td> 6882 6883 <td class="entry_units"> 6884 </td> 6885 6886 <td class="entry_range"> 6887 </td> 6888 6889 <td class="entry_tags"> 6890 </td> 6891 6892 </tr> 6893 <tr class="entries_header"> 6894 <th class="th_details" colspan="5">Details</th> 6895 </tr> 6896 <tr class="entry_cont"> 6897 <td class="entry_details" colspan="5"> 6898 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 6899 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6900 or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all 6901 the algorithm states to INACTIVE.<wbr/></p> 6902 <p>The camera device can do several state transitions between two results,<wbr/> if it is 6903 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6904 seen in a result.<wbr/></p> 6905 <p>The state in the result is the state for this image (in sync with this image): if 6906 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 6907 be sharp.<wbr/></p> 6908 <p>Below are state transition tables for different AF modes.<wbr/></p> 6909 <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> 6910 <table> 6911 <thead> 6912 <tr> 6913 <th align="center">State</th> 6914 <th align="center">Transition Cause</th> 6915 <th align="center">New State</th> 6916 <th align="center">Notes</th> 6917 </tr> 6918 </thead> 6919 <tbody> 6920 <tr> 6921 <td align="center">INACTIVE</td> 6922 <td align="center"></td> 6923 <td align="center">INACTIVE</td> 6924 <td align="center">Never changes</td> 6925 </tr> 6926 </tbody> 6927 </table> 6928 <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> 6929 <table> 6930 <thead> 6931 <tr> 6932 <th align="center">State</th> 6933 <th align="center">Transition Cause</th> 6934 <th align="center">New State</th> 6935 <th align="center">Notes</th> 6936 </tr> 6937 </thead> 6938 <tbody> 6939 <tr> 6940 <td align="center">INACTIVE</td> 6941 <td align="center">AF_<wbr/>TRIGGER</td> 6942 <td align="center">ACTIVE_<wbr/>SCAN</td> 6943 <td align="center">Start AF sweep,<wbr/> Lens now moving</td> 6944 </tr> 6945 <tr> 6946 <td align="center">ACTIVE_<wbr/>SCAN</td> 6947 <td align="center">AF sweep done</td> 6948 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6949 <td align="center">Focused,<wbr/> Lens now locked</td> 6950 </tr> 6951 <tr> 6952 <td align="center">ACTIVE_<wbr/>SCAN</td> 6953 <td align="center">AF sweep done</td> 6954 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6955 <td align="center">Not focused,<wbr/> Lens now locked</td> 6956 </tr> 6957 <tr> 6958 <td align="center">ACTIVE_<wbr/>SCAN</td> 6959 <td align="center">AF_<wbr/>CANCEL</td> 6960 <td align="center">INACTIVE</td> 6961 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 6962 </tr> 6963 <tr> 6964 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6965 <td align="center">AF_<wbr/>CANCEL</td> 6966 <td align="center">INACTIVE</td> 6967 <td align="center">Cancel/<wbr/>reset AF</td> 6968 </tr> 6969 <tr> 6970 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6971 <td align="center">AF_<wbr/>TRIGGER</td> 6972 <td align="center">ACTIVE_<wbr/>SCAN</td> 6973 <td align="center">Start new sweep,<wbr/> Lens now moving</td> 6974 </tr> 6975 <tr> 6976 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6977 <td align="center">AF_<wbr/>CANCEL</td> 6978 <td align="center">INACTIVE</td> 6979 <td align="center">Cancel/<wbr/>reset AF</td> 6980 </tr> 6981 <tr> 6982 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6983 <td align="center">AF_<wbr/>TRIGGER</td> 6984 <td align="center">ACTIVE_<wbr/>SCAN</td> 6985 <td align="center">Start new sweep,<wbr/> Lens now moving</td> 6986 </tr> 6987 <tr> 6988 <td align="center">Any state</td> 6989 <td align="center">Mode change</td> 6990 <td align="center">INACTIVE</td> 6991 <td align="center"></td> 6992 </tr> 6993 </tbody> 6994 </table> 6995 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 6996 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 6997 can be skipped in that manner is called a transient state.<wbr/></p> 6998 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the 6999 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 7000 one or more transient states between two results.<wbr/> See below table for examples:</p> 7001 <table> 7002 <thead> 7003 <tr> 7004 <th align="center">State</th> 7005 <th align="center">Transition Cause</th> 7006 <th align="center">New State</th> 7007 <th align="center">Notes</th> 7008 </tr> 7009 </thead> 7010 <tbody> 7011 <tr> 7012 <td align="center">INACTIVE</td> 7013 <td align="center">AF_<wbr/>TRIGGER</td> 7014 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7015 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7016 </tr> 7017 <tr> 7018 <td align="center">INACTIVE</td> 7019 <td align="center">AF_<wbr/>TRIGGER</td> 7020 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7021 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> 7022 </tr> 7023 <tr> 7024 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7025 <td align="center">AF_<wbr/>TRIGGER</td> 7026 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7027 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7028 </tr> 7029 <tr> 7030 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7031 <td align="center">AF_<wbr/>TRIGGER</td> 7032 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7033 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> 7034 </tr> 7035 </tbody> 7036 </table> 7037 <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> 7038 <table> 7039 <thead> 7040 <tr> 7041 <th align="center">State</th> 7042 <th align="center">Transition Cause</th> 7043 <th align="center">New State</th> 7044 <th align="center">Notes</th> 7045 </tr> 7046 </thead> 7047 <tbody> 7048 <tr> 7049 <td align="center">INACTIVE</td> 7050 <td align="center">Camera device initiates new scan</td> 7051 <td align="center">PASSIVE_<wbr/>SCAN</td> 7052 <td align="center">Start AF scan,<wbr/> Lens now moving</td> 7053 </tr> 7054 <tr> 7055 <td align="center">INACTIVE</td> 7056 <td align="center">AF_<wbr/>TRIGGER</td> 7057 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7058 <td align="center">AF state query,<wbr/> Lens now locked</td> 7059 </tr> 7060 <tr> 7061 <td align="center">PASSIVE_<wbr/>SCAN</td> 7062 <td align="center">Camera device completes current scan</td> 7063 <td align="center">PASSIVE_<wbr/>FOCUSED</td> 7064 <td align="center">End AF scan,<wbr/> Lens now locked</td> 7065 </tr> 7066 <tr> 7067 <td align="center">PASSIVE_<wbr/>SCAN</td> 7068 <td align="center">Camera device fails current scan</td> 7069 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7070 <td align="center">End AF scan,<wbr/> Lens now locked</td> 7071 </tr> 7072 <tr> 7073 <td align="center">PASSIVE_<wbr/>SCAN</td> 7074 <td align="center">AF_<wbr/>TRIGGER</td> 7075 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7076 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td> 7077 </tr> 7078 <tr> 7079 <td align="center">PASSIVE_<wbr/>SCAN</td> 7080 <td align="center">AF_<wbr/>TRIGGER</td> 7081 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7082 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td> 7083 </tr> 7084 <tr> 7085 <td align="center">PASSIVE_<wbr/>SCAN</td> 7086 <td align="center">AF_<wbr/>CANCEL</td> 7087 <td align="center">INACTIVE</td> 7088 <td align="center">Reset lens position,<wbr/> Lens now locked</td> 7089 </tr> 7090 <tr> 7091 <td align="center">PASSIVE_<wbr/>FOCUSED</td> 7092 <td align="center">Camera device initiates new scan</td> 7093 <td align="center">PASSIVE_<wbr/>SCAN</td> 7094 <td align="center">Start AF scan,<wbr/> Lens now moving</td> 7095 </tr> 7096 <tr> 7097 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7098 <td align="center">Camera device initiates new scan</td> 7099 <td align="center">PASSIVE_<wbr/>SCAN</td> 7100 <td align="center">Start AF scan,<wbr/> Lens now moving</td> 7101 </tr> 7102 <tr> 7103 <td align="center">PASSIVE_<wbr/>FOCUSED</td> 7104 <td align="center">AF_<wbr/>TRIGGER</td> 7105 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7106 <td align="center">Immediate transition,<wbr/> lens now locked</td> 7107 </tr> 7108 <tr> 7109 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7110 <td align="center">AF_<wbr/>TRIGGER</td> 7111 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7112 <td align="center">Immediate transition,<wbr/> lens now locked</td> 7113 </tr> 7114 <tr> 7115 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7116 <td align="center">AF_<wbr/>TRIGGER</td> 7117 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7118 <td align="center">No effect</td> 7119 </tr> 7120 <tr> 7121 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7122 <td align="center">AF_<wbr/>CANCEL</td> 7123 <td align="center">INACTIVE</td> 7124 <td align="center">Restart AF scan</td> 7125 </tr> 7126 <tr> 7127 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7128 <td align="center">AF_<wbr/>TRIGGER</td> 7129 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7130 <td align="center">No effect</td> 7131 </tr> 7132 <tr> 7133 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7134 <td align="center">AF_<wbr/>CANCEL</td> 7135 <td align="center">INACTIVE</td> 7136 <td align="center">Restart AF scan</td> 7137 </tr> 7138 </tbody> 7139 </table> 7140 <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> 7141 <table> 7142 <thead> 7143 <tr> 7144 <th align="center">State</th> 7145 <th align="center">Transition Cause</th> 7146 <th align="center">New State</th> 7147 <th align="center">Notes</th> 7148 </tr> 7149 </thead> 7150 <tbody> 7151 <tr> 7152 <td align="center">INACTIVE</td> 7153 <td align="center">Camera device initiates new scan</td> 7154 <td align="center">PASSIVE_<wbr/>SCAN</td> 7155 <td align="center">Start AF scan,<wbr/> Lens now moving</td> 7156 </tr> 7157 <tr> 7158 <td align="center">INACTIVE</td> 7159 <td align="center">AF_<wbr/>TRIGGER</td> 7160 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7161 <td align="center">AF state query,<wbr/> Lens now locked</td> 7162 </tr> 7163 <tr> 7164 <td align="center">PASSIVE_<wbr/>SCAN</td> 7165 <td align="center">Camera device completes current scan</td> 7166 <td align="center">PASSIVE_<wbr/>FOCUSED</td> 7167 <td align="center">End AF scan,<wbr/> Lens now locked</td> 7168 </tr> 7169 <tr> 7170 <td align="center">PASSIVE_<wbr/>SCAN</td> 7171 <td align="center">Camera device fails current scan</td> 7172 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7173 <td align="center">End AF scan,<wbr/> Lens now locked</td> 7174 </tr> 7175 <tr> 7176 <td align="center">PASSIVE_<wbr/>SCAN</td> 7177 <td align="center">AF_<wbr/>TRIGGER</td> 7178 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7179 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td> 7180 </tr> 7181 <tr> 7182 <td align="center">PASSIVE_<wbr/>SCAN</td> 7183 <td align="center">AF_<wbr/>TRIGGER</td> 7184 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7185 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td> 7186 </tr> 7187 <tr> 7188 <td align="center">PASSIVE_<wbr/>SCAN</td> 7189 <td align="center">AF_<wbr/>CANCEL</td> 7190 <td align="center">INACTIVE</td> 7191 <td align="center">Reset lens position,<wbr/> Lens now locked</td> 7192 </tr> 7193 <tr> 7194 <td align="center">PASSIVE_<wbr/>FOCUSED</td> 7195 <td align="center">Camera device initiates new scan</td> 7196 <td align="center">PASSIVE_<wbr/>SCAN</td> 7197 <td align="center">Start AF scan,<wbr/> Lens now moving</td> 7198 </tr> 7199 <tr> 7200 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7201 <td align="center">Camera device initiates new scan</td> 7202 <td align="center">PASSIVE_<wbr/>SCAN</td> 7203 <td align="center">Start AF scan,<wbr/> Lens now moving</td> 7204 </tr> 7205 <tr> 7206 <td align="center">PASSIVE_<wbr/>FOCUSED</td> 7207 <td align="center">AF_<wbr/>TRIGGER</td> 7208 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7209 <td align="center">Immediate trans.<wbr/> Lens now locked</td> 7210 </tr> 7211 <tr> 7212 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7213 <td align="center">AF_<wbr/>TRIGGER</td> 7214 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7215 <td align="center">Immediate trans.<wbr/> Lens now locked</td> 7216 </tr> 7217 <tr> 7218 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7219 <td align="center">AF_<wbr/>TRIGGER</td> 7220 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7221 <td align="center">No effect</td> 7222 </tr> 7223 <tr> 7224 <td align="center">FOCUSED_<wbr/>LOCKED</td> 7225 <td align="center">AF_<wbr/>CANCEL</td> 7226 <td align="center">INACTIVE</td> 7227 <td align="center">Restart AF scan</td> 7228 </tr> 7229 <tr> 7230 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7231 <td align="center">AF_<wbr/>TRIGGER</td> 7232 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7233 <td align="center">No effect</td> 7234 </tr> 7235 <tr> 7236 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7237 <td align="center">AF_<wbr/>CANCEL</td> 7238 <td align="center">INACTIVE</td> 7239 <td align="center">Restart AF scan</td> 7240 </tr> 7241 </tbody> 7242 </table> 7243 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO 7244 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the 7245 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 7246 will be evaluated in the context of the new mode in the request.<wbr/> 7247 See below table for examples:</p> 7248 <table> 7249 <thead> 7250 <tr> 7251 <th align="center">State</th> 7252 <th align="center">Transition Cause</th> 7253 <th align="center">New State</th> 7254 <th align="center">Notes</th> 7255 </tr> 7256 </thead> 7257 <tbody> 7258 <tr> 7259 <td align="center">any state</td> 7260 <td align="center">CAF-->AUTO mode switch</td> 7261 <td align="center">INACTIVE</td> 7262 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> 7263 </tr> 7264 <tr> 7265 <td align="center">any state</td> 7266 <td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> 7267 <td align="center">trigger-reachable states from INACTIVE</td> 7268 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> 7269 </tr> 7270 <tr> 7271 <td align="center">any state</td> 7272 <td align="center">AUTO-->CAF mode switch</td> 7273 <td align="center">passively reachable states from INACTIVE</td> 7274 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td> 7275 </tr> 7276 </tbody> 7277 </table> 7278 </td> 7279 </tr> 7280 7281 7282 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7283 <!-- end of entry --> 7284 7285 7286 <tr class="entry" id="dynamic_android.control.afTriggerId"> 7287 <td class="entry_name 7288 entry_name_deprecated 7289 " rowspan="3"> 7290 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 7291 </td> 7292 <td class="entry_type"> 7293 <span class="entry_type_name">int32</span> 7294 7295 <span class="entry_type_visibility"> [system]</span> 7296 7297 7298 7299 <span class="entry_type_deprecated">[deprecated] </span> 7300 7301 7302 7303 </td> <!-- entry_type --> 7304 7305 <td class="entry_description"> 7306 <p>The ID sent with the latest 7307 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 7308 </td> 7309 7310 <td class="entry_units"> 7311 </td> 7312 7313 <td class="entry_range"> 7314 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 7315 </td> 7316 7317 <td class="entry_tags"> 7318 </td> 7319 7320 </tr> 7321 <tr class="entries_header"> 7322 <th class="th_details" colspan="5">Details</th> 7323 </tr> 7324 <tr class="entry_cont"> 7325 <td class="entry_details" colspan="5"> 7326 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 7327 received yet by HAL.<wbr/> Always updated even if AF algorithm 7328 ignores the trigger</p> 7329 </td> 7330 </tr> 7331 7332 7333 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7334 <!-- end of entry --> 7335 7336 7337 <tr class="entry" id="dynamic_android.control.awbLock"> 7338 <td class="entry_name 7339 " rowspan="3"> 7340 android.<wbr/>control.<wbr/>awb<wbr/>Lock 7341 </td> 7342 <td class="entry_type"> 7343 <span class="entry_type_name entry_type_name_enum">byte</span> 7344 7345 <span class="entry_type_visibility"> [public as boolean]</span> 7346 7347 7348 <span class="entry_type_hwlevel">[legacy] </span> 7349 7350 7351 7352 <ul class="entry_type_enum"> 7353 <li> 7354 <span class="entry_type_enum_name">OFF</span> 7355 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 7356 algorithm is free to update its parameters if in AUTO 7357 mode.<wbr/></p></span> 7358 </li> 7359 <li> 7360 <span class="entry_type_enum_name">ON</span> 7361 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 7362 algorithm will not update its parameters while the lock 7363 is active.<wbr/></p></span> 7364 </li> 7365 </ul> 7366 7367 </td> <!-- entry_type --> 7368 7369 <td class="entry_description"> 7370 <p>Whether auto-white balance (AWB) is currently locked to its 7371 latest calculated values.<wbr/></p> 7372 </td> 7373 7374 <td class="entry_units"> 7375 </td> 7376 7377 <td class="entry_range"> 7378 </td> 7379 7380 <td class="entry_tags"> 7381 <ul class="entry_tags"> 7382 <li><a href="#tag_BC">BC</a></li> 7383 </ul> 7384 </td> 7385 7386 </tr> 7387 <tr class="entries_header"> 7388 <th class="th_details" colspan="5">Details</th> 7389 </tr> 7390 <tr class="entry_cont"> 7391 <td class="entry_details" colspan="5"> 7392 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 7393 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 7394 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 7395 get locked do not necessarily correspond to the settings that were present in the 7396 latest capture result received from the camera device,<wbr/> since additional captures 7397 and AWB updates may have occurred even before the result was sent out.<wbr/> If an 7398 application is switching between automatic and manual control and wishes to eliminate 7399 any flicker during the switch,<wbr/> the following procedure is recommended:</p> 7400 <ol> 7401 <li>Starting in auto-AWB mode:</li> 7402 <li>Lock AWB</li> 7403 <li>Wait for the first result to be output that has the AWB locked</li> 7404 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 7405 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 7406 </ol> 7407 <p>Note that AWB lock is only meaningful when 7408 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 7409 AWB is already fixed to a specific setting.<wbr/></p> 7410 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 7411 </td> 7412 </tr> 7413 7414 7415 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7416 <!-- end of entry --> 7417 7418 7419 <tr class="entry" id="dynamic_android.control.awbMode"> 7420 <td class="entry_name 7421 " rowspan="3"> 7422 android.<wbr/>control.<wbr/>awb<wbr/>Mode 7423 </td> 7424 <td class="entry_type"> 7425 <span class="entry_type_name entry_type_name_enum">byte</span> 7426 7427 <span class="entry_type_visibility"> [public]</span> 7428 7429 7430 <span class="entry_type_hwlevel">[legacy] </span> 7431 7432 7433 7434 <ul class="entry_type_enum"> 7435 <li> 7436 <span class="entry_type_enum_name">OFF</span> 7437 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 7438 <p>The application-selected color transform matrix 7439 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 7440 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 7441 device for manual white balance control.<wbr/></p></span> 7442 </li> 7443 <li> 7444 <span class="entry_type_enum_name">AUTO</span> 7445 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 7446 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7447 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7448 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7449 values used by the camera device for the transform and gains 7450 will be available in the capture result for this request.<wbr/></p></span> 7451 </li> 7452 <li> 7453 <span class="entry_type_enum_name">INCANDESCENT</span> 7454 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7455 the camera device uses incandescent light as the assumed scene 7456 illumination for white balance.<wbr/></p> 7457 <p>While the exact white balance transforms are up to the 7458 camera device,<wbr/> they will approximately match the CIE 7459 standard illuminant A.<wbr/></p> 7460 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7461 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7462 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7463 values used by the camera device for the transform and gains 7464 will be available in the capture result for this request.<wbr/></p></span> 7465 </li> 7466 <li> 7467 <span class="entry_type_enum_name">FLUORESCENT</span> 7468 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7469 the camera device uses fluorescent light as the assumed scene 7470 illumination for white balance.<wbr/></p> 7471 <p>While the exact white balance transforms are up to the 7472 camera device,<wbr/> they will approximately match the CIE 7473 standard illuminant F2.<wbr/></p> 7474 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7475 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7476 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7477 values used by the camera device for the transform and gains 7478 will be available in the capture result for this request.<wbr/></p></span> 7479 </li> 7480 <li> 7481 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 7482 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7483 the camera device uses warm fluorescent light as the assumed scene 7484 illumination for white balance.<wbr/></p> 7485 <p>While the exact white balance transforms are up to the 7486 camera device,<wbr/> they will approximately match the CIE 7487 standard illuminant F4.<wbr/></p> 7488 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7489 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7490 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7491 values used by the camera device for the transform and gains 7492 will be available in the capture result for this request.<wbr/></p></span> 7493 </li> 7494 <li> 7495 <span class="entry_type_enum_name">DAYLIGHT</span> 7496 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7497 the camera device uses daylight light as the assumed scene 7498 illumination for white balance.<wbr/></p> 7499 <p>While the exact white balance transforms are up to the 7500 camera device,<wbr/> they will approximately match the CIE 7501 standard illuminant D65.<wbr/></p> 7502 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7503 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7504 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7505 values used by the camera device for the transform and gains 7506 will be available in the capture result for this request.<wbr/></p></span> 7507 </li> 7508 <li> 7509 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 7510 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7511 the camera device uses cloudy daylight light as the assumed scene 7512 illumination for white balance.<wbr/></p> 7513 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7514 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7515 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7516 values used by the camera device for the transform and gains 7517 will be available in the capture result for this request.<wbr/></p></span> 7518 </li> 7519 <li> 7520 <span class="entry_type_enum_name">TWILIGHT</span> 7521 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7522 the camera device uses twilight light as the assumed scene 7523 illumination for white balance.<wbr/></p> 7524 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7525 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7526 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7527 values used by the camera device for the transform and gains 7528 will be available in the capture result for this request.<wbr/></p></span> 7529 </li> 7530 <li> 7531 <span class="entry_type_enum_name">SHADE</span> 7532 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7533 the camera device uses shade light as the assumed scene 7534 illumination for white balance.<wbr/></p> 7535 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7536 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7537 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7538 values used by the camera device for the transform and gains 7539 will be available in the capture result for this request.<wbr/></p></span> 7540 </li> 7541 </ul> 7542 7543 </td> <!-- entry_type --> 7544 7545 <td class="entry_description"> 7546 <p>Whether auto-white balance (AWB) is currently setting the color 7547 transform fields,<wbr/> and what its illumination target 7548 is.<wbr/></p> 7549 </td> 7550 7551 <td class="entry_units"> 7552 </td> 7553 7554 <td class="entry_range"> 7555 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 7556 </td> 7557 7558 <td class="entry_tags"> 7559 <ul class="entry_tags"> 7560 <li><a href="#tag_BC">BC</a></li> 7561 </ul> 7562 </td> 7563 7564 </tr> 7565 <tr class="entries_header"> 7566 <th class="th_details" colspan="5">Details</th> 7567 </tr> 7568 <tr class="entry_cont"> 7569 <td class="entry_details" colspan="5"> 7570 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 7571 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance 7572 routine is enabled,<wbr/> overriding the application's selected 7573 <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 7574 <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> 7575 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 7576 also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before 7577 setting AE mode to OFF.<wbr/></p> 7578 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 7579 routine is disabled.<wbr/> The application manually controls the white 7580 balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> 7581 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 7582 <p>When set to any other modes,<wbr/> the camera device's auto-white 7583 balance routine is disabled.<wbr/> The camera device uses each 7584 particular illumination target for white balance 7585 adjustment.<wbr/> The application's values for 7586 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 7587 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 7588 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 7589 </td> 7590 </tr> 7591 7592 7593 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7594 <!-- end of entry --> 7595 7596 7597 <tr class="entry" id="dynamic_android.control.awbRegions"> 7598 <td class="entry_name 7599 " rowspan="5"> 7600 android.<wbr/>control.<wbr/>awb<wbr/>Regions 7601 </td> 7602 <td class="entry_type"> 7603 <span class="entry_type_name">int32</span> 7604 <span class="entry_type_container">x</span> 7605 7606 <span class="entry_type_array"> 7607 5 x area_count 7608 </span> 7609 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 7610 7611 7612 7613 7614 7615 7616 </td> <!-- entry_type --> 7617 7618 <td class="entry_description"> 7619 <p>List of metering areas to use for auto-white-balance illuminant 7620 estimation.<wbr/></p> 7621 </td> 7622 7623 <td class="entry_units"> 7624 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 7625 </td> 7626 7627 <td class="entry_range"> 7628 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 7629 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 7630 </td> 7631 7632 <td class="entry_tags"> 7633 <ul class="entry_tags"> 7634 <li><a href="#tag_BC">BC</a></li> 7635 </ul> 7636 </td> 7637 7638 </tr> 7639 <tr class="entries_header"> 7640 <th class="th_details" colspan="5">Details</th> 7641 </tr> 7642 <tr class="entry_cont"> 7643 <td class="entry_details" colspan="5"> 7644 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 7645 Otherwise will always be present.<wbr/></p> 7646 <p>The maximum number of regions supported by the device is determined by the value 7647 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 7648 <p>The coordinate system is based on the active pixel array,<wbr/> 7649 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 7650 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 7651 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 7652 bottom-right pixel in the active pixel array.<wbr/></p> 7653 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight 7654 for every pixel in the area.<wbr/> This means that a large metering area 7655 with the same weight as a smaller area will have more effect in 7656 the metering result.<wbr/> Metering areas can partially overlap and the 7657 camera device will add the weights in the overlap region.<wbr/></p> 7658 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 7659 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 7660 0 weight is ignored.<wbr/></p> 7661 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 7662 camera device.<wbr/></p> 7663 <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 7664 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 7665 region and output only the intersection rectangle as the metering region in the result 7666 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 7667 not reported in the result metadata.<wbr/></p> 7668 </td> 7669 </tr> 7670 7671 <tr class="entries_header"> 7672 <th class="th_details" colspan="5">HAL Implementation Details</th> 7673 </tr> 7674 <tr class="entry_cont"> 7675 <td class="entry_details" colspan="5"> 7676 <p>The HAL level representation of MeteringRectangle[] is a 7677 int[5 * area_<wbr/>count].<wbr/> 7678 Every five elements represent a metering region of 7679 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 7680 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 7681 exclusive on xmax and ymax.<wbr/></p> 7682 </td> 7683 </tr> 7684 7685 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7686 <!-- end of entry --> 7687 7688 7689 <tr class="entry" id="dynamic_android.control.captureIntent"> 7690 <td class="entry_name 7691 " rowspan="3"> 7692 android.<wbr/>control.<wbr/>capture<wbr/>Intent 7693 </td> 7694 <td class="entry_type"> 7695 <span class="entry_type_name entry_type_name_enum">byte</span> 7696 7697 <span class="entry_type_visibility"> [public]</span> 7698 7699 7700 <span class="entry_type_hwlevel">[legacy] </span> 7701 7702 7703 7704 <ul class="entry_type_enum"> 7705 <li> 7706 <span class="entry_type_enum_name">CUSTOM</span> 7707 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 7708 categories.<wbr/> The camera device will default to preview-like 7709 behavior.<wbr/></p></span> 7710 </li> 7711 <li> 7712 <span class="entry_type_enum_name">PREVIEW</span> 7713 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 7714 <p>The precapture trigger may be used to start off a metering 7715 w/<wbr/>flash sequence.<wbr/></p></span> 7716 </li> 7717 <li> 7718 <span class="entry_type_enum_name">STILL_CAPTURE</span> 7719 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 7720 use case.<wbr/></p> 7721 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 7722 </li> 7723 <li> 7724 <span class="entry_type_enum_name">VIDEO_RECORD</span> 7725 <span class="entry_type_enum_notes"><p>This request is for a video recording 7726 use case.<wbr/></p></span> 7727 </li> 7728 <li> 7729 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 7730 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 7731 image while recording video) use case.<wbr/></p> 7732 <p>The camera device should take the highest-quality image 7733 possible (given the other settings) without disrupting the 7734 frame rate of video recording.<wbr/> </p></span> 7735 </li> 7736 <li> 7737 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 7738 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 7739 application will stream full-resolution images and 7740 reprocess one or several later for a final 7741 capture.<wbr/></p></span> 7742 </li> 7743 <li> 7744 <span class="entry_type_enum_name">MANUAL</span> 7745 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 7746 the applications want to directly control the capture parameters.<wbr/></p> 7747 <p>For example,<wbr/> the application may wish to manually control 7748 <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> 7749 </li> 7750 </ul> 7751 7752 </td> <!-- entry_type --> 7753 7754 <td class="entry_description"> 7755 <p>Information to the camera device 3A (auto-exposure,<wbr/> 7756 auto-focus,<wbr/> auto-white balance) routines about the purpose 7757 of this capture,<wbr/> to help the camera device to decide optimal 3A 7758 strategy.<wbr/></p> 7759 </td> 7760 7761 <td class="entry_units"> 7762 </td> 7763 7764 <td class="entry_range"> 7765 </td> 7766 7767 <td class="entry_tags"> 7768 <ul class="entry_tags"> 7769 <li><a href="#tag_BC">BC</a></li> 7770 </ul> 7771 </td> 7772 7773 </tr> 7774 <tr class="entries_header"> 7775 <th class="th_details" colspan="5">Details</th> 7776 </tr> 7777 <tr class="entry_cont"> 7778 <td class="entry_details" colspan="5"> 7779 <p>This control (except for MANUAL) is only effective if 7780 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 7781 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 7782 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if 7783 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are 7784 always supported.<wbr/></p> 7785 </td> 7786 </tr> 7787 7788 7789 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7790 <!-- end of entry --> 7791 7792 7793 <tr class="entry" id="dynamic_android.control.awbState"> 7794 <td class="entry_name 7795 " rowspan="3"> 7796 android.<wbr/>control.<wbr/>awb<wbr/>State 7797 </td> 7798 <td class="entry_type"> 7799 <span class="entry_type_name entry_type_name_enum">byte</span> 7800 7801 <span class="entry_type_visibility"> [public]</span> 7802 7803 7804 <span class="entry_type_hwlevel">[limited] </span> 7805 7806 7807 7808 <ul class="entry_type_enum"> 7809 <li> 7810 <span class="entry_type_enum_name">INACTIVE</span> 7811 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p> 7812 <p>When a camera device is opened,<wbr/> it starts in this 7813 state.<wbr/> This is a transient state,<wbr/> the camera device may 7814 skip reporting this state in capture 7815 result.<wbr/></p></span> 7816 </li> 7817 <li> 7818 <span class="entry_type_enum_name">SEARCHING</span> 7819 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 7820 values for the current scene.<wbr/></p> 7821 <p>This is a transient state,<wbr/> the camera device 7822 may skip reporting this state in capture result.<wbr/></p></span> 7823 </li> 7824 <li> 7825 <span class="entry_type_enum_name">CONVERGED</span> 7826 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 7827 current scene.<wbr/></p></span> 7828 </li> 7829 <li> 7830 <span class="entry_type_enum_name">LOCKED</span> 7831 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 7832 </li> 7833 </ul> 7834 7835 </td> <!-- entry_type --> 7836 7837 <td class="entry_description"> 7838 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p> 7839 </td> 7840 7841 <td class="entry_units"> 7842 </td> 7843 7844 <td class="entry_range"> 7845 </td> 7846 7847 <td class="entry_tags"> 7848 </td> 7849 7850 </tr> 7851 <tr class="entries_header"> 7852 <th class="th_details" colspan="5">Details</th> 7853 </tr> 7854 <tr class="entry_cont"> 7855 <td class="entry_details" colspan="5"> 7856 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 7857 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 7858 or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all 7859 the algorithm states to INACTIVE.<wbr/></p> 7860 <p>The camera device can do several state transitions between two results,<wbr/> if it is 7861 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 7862 a result.<wbr/></p> 7863 <p>The state in the result is the state for this image (in sync with this image): if 7864 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 7865 be good to use.<wbr/></p> 7866 <p>Below are state transition tables for different AWB modes.<wbr/></p> 7867 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 7868 <table> 7869 <thead> 7870 <tr> 7871 <th align="center">State</th> 7872 <th align="center">Transition Cause</th> 7873 <th align="center">New State</th> 7874 <th align="center">Notes</th> 7875 </tr> 7876 </thead> 7877 <tbody> 7878 <tr> 7879 <td align="center">INACTIVE</td> 7880 <td align="center"></td> 7881 <td align="center">INACTIVE</td> 7882 <td align="center">Camera device auto white balance algorithm is disabled</td> 7883 </tr> 7884 </tbody> 7885 </table> 7886 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 7887 <table> 7888 <thead> 7889 <tr> 7890 <th align="center">State</th> 7891 <th align="center">Transition Cause</th> 7892 <th align="center">New State</th> 7893 <th align="center">Notes</th> 7894 </tr> 7895 </thead> 7896 <tbody> 7897 <tr> 7898 <td align="center">INACTIVE</td> 7899 <td align="center">Camera device initiates AWB scan</td> 7900 <td align="center">SEARCHING</td> 7901 <td align="center">Values changing</td> 7902 </tr> 7903 <tr> 7904 <td align="center">INACTIVE</td> 7905 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7906 <td align="center">LOCKED</td> 7907 <td align="center">Values locked</td> 7908 </tr> 7909 <tr> 7910 <td align="center">SEARCHING</td> 7911 <td align="center">Camera device finishes AWB scan</td> 7912 <td align="center">CONVERGED</td> 7913 <td align="center">Good values,<wbr/> not changing</td> 7914 </tr> 7915 <tr> 7916 <td align="center">SEARCHING</td> 7917 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7918 <td align="center">LOCKED</td> 7919 <td align="center">Values locked</td> 7920 </tr> 7921 <tr> 7922 <td align="center">CONVERGED</td> 7923 <td align="center">Camera device initiates AWB scan</td> 7924 <td align="center">SEARCHING</td> 7925 <td align="center">Values changing</td> 7926 </tr> 7927 <tr> 7928 <td align="center">CONVERGED</td> 7929 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7930 <td align="center">LOCKED</td> 7931 <td align="center">Values locked</td> 7932 </tr> 7933 <tr> 7934 <td align="center">LOCKED</td> 7935 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 7936 <td align="center">SEARCHING</td> 7937 <td align="center">Values not good after unlock</td> 7938 </tr> 7939 </tbody> 7940 </table> 7941 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7942 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7943 can be skipped in that manner is called a transient state.<wbr/></p> 7944 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions 7945 listed in above table,<wbr/> it is also legal for the camera device to skip one or more 7946 transient states between two results.<wbr/> See below table for examples:</p> 7947 <table> 7948 <thead> 7949 <tr> 7950 <th align="center">State</th> 7951 <th align="center">Transition Cause</th> 7952 <th align="center">New State</th> 7953 <th align="center">Notes</th> 7954 </tr> 7955 </thead> 7956 <tbody> 7957 <tr> 7958 <td align="center">INACTIVE</td> 7959 <td align="center">Camera device finished AWB scan</td> 7960 <td align="center">CONVERGED</td> 7961 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 7962 </tr> 7963 <tr> 7964 <td align="center">LOCKED</td> 7965 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 7966 <td align="center">CONVERGED</td> 7967 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> 7968 </tr> 7969 </tbody> 7970 </table> 7971 </td> 7972 </tr> 7973 7974 7975 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7976 <!-- end of entry --> 7977 7978 7979 <tr class="entry" id="dynamic_android.control.effectMode"> 7980 <td class="entry_name 7981 " rowspan="3"> 7982 android.<wbr/>control.<wbr/>effect<wbr/>Mode 7983 </td> 7984 <td class="entry_type"> 7985 <span class="entry_type_name entry_type_name_enum">byte</span> 7986 7987 <span class="entry_type_visibility"> [public]</span> 7988 7989 7990 <span class="entry_type_hwlevel">[legacy] </span> 7991 7992 7993 7994 <ul class="entry_type_enum"> 7995 <li> 7996 <span class="entry_type_enum_name">OFF</span> 7997 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 7998 </li> 7999 <li> 8000 <span class="entry_type_enum_name">MONO</span> 8001 <span class="entry_type_enum_optional">[optional]</span> 8002 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 8003 a single color.<wbr/></p> 8004 <p>This will typically be grayscale.<wbr/></p></span> 8005 </li> 8006 <li> 8007 <span class="entry_type_enum_name">NEGATIVE</span> 8008 <span class="entry_type_enum_optional">[optional]</span> 8009 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 8010 are inverted.<wbr/></p></span> 8011 </li> 8012 <li> 8013 <span class="entry_type_enum_name">SOLARIZE</span> 8014 <span class="entry_type_enum_optional">[optional]</span> 8015 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 8016 image is wholly or partially reversed in 8017 tone.<wbr/></p></span> 8018 </li> 8019 <li> 8020 <span class="entry_type_enum_name">SEPIA</span> 8021 <span class="entry_type_enum_optional">[optional]</span> 8022 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 8023 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 8024 </li> 8025 <li> 8026 <span class="entry_type_enum_name">POSTERIZE</span> 8027 <span class="entry_type_enum_optional">[optional]</span> 8028 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 8029 discrete regions of tone rather than a continuous 8030 gradient of tones.<wbr/></p></span> 8031 </li> 8032 <li> 8033 <span class="entry_type_enum_name">WHITEBOARD</span> 8034 <span class="entry_type_enum_optional">[optional]</span> 8035 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 8036 as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 8037 </li> 8038 <li> 8039 <span class="entry_type_enum_name">BLACKBOARD</span> 8040 <span class="entry_type_enum_optional">[optional]</span> 8041 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 8042 as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 8043 </li> 8044 <li> 8045 <span class="entry_type_enum_name">AQUA</span> 8046 <span class="entry_type_enum_optional">[optional]</span> 8047 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 8048 </li> 8049 </ul> 8050 8051 </td> <!-- entry_type --> 8052 8053 <td class="entry_description"> 8054 <p>A special color effect to apply.<wbr/></p> 8055 </td> 8056 8057 <td class="entry_units"> 8058 </td> 8059 8060 <td class="entry_range"> 8061 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 8062 </td> 8063 8064 <td class="entry_tags"> 8065 <ul class="entry_tags"> 8066 <li><a href="#tag_BC">BC</a></li> 8067 </ul> 8068 </td> 8069 8070 </tr> 8071 <tr class="entries_header"> 8072 <th class="th_details" colspan="5">Details</th> 8073 </tr> 8074 <tr class="entry_cont"> 8075 <td class="entry_details" colspan="5"> 8076 <p>When this mode is set,<wbr/> a color effect will be applied 8077 to images produced by the camera device.<wbr/> The interpretation 8078 and implementation of these color effects is left to the 8079 implementor of the camera device,<wbr/> and should not be 8080 depended on to be consistent (or present) across all 8081 devices.<wbr/></p> 8082 </td> 8083 </tr> 8084 8085 8086 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8087 <!-- end of entry --> 8088 8089 8090 <tr class="entry" id="dynamic_android.control.mode"> 8091 <td class="entry_name 8092 " rowspan="3"> 8093 android.<wbr/>control.<wbr/>mode 8094 </td> 8095 <td class="entry_type"> 8096 <span class="entry_type_name entry_type_name_enum">byte</span> 8097 8098 <span class="entry_type_visibility"> [public]</span> 8099 8100 8101 <span class="entry_type_hwlevel">[legacy] </span> 8102 8103 8104 8105 <ul class="entry_type_enum"> 8106 <li> 8107 <span class="entry_type_enum_name">OFF</span> 8108 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 8109 <p>All control by the device's metering and focusing (3A) 8110 routines is disabled,<wbr/> and no other settings in 8111 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 8112 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 8113 device to select post-processing values for processing 8114 blocks that do not allow for manual control,<wbr/> or are not 8115 exposed by the camera API.<wbr/></p> 8116 <p>However,<wbr/> the camera device's 3A routines may continue to 8117 collect statistics and update their internal state so that 8118 when control is switched to AUTO mode,<wbr/> good control values 8119 can be immediately applied.<wbr/></p></span> 8120 </li> 8121 <li> 8122 <span class="entry_type_enum_name">AUTO</span> 8123 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 8124 <p>Manual control of capture parameters is disabled.<wbr/> All 8125 controls in android.<wbr/>control.<wbr/>* besides sceneMode take 8126 effect.<wbr/></p></span> 8127 </li> 8128 <li> 8129 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 8130 <span class="entry_type_enum_optional">[optional]</span> 8131 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 8132 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 8133 control.<wbr/>afMode controls; the camera device will ignore 8134 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 8135 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 8136 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 8137 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 8138 contain some modes other than DISABLED).<wbr/></p></span> 8139 </li> 8140 <li> 8141 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 8142 <span class="entry_type_enum_optional">[optional]</span> 8143 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 8144 used by camera device background auto-exposure,<wbr/> auto-white balance and 8145 auto-focus algorithms (3A) to update their statistics.<wbr/></p> 8146 <p>Specifically,<wbr/> the 3A routines are locked to the last 8147 values set from a request with AUTO,<wbr/> OFF,<wbr/> or 8148 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 8149 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 8150 discarded by the camera device.<wbr/></p></span> 8151 </li> 8152 </ul> 8153 8154 </td> <!-- entry_type --> 8155 8156 <td class="entry_description"> 8157 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 8158 routines.<wbr/></p> 8159 </td> 8160 8161 <td class="entry_units"> 8162 </td> 8163 8164 <td class="entry_range"> 8165 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 8166 </td> 8167 8168 <td class="entry_tags"> 8169 <ul class="entry_tags"> 8170 <li><a href="#tag_BC">BC</a></li> 8171 </ul> 8172 </td> 8173 8174 </tr> 8175 <tr class="entries_header"> 8176 <th class="th_details" colspan="5">Details</th> 8177 </tr> 8178 <tr class="entry_cont"> 8179 <td class="entry_details" colspan="5"> 8180 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 8181 by the camera device is disabled.<wbr/> The application must set the fields for 8182 capture parameters itself.<wbr/></p> 8183 <p>When set to AUTO,<wbr/> the individual algorithm controls in 8184 android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p> 8185 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 8186 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 8187 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 8188 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 8189 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 8190 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 8191 is that this frame will not be used by camera device background 3A statistics 8192 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 8193 where the application doesn't want a 3A manual control capture to affect 8194 the subsequent auto 3A capture results.<wbr/></p> 8195 </td> 8196 </tr> 8197 8198 8199 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8200 <!-- end of entry --> 8201 8202 8203 <tr class="entry" id="dynamic_android.control.sceneMode"> 8204 <td class="entry_name 8205 " rowspan="5"> 8206 android.<wbr/>control.<wbr/>scene<wbr/>Mode 8207 </td> 8208 <td class="entry_type"> 8209 <span class="entry_type_name entry_type_name_enum">byte</span> 8210 8211 <span class="entry_type_visibility"> [public]</span> 8212 8213 8214 <span class="entry_type_hwlevel">[legacy] </span> 8215 8216 8217 8218 <ul class="entry_type_enum"> 8219 <li> 8220 <span class="entry_type_enum_name">DISABLED</span> 8221 <span class="entry_type_enum_value">0</span> 8222 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 8223 </li> 8224 <li> 8225 <span class="entry_type_enum_name">FACE_PRIORITY</span> 8226 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 8227 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 8228 auto-exposure routines.<wbr/></p> 8229 <p>If face detection statistics are disabled 8230 (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/> 8231 this should still operate correctly (but will not return 8232 face detection statistics to the framework).<wbr/></p> 8233 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8234 <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> 8235 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 8236 </li> 8237 <li> 8238 <span class="entry_type_enum_name">ACTION</span> 8239 <span class="entry_type_enum_optional">[optional]</span> 8240 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 8241 <p>Similar to SPORTS.<wbr/></p></span> 8242 </li> 8243 <li> 8244 <span class="entry_type_enum_name">PORTRAIT</span> 8245 <span class="entry_type_enum_optional">[optional]</span> 8246 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 8247 </li> 8248 <li> 8249 <span class="entry_type_enum_name">LANDSCAPE</span> 8250 <span class="entry_type_enum_optional">[optional]</span> 8251 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 8252 </li> 8253 <li> 8254 <span class="entry_type_enum_name">NIGHT</span> 8255 <span class="entry_type_enum_optional">[optional]</span> 8256 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 8257 </li> 8258 <li> 8259 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 8260 <span class="entry_type_enum_optional">[optional]</span> 8261 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 8262 settings.<wbr/></p></span> 8263 </li> 8264 <li> 8265 <span class="entry_type_enum_name">THEATRE</span> 8266 <span class="entry_type_enum_optional">[optional]</span> 8267 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 8268 remain off.<wbr/></p></span> 8269 </li> 8270 <li> 8271 <span class="entry_type_enum_name">BEACH</span> 8272 <span class="entry_type_enum_optional">[optional]</span> 8273 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 8274 </li> 8275 <li> 8276 <span class="entry_type_enum_name">SNOW</span> 8277 <span class="entry_type_enum_optional">[optional]</span> 8278 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 8279 </li> 8280 <li> 8281 <span class="entry_type_enum_name">SUNSET</span> 8282 <span class="entry_type_enum_optional">[optional]</span> 8283 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 8284 </li> 8285 <li> 8286 <span class="entry_type_enum_name">STEADYPHOTO</span> 8287 <span class="entry_type_enum_optional">[optional]</span> 8288 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 8289 device motion (for example: due to hand shake).<wbr/></p></span> 8290 </li> 8291 <li> 8292 <span class="entry_type_enum_name">FIREWORKS</span> 8293 <span class="entry_type_enum_optional">[optional]</span> 8294 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 8295 </li> 8296 <li> 8297 <span class="entry_type_enum_name">SPORTS</span> 8298 <span class="entry_type_enum_optional">[optional]</span> 8299 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 8300 <p>Similar to ACTION.<wbr/></p></span> 8301 </li> 8302 <li> 8303 <span class="entry_type_enum_name">PARTY</span> 8304 <span class="entry_type_enum_optional">[optional]</span> 8305 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 8306 people.<wbr/></p></span> 8307 </li> 8308 <li> 8309 <span class="entry_type_enum_name">CANDLELIGHT</span> 8310 <span class="entry_type_enum_optional">[optional]</span> 8311 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 8312 is a flame.<wbr/></p></span> 8313 </li> 8314 <li> 8315 <span class="entry_type_enum_name">BARCODE</span> 8316 <span class="entry_type_enum_optional">[optional]</span> 8317 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 8318 for use by camera applications that wish to read the 8319 barcode value.<wbr/></p></span> 8320 </li> 8321 <li> 8322 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> 8323 <span class="entry_type_enum_deprecated">[deprecated]</span> 8324 <span class="entry_type_enum_optional">[optional]</span> 8325 <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> 8326 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 8327 for high speed video recording.<wbr/></p> 8328 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 8329 <p>The supported high speed video sizes and fps ranges are specified in 8330 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 8331 output frame rates,<wbr/> the application is only allowed to select video size 8332 and fps range combinations listed in this static metadata.<wbr/> The fps range 8333 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 8334 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 8335 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 8336 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 8337 and post-processing parameters is possible.<wbr/> All other controls operate the 8338 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 8339 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 8340 <ul> 8341 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 8342 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 8343 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 8344 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 8345 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 8346 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 8347 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 8348 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 8349 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 8350 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 8351 </ul> 8352 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 8353 <ul> 8354 <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> 8355 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 8356 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 8357 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 8358 </ul> 8359 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 8360 be lower than what camera can output,<wbr/> depending on the destination Surfaces for 8361 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 8362 the application need check if the video encoder is capable of supporting the 8363 high frame rate for a given video size,<wbr/> or it will end up with lower recording 8364 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 8365 rate will be bounded by the screen refresh rate.<wbr/></p> 8366 <p>The camera device will only support up to 2 output high speed streams 8367 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 8368 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 8369 <ul> 8370 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling 8371 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 8372 min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li> 8373 <li>The stream sizes are selected from the sizes reported by 8374 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 8375 <li>No processed non-stalling or raw streams are configured.<wbr/></li> 8376 </ul> 8377 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 8378 <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/> 8379 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 8380 and the returned capture result metadata will give the fps range choosen 8381 by the camera device.<wbr/></p> 8382 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 8383 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 8384 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 8385 </li> 8386 <li> 8387 <span class="entry_type_enum_name">HDR</span> 8388 <span class="entry_type_enum_optional">[optional]</span> 8389 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 8390 <p>In this scene mode,<wbr/> the camera device captures images 8391 that keep a larger range of scene illumination levels 8392 visible in the final image.<wbr/> For example,<wbr/> when taking a 8393 picture of a object in front of a bright window,<wbr/> both 8394 the object and the scene through the window may be 8395 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 8396 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 8397 HDR mode generally takes much longer to capture a single 8398 image,<wbr/> has no user control,<wbr/> and may have other artifacts 8399 depending on the HDR method used.<wbr/></p> 8400 <p>Therefore,<wbr/> HDR captures operate at a much slower rate 8401 than regular captures.<wbr/></p> 8402 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 8403 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 8404 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 8405 using a high dynamic range capture technique.<wbr/> On LEGACY 8406 devices,<wbr/> captures that target a JPEG-format output will 8407 be captured with HDR,<wbr/> and the capture intent is not 8408 relevant.<wbr/></p> 8409 <p>The HDR capture may involve the device capturing a burst 8410 of images internally and combining them into one,<wbr/> or it 8411 may involve the device using specialized high dynamic 8412 range capture hardware.<wbr/> In all cases,<wbr/> a single image is 8413 produced in response to a capture request submitted 8414 while in HDR mode.<wbr/></p> 8415 <p>Since substantial post-processing is generally needed to 8416 produce an HDR image,<wbr/> only YUV and JPEG outputs are 8417 supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only 8418 JPEG outputs are supported for LEGACY HDR 8419 captures.<wbr/> Using a RAW output for HDR capture is not 8420 supported.<wbr/></p></span> 8421 </li> 8422 <li> 8423 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span> 8424 <span class="entry_type_enum_optional">[optional]</span> 8425 <span class="entry_type_enum_hidden">[hidden]</span> 8426 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 8427 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 8428 under low light conditions.<wbr/></p> 8429 <p>The camera device may be tuned to expose the images in a reduced 8430 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 8431 if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/> 8432 the camera device auto-exposure routine tuning process may limit the actual 8433 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 8434 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 8435 low light may be under-exposed when the sensor max exposure time (bounded by the 8436 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the 8437 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 8438 camera device auto-exposure routine to increase the sensitivity up to the max 8439 sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 8440 dark and the max exposure time is reached.<wbr/> The captured images may be noisier 8441 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 8442 recommended that the application only use this scene mode when it is capable of 8443 reducing the noise level of the captured images.<wbr/></p> 8444 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8445 <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> 8446 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 8447 </li> 8448 </ul> 8449 8450 </td> <!-- entry_type --> 8451 8452 <td class="entry_description"> 8453 <p>Control for which scene mode is currently active.<wbr/></p> 8454 </td> 8455 8456 <td class="entry_units"> 8457 </td> 8458 8459 <td class="entry_range"> 8460 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 8461 </td> 8462 8463 <td class="entry_tags"> 8464 <ul class="entry_tags"> 8465 <li><a href="#tag_BC">BC</a></li> 8466 </ul> 8467 </td> 8468 8469 </tr> 8470 <tr class="entries_header"> 8471 <th class="th_details" colspan="5">Details</th> 8472 </tr> 8473 <tr class="entry_cont"> 8474 <td class="entry_details" colspan="5"> 8475 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 8476 capture settings.<wbr/></p> 8477 <p>This is the mode that that is active when 8478 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will 8479 disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> 8480 while in use.<wbr/></p> 8481 <p>The interpretation and implementation of these scene modes is left 8482 to the implementor of the camera device.<wbr/> Their behavior will not be 8483 consistent across all devices,<wbr/> and any given device may only implement 8484 a subset of these modes.<wbr/></p> 8485 </td> 8486 </tr> 8487 8488 <tr class="entries_header"> 8489 <th class="th_details" colspan="5">HAL Implementation Details</th> 8490 </tr> 8491 <tr class="entry_cont"> 8492 <td class="entry_details" colspan="5"> 8493 <p>HAL implementations that include scene modes are expected to provide 8494 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8495 <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 8496 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 8497 <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/> 8498 the HAL must list supported video size and fps range in 8499 <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/> 8500 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming 8501 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture 8502 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/> 8503 This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 8504 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO 8505 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 8506 </td> 8507 </tr> 8508 8509 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8510 <!-- end of entry --> 8511 8512 8513 <tr class="entry" id="dynamic_android.control.videoStabilizationMode"> 8514 <td class="entry_name 8515 " rowspan="3"> 8516 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 8517 </td> 8518 <td class="entry_type"> 8519 <span class="entry_type_name entry_type_name_enum">byte</span> 8520 8521 <span class="entry_type_visibility"> [public]</span> 8522 8523 8524 <span class="entry_type_hwlevel">[legacy] </span> 8525 8526 8527 8528 <ul class="entry_type_enum"> 8529 <li> 8530 <span class="entry_type_enum_name">OFF</span> 8531 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 8532 </li> 8533 <li> 8534 <span class="entry_type_enum_name">ON</span> 8535 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 8536 </li> 8537 </ul> 8538 8539 </td> <!-- entry_type --> 8540 8541 <td class="entry_description"> 8542 <p>Whether video stabilization is 8543 active.<wbr/></p> 8544 </td> 8545 8546 <td class="entry_units"> 8547 </td> 8548 8549 <td class="entry_range"> 8550 </td> 8551 8552 <td class="entry_tags"> 8553 <ul class="entry_tags"> 8554 <li><a href="#tag_BC">BC</a></li> 8555 </ul> 8556 </td> 8557 8558 </tr> 8559 <tr class="entries_header"> 8560 <th class="th_details" colspan="5">Details</th> 8561 </tr> 8562 <tr class="entry_cont"> 8563 <td class="entry_details" colspan="5"> 8564 <p>Video stabilization automatically translates and scales images from 8565 the camera in order to stabilize motion between consecutive frames.<wbr/></p> 8566 <p>If enabled,<wbr/> video stabilization can modify the 8567 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 8568 <p>Switching between different video stabilization modes may take several 8569 frames to initialize,<wbr/> the camera device will report the current mode 8570 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 8571 the video stabilization modes in the first several capture results may 8572 still be "OFF",<wbr/> and it will become "ON" when the initialization is 8573 done.<wbr/></p> 8574 <p>If a camera device supports both this mode and OIS 8575 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 8576 produce undesirable interaction,<wbr/> so it is recommended not to enable 8577 both at the same time.<wbr/></p> 8578 </td> 8579 </tr> 8580 8581 8582 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8583 <!-- end of entry --> 8584 8585 8586 8587 <!-- end of kind --> 8588 </tbody> 8589 8590 <!-- end of section --> 8591 <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr> 8592 8593 8594 <tr><td colspan="6" class="kind">controls</td></tr> 8595 8596 <thead class="entries_header"> 8597 <tr> 8598 <th class="th_name">Property Name</th> 8599 <th class="th_type">Type</th> 8600 <th class="th_description">Description</th> 8601 <th class="th_units">Units</th> 8602 <th class="th_range">Range</th> 8603 <th class="th_tags">Tags</th> 8604 </tr> 8605 </thead> 8606 8607 <tbody> 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 8618 <tr class="entry" id="controls_android.demosaic.mode"> 8619 <td class="entry_name 8620 " rowspan="1"> 8621 android.<wbr/>demosaic.<wbr/>mode 8622 </td> 8623 <td class="entry_type"> 8624 <span class="entry_type_name entry_type_name_enum">byte</span> 8625 8626 <span class="entry_type_visibility"> [system]</span> 8627 8628 8629 8630 8631 8632 <ul class="entry_type_enum"> 8633 <li> 8634 <span class="entry_type_enum_name">FAST</span> 8635 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 8636 Bayer RAW output.<wbr/></p></span> 8637 </li> 8638 <li> 8639 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8640 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down 8641 relative to raw output.<wbr/></p></span> 8642 </li> 8643 </ul> 8644 8645 </td> <!-- entry_type --> 8646 8647 <td class="entry_description"> 8648 <p>Controls the quality of the demosaicing 8649 processing.<wbr/></p> 8650 </td> 8651 8652 <td class="entry_units"> 8653 </td> 8654 8655 <td class="entry_range"> 8656 </td> 8657 8658 <td class="entry_tags"> 8659 <ul class="entry_tags"> 8660 <li><a href="#tag_FUTURE">FUTURE</a></li> 8661 </ul> 8662 </td> 8663 8664 </tr> 8665 8666 8667 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8668 <!-- end of entry --> 8669 8670 8671 8672 <!-- end of kind --> 8673 </tbody> 8674 8675 <!-- end of section --> 8676 <tr><td colspan="6" id="section_edge" class="section">edge</td></tr> 8677 8678 8679 <tr><td colspan="6" class="kind">controls</td></tr> 8680 8681 <thead class="entries_header"> 8682 <tr> 8683 <th class="th_name">Property Name</th> 8684 <th class="th_type">Type</th> 8685 <th class="th_description">Description</th> 8686 <th class="th_units">Units</th> 8687 <th class="th_range">Range</th> 8688 <th class="th_tags">Tags</th> 8689 </tr> 8690 </thead> 8691 8692 <tbody> 8693 8694 8695 8696 8697 8698 8699 8700 8701 8702 8703 <tr class="entry" id="controls_android.edge.mode"> 8704 <td class="entry_name 8705 " rowspan="5"> 8706 android.<wbr/>edge.<wbr/>mode 8707 </td> 8708 <td class="entry_type"> 8709 <span class="entry_type_name entry_type_name_enum">byte</span> 8710 8711 <span class="entry_type_visibility"> [public]</span> 8712 8713 8714 <span class="entry_type_hwlevel">[full] </span> 8715 8716 8717 8718 <ul class="entry_type_enum"> 8719 <li> 8720 <span class="entry_type_enum_name">OFF</span> 8721 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 8722 </li> 8723 <li> 8724 <span class="entry_type_enum_name">FAST</span> 8725 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 8726 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 8727 slow down frame rate relative to sensor.<wbr/></p></span> 8728 </li> 8729 <li> 8730 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8731 <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> 8732 </li> 8733 <li> 8734 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 8735 <span class="entry_type_enum_optional">[optional]</span> 8736 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/> 8737 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have 8738 edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement 8739 applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that 8740 frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it 8741 is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 8742 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 8743 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 8744 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 8745 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 8746 high-resolution buffers must not have edge enhancement applied to maximize efficiency of 8747 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 8748 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 8749 reasonable preview quality.<wbr/></p> 8750 <p>This mode is guaranteed to be supported by devices that support either the 8751 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 8752 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 8753 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 8754 </li> 8755 </ul> 8756 8757 </td> <!-- entry_type --> 8758 8759 <td class="entry_description"> 8760 <p>Operation mode for edge 8761 enhancement.<wbr/></p> 8762 </td> 8763 8764 <td class="entry_units"> 8765 </td> 8766 8767 <td class="entry_range"> 8768 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 8769 </td> 8770 8771 <td class="entry_tags"> 8772 <ul class="entry_tags"> 8773 <li><a href="#tag_V1">V1</a></li> 8774 <li><a href="#tag_REPROC">REPROC</a></li> 8775 </ul> 8776 </td> 8777 8778 </tr> 8779 <tr class="entries_header"> 8780 <th class="th_details" colspan="5">Details</th> 8781 </tr> 8782 <tr class="entry_cont"> 8783 <td class="entry_details" colspan="5"> 8784 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 8785 no enhancement will be applied by the camera device.<wbr/></p> 8786 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 8787 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 8788 camera device will use the highest-quality enhancement algorithms,<wbr/> 8789 even if it slows down capture rate.<wbr/> FAST means the camera device will 8790 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 8791 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 8792 amount of enhancement applied.<wbr/></p> 8793 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 8794 buffer of high-resolution images during preview and reprocess image(s) from that buffer 8795 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 8796 edge enhancement to low-resolution streams (below maximum recording resolution) to 8797 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 8798 since those will be reprocessed later if necessary.<wbr/></p> 8799 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 8800 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 8801 The camera device may adjust its internal edge enhancement parameters for best 8802 image quality based on the <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a>,<wbr/> if it is set.<wbr/></p> 8803 </td> 8804 </tr> 8805 8806 <tr class="entries_header"> 8807 <th class="th_details" colspan="5">HAL Implementation Details</th> 8808 </tr> 8809 <tr class="entry_cont"> 8810 <td class="entry_details" colspan="5"> 8811 <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 8812 adjust the internal edge enhancement reduction parameters appropriately to get the best 8813 quality images.<wbr/></p> 8814 </td> 8815 </tr> 8816 8817 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8818 <!-- end of entry --> 8819 8820 8821 <tr class="entry" id="controls_android.edge.strength"> 8822 <td class="entry_name 8823 " rowspan="1"> 8824 android.<wbr/>edge.<wbr/>strength 8825 </td> 8826 <td class="entry_type"> 8827 <span class="entry_type_name">byte</span> 8828 8829 <span class="entry_type_visibility"> [system]</span> 8830 8831 8832 8833 8834 8835 8836 </td> <!-- entry_type --> 8837 8838 <td class="entry_description"> 8839 <p>Control the amount of edge enhancement 8840 applied to the images</p> 8841 </td> 8842 8843 <td class="entry_units"> 8844 1-10; 10 is maximum sharpening 8845 </td> 8846 8847 <td class="entry_range"> 8848 </td> 8849 8850 <td class="entry_tags"> 8851 <ul class="entry_tags"> 8852 <li><a href="#tag_FUTURE">FUTURE</a></li> 8853 </ul> 8854 </td> 8855 8856 </tr> 8857 8858 8859 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8860 <!-- end of entry --> 8861 8862 8863 8864 <!-- end of kind --> 8865 </tbody> 8866 <tr><td colspan="6" class="kind">static</td></tr> 8867 8868 <thead class="entries_header"> 8869 <tr> 8870 <th class="th_name">Property Name</th> 8871 <th class="th_type">Type</th> 8872 <th class="th_description">Description</th> 8873 <th class="th_units">Units</th> 8874 <th class="th_range">Range</th> 8875 <th class="th_tags">Tags</th> 8876 </tr> 8877 </thead> 8878 8879 <tbody> 8880 8881 8882 8883 8884 8885 8886 8887 8888 8889 8890 <tr class="entry" id="static_android.edge.availableEdgeModes"> 8891 <td class="entry_name 8892 " rowspan="5"> 8893 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes 8894 </td> 8895 <td class="entry_type"> 8896 <span class="entry_type_name">byte</span> 8897 <span class="entry_type_container">x</span> 8898 8899 <span class="entry_type_array"> 8900 n 8901 </span> 8902 <span class="entry_type_visibility"> [public as enumList]</span> 8903 8904 8905 <span class="entry_type_hwlevel">[full] </span> 8906 8907 8908 <div class="entry_type_notes">list of enums</div> 8909 8910 8911 </td> <!-- entry_type --> 8912 8913 <td class="entry_description"> 8914 <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 8915 device.<wbr/></p> 8916 </td> 8917 8918 <td class="entry_units"> 8919 </td> 8920 8921 <td class="entry_range"> 8922 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p> 8923 </td> 8924 8925 <td class="entry_tags"> 8926 <ul class="entry_tags"> 8927 <li><a href="#tag_V1">V1</a></li> 8928 <li><a href="#tag_REPROC">REPROC</a></li> 8929 </ul> 8930 </td> 8931 8932 </tr> 8933 <tr class="entries_header"> 8934 <th class="th_details" colspan="5">Details</th> 8935 </tr> 8936 <tr class="entry_cont"> 8937 <td class="entry_details" colspan="5"> 8938 <p>Full-capability camera devices must always support OFF; camera devices that support 8939 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will 8940 list FAST.<wbr/></p> 8941 </td> 8942 </tr> 8943 8944 <tr class="entries_header"> 8945 <th class="th_details" colspan="5">HAL Implementation Details</th> 8946 </tr> 8947 <tr class="entry_cont"> 8948 <td class="entry_details" colspan="5"> 8949 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available 8950 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 8951 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 8952 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 8953 </td> 8954 </tr> 8955 8956 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8957 <!-- end of entry --> 8958 8959 8960 8961 <!-- end of kind --> 8962 </tbody> 8963 <tr><td colspan="6" class="kind">dynamic</td></tr> 8964 8965 <thead class="entries_header"> 8966 <tr> 8967 <th class="th_name">Property Name</th> 8968 <th class="th_type">Type</th> 8969 <th class="th_description">Description</th> 8970 <th class="th_units">Units</th> 8971 <th class="th_range">Range</th> 8972 <th class="th_tags">Tags</th> 8973 </tr> 8974 </thead> 8975 8976 <tbody> 8977 8978 8979 8980 8981 8982 8983 8984 8985 8986 8987 <tr class="entry" id="dynamic_android.edge.mode"> 8988 <td class="entry_name 8989 " rowspan="5"> 8990 android.<wbr/>edge.<wbr/>mode 8991 </td> 8992 <td class="entry_type"> 8993 <span class="entry_type_name entry_type_name_enum">byte</span> 8994 8995 <span class="entry_type_visibility"> [public]</span> 8996 8997 8998 <span class="entry_type_hwlevel">[full] </span> 8999 9000 9001 9002 <ul class="entry_type_enum"> 9003 <li> 9004 <span class="entry_type_enum_name">OFF</span> 9005 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 9006 </li> 9007 <li> 9008 <span class="entry_type_enum_name">FAST</span> 9009 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 9010 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 9011 slow down frame rate relative to sensor.<wbr/></p></span> 9012 </li> 9013 <li> 9014 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9015 <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> 9016 </li> 9017 <li> 9018 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 9019 <span class="entry_type_enum_optional">[optional]</span> 9020 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/> 9021 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have 9022 edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement 9023 applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that 9024 frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it 9025 is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 9026 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 9027 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 9028 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 9029 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 9030 high-resolution buffers must not have edge enhancement applied to maximize efficiency of 9031 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 9032 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 9033 reasonable preview quality.<wbr/></p> 9034 <p>This mode is guaranteed to be supported by devices that support either the 9035 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 9036 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 9037 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 9038 </li> 9039 </ul> 9040 9041 </td> <!-- entry_type --> 9042 9043 <td class="entry_description"> 9044 <p>Operation mode for edge 9045 enhancement.<wbr/></p> 9046 </td> 9047 9048 <td class="entry_units"> 9049 </td> 9050 9051 <td class="entry_range"> 9052 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 9053 </td> 9054 9055 <td class="entry_tags"> 9056 <ul class="entry_tags"> 9057 <li><a href="#tag_V1">V1</a></li> 9058 <li><a href="#tag_REPROC">REPROC</a></li> 9059 </ul> 9060 </td> 9061 9062 </tr> 9063 <tr class="entries_header"> 9064 <th class="th_details" colspan="5">Details</th> 9065 </tr> 9066 <tr class="entry_cont"> 9067 <td class="entry_details" colspan="5"> 9068 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 9069 no enhancement will be applied by the camera device.<wbr/></p> 9070 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 9071 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 9072 camera device will use the highest-quality enhancement algorithms,<wbr/> 9073 even if it slows down capture rate.<wbr/> FAST means the camera device will 9074 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 9075 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 9076 amount of enhancement applied.<wbr/></p> 9077 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 9078 buffer of high-resolution images during preview and reprocess image(s) from that buffer 9079 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 9080 edge enhancement to low-resolution streams (below maximum recording resolution) to 9081 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 9082 since those will be reprocessed later if necessary.<wbr/></p> 9083 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 9084 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 9085 The camera device may adjust its internal edge enhancement parameters for best 9086 image quality based on the <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a>,<wbr/> if it is set.<wbr/></p> 9087 </td> 9088 </tr> 9089 9090 <tr class="entries_header"> 9091 <th class="th_details" colspan="5">HAL Implementation Details</th> 9092 </tr> 9093 <tr class="entry_cont"> 9094 <td class="entry_details" colspan="5"> 9095 <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 9096 adjust the internal edge enhancement reduction parameters appropriately to get the best 9097 quality images.<wbr/></p> 9098 </td> 9099 </tr> 9100 9101 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9102 <!-- end of entry --> 9103 9104 9105 9106 <!-- end of kind --> 9107 </tbody> 9108 9109 <!-- end of section --> 9110 <tr><td colspan="6" id="section_flash" class="section">flash</td></tr> 9111 9112 9113 <tr><td colspan="6" class="kind">controls</td></tr> 9114 9115 <thead class="entries_header"> 9116 <tr> 9117 <th class="th_name">Property Name</th> 9118 <th class="th_type">Type</th> 9119 <th class="th_description">Description</th> 9120 <th class="th_units">Units</th> 9121 <th class="th_range">Range</th> 9122 <th class="th_tags">Tags</th> 9123 </tr> 9124 </thead> 9125 9126 <tbody> 9127 9128 9129 9130 9131 9132 9133 9134 9135 9136 9137 <tr class="entry" id="controls_android.flash.firingPower"> 9138 <td class="entry_name 9139 " rowspan="3"> 9140 android.<wbr/>flash.<wbr/>firing<wbr/>Power 9141 </td> 9142 <td class="entry_type"> 9143 <span class="entry_type_name">byte</span> 9144 9145 <span class="entry_type_visibility"> [system]</span> 9146 9147 9148 9149 9150 9151 9152 </td> <!-- entry_type --> 9153 9154 <td class="entry_description"> 9155 <p>Power for flash firing/<wbr/>torch</p> 9156 </td> 9157 9158 <td class="entry_units"> 9159 10 is max power; 0 is no flash.<wbr/> Linear 9160 </td> 9161 9162 <td class="entry_range"> 9163 <p>0 - 10</p> 9164 </td> 9165 9166 <td class="entry_tags"> 9167 <ul class="entry_tags"> 9168 <li><a href="#tag_FUTURE">FUTURE</a></li> 9169 </ul> 9170 </td> 9171 9172 </tr> 9173 <tr class="entries_header"> 9174 <th class="th_details" colspan="5">Details</th> 9175 </tr> 9176 <tr class="entry_cont"> 9177 <td class="entry_details" colspan="5"> 9178 <p>Power for snapshot may use a different scale than 9179 for torch mode.<wbr/> Only one entry for torch mode will be 9180 used</p> 9181 </td> 9182 </tr> 9183 9184 9185 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9186 <!-- end of entry --> 9187 9188 9189 <tr class="entry" id="controls_android.flash.firingTime"> 9190 <td class="entry_name 9191 " rowspan="3"> 9192 android.<wbr/>flash.<wbr/>firing<wbr/>Time 9193 </td> 9194 <td class="entry_type"> 9195 <span class="entry_type_name">int64</span> 9196 9197 <span class="entry_type_visibility"> [system]</span> 9198 9199 9200 9201 9202 9203 9204 </td> <!-- entry_type --> 9205 9206 <td class="entry_description"> 9207 <p>Firing time of flash relative to start of 9208 exposure</p> 9209 </td> 9210 9211 <td class="entry_units"> 9212 nanoseconds 9213 </td> 9214 9215 <td class="entry_range"> 9216 <p>0-(exposure time-flash duration)</p> 9217 </td> 9218 9219 <td class="entry_tags"> 9220 <ul class="entry_tags"> 9221 <li><a href="#tag_FUTURE">FUTURE</a></li> 9222 </ul> 9223 </td> 9224 9225 </tr> 9226 <tr class="entries_header"> 9227 <th class="th_details" colspan="5">Details</th> 9228 </tr> 9229 <tr class="entry_cont"> 9230 <td class="entry_details" colspan="5"> 9231 <p>Clamped to (0,<wbr/> exposure time - flash 9232 duration).<wbr/></p> 9233 </td> 9234 </tr> 9235 9236 9237 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9238 <!-- end of entry --> 9239 9240 9241 <tr class="entry" id="controls_android.flash.mode"> 9242 <td class="entry_name 9243 " rowspan="3"> 9244 android.<wbr/>flash.<wbr/>mode 9245 </td> 9246 <td class="entry_type"> 9247 <span class="entry_type_name entry_type_name_enum">byte</span> 9248 9249 <span class="entry_type_visibility"> [public]</span> 9250 9251 9252 <span class="entry_type_hwlevel">[legacy] </span> 9253 9254 9255 9256 <ul class="entry_type_enum"> 9257 <li> 9258 <span class="entry_type_enum_name">OFF</span> 9259 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 9260 </li> 9261 <li> 9262 <span class="entry_type_enum_name">SINGLE</span> 9263 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 9264 for this capture.<wbr/></p></span> 9265 </li> 9266 <li> 9267 <span class="entry_type_enum_name">TORCH</span> 9268 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 9269 </li> 9270 </ul> 9271 9272 </td> <!-- entry_type --> 9273 9274 <td class="entry_description"> 9275 <p>The desired mode for for the camera device's flash control.<wbr/></p> 9276 </td> 9277 9278 <td class="entry_units"> 9279 </td> 9280 9281 <td class="entry_range"> 9282 </td> 9283 9284 <td class="entry_tags"> 9285 <ul class="entry_tags"> 9286 <li><a href="#tag_BC">BC</a></li> 9287 </ul> 9288 </td> 9289 9290 </tr> 9291 <tr class="entries_header"> 9292 <th class="th_details" colspan="5">Details</th> 9293 </tr> 9294 <tr class="entry_cont"> 9295 <td class="entry_details" colspan="5"> 9296 <p>This control is only effective when flash unit is available 9297 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 9298 <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/> 9299 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 9300 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 9301 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 9302 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 9303 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 9304 control should be used along with auto-exposure (AE) precapture metering sequence 9305 (<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> 9306 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 9307 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 9308 <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> 9309 </td> 9310 </tr> 9311 9312 9313 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9314 <!-- end of entry --> 9315 9316 9317 9318 <!-- end of kind --> 9319 </tbody> 9320 <tr><td colspan="6" class="kind">static</td></tr> 9321 9322 <thead class="entries_header"> 9323 <tr> 9324 <th class="th_name">Property Name</th> 9325 <th class="th_type">Type</th> 9326 <th class="th_description">Description</th> 9327 <th class="th_units">Units</th> 9328 <th class="th_range">Range</th> 9329 <th class="th_tags">Tags</th> 9330 </tr> 9331 </thead> 9332 9333 <tbody> 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 <tr class="entry" id="static_android.flash.info.available"> 9347 <td class="entry_name 9348 " rowspan="3"> 9349 android.<wbr/>flash.<wbr/>info.<wbr/>available 9350 </td> 9351 <td class="entry_type"> 9352 <span class="entry_type_name entry_type_name_enum">byte</span> 9353 9354 <span class="entry_type_visibility"> [public as boolean]</span> 9355 9356 9357 <span class="entry_type_hwlevel">[legacy] </span> 9358 9359 9360 9361 <ul class="entry_type_enum"> 9362 <li> 9363 <span class="entry_type_enum_name">FALSE</span> 9364 </li> 9365 <li> 9366 <span class="entry_type_enum_name">TRUE</span> 9367 </li> 9368 </ul> 9369 9370 </td> <!-- entry_type --> 9371 9372 <td class="entry_description"> 9373 <p>Whether this camera device has a 9374 flash unit.<wbr/></p> 9375 </td> 9376 9377 <td class="entry_units"> 9378 </td> 9379 9380 <td class="entry_range"> 9381 </td> 9382 9383 <td class="entry_tags"> 9384 <ul class="entry_tags"> 9385 <li><a href="#tag_BC">BC</a></li> 9386 </ul> 9387 </td> 9388 9389 </tr> 9390 <tr class="entries_header"> 9391 <th class="th_details" colspan="5">Details</th> 9392 </tr> 9393 <tr class="entry_cont"> 9394 <td class="entry_details" colspan="5"> 9395 <p>Will be <code>false</code> if no flash is available.<wbr/></p> 9396 <p>If there is no flash unit,<wbr/> none of the flash controls do 9397 anything.<wbr/></p> 9398 </td> 9399 </tr> 9400 9401 9402 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9403 <!-- end of entry --> 9404 9405 9406 <tr class="entry" id="static_android.flash.info.chargeDuration"> 9407 <td class="entry_name 9408 " rowspan="3"> 9409 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 9410 </td> 9411 <td class="entry_type"> 9412 <span class="entry_type_name">int64</span> 9413 9414 <span class="entry_type_visibility"> [system]</span> 9415 9416 9417 9418 9419 9420 9421 </td> <!-- entry_type --> 9422 9423 <td class="entry_description"> 9424 <p>Time taken before flash can fire 9425 again</p> 9426 </td> 9427 9428 <td class="entry_units"> 9429 nanoseconds 9430 </td> 9431 9432 <td class="entry_range"> 9433 <p>0-1e9</p> 9434 </td> 9435 9436 <td class="entry_tags"> 9437 <ul class="entry_tags"> 9438 <li><a href="#tag_FUTURE">FUTURE</a></li> 9439 </ul> 9440 </td> 9441 9442 </tr> 9443 <tr class="entries_header"> 9444 <th class="th_details" colspan="5">Details</th> 9445 </tr> 9446 <tr class="entry_cont"> 9447 <td class="entry_details" colspan="5"> 9448 <p>1 second too long/<wbr/>too short for recharge? Should 9449 this be power-dependent?</p> 9450 </td> 9451 </tr> 9452 9453 9454 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9455 <!-- end of entry --> 9456 9457 9458 9459 9460 9461 <tr class="entry" id="static_android.flash.colorTemperature"> 9462 <td class="entry_name 9463 " rowspan="1"> 9464 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 9465 </td> 9466 <td class="entry_type"> 9467 <span class="entry_type_name">byte</span> 9468 9469 <span class="entry_type_visibility"> [system]</span> 9470 9471 9472 9473 9474 9475 9476 </td> <!-- entry_type --> 9477 9478 <td class="entry_description"> 9479 <p>The x,<wbr/>y whitepoint of the 9480 flash</p> 9481 </td> 9482 9483 <td class="entry_units"> 9484 pair of floats 9485 </td> 9486 9487 <td class="entry_range"> 9488 <p>0-1 for both</p> 9489 </td> 9490 9491 <td class="entry_tags"> 9492 <ul class="entry_tags"> 9493 <li><a href="#tag_FUTURE">FUTURE</a></li> 9494 </ul> 9495 </td> 9496 9497 </tr> 9498 9499 9500 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9501 <!-- end of entry --> 9502 9503 9504 <tr class="entry" id="static_android.flash.maxEnergy"> 9505 <td class="entry_name 9506 " rowspan="1"> 9507 android.<wbr/>flash.<wbr/>max<wbr/>Energy 9508 </td> 9509 <td class="entry_type"> 9510 <span class="entry_type_name">byte</span> 9511 9512 <span class="entry_type_visibility"> [system]</span> 9513 9514 9515 9516 9517 9518 9519 </td> <!-- entry_type --> 9520 9521 <td class="entry_description"> 9522 <p>Max energy output of the flash for a full 9523 power single flash</p> 9524 </td> 9525 9526 <td class="entry_units"> 9527 lumen-seconds 9528 </td> 9529 9530 <td class="entry_range"> 9531 <p>>= 0</p> 9532 </td> 9533 9534 <td class="entry_tags"> 9535 <ul class="entry_tags"> 9536 <li><a href="#tag_FUTURE">FUTURE</a></li> 9537 </ul> 9538 </td> 9539 9540 </tr> 9541 9542 9543 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9544 <!-- end of entry --> 9545 9546 9547 9548 <!-- end of kind --> 9549 </tbody> 9550 <tr><td colspan="6" class="kind">dynamic</td></tr> 9551 9552 <thead class="entries_header"> 9553 <tr> 9554 <th class="th_name">Property Name</th> 9555 <th class="th_type">Type</th> 9556 <th class="th_description">Description</th> 9557 <th class="th_units">Units</th> 9558 <th class="th_range">Range</th> 9559 <th class="th_tags">Tags</th> 9560 </tr> 9561 </thead> 9562 9563 <tbody> 9564 9565 9566 9567 9568 9569 9570 9571 9572 9573 9574 <tr class="entry" id="dynamic_android.flash.firingPower"> 9575 <td class="entry_name 9576 " rowspan="3"> 9577 android.<wbr/>flash.<wbr/>firing<wbr/>Power 9578 </td> 9579 <td class="entry_type"> 9580 <span class="entry_type_name">byte</span> 9581 9582 <span class="entry_type_visibility"> [system]</span> 9583 9584 9585 9586 9587 9588 9589 </td> <!-- entry_type --> 9590 9591 <td class="entry_description"> 9592 <p>Power for flash firing/<wbr/>torch</p> 9593 </td> 9594 9595 <td class="entry_units"> 9596 10 is max power; 0 is no flash.<wbr/> Linear 9597 </td> 9598 9599 <td class="entry_range"> 9600 <p>0 - 10</p> 9601 </td> 9602 9603 <td class="entry_tags"> 9604 <ul class="entry_tags"> 9605 <li><a href="#tag_FUTURE">FUTURE</a></li> 9606 </ul> 9607 </td> 9608 9609 </tr> 9610 <tr class="entries_header"> 9611 <th class="th_details" colspan="5">Details</th> 9612 </tr> 9613 <tr class="entry_cont"> 9614 <td class="entry_details" colspan="5"> 9615 <p>Power for snapshot may use a different scale than 9616 for torch mode.<wbr/> Only one entry for torch mode will be 9617 used</p> 9618 </td> 9619 </tr> 9620 9621 9622 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9623 <!-- end of entry --> 9624 9625 9626 <tr class="entry" id="dynamic_android.flash.firingTime"> 9627 <td class="entry_name 9628 " rowspan="3"> 9629 android.<wbr/>flash.<wbr/>firing<wbr/>Time 9630 </td> 9631 <td class="entry_type"> 9632 <span class="entry_type_name">int64</span> 9633 9634 <span class="entry_type_visibility"> [system]</span> 9635 9636 9637 9638 9639 9640 9641 </td> <!-- entry_type --> 9642 9643 <td class="entry_description"> 9644 <p>Firing time of flash relative to start of 9645 exposure</p> 9646 </td> 9647 9648 <td class="entry_units"> 9649 nanoseconds 9650 </td> 9651 9652 <td class="entry_range"> 9653 <p>0-(exposure time-flash duration)</p> 9654 </td> 9655 9656 <td class="entry_tags"> 9657 <ul class="entry_tags"> 9658 <li><a href="#tag_FUTURE">FUTURE</a></li> 9659 </ul> 9660 </td> 9661 9662 </tr> 9663 <tr class="entries_header"> 9664 <th class="th_details" colspan="5">Details</th> 9665 </tr> 9666 <tr class="entry_cont"> 9667 <td class="entry_details" colspan="5"> 9668 <p>Clamped to (0,<wbr/> exposure time - flash 9669 duration).<wbr/></p> 9670 </td> 9671 </tr> 9672 9673 9674 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9675 <!-- end of entry --> 9676 9677 9678 <tr class="entry" id="dynamic_android.flash.mode"> 9679 <td class="entry_name 9680 " rowspan="3"> 9681 android.<wbr/>flash.<wbr/>mode 9682 </td> 9683 <td class="entry_type"> 9684 <span class="entry_type_name entry_type_name_enum">byte</span> 9685 9686 <span class="entry_type_visibility"> [public]</span> 9687 9688 9689 <span class="entry_type_hwlevel">[legacy] </span> 9690 9691 9692 9693 <ul class="entry_type_enum"> 9694 <li> 9695 <span class="entry_type_enum_name">OFF</span> 9696 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 9697 </li> 9698 <li> 9699 <span class="entry_type_enum_name">SINGLE</span> 9700 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 9701 for this capture.<wbr/></p></span> 9702 </li> 9703 <li> 9704 <span class="entry_type_enum_name">TORCH</span> 9705 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 9706 </li> 9707 </ul> 9708 9709 </td> <!-- entry_type --> 9710 9711 <td class="entry_description"> 9712 <p>The desired mode for for the camera device's flash control.<wbr/></p> 9713 </td> 9714 9715 <td class="entry_units"> 9716 </td> 9717 9718 <td class="entry_range"> 9719 </td> 9720 9721 <td class="entry_tags"> 9722 <ul class="entry_tags"> 9723 <li><a href="#tag_BC">BC</a></li> 9724 </ul> 9725 </td> 9726 9727 </tr> 9728 <tr class="entries_header"> 9729 <th class="th_details" colspan="5">Details</th> 9730 </tr> 9731 <tr class="entry_cont"> 9732 <td class="entry_details" colspan="5"> 9733 <p>This control is only effective when flash unit is available 9734 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 9735 <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/> 9736 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 9737 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 9738 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 9739 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 9740 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 9741 control should be used along with auto-exposure (AE) precapture metering sequence 9742 (<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> 9743 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 9744 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 9745 <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> 9746 </td> 9747 </tr> 9748 9749 9750 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9751 <!-- end of entry --> 9752 9753 9754 <tr class="entry" id="dynamic_android.flash.state"> 9755 <td class="entry_name 9756 " rowspan="3"> 9757 android.<wbr/>flash.<wbr/>state 9758 </td> 9759 <td class="entry_type"> 9760 <span class="entry_type_name entry_type_name_enum">byte</span> 9761 9762 <span class="entry_type_visibility"> [public]</span> 9763 9764 9765 <span class="entry_type_hwlevel">[limited] </span> 9766 9767 9768 9769 <ul class="entry_type_enum"> 9770 <li> 9771 <span class="entry_type_enum_name">UNAVAILABLE</span> 9772 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> 9773 </li> 9774 <li> 9775 <span class="entry_type_enum_name">CHARGING</span> 9776 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> 9777 </li> 9778 <li> 9779 <span class="entry_type_enum_name">READY</span> 9780 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> 9781 </li> 9782 <li> 9783 <span class="entry_type_enum_name">FIRED</span> 9784 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> 9785 </li> 9786 <li> 9787 <span class="entry_type_enum_name">PARTIAL</span> 9788 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p> 9789 <p>This is usually due to the next or previous frame having 9790 the flash fire,<wbr/> and the flash spilling into this capture 9791 due to hardware limitations.<wbr/></p></span> 9792 </li> 9793 </ul> 9794 9795 </td> <!-- entry_type --> 9796 9797 <td class="entry_description"> 9798 <p>Current state of the flash 9799 unit.<wbr/></p> 9800 </td> 9801 9802 <td class="entry_units"> 9803 </td> 9804 9805 <td class="entry_range"> 9806 </td> 9807 9808 <td class="entry_tags"> 9809 </td> 9810 9811 </tr> 9812 <tr class="entries_header"> 9813 <th class="th_details" colspan="5">Details</th> 9814 </tr> 9815 <tr class="entry_cont"> 9816 <td class="entry_details" colspan="5"> 9817 <p>When the camera device doesn't have flash unit 9818 (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/> 9819 Other states indicate the current flash status.<wbr/></p> 9820 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p> 9821 <ul> 9822 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li> 9823 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH 9824 will always return FIRED.<wbr/></li> 9825 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH 9826 will always return FIRED.<wbr/></li> 9827 </ul> 9828 <p>In all other conditions the state will not be available on 9829 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p> 9830 </td> 9831 </tr> 9832 9833 9834 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9835 <!-- end of entry --> 9836 9837 9838 9839 <!-- end of kind --> 9840 </tbody> 9841 9842 <!-- end of section --> 9843 <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr> 9844 9845 9846 <tr><td colspan="6" class="kind">controls</td></tr> 9847 9848 <thead class="entries_header"> 9849 <tr> 9850 <th class="th_name">Property Name</th> 9851 <th class="th_type">Type</th> 9852 <th class="th_description">Description</th> 9853 <th class="th_units">Units</th> 9854 <th class="th_range">Range</th> 9855 <th class="th_tags">Tags</th> 9856 </tr> 9857 </thead> 9858 9859 <tbody> 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 <tr class="entry" id="controls_android.hotPixel.mode"> 9871 <td class="entry_name 9872 " rowspan="3"> 9873 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 9874 </td> 9875 <td class="entry_type"> 9876 <span class="entry_type_name entry_type_name_enum">byte</span> 9877 9878 <span class="entry_type_visibility"> [public]</span> 9879 9880 9881 9882 9883 9884 <ul class="entry_type_enum"> 9885 <li> 9886 <span class="entry_type_enum_name">OFF</span> 9887 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 9888 <p>The frame rate must not be reduced relative to sensor raw output 9889 for this option.<wbr/></p> 9890 <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> 9891 </li> 9892 <li> 9893 <span class="entry_type_enum_name">FAST</span> 9894 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 9895 rate relative to sensor raw output.<wbr/></p> 9896 <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> 9897 </li> 9898 <li> 9899 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9900 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 9901 of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 9902 <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> 9903 </li> 9904 </ul> 9905 9906 </td> <!-- entry_type --> 9907 9908 <td class="entry_description"> 9909 <p>Operational mode for hot pixel correction.<wbr/></p> 9910 </td> 9911 9912 <td class="entry_units"> 9913 </td> 9914 9915 <td class="entry_range"> 9916 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 9917 </td> 9918 9919 <td class="entry_tags"> 9920 <ul class="entry_tags"> 9921 <li><a href="#tag_V1">V1</a></li> 9922 <li><a href="#tag_RAW">RAW</a></li> 9923 </ul> 9924 </td> 9925 9926 </tr> 9927 <tr class="entries_header"> 9928 <th class="th_details" colspan="5">Details</th> 9929 </tr> 9930 <tr class="entry_cont"> 9931 <td class="entry_details" colspan="5"> 9932 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 9933 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 9934 are stuck at an arbitrary value or are oversensitive).<wbr/></p> 9935 </td> 9936 </tr> 9937 9938 9939 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9940 <!-- end of entry --> 9941 9942 9943 9944 <!-- end of kind --> 9945 </tbody> 9946 <tr><td colspan="6" class="kind">static</td></tr> 9947 9948 <thead class="entries_header"> 9949 <tr> 9950 <th class="th_name">Property Name</th> 9951 <th class="th_type">Type</th> 9952 <th class="th_description">Description</th> 9953 <th class="th_units">Units</th> 9954 <th class="th_range">Range</th> 9955 <th class="th_tags">Tags</th> 9956 </tr> 9957 </thead> 9958 9959 <tbody> 9960 9961 9962 9963 9964 9965 9966 9967 9968 9969 9970 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> 9971 <td class="entry_name 9972 " rowspan="5"> 9973 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes 9974 </td> 9975 <td class="entry_type"> 9976 <span class="entry_type_name">byte</span> 9977 <span class="entry_type_container">x</span> 9978 9979 <span class="entry_type_array"> 9980 n 9981 </span> 9982 <span class="entry_type_visibility"> [public as enumList]</span> 9983 9984 9985 9986 9987 <div class="entry_type_notes">list of enums</div> 9988 9989 9990 </td> <!-- entry_type --> 9991 9992 <td class="entry_description"> 9993 <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 9994 camera device.<wbr/></p> 9995 </td> 9996 9997 <td class="entry_units"> 9998 </td> 9999 10000 <td class="entry_range"> 10001 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p> 10002 </td> 10003 10004 <td class="entry_tags"> 10005 <ul class="entry_tags"> 10006 <li><a href="#tag_V1">V1</a></li> 10007 <li><a href="#tag_RAW">RAW</a></li> 10008 </ul> 10009 </td> 10010 10011 </tr> 10012 <tr class="entries_header"> 10013 <th class="th_details" colspan="5">Details</th> 10014 </tr> 10015 <tr class="entry_cont"> 10016 <td class="entry_details" colspan="5"> 10017 <p>FULL mode camera devices will always support FAST.<wbr/></p> 10018 </td> 10019 </tr> 10020 10021 <tr class="entries_header"> 10022 <th class="th_details" colspan="5">HAL Implementation Details</th> 10023 </tr> 10024 <tr class="entry_cont"> 10025 <td class="entry_details" colspan="5"> 10026 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot 10027 pixels than actual pixels on the camera sensor.<wbr/> 10028 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available 10029 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 10030 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 10031 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 10032 </td> 10033 </tr> 10034 10035 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10036 <!-- end of entry --> 10037 10038 10039 10040 <!-- end of kind --> 10041 </tbody> 10042 <tr><td colspan="6" class="kind">dynamic</td></tr> 10043 10044 <thead class="entries_header"> 10045 <tr> 10046 <th class="th_name">Property Name</th> 10047 <th class="th_type">Type</th> 10048 <th class="th_description">Description</th> 10049 <th class="th_units">Units</th> 10050 <th class="th_range">Range</th> 10051 <th class="th_tags">Tags</th> 10052 </tr> 10053 </thead> 10054 10055 <tbody> 10056 10057 10058 10059 10060 10061 10062 10063 10064 10065 10066 <tr class="entry" id="dynamic_android.hotPixel.mode"> 10067 <td class="entry_name 10068 " rowspan="3"> 10069 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 10070 </td> 10071 <td class="entry_type"> 10072 <span class="entry_type_name entry_type_name_enum">byte</span> 10073 10074 <span class="entry_type_visibility"> [public]</span> 10075 10076 10077 10078 10079 10080 <ul class="entry_type_enum"> 10081 <li> 10082 <span class="entry_type_enum_name">OFF</span> 10083 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 10084 <p>The frame rate must not be reduced relative to sensor raw output 10085 for this option.<wbr/></p> 10086 <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> 10087 </li> 10088 <li> 10089 <span class="entry_type_enum_name">FAST</span> 10090 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 10091 rate relative to sensor raw output.<wbr/></p> 10092 <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> 10093 </li> 10094 <li> 10095 <span class="entry_type_enum_name">HIGH_QUALITY</span> 10096 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 10097 of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 10098 <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> 10099 </li> 10100 </ul> 10101 10102 </td> <!-- entry_type --> 10103 10104 <td class="entry_description"> 10105 <p>Operational mode for hot pixel correction.<wbr/></p> 10106 </td> 10107 10108 <td class="entry_units"> 10109 </td> 10110 10111 <td class="entry_range"> 10112 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 10113 </td> 10114 10115 <td class="entry_tags"> 10116 <ul class="entry_tags"> 10117 <li><a href="#tag_V1">V1</a></li> 10118 <li><a href="#tag_RAW">RAW</a></li> 10119 </ul> 10120 </td> 10121 10122 </tr> 10123 <tr class="entries_header"> 10124 <th class="th_details" colspan="5">Details</th> 10125 </tr> 10126 <tr class="entry_cont"> 10127 <td class="entry_details" colspan="5"> 10128 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 10129 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 10130 are stuck at an arbitrary value or are oversensitive).<wbr/></p> 10131 </td> 10132 </tr> 10133 10134 10135 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10136 <!-- end of entry --> 10137 10138 10139 10140 <!-- end of kind --> 10141 </tbody> 10142 10143 <!-- end of section --> 10144 <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr> 10145 10146 10147 <tr><td colspan="6" class="kind">controls</td></tr> 10148 10149 <thead class="entries_header"> 10150 <tr> 10151 <th class="th_name">Property Name</th> 10152 <th class="th_type">Type</th> 10153 <th class="th_description">Description</th> 10154 <th class="th_units">Units</th> 10155 <th class="th_range">Range</th> 10156 <th class="th_tags">Tags</th> 10157 </tr> 10158 </thead> 10159 10160 <tbody> 10161 10162 10163 10164 10165 10166 10167 10168 10169 10170 10171 <tr class="entry" id="controls_android.jpeg.gpsLocation"> 10172 <td class="entry_name 10173 " rowspan="3"> 10174 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 10175 </td> 10176 <td class="entry_type"> 10177 <span class="entry_type_name">byte</span> 10178 10179 <span class="entry_type_visibility"> [public as location]</span> 10180 10181 <span class="entry_type_synthetic">[synthetic] </span> 10182 10183 <span class="entry_type_hwlevel">[legacy] </span> 10184 10185 10186 10187 10188 </td> <!-- entry_type --> 10189 10190 <td class="entry_description"> 10191 <p>A location object to use when generating image GPS metadata.<wbr/></p> 10192 </td> 10193 10194 <td class="entry_units"> 10195 </td> 10196 10197 <td class="entry_range"> 10198 </td> 10199 10200 <td class="entry_tags"> 10201 </td> 10202 10203 </tr> 10204 <tr class="entries_header"> 10205 <th class="th_details" colspan="5">Details</th> 10206 </tr> 10207 <tr class="entry_cont"> 10208 <td class="entry_details" colspan="5"> 10209 <p>Setting a location object in a request will include the GPS coordinates of the location 10210 into any JPEG images captured based on the request.<wbr/> These coordinates can then be 10211 viewed by anyone who receives the JPEG image.<wbr/></p> 10212 </td> 10213 </tr> 10214 10215 10216 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10217 <!-- end of entry --> 10218 10219 10220 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 10221 <td class="entry_name 10222 " rowspan="1"> 10223 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 10224 </td> 10225 <td class="entry_type"> 10226 <span class="entry_type_name">double</span> 10227 <span class="entry_type_container">x</span> 10228 10229 <span class="entry_type_array"> 10230 3 10231 </span> 10232 <span class="entry_type_visibility"> [hidden]</span> 10233 10234 10235 <span class="entry_type_hwlevel">[legacy] </span> 10236 10237 10238 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 10239 10240 10241 </td> <!-- entry_type --> 10242 10243 <td class="entry_description"> 10244 <p>GPS coordinates to include in output JPEG 10245 EXIF.<wbr/></p> 10246 </td> 10247 10248 <td class="entry_units"> 10249 </td> 10250 10251 <td class="entry_range"> 10252 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 10253 </td> 10254 10255 <td class="entry_tags"> 10256 <ul class="entry_tags"> 10257 <li><a href="#tag_BC">BC</a></li> 10258 </ul> 10259 </td> 10260 10261 </tr> 10262 10263 10264 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10265 <!-- end of entry --> 10266 10267 10268 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 10269 <td class="entry_name 10270 " rowspan="1"> 10271 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 10272 </td> 10273 <td class="entry_type"> 10274 <span class="entry_type_name">byte</span> 10275 10276 <span class="entry_type_visibility"> [hidden as string]</span> 10277 10278 10279 <span class="entry_type_hwlevel">[legacy] </span> 10280 10281 10282 10283 10284 </td> <!-- entry_type --> 10285 10286 <td class="entry_description"> 10287 <p>32 characters describing GPS algorithm to 10288 include in EXIF.<wbr/></p> 10289 </td> 10290 10291 <td class="entry_units"> 10292 UTF-8 null-terminated string 10293 </td> 10294 10295 <td class="entry_range"> 10296 </td> 10297 10298 <td class="entry_tags"> 10299 <ul class="entry_tags"> 10300 <li><a href="#tag_BC">BC</a></li> 10301 </ul> 10302 </td> 10303 10304 </tr> 10305 10306 10307 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10308 <!-- end of entry --> 10309 10310 10311 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 10312 <td class="entry_name 10313 " rowspan="1"> 10314 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 10315 </td> 10316 <td class="entry_type"> 10317 <span class="entry_type_name">int64</span> 10318 10319 <span class="entry_type_visibility"> [hidden]</span> 10320 10321 10322 <span class="entry_type_hwlevel">[legacy] </span> 10323 10324 10325 10326 10327 </td> <!-- entry_type --> 10328 10329 <td class="entry_description"> 10330 <p>Time GPS fix was made to include in 10331 EXIF.<wbr/></p> 10332 </td> 10333 10334 <td class="entry_units"> 10335 UTC in seconds since January 1,<wbr/> 1970 10336 </td> 10337 10338 <td class="entry_range"> 10339 </td> 10340 10341 <td class="entry_tags"> 10342 <ul class="entry_tags"> 10343 <li><a href="#tag_BC">BC</a></li> 10344 </ul> 10345 </td> 10346 10347 </tr> 10348 10349 10350 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10351 <!-- end of entry --> 10352 10353 10354 <tr class="entry" id="controls_android.jpeg.orientation"> 10355 <td class="entry_name 10356 " rowspan="3"> 10357 android.<wbr/>jpeg.<wbr/>orientation 10358 </td> 10359 <td class="entry_type"> 10360 <span class="entry_type_name">int32</span> 10361 10362 <span class="entry_type_visibility"> [public]</span> 10363 10364 10365 <span class="entry_type_hwlevel">[legacy] </span> 10366 10367 10368 10369 10370 </td> <!-- entry_type --> 10371 10372 <td class="entry_description"> 10373 <p>The orientation for a JPEG image.<wbr/></p> 10374 </td> 10375 10376 <td class="entry_units"> 10377 Degrees in multiples of 90 10378 </td> 10379 10380 <td class="entry_range"> 10381 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 10382 </td> 10383 10384 <td class="entry_tags"> 10385 <ul class="entry_tags"> 10386 <li><a href="#tag_BC">BC</a></li> 10387 </ul> 10388 </td> 10389 10390 </tr> 10391 <tr class="entries_header"> 10392 <th class="th_details" colspan="5">Details</th> 10393 </tr> 10394 <tr class="entry_cont"> 10395 <td class="entry_details" colspan="5"> 10396 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 10397 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 10398 upright.<wbr/></p> 10399 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 10400 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 10401 the thumbnail data will also be rotated.<wbr/></p> 10402 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 10403 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 10404 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 10405 sample code may be used:</p> 10406 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 10407 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 10408 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 10409 10410 //<wbr/> Round device orientation to a multiple of 90 10411 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 10412 10413 //<wbr/> Reverse device orientation for front-facing cameras 10414 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 10415 if (facingFront) deviceOrientation = -deviceOrientation; 10416 10417 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 10418 //<wbr/> the image upright relative to the device orientation 10419 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 10420 10421 return jpegOrientation; 10422 } 10423 </code></pre> 10424 </td> 10425 </tr> 10426 10427 10428 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10429 <!-- end of entry --> 10430 10431 10432 <tr class="entry" id="controls_android.jpeg.quality"> 10433 <td class="entry_name 10434 " rowspan="3"> 10435 android.<wbr/>jpeg.<wbr/>quality 10436 </td> 10437 <td class="entry_type"> 10438 <span class="entry_type_name">byte</span> 10439 10440 <span class="entry_type_visibility"> [public]</span> 10441 10442 10443 <span class="entry_type_hwlevel">[legacy] </span> 10444 10445 10446 10447 10448 </td> <!-- entry_type --> 10449 10450 <td class="entry_description"> 10451 <p>Compression quality of the final JPEG 10452 image.<wbr/></p> 10453 </td> 10454 10455 <td class="entry_units"> 10456 </td> 10457 10458 <td class="entry_range"> 10459 <p>1-100; larger is higher quality</p> 10460 </td> 10461 10462 <td class="entry_tags"> 10463 <ul class="entry_tags"> 10464 <li><a href="#tag_BC">BC</a></li> 10465 </ul> 10466 </td> 10467 10468 </tr> 10469 <tr class="entries_header"> 10470 <th class="th_details" colspan="5">Details</th> 10471 </tr> 10472 <tr class="entry_cont"> 10473 <td class="entry_details" colspan="5"> 10474 <p>85-95 is typical usage range.<wbr/></p> 10475 </td> 10476 </tr> 10477 10478 10479 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10480 <!-- end of entry --> 10481 10482 10483 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 10484 <td class="entry_name 10485 " rowspan="1"> 10486 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 10487 </td> 10488 <td class="entry_type"> 10489 <span class="entry_type_name">byte</span> 10490 10491 <span class="entry_type_visibility"> [public]</span> 10492 10493 10494 <span class="entry_type_hwlevel">[legacy] </span> 10495 10496 10497 10498 10499 </td> <!-- entry_type --> 10500 10501 <td class="entry_description"> 10502 <p>Compression quality of JPEG 10503 thumbnail.<wbr/></p> 10504 </td> 10505 10506 <td class="entry_units"> 10507 </td> 10508 10509 <td class="entry_range"> 10510 <p>1-100; larger is higher quality</p> 10511 </td> 10512 10513 <td class="entry_tags"> 10514 <ul class="entry_tags"> 10515 <li><a href="#tag_BC">BC</a></li> 10516 </ul> 10517 </td> 10518 10519 </tr> 10520 10521 10522 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10523 <!-- end of entry --> 10524 10525 10526 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 10527 <td class="entry_name 10528 " rowspan="5"> 10529 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 10530 </td> 10531 <td class="entry_type"> 10532 <span class="entry_type_name">int32</span> 10533 <span class="entry_type_container">x</span> 10534 10535 <span class="entry_type_array"> 10536 2 10537 </span> 10538 <span class="entry_type_visibility"> [public as size]</span> 10539 10540 10541 <span class="entry_type_hwlevel">[legacy] </span> 10542 10543 10544 10545 10546 </td> <!-- entry_type --> 10547 10548 <td class="entry_description"> 10549 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 10550 </td> 10551 10552 <td class="entry_units"> 10553 </td> 10554 10555 <td class="entry_range"> 10556 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 10557 </td> 10558 10559 <td class="entry_tags"> 10560 <ul class="entry_tags"> 10561 <li><a href="#tag_BC">BC</a></li> 10562 </ul> 10563 </td> 10564 10565 </tr> 10566 <tr class="entries_header"> 10567 <th class="th_details" colspan="5">Details</th> 10568 </tr> 10569 <tr class="entry_cont"> 10570 <td class="entry_details" colspan="5"> 10571 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 10572 but the captured JPEG will still be a valid image.<wbr/></p> 10573 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 10574 should have the same aspect ratio as the main JPEG output.<wbr/></p> 10575 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 10576 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 10577 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 10578 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 10579 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 10580 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 10581 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 10582 the camera device will handle thumbnail rotation in one of the following ways:</p> 10583 <ul> 10584 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 10585 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 10586 <li>Rotate the jpeg and thumbnail image data and not set 10587 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 10588 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 10589 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 10590 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 10591 size.<wbr/></li> 10592 </ul> 10593 </td> 10594 </tr> 10595 10596 <tr class="entries_header"> 10597 <th class="th_details" colspan="5">HAL Implementation Details</th> 10598 </tr> 10599 <tr class="entry_cont"> 10600 <td class="entry_details" colspan="5"> 10601 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 10602 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 10603 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 10604 thumbnail image cropping.<wbr/></p> 10605 </td> 10606 </tr> 10607 10608 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10609 <!-- end of entry --> 10610 10611 10612 10613 <!-- end of kind --> 10614 </tbody> 10615 <tr><td colspan="6" class="kind">static</td></tr> 10616 10617 <thead class="entries_header"> 10618 <tr> 10619 <th class="th_name">Property Name</th> 10620 <th class="th_type">Type</th> 10621 <th class="th_description">Description</th> 10622 <th class="th_units">Units</th> 10623 <th class="th_range">Range</th> 10624 <th class="th_tags">Tags</th> 10625 </tr> 10626 </thead> 10627 10628 <tbody> 10629 10630 10631 10632 10633 10634 10635 10636 10637 10638 10639 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 10640 <td class="entry_name 10641 " rowspan="3"> 10642 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 10643 </td> 10644 <td class="entry_type"> 10645 <span class="entry_type_name">int32</span> 10646 <span class="entry_type_container">x</span> 10647 10648 <span class="entry_type_array"> 10649 2 x n 10650 </span> 10651 <span class="entry_type_visibility"> [public as size]</span> 10652 10653 10654 <span class="entry_type_hwlevel">[legacy] </span> 10655 10656 10657 10658 10659 </td> <!-- entry_type --> 10660 10661 <td class="entry_description"> 10662 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this 10663 camera device.<wbr/></p> 10664 </td> 10665 10666 <td class="entry_units"> 10667 </td> 10668 10669 <td class="entry_range"> 10670 </td> 10671 10672 <td class="entry_tags"> 10673 <ul class="entry_tags"> 10674 <li><a href="#tag_BC">BC</a></li> 10675 </ul> 10676 </td> 10677 10678 </tr> 10679 <tr class="entries_header"> 10680 <th class="th_details" colspan="5">Details</th> 10681 </tr> 10682 <tr class="entry_cont"> 10683 <td class="entry_details" colspan="5"> 10684 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no 10685 thumbnail should be generated.<wbr/></p> 10686 <p>Below condiditions will be satisfied for this size list:</p> 10687 <ul> 10688 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 10689 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 10690 <li>The aspect ratio of the largest thumbnail size will be same as the 10691 aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 10692 The largest size is defined as the size that has the largest pixel area 10693 in a given size list.<wbr/></li> 10694 <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 10695 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 10696 and vice versa.<wbr/></li> 10697 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li> 10698 </ul> 10699 </td> 10700 </tr> 10701 10702 10703 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10704 <!-- end of entry --> 10705 10706 10707 <tr class="entry" id="static_android.jpeg.maxSize"> 10708 <td class="entry_name 10709 " rowspan="3"> 10710 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 10711 </td> 10712 <td class="entry_type"> 10713 <span class="entry_type_name">int32</span> 10714 10715 <span class="entry_type_visibility"> [system]</span> 10716 10717 10718 10719 10720 10721 10722 </td> <!-- entry_type --> 10723 10724 <td class="entry_description"> 10725 <p>Maximum size in bytes for the compressed 10726 JPEG buffer</p> 10727 </td> 10728 10729 <td class="entry_units"> 10730 </td> 10731 10732 <td class="entry_range"> 10733 <p>Must be large enough to fit any JPEG produced by 10734 the camera</p> 10735 </td> 10736 10737 <td class="entry_tags"> 10738 </td> 10739 10740 </tr> 10741 <tr class="entries_header"> 10742 <th class="th_details" colspan="5">Details</th> 10743 </tr> 10744 <tr class="entry_cont"> 10745 <td class="entry_details" colspan="5"> 10746 <p>This is used for sizing the gralloc buffers for 10747 JPEG</p> 10748 </td> 10749 </tr> 10750 10751 10752 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10753 <!-- end of entry --> 10754 10755 10756 10757 <!-- end of kind --> 10758 </tbody> 10759 <tr><td colspan="6" class="kind">dynamic</td></tr> 10760 10761 <thead class="entries_header"> 10762 <tr> 10763 <th class="th_name">Property Name</th> 10764 <th class="th_type">Type</th> 10765 <th class="th_description">Description</th> 10766 <th class="th_units">Units</th> 10767 <th class="th_range">Range</th> 10768 <th class="th_tags">Tags</th> 10769 </tr> 10770 </thead> 10771 10772 <tbody> 10773 10774 10775 10776 10777 10778 10779 10780 10781 10782 10783 <tr class="entry" id="dynamic_android.jpeg.gpsLocation"> 10784 <td class="entry_name 10785 " rowspan="3"> 10786 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 10787 </td> 10788 <td class="entry_type"> 10789 <span class="entry_type_name">byte</span> 10790 10791 <span class="entry_type_visibility"> [public as location]</span> 10792 10793 <span class="entry_type_synthetic">[synthetic] </span> 10794 10795 <span class="entry_type_hwlevel">[legacy] </span> 10796 10797 10798 10799 10800 </td> <!-- entry_type --> 10801 10802 <td class="entry_description"> 10803 <p>A location object to use when generating image GPS metadata.<wbr/></p> 10804 </td> 10805 10806 <td class="entry_units"> 10807 </td> 10808 10809 <td class="entry_range"> 10810 </td> 10811 10812 <td class="entry_tags"> 10813 </td> 10814 10815 </tr> 10816 <tr class="entries_header"> 10817 <th class="th_details" colspan="5">Details</th> 10818 </tr> 10819 <tr class="entry_cont"> 10820 <td class="entry_details" colspan="5"> 10821 <p>Setting a location object in a request will include the GPS coordinates of the location 10822 into any JPEG images captured based on the request.<wbr/> These coordinates can then be 10823 viewed by anyone who receives the JPEG image.<wbr/></p> 10824 </td> 10825 </tr> 10826 10827 10828 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10829 <!-- end of entry --> 10830 10831 10832 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 10833 <td class="entry_name 10834 " rowspan="1"> 10835 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 10836 </td> 10837 <td class="entry_type"> 10838 <span class="entry_type_name">double</span> 10839 <span class="entry_type_container">x</span> 10840 10841 <span class="entry_type_array"> 10842 3 10843 </span> 10844 <span class="entry_type_visibility"> [hidden]</span> 10845 10846 10847 <span class="entry_type_hwlevel">[legacy] </span> 10848 10849 10850 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 10851 10852 10853 </td> <!-- entry_type --> 10854 10855 <td class="entry_description"> 10856 <p>GPS coordinates to include in output JPEG 10857 EXIF.<wbr/></p> 10858 </td> 10859 10860 <td class="entry_units"> 10861 </td> 10862 10863 <td class="entry_range"> 10864 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 10865 </td> 10866 10867 <td class="entry_tags"> 10868 <ul class="entry_tags"> 10869 <li><a href="#tag_BC">BC</a></li> 10870 </ul> 10871 </td> 10872 10873 </tr> 10874 10875 10876 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10877 <!-- end of entry --> 10878 10879 10880 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 10881 <td class="entry_name 10882 " rowspan="1"> 10883 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 10884 </td> 10885 <td class="entry_type"> 10886 <span class="entry_type_name">byte</span> 10887 10888 <span class="entry_type_visibility"> [hidden as string]</span> 10889 10890 10891 <span class="entry_type_hwlevel">[legacy] </span> 10892 10893 10894 10895 10896 </td> <!-- entry_type --> 10897 10898 <td class="entry_description"> 10899 <p>32 characters describing GPS algorithm to 10900 include in EXIF.<wbr/></p> 10901 </td> 10902 10903 <td class="entry_units"> 10904 UTF-8 null-terminated string 10905 </td> 10906 10907 <td class="entry_range"> 10908 </td> 10909 10910 <td class="entry_tags"> 10911 <ul class="entry_tags"> 10912 <li><a href="#tag_BC">BC</a></li> 10913 </ul> 10914 </td> 10915 10916 </tr> 10917 10918 10919 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10920 <!-- end of entry --> 10921 10922 10923 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 10924 <td class="entry_name 10925 " rowspan="1"> 10926 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 10927 </td> 10928 <td class="entry_type"> 10929 <span class="entry_type_name">int64</span> 10930 10931 <span class="entry_type_visibility"> [hidden]</span> 10932 10933 10934 <span class="entry_type_hwlevel">[legacy] </span> 10935 10936 10937 10938 10939 </td> <!-- entry_type --> 10940 10941 <td class="entry_description"> 10942 <p>Time GPS fix was made to include in 10943 EXIF.<wbr/></p> 10944 </td> 10945 10946 <td class="entry_units"> 10947 UTC in seconds since January 1,<wbr/> 1970 10948 </td> 10949 10950 <td class="entry_range"> 10951 </td> 10952 10953 <td class="entry_tags"> 10954 <ul class="entry_tags"> 10955 <li><a href="#tag_BC">BC</a></li> 10956 </ul> 10957 </td> 10958 10959 </tr> 10960 10961 10962 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10963 <!-- end of entry --> 10964 10965 10966 <tr class="entry" id="dynamic_android.jpeg.orientation"> 10967 <td class="entry_name 10968 " rowspan="3"> 10969 android.<wbr/>jpeg.<wbr/>orientation 10970 </td> 10971 <td class="entry_type"> 10972 <span class="entry_type_name">int32</span> 10973 10974 <span class="entry_type_visibility"> [public]</span> 10975 10976 10977 <span class="entry_type_hwlevel">[legacy] </span> 10978 10979 10980 10981 10982 </td> <!-- entry_type --> 10983 10984 <td class="entry_description"> 10985 <p>The orientation for a JPEG image.<wbr/></p> 10986 </td> 10987 10988 <td class="entry_units"> 10989 Degrees in multiples of 90 10990 </td> 10991 10992 <td class="entry_range"> 10993 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 10994 </td> 10995 10996 <td class="entry_tags"> 10997 <ul class="entry_tags"> 10998 <li><a href="#tag_BC">BC</a></li> 10999 </ul> 11000 </td> 11001 11002 </tr> 11003 <tr class="entries_header"> 11004 <th class="th_details" colspan="5">Details</th> 11005 </tr> 11006 <tr class="entry_cont"> 11007 <td class="entry_details" colspan="5"> 11008 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 11009 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 11010 upright.<wbr/></p> 11011 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 11012 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 11013 the thumbnail data will also be rotated.<wbr/></p> 11014 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 11015 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 11016 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 11017 sample code may be used:</p> 11018 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 11019 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 11020 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 11021 11022 //<wbr/> Round device orientation to a multiple of 90 11023 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 11024 11025 //<wbr/> Reverse device orientation for front-facing cameras 11026 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 11027 if (facingFront) deviceOrientation = -deviceOrientation; 11028 11029 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 11030 //<wbr/> the image upright relative to the device orientation 11031 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 11032 11033 return jpegOrientation; 11034 } 11035 </code></pre> 11036 </td> 11037 </tr> 11038 11039 11040 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11041 <!-- end of entry --> 11042 11043 11044 <tr class="entry" id="dynamic_android.jpeg.quality"> 11045 <td class="entry_name 11046 " rowspan="3"> 11047 android.<wbr/>jpeg.<wbr/>quality 11048 </td> 11049 <td class="entry_type"> 11050 <span class="entry_type_name">byte</span> 11051 11052 <span class="entry_type_visibility"> [public]</span> 11053 11054 11055 <span class="entry_type_hwlevel">[legacy] </span> 11056 11057 11058 11059 11060 </td> <!-- entry_type --> 11061 11062 <td class="entry_description"> 11063 <p>Compression quality of the final JPEG 11064 image.<wbr/></p> 11065 </td> 11066 11067 <td class="entry_units"> 11068 </td> 11069 11070 <td class="entry_range"> 11071 <p>1-100; larger is higher quality</p> 11072 </td> 11073 11074 <td class="entry_tags"> 11075 <ul class="entry_tags"> 11076 <li><a href="#tag_BC">BC</a></li> 11077 </ul> 11078 </td> 11079 11080 </tr> 11081 <tr class="entries_header"> 11082 <th class="th_details" colspan="5">Details</th> 11083 </tr> 11084 <tr class="entry_cont"> 11085 <td class="entry_details" colspan="5"> 11086 <p>85-95 is typical usage range.<wbr/></p> 11087 </td> 11088 </tr> 11089 11090 11091 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11092 <!-- end of entry --> 11093 11094 11095 <tr class="entry" id="dynamic_android.jpeg.size"> 11096 <td class="entry_name 11097 " rowspan="3"> 11098 android.<wbr/>jpeg.<wbr/>size 11099 </td> 11100 <td class="entry_type"> 11101 <span class="entry_type_name">int32</span> 11102 11103 <span class="entry_type_visibility"> [system]</span> 11104 11105 11106 11107 11108 11109 11110 </td> <!-- entry_type --> 11111 11112 <td class="entry_description"> 11113 <p>The size of the compressed JPEG image,<wbr/> in 11114 bytes</p> 11115 </td> 11116 11117 <td class="entry_units"> 11118 </td> 11119 11120 <td class="entry_range"> 11121 <p>>= 0</p> 11122 </td> 11123 11124 <td class="entry_tags"> 11125 <ul class="entry_tags"> 11126 <li><a href="#tag_FUTURE">FUTURE</a></li> 11127 </ul> 11128 </td> 11129 11130 </tr> 11131 <tr class="entries_header"> 11132 <th class="th_details" colspan="5">Details</th> 11133 </tr> 11134 <tr class="entry_cont"> 11135 <td class="entry_details" colspan="5"> 11136 <p>If no JPEG output is produced for the request,<wbr/> 11137 this must be 0.<wbr/></p> 11138 <p>Otherwise,<wbr/> this describes the real size of the compressed 11139 JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 11140 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 11141 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 11142 the JPEG stream will be 1000000 bytes,<wbr/> of which the first 11143 500000 make up the real data.<wbr/></p> 11144 </td> 11145 </tr> 11146 11147 11148 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11149 <!-- end of entry --> 11150 11151 11152 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 11153 <td class="entry_name 11154 " rowspan="1"> 11155 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 11156 </td> 11157 <td class="entry_type"> 11158 <span class="entry_type_name">byte</span> 11159 11160 <span class="entry_type_visibility"> [public]</span> 11161 11162 11163 <span class="entry_type_hwlevel">[legacy] </span> 11164 11165 11166 11167 11168 </td> <!-- entry_type --> 11169 11170 <td class="entry_description"> 11171 <p>Compression quality of JPEG 11172 thumbnail.<wbr/></p> 11173 </td> 11174 11175 <td class="entry_units"> 11176 </td> 11177 11178 <td class="entry_range"> 11179 <p>1-100; larger is higher quality</p> 11180 </td> 11181 11182 <td class="entry_tags"> 11183 <ul class="entry_tags"> 11184 <li><a href="#tag_BC">BC</a></li> 11185 </ul> 11186 </td> 11187 11188 </tr> 11189 11190 11191 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11192 <!-- end of entry --> 11193 11194 11195 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 11196 <td class="entry_name 11197 " rowspan="5"> 11198 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 11199 </td> 11200 <td class="entry_type"> 11201 <span class="entry_type_name">int32</span> 11202 <span class="entry_type_container">x</span> 11203 11204 <span class="entry_type_array"> 11205 2 11206 </span> 11207 <span class="entry_type_visibility"> [public as size]</span> 11208 11209 11210 <span class="entry_type_hwlevel">[legacy] </span> 11211 11212 11213 11214 11215 </td> <!-- entry_type --> 11216 11217 <td class="entry_description"> 11218 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 11219 </td> 11220 11221 <td class="entry_units"> 11222 </td> 11223 11224 <td class="entry_range"> 11225 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 11226 </td> 11227 11228 <td class="entry_tags"> 11229 <ul class="entry_tags"> 11230 <li><a href="#tag_BC">BC</a></li> 11231 </ul> 11232 </td> 11233 11234 </tr> 11235 <tr class="entries_header"> 11236 <th class="th_details" colspan="5">Details</th> 11237 </tr> 11238 <tr class="entry_cont"> 11239 <td class="entry_details" colspan="5"> 11240 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 11241 but the captured JPEG will still be a valid image.<wbr/></p> 11242 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 11243 should have the same aspect ratio as the main JPEG output.<wbr/></p> 11244 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 11245 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 11246 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 11247 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 11248 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 11249 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 11250 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 11251 the camera device will handle thumbnail rotation in one of the following ways:</p> 11252 <ul> 11253 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 11254 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 11255 <li>Rotate the jpeg and thumbnail image data and not set 11256 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 11257 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 11258 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 11259 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 11260 size.<wbr/></li> 11261 </ul> 11262 </td> 11263 </tr> 11264 11265 <tr class="entries_header"> 11266 <th class="th_details" colspan="5">HAL Implementation Details</th> 11267 </tr> 11268 <tr class="entry_cont"> 11269 <td class="entry_details" colspan="5"> 11270 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 11271 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 11272 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 11273 thumbnail image cropping.<wbr/></p> 11274 </td> 11275 </tr> 11276 11277 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11278 <!-- end of entry --> 11279 11280 11281 11282 <!-- end of kind --> 11283 </tbody> 11284 11285 <!-- end of section --> 11286 <tr><td colspan="6" id="section_lens" class="section">lens</td></tr> 11287 11288 11289 <tr><td colspan="6" class="kind">controls</td></tr> 11290 11291 <thead class="entries_header"> 11292 <tr> 11293 <th class="th_name">Property Name</th> 11294 <th class="th_type">Type</th> 11295 <th class="th_description">Description</th> 11296 <th class="th_units">Units</th> 11297 <th class="th_range">Range</th> 11298 <th class="th_tags">Tags</th> 11299 </tr> 11300 </thead> 11301 11302 <tbody> 11303 11304 11305 11306 11307 11308 11309 11310 11311 11312 11313 <tr class="entry" id="controls_android.lens.aperture"> 11314 <td class="entry_name 11315 " rowspan="3"> 11316 android.<wbr/>lens.<wbr/>aperture 11317 </td> 11318 <td class="entry_type"> 11319 <span class="entry_type_name">float</span> 11320 11321 <span class="entry_type_visibility"> [public]</span> 11322 11323 11324 <span class="entry_type_hwlevel">[full] </span> 11325 11326 11327 11328 11329 </td> <!-- entry_type --> 11330 11331 <td class="entry_description"> 11332 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 11333 effective aperture diameter.<wbr/></p> 11334 </td> 11335 11336 <td class="entry_units"> 11337 The f-number (f/<wbr/>N) 11338 </td> 11339 11340 <td class="entry_range"> 11341 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 11342 </td> 11343 11344 <td class="entry_tags"> 11345 <ul class="entry_tags"> 11346 <li><a href="#tag_V1">V1</a></li> 11347 </ul> 11348 </td> 11349 11350 </tr> 11351 <tr class="entries_header"> 11352 <th class="th_details" colspan="5">Details</th> 11353 </tr> 11354 <tr class="entry_cont"> 11355 <td class="entry_details" colspan="5"> 11356 <p>Setting this value is only supported on the camera devices that have a variable 11357 aperture lens.<wbr/></p> 11358 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 11359 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 11360 <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> 11361 to achieve manual exposure control.<wbr/></p> 11362 <p>The requested aperture value may take several frames to reach the 11363 requested value; the camera device will report the current (intermediate) 11364 aperture size in capture result metadata while the aperture is changing.<wbr/> 11365 While the aperture is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11366 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 11367 the ON modes,<wbr/> this will be overridden by the camera device 11368 auto-exposure algorithm,<wbr/> the overridden values are then provided 11369 back to the user in the corresponding result.<wbr/></p> 11370 </td> 11371 </tr> 11372 11373 11374 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11375 <!-- end of entry --> 11376 11377 11378 <tr class="entry" id="controls_android.lens.filterDensity"> 11379 <td class="entry_name 11380 " rowspan="3"> 11381 android.<wbr/>lens.<wbr/>filter<wbr/>Density 11382 </td> 11383 <td class="entry_type"> 11384 <span class="entry_type_name">float</span> 11385 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>The desired setting for the lens neutral density filter(s).<wbr/></p> 11398 </td> 11399 11400 <td class="entry_units"> 11401 Exposure Value (EV) 11402 </td> 11403 11404 <td class="entry_range"> 11405 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 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>This control will not be supported on most camera devices.<wbr/></p> 11421 <p>Lens filters are typically used to lower the amount of light the 11422 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 11423 step is the standard logarithmic representation,<wbr/> which are 11424 non-negative,<wbr/> and inversely proportional to the amount of light 11425 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 11426 in no reduction of the incoming light,<wbr/> and setting this to 2 would 11427 mean that the filter is set to reduce incoming light by two stops 11428 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 11429 <p>It may take several frames before the lens filter density changes 11430 to the requested value.<wbr/> While the filter density is still changing,<wbr/> 11431 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11432 </td> 11433 </tr> 11434 11435 11436 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11437 <!-- end of entry --> 11438 11439 11440 <tr class="entry" id="controls_android.lens.focalLength"> 11441 <td class="entry_name 11442 " rowspan="3"> 11443 android.<wbr/>lens.<wbr/>focal<wbr/>Length 11444 </td> 11445 <td class="entry_type"> 11446 <span class="entry_type_name">float</span> 11447 11448 <span class="entry_type_visibility"> [public]</span> 11449 11450 11451 <span class="entry_type_hwlevel">[legacy] </span> 11452 11453 11454 11455 11456 </td> <!-- entry_type --> 11457 11458 <td class="entry_description"> 11459 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 11460 </td> 11461 11462 <td class="entry_units"> 11463 Millimeters 11464 </td> 11465 11466 <td class="entry_range"> 11467 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 11468 </td> 11469 11470 <td class="entry_tags"> 11471 <ul class="entry_tags"> 11472 <li><a href="#tag_V1">V1</a></li> 11473 </ul> 11474 </td> 11475 11476 </tr> 11477 <tr class="entries_header"> 11478 <th class="th_details" colspan="5">Details</th> 11479 </tr> 11480 <tr class="entry_cont"> 11481 <td class="entry_details" colspan="5"> 11482 <p>This setting controls the physical focal length of the camera 11483 device's lens.<wbr/> Changing the focal length changes the field of 11484 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 11485 <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 11486 setting won't be applied instantaneously,<wbr/> and it may take several 11487 frames before the lens can change to the requested focal length.<wbr/> 11488 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 11489 be set to MOVING.<wbr/></p> 11490 <p>Optical zoom will not be supported on most devices.<wbr/></p> 11491 </td> 11492 </tr> 11493 11494 11495 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11496 <!-- end of entry --> 11497 11498 11499 <tr class="entry" id="controls_android.lens.focusDistance"> 11500 <td class="entry_name 11501 " rowspan="3"> 11502 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 11503 </td> 11504 <td class="entry_type"> 11505 <span class="entry_type_name">float</span> 11506 11507 <span class="entry_type_visibility"> [public]</span> 11508 11509 11510 <span class="entry_type_hwlevel">[full] </span> 11511 11512 11513 11514 11515 </td> <!-- entry_type --> 11516 11517 <td class="entry_description"> 11518 <p>Desired distance to plane of sharpest focus,<wbr/> 11519 measured from frontmost surface of the lens.<wbr/></p> 11520 </td> 11521 11522 <td class="entry_units"> 11523 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11524 </td> 11525 11526 <td class="entry_range"> 11527 <p>>= 0</p> 11528 </td> 11529 11530 <td class="entry_tags"> 11531 <ul class="entry_tags"> 11532 <li><a href="#tag_BC">BC</a></li> 11533 <li><a href="#tag_V1">V1</a></li> 11534 </ul> 11535 </td> 11536 11537 </tr> 11538 <tr class="entries_header"> 11539 <th class="th_details" colspan="5">Details</th> 11540 </tr> 11541 <tr class="entry_cont"> 11542 <td class="entry_details" colspan="5"> 11543 <p>This control can be used for setting manual focus,<wbr/> on devices that support 11544 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see 11545 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p> 11546 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to 11547 <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> 11548 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 11549 instantaneously,<wbr/> and it may take several frames before the lens 11550 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 11551 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11552 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code> 11553 for infinity focus.<wbr/></p> 11554 </td> 11555 </tr> 11556 11557 11558 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11559 <!-- end of entry --> 11560 11561 11562 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 11563 <td class="entry_name 11564 " rowspan="3"> 11565 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 11566 </td> 11567 <td class="entry_type"> 11568 <span class="entry_type_name entry_type_name_enum">byte</span> 11569 11570 <span class="entry_type_visibility"> [public]</span> 11571 11572 11573 <span class="entry_type_hwlevel">[limited] </span> 11574 11575 11576 11577 <ul class="entry_type_enum"> 11578 <li> 11579 <span class="entry_type_enum_name">OFF</span> 11580 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 11581 </li> 11582 <li> 11583 <span class="entry_type_enum_name">ON</span> 11584 <span class="entry_type_enum_optional">[optional]</span> 11585 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 11586 </li> 11587 </ul> 11588 11589 </td> <!-- entry_type --> 11590 11591 <td class="entry_description"> 11592 <p>Sets whether the camera device uses optical image stabilization (OIS) 11593 when capturing images.<wbr/></p> 11594 </td> 11595 11596 <td class="entry_units"> 11597 </td> 11598 11599 <td class="entry_range"> 11600 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 11601 </td> 11602 11603 <td class="entry_tags"> 11604 <ul class="entry_tags"> 11605 <li><a href="#tag_V1">V1</a></li> 11606 </ul> 11607 </td> 11608 11609 </tr> 11610 <tr class="entries_header"> 11611 <th class="th_details" colspan="5">Details</th> 11612 </tr> 11613 <tr class="entry_cont"> 11614 <td class="entry_details" colspan="5"> 11615 <p>OIS is used to compensate for motion blur due to small 11616 movements of the camera during capture.<wbr/> Unlike digital image 11617 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 11618 makes use of mechanical elements to stabilize the camera 11619 sensor,<wbr/> and thus allows for longer exposure times before 11620 camera shake becomes apparent.<wbr/></p> 11621 <p>Switching between different optical stabilization modes may take several 11622 frames to initialize,<wbr/> the camera device will report the current mode in 11623 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 11624 optical stabilization modes in the first several capture results may still 11625 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 11626 <p>If a camera device supports both OIS and digital image stabilization 11627 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 11628 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 11629 <p>Not all devices will support OIS; see 11630 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 11631 available controls.<wbr/></p> 11632 </td> 11633 </tr> 11634 11635 11636 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11637 <!-- end of entry --> 11638 11639 11640 11641 <!-- end of kind --> 11642 </tbody> 11643 <tr><td colspan="6" class="kind">static</td></tr> 11644 11645 <thead class="entries_header"> 11646 <tr> 11647 <th class="th_name">Property Name</th> 11648 <th class="th_type">Type</th> 11649 <th class="th_description">Description</th> 11650 <th class="th_units">Units</th> 11651 <th class="th_range">Range</th> 11652 <th class="th_tags">Tags</th> 11653 </tr> 11654 </thead> 11655 11656 <tbody> 11657 11658 11659 11660 11661 11662 11663 11664 11665 11666 11667 11668 11669 <tr class="entry" id="static_android.lens.info.availableApertures"> 11670 <td class="entry_name 11671 " rowspan="3"> 11672 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 11673 </td> 11674 <td class="entry_type"> 11675 <span class="entry_type_name">float</span> 11676 <span class="entry_type_container">x</span> 11677 11678 <span class="entry_type_array"> 11679 n 11680 </span> 11681 <span class="entry_type_visibility"> [public]</span> 11682 11683 11684 <span class="entry_type_hwlevel">[full] </span> 11685 11686 11687 11688 11689 </td> <!-- entry_type --> 11690 11691 <td class="entry_description"> 11692 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are 11693 supported by this camera device.<wbr/></p> 11694 </td> 11695 11696 <td class="entry_units"> 11697 The aperture f-number 11698 </td> 11699 11700 <td class="entry_range"> 11701 </td> 11702 11703 <td class="entry_tags"> 11704 <ul class="entry_tags"> 11705 <li><a href="#tag_V1">V1</a></li> 11706 </ul> 11707 </td> 11708 11709 </tr> 11710 <tr class="entries_header"> 11711 <th class="th_details" colspan="5">Details</th> 11712 </tr> 11713 <tr class="entry_cont"> 11714 <td class="entry_details" colspan="5"> 11715 <p>If the camera device doesn't support a variable lens aperture,<wbr/> 11716 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p> 11717 <p>If the camera device supports a variable aperture,<wbr/> the aperture values 11718 in this list will be sorted in ascending order.<wbr/></p> 11719 </td> 11720 </tr> 11721 11722 11723 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11724 <!-- end of entry --> 11725 11726 11727 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 11728 <td class="entry_name 11729 " rowspan="3"> 11730 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 11731 </td> 11732 <td class="entry_type"> 11733 <span class="entry_type_name">float</span> 11734 <span class="entry_type_container">x</span> 11735 11736 <span class="entry_type_array"> 11737 n 11738 </span> 11739 <span class="entry_type_visibility"> [public]</span> 11740 11741 11742 <span class="entry_type_hwlevel">[full] </span> 11743 11744 11745 11746 11747 </td> <!-- entry_type --> 11748 11749 <td class="entry_description"> 11750 <p>List of neutral density filter values for 11751 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p> 11752 </td> 11753 11754 <td class="entry_units"> 11755 Exposure value (EV) 11756 </td> 11757 11758 <td class="entry_range"> 11759 <p>Values are >= 0</p> 11760 </td> 11761 11762 <td class="entry_tags"> 11763 <ul class="entry_tags"> 11764 <li><a href="#tag_V1">V1</a></li> 11765 </ul> 11766 </td> 11767 11768 </tr> 11769 <tr class="entries_header"> 11770 <th class="th_details" colspan="5">Details</th> 11771 </tr> 11772 <tr class="entry_cont"> 11773 <td class="entry_details" colspan="5"> 11774 <p>If a neutral density filter is not supported by this camera device,<wbr/> 11775 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every 11776 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p> 11777 </td> 11778 </tr> 11779 11780 11781 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11782 <!-- end of entry --> 11783 11784 11785 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 11786 <td class="entry_name 11787 " rowspan="3"> 11788 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 11789 </td> 11790 <td class="entry_type"> 11791 <span class="entry_type_name">float</span> 11792 <span class="entry_type_container">x</span> 11793 11794 <span class="entry_type_array"> 11795 n 11796 </span> 11797 <span class="entry_type_visibility"> [public]</span> 11798 11799 11800 <span class="entry_type_hwlevel">[legacy] </span> 11801 11802 11803 <div class="entry_type_notes">The list of available focal lengths</div> 11804 11805 11806 </td> <!-- entry_type --> 11807 11808 <td class="entry_description"> 11809 <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 11810 device.<wbr/></p> 11811 </td> 11812 11813 <td class="entry_units"> 11814 Millimeters 11815 </td> 11816 11817 <td class="entry_range"> 11818 <p>Values are > 0</p> 11819 </td> 11820 11821 <td class="entry_tags"> 11822 <ul class="entry_tags"> 11823 <li><a href="#tag_BC">BC</a></li> 11824 <li><a href="#tag_V1">V1</a></li> 11825 </ul> 11826 </td> 11827 11828 </tr> 11829 <tr class="entries_header"> 11830 <th class="th_details" colspan="5">Details</th> 11831 </tr> 11832 <tr class="entry_cont"> 11833 <td class="entry_details" colspan="5"> 11834 <p>If optical zoom is not supported,<wbr/> this list will only contain 11835 a single value corresponding to the fixed focal length of the 11836 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported 11837 by the camera device,<wbr/> in ascending order.<wbr/></p> 11838 </td> 11839 </tr> 11840 11841 11842 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11843 <!-- end of entry --> 11844 11845 11846 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> 11847 <td class="entry_name 11848 " rowspan="3"> 11849 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 11850 </td> 11851 <td class="entry_type"> 11852 <span class="entry_type_name">byte</span> 11853 <span class="entry_type_container">x</span> 11854 11855 <span class="entry_type_array"> 11856 n 11857 </span> 11858 <span class="entry_type_visibility"> [public as enumList]</span> 11859 11860 11861 <span class="entry_type_hwlevel">[limited] </span> 11862 11863 11864 <div class="entry_type_notes">list of enums</div> 11865 11866 11867 </td> <!-- entry_type --> 11868 11869 <td class="entry_description"> 11870 <p>List of optical image stabilization (OIS) modes for 11871 <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> 11872 </td> 11873 11874 <td class="entry_units"> 11875 </td> 11876 11877 <td class="entry_range"> 11878 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p> 11879 </td> 11880 11881 <td class="entry_tags"> 11882 <ul class="entry_tags"> 11883 <li><a href="#tag_V1">V1</a></li> 11884 </ul> 11885 </td> 11886 11887 </tr> 11888 <tr class="entries_header"> 11889 <th class="th_details" colspan="5">Details</th> 11890 </tr> 11891 <tr class="entry_cont"> 11892 <td class="entry_details" colspan="5"> 11893 <p>If OIS is not supported by a given camera device,<wbr/> this list will 11894 contain only OFF.<wbr/></p> 11895 </td> 11896 </tr> 11897 11898 11899 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11900 <!-- end of entry --> 11901 11902 11903 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 11904 <td class="entry_name 11905 " rowspan="3"> 11906 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 11907 </td> 11908 <td class="entry_type"> 11909 <span class="entry_type_name">float</span> 11910 11911 <span class="entry_type_visibility"> [public]</span> 11912 11913 11914 <span class="entry_type_hwlevel">[limited] </span> 11915 11916 11917 11918 11919 </td> <!-- entry_type --> 11920 11921 <td class="entry_description"> 11922 <p>Hyperfocal distance for this lens.<wbr/></p> 11923 </td> 11924 11925 <td class="entry_units"> 11926 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11927 </td> 11928 11929 <td class="entry_range"> 11930 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is 11931 within <code>(0.<wbr/>0f,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code></p> 11932 </td> 11933 11934 <td class="entry_tags"> 11935 </td> 11936 11937 </tr> 11938 <tr class="entries_header"> 11939 <th class="th_details" colspan="5">Details</th> 11940 </tr> 11941 <tr class="entry_cont"> 11942 <td class="entry_details" colspan="5"> 11943 <p>If the lens is not fixed focus,<wbr/> the camera device will report this 11944 field when <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a> is APPROXIMATE or CALIBRATED.<wbr/></p> 11945 </td> 11946 </tr> 11947 11948 11949 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11950 <!-- end of entry --> 11951 11952 11953 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 11954 <td class="entry_name 11955 " rowspan="5"> 11956 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 11957 </td> 11958 <td class="entry_type"> 11959 <span class="entry_type_name">float</span> 11960 11961 <span class="entry_type_visibility"> [public]</span> 11962 11963 11964 <span class="entry_type_hwlevel">[limited] </span> 11965 11966 11967 11968 11969 </td> <!-- entry_type --> 11970 11971 <td class="entry_description"> 11972 <p>Shortest distance from frontmost surface 11973 of the lens that can be brought into sharp focus.<wbr/></p> 11974 </td> 11975 11976 <td class="entry_units"> 11977 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11978 </td> 11979 11980 <td class="entry_range"> 11981 <p>>= 0</p> 11982 </td> 11983 11984 <td class="entry_tags"> 11985 <ul class="entry_tags"> 11986 <li><a href="#tag_V1">V1</a></li> 11987 </ul> 11988 </td> 11989 11990 </tr> 11991 <tr class="entries_header"> 11992 <th class="th_details" colspan="5">Details</th> 11993 </tr> 11994 <tr class="entry_cont"> 11995 <td class="entry_details" colspan="5"> 11996 <p>If the lens is fixed-focus,<wbr/> this will be 11997 0.<wbr/></p> 11998 </td> 11999 </tr> 12000 12001 <tr class="entries_header"> 12002 <th class="th_details" colspan="5">HAL Implementation Details</th> 12003 </tr> 12004 <tr class="entry_cont"> 12005 <td class="entry_details" colspan="5"> 12006 <p>Mandatory for FULL devices; LIMITED devices 12007 must always set this value to 0 for fixed-focus; and may omit 12008 the minimum focus distance otherwise.<wbr/></p> 12009 <p>This field is also mandatory for all devices advertising 12010 the MANUAL_<wbr/>SENSOR capability.<wbr/></p> 12011 </td> 12012 </tr> 12013 12014 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12015 <!-- end of entry --> 12016 12017 12018 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 12019 <td class="entry_name 12020 " rowspan="3"> 12021 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 12022 </td> 12023 <td class="entry_type"> 12024 <span class="entry_type_name">int32</span> 12025 <span class="entry_type_container">x</span> 12026 12027 <span class="entry_type_array"> 12028 2 12029 </span> 12030 <span class="entry_type_visibility"> [hidden as size]</span> 12031 12032 12033 <span class="entry_type_hwlevel">[full] </span> 12034 12035 12036 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> 12037 12038 12039 </td> <!-- entry_type --> 12040 12041 <td class="entry_description"> 12042 <p>Dimensions of lens shading map.<wbr/></p> 12043 </td> 12044 12045 <td class="entry_units"> 12046 </td> 12047 12048 <td class="entry_range"> 12049 <p>Both values >= 1</p> 12050 </td> 12051 12052 <td class="entry_tags"> 12053 <ul class="entry_tags"> 12054 <li><a href="#tag_V1">V1</a></li> 12055 </ul> 12056 </td> 12057 12058 </tr> 12059 <tr class="entries_header"> 12060 <th class="th_details" colspan="5">Details</th> 12061 </tr> 12062 <tr class="entry_cont"> 12063 <td class="entry_details" colspan="5"> 12064 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 12065 must be smaller than 64x64.<wbr/></p> 12066 </td> 12067 </tr> 12068 12069 12070 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12071 <!-- end of entry --> 12072 12073 12074 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 12075 <td class="entry_name 12076 " rowspan="5"> 12077 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 12078 </td> 12079 <td class="entry_type"> 12080 <span class="entry_type_name entry_type_name_enum">byte</span> 12081 12082 <span class="entry_type_visibility"> [public]</span> 12083 12084 12085 <span class="entry_type_hwlevel">[limited] </span> 12086 12087 12088 12089 <ul class="entry_type_enum"> 12090 <li> 12091 <span class="entry_type_enum_name">UNCALIBRATED</span> 12092 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 12093 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p> 12094 <p>Setting the lens to the same focus distance on separate occasions may 12095 result in a different real focus distance,<wbr/> depending on factors such 12096 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 12097 and the device temperature.<wbr/> The focus distance value will still be 12098 in the range of <code>[0,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code>,<wbr/> where 0 12099 represents the farthest focus.<wbr/></p></span> 12100 </li> 12101 <li> 12102 <span class="entry_type_enum_name">APPROXIMATE</span> 12103 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p> 12104 <p>However,<wbr/> setting the lens to the same focus distance 12105 on separate occasions may result in a different real 12106 focus distance,<wbr/> depending on factors such as the 12107 orientation of the device,<wbr/> the age of the focusing 12108 mechanism,<wbr/> and the device temperature.<wbr/></p></span> 12109 </li> 12110 <li> 12111 <span class="entry_type_enum_name">CALIBRATED</span> 12112 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and 12113 is calibrated.<wbr/></p> 12114 <p>The lens mechanism is calibrated so that setting the 12115 same focus distance is repeatable on multiple 12116 occasions with good accuracy,<wbr/> and the focus distance 12117 corresponds to the real physical distance to the plane 12118 of best focus.<wbr/></p></span> 12119 </li> 12120 </ul> 12121 12122 </td> <!-- entry_type --> 12123 12124 <td class="entry_description"> 12125 <p>The lens focus distance calibration quality.<wbr/></p> 12126 </td> 12127 12128 <td class="entry_units"> 12129 </td> 12130 12131 <td class="entry_range"> 12132 </td> 12133 12134 <td class="entry_tags"> 12135 <ul class="entry_tags"> 12136 <li><a href="#tag_V1">V1</a></li> 12137 </ul> 12138 </td> 12139 12140 </tr> 12141 <tr class="entries_header"> 12142 <th class="th_details" colspan="5">Details</th> 12143 </tr> 12144 <tr class="entry_cont"> 12145 <td class="entry_details" colspan="5"> 12146 <p>The lens focus distance calibration quality determines the reliability of 12147 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 12148 <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 12149 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 12150 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in 12151 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/> 12152 and increasing positive numbers represent focusing closer and closer 12153 to the camera device.<wbr/> The focus distance control also uses diopters 12154 on these devices.<wbr/></p> 12155 <p>UNCALIBRATED devices do not use units that are directly comparable 12156 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest 12157 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the 12158 nearest focus the device can achieve.<wbr/></p> 12159 </td> 12160 </tr> 12161 12162 <tr class="entries_header"> 12163 <th class="th_details" colspan="5">HAL Implementation Details</th> 12164 </tr> 12165 <tr class="entry_cont"> 12166 <td class="entry_details" colspan="5"> 12167 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity 12168 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF) 12169 and the lens focus distance is set to 0 diopters 12170 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity 12171 and is stably focused at infinity even if the device tilts.<wbr/> It may take the 12172 lens some time to move; during the move the lens state should be MOVING and 12173 the output diopter value should be changing toward 0.<wbr/></p> 12174 </td> 12175 </tr> 12176 12177 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12178 <!-- end of entry --> 12179 12180 12181 12182 12183 12184 <tr class="entry" id="static_android.lens.facing"> 12185 <td class="entry_name 12186 " rowspan="1"> 12187 android.<wbr/>lens.<wbr/>facing 12188 </td> 12189 <td class="entry_type"> 12190 <span class="entry_type_name entry_type_name_enum">byte</span> 12191 12192 <span class="entry_type_visibility"> [public]</span> 12193 12194 12195 <span class="entry_type_hwlevel">[legacy] </span> 12196 12197 12198 12199 <ul class="entry_type_enum"> 12200 <li> 12201 <span class="entry_type_enum_name">FRONT</span> 12202 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span> 12203 </li> 12204 <li> 12205 <span class="entry_type_enum_name">BACK</span> 12206 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span> 12207 </li> 12208 <li> 12209 <span class="entry_type_enum_name">EXTERNAL</span> 12210 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the 12211 device's screen.<wbr/></p></span> 12212 </li> 12213 </ul> 12214 12215 </td> <!-- entry_type --> 12216 12217 <td class="entry_description"> 12218 <p>Direction the camera faces relative to 12219 device screen.<wbr/></p> 12220 </td> 12221 12222 <td class="entry_units"> 12223 </td> 12224 12225 <td class="entry_range"> 12226 </td> 12227 12228 <td class="entry_tags"> 12229 </td> 12230 12231 </tr> 12232 12233 12234 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12235 <!-- end of entry --> 12236 12237 12238 <tr class="entry" id="static_android.lens.poseRotation"> 12239 <td class="entry_name 12240 " rowspan="3"> 12241 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 12242 </td> 12243 <td class="entry_type"> 12244 <span class="entry_type_name">float</span> 12245 <span class="entry_type_container">x</span> 12246 12247 <span class="entry_type_array"> 12248 4 12249 </span> 12250 <span class="entry_type_visibility"> [public]</span> 12251 12252 12253 12254 12255 12256 12257 </td> <!-- entry_type --> 12258 12259 <td class="entry_description"> 12260 <p>The orientation of the camera relative to the sensor 12261 coordinate system.<wbr/></p> 12262 </td> 12263 12264 <td class="entry_units"> 12265 12266 Quaternion coefficients 12267 12268 </td> 12269 12270 <td class="entry_range"> 12271 </td> 12272 12273 <td class="entry_tags"> 12274 <ul class="entry_tags"> 12275 <li><a href="#tag_DEPTH">DEPTH</a></li> 12276 </ul> 12277 </td> 12278 12279 </tr> 12280 <tr class="entries_header"> 12281 <th class="th_details" colspan="5">Details</th> 12282 </tr> 12283 <tr class="entry_cont"> 12284 <td class="entry_details" colspan="5"> 12285 <p>The four coefficients that describe the quaternion 12286 rotation from the Android sensor coordinate system to a 12287 camera-aligned coordinate system where the X-axis is 12288 aligned with the long side of the image sensor,<wbr/> the Y-axis 12289 is aligned with the short side of the image sensor,<wbr/> and 12290 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 12291 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 12292 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 12293 amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 12294 <pre><code> theta = 2 * acos(w) 12295 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 12296 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 12297 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 12298 </code></pre> 12299 <p>To create a 3x3 rotation matrix that applies the rotation 12300 defined by this quaternion,<wbr/> the following matrix can be 12301 used:</p> 12302 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 12303 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 12304 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 12305 </code></pre> 12306 <p>This matrix can then be used to apply the rotation to a 12307 column vector point with</p> 12308 <p><code>p' = Rp</code></p> 12309 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 12310 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 12311 </td> 12312 </tr> 12313 12314 12315 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12316 <!-- end of entry --> 12317 12318 12319 <tr class="entry" id="static_android.lens.poseTranslation"> 12320 <td class="entry_name 12321 " rowspan="3"> 12322 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 12323 </td> 12324 <td class="entry_type"> 12325 <span class="entry_type_name">float</span> 12326 <span class="entry_type_container">x</span> 12327 12328 <span class="entry_type_array"> 12329 3 12330 </span> 12331 <span class="entry_type_visibility"> [public]</span> 12332 12333 12334 12335 12336 12337 12338 </td> <!-- entry_type --> 12339 12340 <td class="entry_description"> 12341 <p>Position of the camera optical center.<wbr/></p> 12342 </td> 12343 12344 <td class="entry_units"> 12345 Meters 12346 </td> 12347 12348 <td class="entry_range"> 12349 </td> 12350 12351 <td class="entry_tags"> 12352 <ul class="entry_tags"> 12353 <li><a href="#tag_DEPTH">DEPTH</a></li> 12354 </ul> 12355 </td> 12356 12357 </tr> 12358 <tr class="entries_header"> 12359 <th class="th_details" colspan="5">Details</th> 12360 </tr> 12361 <tr class="entry_cont"> 12362 <td class="entry_details" colspan="5"> 12363 <p>The position of the camera device's lens optical center,<wbr/> 12364 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the 12365 optical center of the largest camera device facing in the 12366 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate 12367 axes</a>.<wbr/> Note that only the axis definitions are shared with 12368 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p> 12369 <p>If this device is the largest or only camera device with a 12370 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a 12371 camera device with a lens optical center located 3 cm from 12372 the main sensor along the +X axis (to the right from the 12373 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 12374 <p>To transform a pixel coordinates between two cameras 12375 facing the same direction,<wbr/> first the source camera 12376 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then 12377 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs 12378 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> 12379 of the source camera,<wbr/> the translation of the source camera 12380 relative to the destination camera,<wbr/> the 12381 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and 12382 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 12383 of the destination camera.<wbr/> This obtains a 12384 radial-distortion-free coordinate in the destination 12385 camera pixel coordinates.<wbr/></p> 12386 <p>To compare this against a real image from the destination 12387 camera,<wbr/> the destination camera image then needs to be 12388 corrected for radial distortion before comparison or 12389 sampling.<wbr/></p> 12390 </td> 12391 </tr> 12392 12393 12394 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12395 <!-- end of entry --> 12396 12397 12398 <tr class="entry" id="static_android.lens.intrinsicCalibration"> 12399 <td class="entry_name 12400 " rowspan="3"> 12401 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 12402 </td> 12403 <td class="entry_type"> 12404 <span class="entry_type_name">float</span> 12405 <span class="entry_type_container">x</span> 12406 12407 <span class="entry_type_array"> 12408 5 12409 </span> 12410 <span class="entry_type_visibility"> [public]</span> 12411 12412 12413 12414 12415 12416 12417 </td> <!-- entry_type --> 12418 12419 <td class="entry_description"> 12420 <p>The parameters for this camera device's intrinsic 12421 calibration.<wbr/></p> 12422 </td> 12423 12424 <td class="entry_units"> 12425 12426 Pixels in the 12427 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 12428 coordinate system.<wbr/> 12429 12430 </td> 12431 12432 <td class="entry_range"> 12433 </td> 12434 12435 <td class="entry_tags"> 12436 <ul class="entry_tags"> 12437 <li><a href="#tag_DEPTH">DEPTH</a></li> 12438 </ul> 12439 </td> 12440 12441 </tr> 12442 <tr class="entries_header"> 12443 <th class="th_details" colspan="5">Details</th> 12444 </tr> 12445 <tr class="entry_cont"> 12446 <td class="entry_details" colspan="5"> 12447 <p>The five calibration parameters that describe the 12448 transform from camera-centric 3D coordinates to sensor 12449 pixel coordinates:</p> 12450 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 12451 </code></pre> 12452 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 12453 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 12454 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 12455 being aligned with the lens plane.<wbr/></p> 12456 <p>These are typically used within a transformation matrix K:</p> 12457 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 12458 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 12459 0 0,<wbr/> 1 ] 12460 </code></pre> 12461 <p>which can then be combined with the camera pose rotation 12462 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 12463 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 12464 complete transform from world coordinates to pixel 12465 coordinates:</p> 12466 <pre><code>P = [ K 0 * [ R t 12467 0 1 ] 0 1 ] 12468 </code></pre> 12469 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 12470 and <code>p_<wbr/>s</code> being a point in the camera active pixel array 12471 coordinate system,<wbr/> and with the mapping including the 12472 homogeneous division by z:</p> 12473 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 12474 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 12475 </code></pre> 12476 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 12477 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 12478 (depth) in pixel coordinates.<wbr/></p> 12479 <p>Note that the coordinate system for this transform is the 12480 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/> 12481 where <code>(0,<wbr/>0)</code> is the top-left of the 12482 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 12483 intrinsic calibration transforms have been applied to a 12484 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> 12485 transform needs to be applied,<wbr/> and the result adjusted to 12486 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 12487 system (where <code>(0,<wbr/> 0)</code> is the top-left of the 12488 activeArraySize rectangle),<wbr/> to determine the final pixel 12489 coordinate of the world point for processed (non-RAW) 12490 output buffers.<wbr/></p> 12491 </td> 12492 </tr> 12493 12494 12495 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12496 <!-- end of entry --> 12497 12498 12499 <tr class="entry" id="static_android.lens.radialDistortion"> 12500 <td class="entry_name 12501 " rowspan="3"> 12502 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 12503 </td> 12504 <td class="entry_type"> 12505 <span class="entry_type_name">float</span> 12506 <span class="entry_type_container">x</span> 12507 12508 <span class="entry_type_array"> 12509 6 12510 </span> 12511 <span class="entry_type_visibility"> [public]</span> 12512 12513 12514 12515 12516 12517 12518 </td> <!-- entry_type --> 12519 12520 <td class="entry_description"> 12521 <p>The correction coefficients to correct for this camera device's 12522 radial and tangential lens distortion.<wbr/></p> 12523 </td> 12524 12525 <td class="entry_units"> 12526 12527 Unitless coefficients.<wbr/> 12528 12529 </td> 12530 12531 <td class="entry_range"> 12532 </td> 12533 12534 <td class="entry_tags"> 12535 <ul class="entry_tags"> 12536 <li><a href="#tag_DEPTH">DEPTH</a></li> 12537 </ul> 12538 </td> 12539 12540 </tr> 12541 <tr class="entries_header"> 12542 <th class="th_details" colspan="5">Details</th> 12543 </tr> 12544 <tr class="entry_cont"> 12545 <td class="entry_details" colspan="5"> 12546 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 12547 kappa_<wbr/>3]</code> and two tangential distortion coefficients 12548 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 12549 lens's geometric distortion with the mapping equations:</p> 12550 <pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 12551 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 12552 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 12553 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 12554 </code></pre> 12555 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 12556 input image that correspond to the pixel values in the 12557 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 12558 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 12559 </code></pre> 12560 <p>The pixel coordinates are defined in a normalized 12561 coordinate system related to the 12562 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 12563 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the 12564 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 12565 of both x and y coordinates are normalized to be 1 at the 12566 edge further from the optical center,<wbr/> so the range 12567 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 12568 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the 12569 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 12570 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 12571 <p>The distortion model used is the Brown-Conrady model.<wbr/></p> 12572 </td> 12573 </tr> 12574 12575 12576 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12577 <!-- end of entry --> 12578 12579 12580 12581 <!-- end of kind --> 12582 </tbody> 12583 <tr><td colspan="6" class="kind">dynamic</td></tr> 12584 12585 <thead class="entries_header"> 12586 <tr> 12587 <th class="th_name">Property Name</th> 12588 <th class="th_type">Type</th> 12589 <th class="th_description">Description</th> 12590 <th class="th_units">Units</th> 12591 <th class="th_range">Range</th> 12592 <th class="th_tags">Tags</th> 12593 </tr> 12594 </thead> 12595 12596 <tbody> 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 <tr class="entry" id="dynamic_android.lens.aperture"> 12608 <td class="entry_name 12609 " rowspan="3"> 12610 android.<wbr/>lens.<wbr/>aperture 12611 </td> 12612 <td class="entry_type"> 12613 <span class="entry_type_name">float</span> 12614 12615 <span class="entry_type_visibility"> [public]</span> 12616 12617 12618 <span class="entry_type_hwlevel">[full] </span> 12619 12620 12621 12622 12623 </td> <!-- entry_type --> 12624 12625 <td class="entry_description"> 12626 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 12627 effective aperture diameter.<wbr/></p> 12628 </td> 12629 12630 <td class="entry_units"> 12631 The f-number (f/<wbr/>N) 12632 </td> 12633 12634 <td class="entry_range"> 12635 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 12636 </td> 12637 12638 <td class="entry_tags"> 12639 <ul class="entry_tags"> 12640 <li><a href="#tag_V1">V1</a></li> 12641 </ul> 12642 </td> 12643 12644 </tr> 12645 <tr class="entries_header"> 12646 <th class="th_details" colspan="5">Details</th> 12647 </tr> 12648 <tr class="entry_cont"> 12649 <td class="entry_details" colspan="5"> 12650 <p>Setting this value is only supported on the camera devices that have a variable 12651 aperture lens.<wbr/></p> 12652 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 12653 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 12654 <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> 12655 to achieve manual exposure control.<wbr/></p> 12656 <p>The requested aperture value may take several frames to reach the 12657 requested value; the camera device will report the current (intermediate) 12658 aperture size in capture result metadata while the aperture is changing.<wbr/> 12659 While the aperture is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 12660 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 12661 the ON modes,<wbr/> this will be overridden by the camera device 12662 auto-exposure algorithm,<wbr/> the overridden values are then provided 12663 back to the user in the corresponding result.<wbr/></p> 12664 </td> 12665 </tr> 12666 12667 12668 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12669 <!-- end of entry --> 12670 12671 12672 <tr class="entry" id="dynamic_android.lens.filterDensity"> 12673 <td class="entry_name 12674 " rowspan="3"> 12675 android.<wbr/>lens.<wbr/>filter<wbr/>Density 12676 </td> 12677 <td class="entry_type"> 12678 <span class="entry_type_name">float</span> 12679 12680 <span class="entry_type_visibility"> [public]</span> 12681 12682 12683 <span class="entry_type_hwlevel">[full] </span> 12684 12685 12686 12687 12688 </td> <!-- entry_type --> 12689 12690 <td class="entry_description"> 12691 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 12692 </td> 12693 12694 <td class="entry_units"> 12695 Exposure Value (EV) 12696 </td> 12697 12698 <td class="entry_range"> 12699 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 12700 </td> 12701 12702 <td class="entry_tags"> 12703 <ul class="entry_tags"> 12704 <li><a href="#tag_V1">V1</a></li> 12705 </ul> 12706 </td> 12707 12708 </tr> 12709 <tr class="entries_header"> 12710 <th class="th_details" colspan="5">Details</th> 12711 </tr> 12712 <tr class="entry_cont"> 12713 <td class="entry_details" colspan="5"> 12714 <p>This control will not be supported on most camera devices.<wbr/></p> 12715 <p>Lens filters are typically used to lower the amount of light the 12716 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 12717 step is the standard logarithmic representation,<wbr/> which are 12718 non-negative,<wbr/> and inversely proportional to the amount of light 12719 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 12720 in no reduction of the incoming light,<wbr/> and setting this to 2 would 12721 mean that the filter is set to reduce incoming light by two stops 12722 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 12723 <p>It may take several frames before the lens filter density changes 12724 to the requested value.<wbr/> While the filter density is still changing,<wbr/> 12725 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 12726 </td> 12727 </tr> 12728 12729 12730 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12731 <!-- end of entry --> 12732 12733 12734 <tr class="entry" id="dynamic_android.lens.focalLength"> 12735 <td class="entry_name 12736 " rowspan="3"> 12737 android.<wbr/>lens.<wbr/>focal<wbr/>Length 12738 </td> 12739 <td class="entry_type"> 12740 <span class="entry_type_name">float</span> 12741 12742 <span class="entry_type_visibility"> [public]</span> 12743 12744 12745 <span class="entry_type_hwlevel">[legacy] </span> 12746 12747 12748 12749 12750 </td> <!-- entry_type --> 12751 12752 <td class="entry_description"> 12753 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 12754 </td> 12755 12756 <td class="entry_units"> 12757 Millimeters 12758 </td> 12759 12760 <td class="entry_range"> 12761 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 12762 </td> 12763 12764 <td class="entry_tags"> 12765 <ul class="entry_tags"> 12766 <li><a href="#tag_BC">BC</a></li> 12767 </ul> 12768 </td> 12769 12770 </tr> 12771 <tr class="entries_header"> 12772 <th class="th_details" colspan="5">Details</th> 12773 </tr> 12774 <tr class="entry_cont"> 12775 <td class="entry_details" colspan="5"> 12776 <p>This setting controls the physical focal length of the camera 12777 device's lens.<wbr/> Changing the focal length changes the field of 12778 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 12779 <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 12780 setting won't be applied instantaneously,<wbr/> and it may take several 12781 frames before the lens can change to the requested focal length.<wbr/> 12782 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 12783 be set to MOVING.<wbr/></p> 12784 <p>Optical zoom will not be supported on most devices.<wbr/></p> 12785 </td> 12786 </tr> 12787 12788 12789 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12790 <!-- end of entry --> 12791 12792 12793 <tr class="entry" id="dynamic_android.lens.focusDistance"> 12794 <td class="entry_name 12795 " rowspan="3"> 12796 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 12797 </td> 12798 <td class="entry_type"> 12799 <span class="entry_type_name">float</span> 12800 12801 <span class="entry_type_visibility"> [public]</span> 12802 12803 12804 <span class="entry_type_hwlevel">[full] </span> 12805 12806 12807 12808 12809 </td> <!-- entry_type --> 12810 12811 <td class="entry_description"> 12812 <p>Desired distance to plane of sharpest focus,<wbr/> 12813 measured from frontmost surface of the lens.<wbr/></p> 12814 </td> 12815 12816 <td class="entry_units"> 12817 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 12818 </td> 12819 12820 <td class="entry_range"> 12821 <p>>= 0</p> 12822 </td> 12823 12824 <td class="entry_tags"> 12825 <ul class="entry_tags"> 12826 <li><a href="#tag_BC">BC</a></li> 12827 </ul> 12828 </td> 12829 12830 </tr> 12831 <tr class="entries_header"> 12832 <th class="th_details" colspan="5">Details</th> 12833 </tr> 12834 <tr class="entry_cont"> 12835 <td class="entry_details" colspan="5"> 12836 <p>Should be zero for fixed-focus cameras</p> 12837 </td> 12838 </tr> 12839 12840 12841 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12842 <!-- end of entry --> 12843 12844 12845 <tr class="entry" id="dynamic_android.lens.focusRange"> 12846 <td class="entry_name 12847 " rowspan="3"> 12848 android.<wbr/>lens.<wbr/>focus<wbr/>Range 12849 </td> 12850 <td class="entry_type"> 12851 <span class="entry_type_name">float</span> 12852 <span class="entry_type_container">x</span> 12853 12854 <span class="entry_type_array"> 12855 2 12856 </span> 12857 <span class="entry_type_visibility"> [public as pairFloatFloat]</span> 12858 12859 12860 <span class="entry_type_hwlevel">[limited] </span> 12861 12862 12863 <div class="entry_type_notes">Range of scene distances that are in focus</div> 12864 12865 12866 </td> <!-- entry_type --> 12867 12868 <td class="entry_description"> 12869 <p>The range of scene distances that are in 12870 sharp focus (depth of field).<wbr/></p> 12871 </td> 12872 12873 <td class="entry_units"> 12874 A pair of focus distances in diopters: (near,<wbr/> 12875 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 12876 </td> 12877 12878 <td class="entry_range"> 12879 <p>>=0</p> 12880 </td> 12881 12882 <td class="entry_tags"> 12883 <ul class="entry_tags"> 12884 <li><a href="#tag_BC">BC</a></li> 12885 </ul> 12886 </td> 12887 12888 </tr> 12889 <tr class="entries_header"> 12890 <th class="th_details" colspan="5">Details</th> 12891 </tr> 12892 <tr class="entry_cont"> 12893 <td class="entry_details" colspan="5"> 12894 <p>If variable focus not supported,<wbr/> can still report 12895 fixed depth of field range</p> 12896 </td> 12897 </tr> 12898 12899 12900 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12901 <!-- end of entry --> 12902 12903 12904 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 12905 <td class="entry_name 12906 " rowspan="3"> 12907 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 12908 </td> 12909 <td class="entry_type"> 12910 <span class="entry_type_name entry_type_name_enum">byte</span> 12911 12912 <span class="entry_type_visibility"> [public]</span> 12913 12914 12915 <span class="entry_type_hwlevel">[limited] </span> 12916 12917 12918 12919 <ul class="entry_type_enum"> 12920 <li> 12921 <span class="entry_type_enum_name">OFF</span> 12922 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 12923 </li> 12924 <li> 12925 <span class="entry_type_enum_name">ON</span> 12926 <span class="entry_type_enum_optional">[optional]</span> 12927 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 12928 </li> 12929 </ul> 12930 12931 </td> <!-- entry_type --> 12932 12933 <td class="entry_description"> 12934 <p>Sets whether the camera device uses optical image stabilization (OIS) 12935 when capturing images.<wbr/></p> 12936 </td> 12937 12938 <td class="entry_units"> 12939 </td> 12940 12941 <td class="entry_range"> 12942 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 12943 </td> 12944 12945 <td class="entry_tags"> 12946 <ul class="entry_tags"> 12947 <li><a href="#tag_V1">V1</a></li> 12948 </ul> 12949 </td> 12950 12951 </tr> 12952 <tr class="entries_header"> 12953 <th class="th_details" colspan="5">Details</th> 12954 </tr> 12955 <tr class="entry_cont"> 12956 <td class="entry_details" colspan="5"> 12957 <p>OIS is used to compensate for motion blur due to small 12958 movements of the camera during capture.<wbr/> Unlike digital image 12959 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 12960 makes use of mechanical elements to stabilize the camera 12961 sensor,<wbr/> and thus allows for longer exposure times before 12962 camera shake becomes apparent.<wbr/></p> 12963 <p>Switching between different optical stabilization modes may take several 12964 frames to initialize,<wbr/> the camera device will report the current mode in 12965 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 12966 optical stabilization modes in the first several capture results may still 12967 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 12968 <p>If a camera device supports both OIS and digital image stabilization 12969 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 12970 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 12971 <p>Not all devices will support OIS; see 12972 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 12973 available controls.<wbr/></p> 12974 </td> 12975 </tr> 12976 12977 12978 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12979 <!-- end of entry --> 12980 12981 12982 <tr class="entry" id="dynamic_android.lens.state"> 12983 <td class="entry_name 12984 " rowspan="3"> 12985 android.<wbr/>lens.<wbr/>state 12986 </td> 12987 <td class="entry_type"> 12988 <span class="entry_type_name entry_type_name_enum">byte</span> 12989 12990 <span class="entry_type_visibility"> [public]</span> 12991 12992 12993 <span class="entry_type_hwlevel">[limited] </span> 12994 12995 12996 12997 <ul class="entry_type_enum"> 12998 <li> 12999 <span class="entry_type_enum_name">STATIONARY</span> 13000 <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/> 13001 <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> 13002 </li> 13003 <li> 13004 <span class="entry_type_enum_name">MOVING</span> 13005 <span class="entry_type_enum_notes"><p>One or several of the lens parameters 13006 (<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/> 13007 <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 13008 currently changing.<wbr/></p></span> 13009 </li> 13010 </ul> 13011 13012 </td> <!-- entry_type --> 13013 13014 <td class="entry_description"> 13015 <p>Current lens status.<wbr/></p> 13016 </td> 13017 13018 <td class="entry_units"> 13019 </td> 13020 13021 <td class="entry_range"> 13022 </td> 13023 13024 <td class="entry_tags"> 13025 <ul class="entry_tags"> 13026 <li><a href="#tag_V1">V1</a></li> 13027 </ul> 13028 </td> 13029 13030 </tr> 13031 <tr class="entries_header"> 13032 <th class="th_details" colspan="5">Details</th> 13033 </tr> 13034 <tr class="entry_cont"> 13035 <td class="entry_details" colspan="5"> 13036 <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/> 13037 <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/> 13038 they may take several frames to reach the requested values.<wbr/> This state indicates 13039 the current status of the lens parameters.<wbr/></p> 13040 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 13041 either because the parameters are all fixed,<wbr/> or because the lens has had enough 13042 time to reach the most recently-requested values.<wbr/> 13043 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> 13044 <ul> 13045 <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 13046 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 13047 <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/> 13048 which means the optical zoom is not supported.<wbr/></li> 13049 <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> 13050 <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> 13051 </ul> 13052 <p>Then this state will always be STATIONARY.<wbr/></p> 13053 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 13054 is changing.<wbr/></p> 13055 </td> 13056 </tr> 13057 13058 13059 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13060 <!-- end of entry --> 13061 13062 13063 <tr class="entry" id="dynamic_android.lens.poseRotation"> 13064 <td class="entry_name 13065 " rowspan="3"> 13066 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 13067 </td> 13068 <td class="entry_type"> 13069 <span class="entry_type_name">float</span> 13070 <span class="entry_type_container">x</span> 13071 13072 <span class="entry_type_array"> 13073 4 13074 </span> 13075 <span class="entry_type_visibility"> [public]</span> 13076 13077 13078 13079 13080 13081 13082 </td> <!-- entry_type --> 13083 13084 <td class="entry_description"> 13085 <p>The orientation of the camera relative to the sensor 13086 coordinate system.<wbr/></p> 13087 </td> 13088 13089 <td class="entry_units"> 13090 13091 Quaternion coefficients 13092 13093 </td> 13094 13095 <td class="entry_range"> 13096 </td> 13097 13098 <td class="entry_tags"> 13099 <ul class="entry_tags"> 13100 <li><a href="#tag_DEPTH">DEPTH</a></li> 13101 </ul> 13102 </td> 13103 13104 </tr> 13105 <tr class="entries_header"> 13106 <th class="th_details" colspan="5">Details</th> 13107 </tr> 13108 <tr class="entry_cont"> 13109 <td class="entry_details" colspan="5"> 13110 <p>The four coefficients that describe the quaternion 13111 rotation from the Android sensor coordinate system to a 13112 camera-aligned coordinate system where the X-axis is 13113 aligned with the long side of the image sensor,<wbr/> the Y-axis 13114 is aligned with the short side of the image sensor,<wbr/> and 13115 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 13116 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 13117 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 13118 amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 13119 <pre><code> theta = 2 * acos(w) 13120 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 13121 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 13122 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 13123 </code></pre> 13124 <p>To create a 3x3 rotation matrix that applies the rotation 13125 defined by this quaternion,<wbr/> the following matrix can be 13126 used:</p> 13127 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 13128 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 13129 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 13130 </code></pre> 13131 <p>This matrix can then be used to apply the rotation to a 13132 column vector point with</p> 13133 <p><code>p' = Rp</code></p> 13134 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 13135 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 13136 </td> 13137 </tr> 13138 13139 13140 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13141 <!-- end of entry --> 13142 13143 13144 <tr class="entry" id="dynamic_android.lens.poseTranslation"> 13145 <td class="entry_name 13146 " rowspan="3"> 13147 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 13148 </td> 13149 <td class="entry_type"> 13150 <span class="entry_type_name">float</span> 13151 <span class="entry_type_container">x</span> 13152 13153 <span class="entry_type_array"> 13154 3 13155 </span> 13156 <span class="entry_type_visibility"> [public]</span> 13157 13158 13159 13160 13161 13162 13163 </td> <!-- entry_type --> 13164 13165 <td class="entry_description"> 13166 <p>Position of the camera optical center.<wbr/></p> 13167 </td> 13168 13169 <td class="entry_units"> 13170 Meters 13171 </td> 13172 13173 <td class="entry_range"> 13174 </td> 13175 13176 <td class="entry_tags"> 13177 <ul class="entry_tags"> 13178 <li><a href="#tag_DEPTH">DEPTH</a></li> 13179 </ul> 13180 </td> 13181 13182 </tr> 13183 <tr class="entries_header"> 13184 <th class="th_details" colspan="5">Details</th> 13185 </tr> 13186 <tr class="entry_cont"> 13187 <td class="entry_details" colspan="5"> 13188 <p>The position of the camera device's lens optical center,<wbr/> 13189 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the 13190 optical center of the largest camera device facing in the 13191 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate 13192 axes</a>.<wbr/> Note that only the axis definitions are shared with 13193 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p> 13194 <p>If this device is the largest or only camera device with a 13195 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a 13196 camera device with a lens optical center located 3 cm from 13197 the main sensor along the +X axis (to the right from the 13198 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 13199 <p>To transform a pixel coordinates between two cameras 13200 facing the same direction,<wbr/> first the source camera 13201 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then 13202 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs 13203 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> 13204 of the source camera,<wbr/> the translation of the source camera 13205 relative to the destination camera,<wbr/> the 13206 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and 13207 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 13208 of the destination camera.<wbr/> This obtains a 13209 radial-distortion-free coordinate in the destination 13210 camera pixel coordinates.<wbr/></p> 13211 <p>To compare this against a real image from the destination 13212 camera,<wbr/> the destination camera image then needs to be 13213 corrected for radial distortion before comparison or 13214 sampling.<wbr/></p> 13215 </td> 13216 </tr> 13217 13218 13219 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13220 <!-- end of entry --> 13221 13222 13223 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration"> 13224 <td class="entry_name 13225 " rowspan="3"> 13226 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 13227 </td> 13228 <td class="entry_type"> 13229 <span class="entry_type_name">float</span> 13230 <span class="entry_type_container">x</span> 13231 13232 <span class="entry_type_array"> 13233 5 13234 </span> 13235 <span class="entry_type_visibility"> [public]</span> 13236 13237 13238 13239 13240 13241 13242 </td> <!-- entry_type --> 13243 13244 <td class="entry_description"> 13245 <p>The parameters for this camera device's intrinsic 13246 calibration.<wbr/></p> 13247 </td> 13248 13249 <td class="entry_units"> 13250 13251 Pixels in the 13252 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 13253 coordinate system.<wbr/> 13254 13255 </td> 13256 13257 <td class="entry_range"> 13258 </td> 13259 13260 <td class="entry_tags"> 13261 <ul class="entry_tags"> 13262 <li><a href="#tag_DEPTH">DEPTH</a></li> 13263 </ul> 13264 </td> 13265 13266 </tr> 13267 <tr class="entries_header"> 13268 <th class="th_details" colspan="5">Details</th> 13269 </tr> 13270 <tr class="entry_cont"> 13271 <td class="entry_details" colspan="5"> 13272 <p>The five calibration parameters that describe the 13273 transform from camera-centric 3D coordinates to sensor 13274 pixel coordinates:</p> 13275 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 13276 </code></pre> 13277 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 13278 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 13279 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 13280 being aligned with the lens plane.<wbr/></p> 13281 <p>These are typically used within a transformation matrix K:</p> 13282 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 13283 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 13284 0 0,<wbr/> 1 ] 13285 </code></pre> 13286 <p>which can then be combined with the camera pose rotation 13287 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 13288 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 13289 complete transform from world coordinates to pixel 13290 coordinates:</p> 13291 <pre><code>P = [ K 0 * [ R t 13292 0 1 ] 0 1 ] 13293 </code></pre> 13294 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 13295 and <code>p_<wbr/>s</code> being a point in the camera active pixel array 13296 coordinate system,<wbr/> and with the mapping including the 13297 homogeneous division by z:</p> 13298 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 13299 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 13300 </code></pre> 13301 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 13302 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 13303 (depth) in pixel coordinates.<wbr/></p> 13304 <p>Note that the coordinate system for this transform is the 13305 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/> 13306 where <code>(0,<wbr/>0)</code> is the top-left of the 13307 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 13308 intrinsic calibration transforms have been applied to a 13309 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> 13310 transform needs to be applied,<wbr/> and the result adjusted to 13311 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 13312 system (where <code>(0,<wbr/> 0)</code> is the top-left of the 13313 activeArraySize rectangle),<wbr/> to determine the final pixel 13314 coordinate of the world point for processed (non-RAW) 13315 output buffers.<wbr/></p> 13316 </td> 13317 </tr> 13318 13319 13320 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13321 <!-- end of entry --> 13322 13323 13324 <tr class="entry" id="dynamic_android.lens.radialDistortion"> 13325 <td class="entry_name 13326 " rowspan="3"> 13327 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 13328 </td> 13329 <td class="entry_type"> 13330 <span class="entry_type_name">float</span> 13331 <span class="entry_type_container">x</span> 13332 13333 <span class="entry_type_array"> 13334 6 13335 </span> 13336 <span class="entry_type_visibility"> [public]</span> 13337 13338 13339 13340 13341 13342 13343 </td> <!-- entry_type --> 13344 13345 <td class="entry_description"> 13346 <p>The correction coefficients to correct for this camera device's 13347 radial and tangential lens distortion.<wbr/></p> 13348 </td> 13349 13350 <td class="entry_units"> 13351 13352 Unitless coefficients.<wbr/> 13353 13354 </td> 13355 13356 <td class="entry_range"> 13357 </td> 13358 13359 <td class="entry_tags"> 13360 <ul class="entry_tags"> 13361 <li><a href="#tag_DEPTH">DEPTH</a></li> 13362 </ul> 13363 </td> 13364 13365 </tr> 13366 <tr class="entries_header"> 13367 <th class="th_details" colspan="5">Details</th> 13368 </tr> 13369 <tr class="entry_cont"> 13370 <td class="entry_details" colspan="5"> 13371 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 13372 kappa_<wbr/>3]</code> and two tangential distortion coefficients 13373 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 13374 lens's geometric distortion with the mapping equations:</p> 13375 <pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 13376 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 13377 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 13378 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 13379 </code></pre> 13380 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 13381 input image that correspond to the pixel values in the 13382 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 13383 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 13384 </code></pre> 13385 <p>The pixel coordinates are defined in a normalized 13386 coordinate system related to the 13387 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 13388 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the 13389 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 13390 of both x and y coordinates are normalized to be 1 at the 13391 edge further from the optical center,<wbr/> so the range 13392 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 13393 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the 13394 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 13395 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 13396 <p>The distortion model used is the Brown-Conrady model.<wbr/></p> 13397 </td> 13398 </tr> 13399 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_noiseReduction" class="section">noiseReduction</td></tr> 13411 13412 13413 <tr><td colspan="6" class="kind">controls</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="controls_android.noiseReduction.mode"> 13438 <td class="entry_name 13439 " rowspan="5"> 13440 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 13441 </td> 13442 <td class="entry_type"> 13443 <span class="entry_type_name entry_type_name_enum">byte</span> 13444 13445 <span class="entry_type_visibility"> [public]</span> 13446 13447 13448 <span class="entry_type_hwlevel">[full] </span> 13449 13450 13451 13452 <ul class="entry_type_enum"> 13453 <li> 13454 <span class="entry_type_enum_name">OFF</span> 13455 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 13456 </li> 13457 <li> 13458 <span class="entry_type_enum_name">FAST</span> 13459 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 13460 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 13461 relative to sensor.<wbr/></p></span> 13462 </li> 13463 <li> 13464 <span class="entry_type_enum_name">HIGH_QUALITY</span> 13465 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 13466 rate relative to sensor output.<wbr/></p></span> 13467 </li> 13468 <li> 13469 <span class="entry_type_enum_name">MINIMAL</span> 13470 <span class="entry_type_enum_optional">[optional]</span> 13471 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 13472 sensor output.<wbr/> </p></span> 13473 </li> 13474 <li> 13475 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 13476 <span class="entry_type_enum_optional">[optional]</span> 13477 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 13478 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise 13479 reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no 13480 noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction 13481 for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality 13482 is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/> 13483 quality may improve from FAST).<wbr/></p> 13484 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 13485 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 13486 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 13487 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 13488 high-resolution buffers must not have noise reduction applied to maximize efficiency of 13489 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 13490 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 13491 applied for reasonable preview quality.<wbr/></p> 13492 <p>This mode is guaranteed to be supported by devices that support either the 13493 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 13494 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 13495 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 13496 </li> 13497 </ul> 13498 13499 </td> <!-- entry_type --> 13500 13501 <td class="entry_description"> 13502 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 13503 </td> 13504 13505 <td class="entry_units"> 13506 </td> 13507 13508 <td class="entry_range"> 13509 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 13510 </td> 13511 13512 <td class="entry_tags"> 13513 <ul class="entry_tags"> 13514 <li><a href="#tag_V1">V1</a></li> 13515 <li><a href="#tag_REPROC">REPROC</a></li> 13516 </ul> 13517 </td> 13518 13519 </tr> 13520 <tr class="entries_header"> 13521 <th class="th_details" colspan="5">Details</th> 13522 </tr> 13523 <tr class="entry_cont"> 13524 <td class="entry_details" colspan="5"> 13525 <p>The noise reduction algorithm attempts to improve image quality by removing 13526 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 13527 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 13528 YUV domain.<wbr/></p> 13529 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 13530 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 13531 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 13532 <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> 13533 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 13534 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 13535 will use the highest-quality noise filtering algorithms,<wbr/> 13536 even if it slows down capture rate.<wbr/> FAST means the camera device will not 13537 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 13538 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 13539 Every output stream will have a similar amount of enhancement applied.<wbr/></p> 13540 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 13541 buffer of high-resolution images during preview and reprocess image(s) from that buffer 13542 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 13543 noise reduction to low-resolution streams (below maximum recording resolution) to maximize 13544 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 13545 those will be reprocessed later if necessary.<wbr/></p> 13546 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 13547 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 13548 may adjust the noise reduction parameters for best image quality based on the 13549 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 13550 </td> 13551 </tr> 13552 13553 <tr class="entries_header"> 13554 <th class="th_details" colspan="5">HAL Implementation Details</th> 13555 </tr> 13556 <tr class="entry_cont"> 13557 <td class="entry_details" colspan="5"> 13558 <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 13559 adjust the internal noise reduction parameters appropriately to get the best quality 13560 images.<wbr/></p> 13561 </td> 13562 </tr> 13563 13564 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13565 <!-- end of entry --> 13566 13567 13568 <tr class="entry" id="controls_android.noiseReduction.strength"> 13569 <td class="entry_name 13570 " rowspan="1"> 13571 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 13572 </td> 13573 <td class="entry_type"> 13574 <span class="entry_type_name">byte</span> 13575 13576 <span class="entry_type_visibility"> [system]</span> 13577 13578 13579 13580 13581 13582 13583 </td> <!-- entry_type --> 13584 13585 <td class="entry_description"> 13586 <p>Control the amount of noise reduction 13587 applied to the images</p> 13588 </td> 13589 13590 <td class="entry_units"> 13591 1-10; 10 is max noise reduction 13592 </td> 13593 13594 <td class="entry_range"> 13595 <p>1 - 10</p> 13596 </td> 13597 13598 <td class="entry_tags"> 13599 <ul class="entry_tags"> 13600 <li><a href="#tag_FUTURE">FUTURE</a></li> 13601 </ul> 13602 </td> 13603 13604 </tr> 13605 13606 13607 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13608 <!-- end of entry --> 13609 13610 13611 13612 <!-- end of kind --> 13613 </tbody> 13614 <tr><td colspan="6" class="kind">static</td></tr> 13615 13616 <thead class="entries_header"> 13617 <tr> 13618 <th class="th_name">Property Name</th> 13619 <th class="th_type">Type</th> 13620 <th class="th_description">Description</th> 13621 <th class="th_units">Units</th> 13622 <th class="th_range">Range</th> 13623 <th class="th_tags">Tags</th> 13624 </tr> 13625 </thead> 13626 13627 <tbody> 13628 13629 13630 13631 13632 13633 13634 13635 13636 13637 13638 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> 13639 <td class="entry_name 13640 " rowspan="5"> 13641 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes 13642 </td> 13643 <td class="entry_type"> 13644 <span class="entry_type_name">byte</span> 13645 <span class="entry_type_container">x</span> 13646 13647 <span class="entry_type_array"> 13648 n 13649 </span> 13650 <span class="entry_type_visibility"> [public as enumList]</span> 13651 13652 13653 <span class="entry_type_hwlevel">[limited] </span> 13654 13655 13656 <div class="entry_type_notes">list of enums</div> 13657 13658 13659 </td> <!-- entry_type --> 13660 13661 <td class="entry_description"> 13662 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported 13663 by this camera device.<wbr/></p> 13664 </td> 13665 13666 <td class="entry_units"> 13667 </td> 13668 13669 <td class="entry_range"> 13670 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p> 13671 </td> 13672 13673 <td class="entry_tags"> 13674 <ul class="entry_tags"> 13675 <li><a href="#tag_V1">V1</a></li> 13676 <li><a href="#tag_REPROC">REPROC</a></li> 13677 </ul> 13678 </td> 13679 13680 </tr> 13681 <tr class="entries_header"> 13682 <th class="th_details" colspan="5">Details</th> 13683 </tr> 13684 <tr class="entry_cont"> 13685 <td class="entry_details" colspan="5"> 13686 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p> 13687 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support 13688 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p> 13689 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p> 13690 </td> 13691 </tr> 13692 13693 <tr class="entries_header"> 13694 <th class="th_details" colspan="5">HAL Implementation Details</th> 13695 </tr> 13696 <tr class="entry_cont"> 13697 <td class="entry_details" colspan="5"> 13698 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available 13699 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 13700 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 13701 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 13702 </td> 13703 </tr> 13704 13705 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13706 <!-- end of entry --> 13707 13708 13709 13710 <!-- end of kind --> 13711 </tbody> 13712 <tr><td colspan="6" class="kind">dynamic</td></tr> 13713 13714 <thead class="entries_header"> 13715 <tr> 13716 <th class="th_name">Property Name</th> 13717 <th class="th_type">Type</th> 13718 <th class="th_description">Description</th> 13719 <th class="th_units">Units</th> 13720 <th class="th_range">Range</th> 13721 <th class="th_tags">Tags</th> 13722 </tr> 13723 </thead> 13724 13725 <tbody> 13726 13727 13728 13729 13730 13731 13732 13733 13734 13735 13736 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 13737 <td class="entry_name 13738 " rowspan="5"> 13739 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 13740 </td> 13741 <td class="entry_type"> 13742 <span class="entry_type_name entry_type_name_enum">byte</span> 13743 13744 <span class="entry_type_visibility"> [public]</span> 13745 13746 13747 <span class="entry_type_hwlevel">[full] </span> 13748 13749 13750 13751 <ul class="entry_type_enum"> 13752 <li> 13753 <span class="entry_type_enum_name">OFF</span> 13754 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 13755 </li> 13756 <li> 13757 <span class="entry_type_enum_name">FAST</span> 13758 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 13759 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 13760 relative to sensor.<wbr/></p></span> 13761 </li> 13762 <li> 13763 <span class="entry_type_enum_name">HIGH_QUALITY</span> 13764 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 13765 rate relative to sensor output.<wbr/></p></span> 13766 </li> 13767 <li> 13768 <span class="entry_type_enum_name">MINIMAL</span> 13769 <span class="entry_type_enum_optional">[optional]</span> 13770 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 13771 sensor output.<wbr/> </p></span> 13772 </li> 13773 <li> 13774 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 13775 <span class="entry_type_enum_optional">[optional]</span> 13776 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 13777 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise 13778 reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no 13779 noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction 13780 for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality 13781 is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/> 13782 quality may improve from FAST).<wbr/></p> 13783 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 13784 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 13785 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 13786 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 13787 high-resolution buffers must not have noise reduction applied to maximize efficiency of 13788 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 13789 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 13790 applied for reasonable preview quality.<wbr/></p> 13791 <p>This mode is guaranteed to be supported by devices that support either the 13792 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 13793 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 13794 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 13795 </li> 13796 </ul> 13797 13798 </td> <!-- entry_type --> 13799 13800 <td class="entry_description"> 13801 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 13802 </td> 13803 13804 <td class="entry_units"> 13805 </td> 13806 13807 <td class="entry_range"> 13808 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 13809 </td> 13810 13811 <td class="entry_tags"> 13812 <ul class="entry_tags"> 13813 <li><a href="#tag_V1">V1</a></li> 13814 <li><a href="#tag_REPROC">REPROC</a></li> 13815 </ul> 13816 </td> 13817 13818 </tr> 13819 <tr class="entries_header"> 13820 <th class="th_details" colspan="5">Details</th> 13821 </tr> 13822 <tr class="entry_cont"> 13823 <td class="entry_details" colspan="5"> 13824 <p>The noise reduction algorithm attempts to improve image quality by removing 13825 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 13826 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 13827 YUV domain.<wbr/></p> 13828 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 13829 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 13830 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 13831 <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> 13832 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 13833 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 13834 will use the highest-quality noise filtering algorithms,<wbr/> 13835 even if it slows down capture rate.<wbr/> FAST means the camera device will not 13836 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 13837 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 13838 Every output stream will have a similar amount of enhancement applied.<wbr/></p> 13839 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 13840 buffer of high-resolution images during preview and reprocess image(s) from that buffer 13841 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 13842 noise reduction to low-resolution streams (below maximum recording resolution) to maximize 13843 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 13844 those will be reprocessed later if necessary.<wbr/></p> 13845 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 13846 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 13847 may adjust the noise reduction parameters for best image quality based on the 13848 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 13849 </td> 13850 </tr> 13851 13852 <tr class="entries_header"> 13853 <th class="th_details" colspan="5">HAL Implementation Details</th> 13854 </tr> 13855 <tr class="entry_cont"> 13856 <td class="entry_details" colspan="5"> 13857 <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 13858 adjust the internal noise reduction parameters appropriately to get the best quality 13859 images.<wbr/></p> 13860 </td> 13861 </tr> 13862 13863 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13864 <!-- end of entry --> 13865 13866 13867 13868 <!-- end of kind --> 13869 </tbody> 13870 13871 <!-- end of section --> 13872 <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr> 13873 13874 13875 <tr><td colspan="6" class="kind">static</td></tr> 13876 13877 <thead class="entries_header"> 13878 <tr> 13879 <th class="th_name">Property Name</th> 13880 <th class="th_type">Type</th> 13881 <th class="th_description">Description</th> 13882 <th class="th_units">Units</th> 13883 <th class="th_range">Range</th> 13884 <th class="th_tags">Tags</th> 13885 </tr> 13886 </thead> 13887 13888 <tbody> 13889 13890 13891 13892 13893 13894 13895 13896 13897 13898 13899 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 13900 <td class="entry_name 13901 entry_name_deprecated 13902 " rowspan="3"> 13903 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 13904 </td> 13905 <td class="entry_type"> 13906 <span class="entry_type_name">byte</span> 13907 13908 <span class="entry_type_visibility"> [system]</span> 13909 13910 13911 13912 <span class="entry_type_deprecated">[deprecated] </span> 13913 13914 13915 13916 </td> <!-- entry_type --> 13917 13918 <td class="entry_description"> 13919 <p>If set to 1,<wbr/> the camera service does not 13920 scale 'normalized' coordinates with respect to the crop 13921 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 13922 and output (face rectangles).<wbr/></p> 13923 </td> 13924 13925 <td class="entry_units"> 13926 </td> 13927 13928 <td class="entry_range"> 13929 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13930 </td> 13931 13932 <td class="entry_tags"> 13933 </td> 13934 13935 </tr> 13936 <tr class="entries_header"> 13937 <th class="th_details" colspan="5">Details</th> 13938 </tr> 13939 <tr class="entry_cont"> 13940 <td class="entry_details" colspan="5"> 13941 <p>Normalized coordinates refer to those in the 13942 (-1000,<wbr/>1000) range mentioned in the 13943 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 13944 <p>HAL implementations should instead always use and emit 13945 sensor array-relative coordinates for all region data.<wbr/> Does 13946 not need to be listed in static metadata.<wbr/> Support will be 13947 removed in future versions of camera service.<wbr/></p> 13948 </td> 13949 </tr> 13950 13951 13952 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13953 <!-- end of entry --> 13954 13955 13956 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 13957 <td class="entry_name 13958 entry_name_deprecated 13959 " rowspan="3"> 13960 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 13961 </td> 13962 <td class="entry_type"> 13963 <span class="entry_type_name">byte</span> 13964 13965 <span class="entry_type_visibility"> [system]</span> 13966 13967 13968 13969 <span class="entry_type_deprecated">[deprecated] </span> 13970 13971 13972 13973 </td> <!-- entry_type --> 13974 13975 <td class="entry_description"> 13976 <p>If set to 1,<wbr/> then the camera service always 13977 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 13978 trigger.<wbr/></p> 13979 </td> 13980 13981 <td class="entry_units"> 13982 </td> 13983 13984 <td class="entry_range"> 13985 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13986 </td> 13987 13988 <td class="entry_tags"> 13989 </td> 13990 13991 </tr> 13992 <tr class="entries_header"> 13993 <th class="th_details" colspan="5">Details</th> 13994 </tr> 13995 <tr class="entry_cont"> 13996 <td class="entry_details" colspan="5"> 13997 <p>HAL implementations should implement AF trigger 13998 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 13999 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 14000 not need to be listed in static metadata.<wbr/> Support will be 14001 removed in future versions of camera service</p> 14002 </td> 14003 </tr> 14004 14005 14006 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14007 <!-- end of entry --> 14008 14009 14010 <tr class="entry" id="static_android.quirks.useZslFormat"> 14011 <td class="entry_name 14012 entry_name_deprecated 14013 " rowspan="3"> 14014 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 14015 </td> 14016 <td class="entry_type"> 14017 <span class="entry_type_name">byte</span> 14018 14019 <span class="entry_type_visibility"> [system]</span> 14020 14021 14022 14023 <span class="entry_type_deprecated">[deprecated] </span> 14024 14025 14026 14027 </td> <!-- entry_type --> 14028 14029 <td class="entry_description"> 14030 <p>If set to 1,<wbr/> the camera service uses 14031 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 14032 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 14033 shutter lag stream</p> 14034 </td> 14035 14036 <td class="entry_units"> 14037 </td> 14038 14039 <td class="entry_range"> 14040 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14041 </td> 14042 14043 <td class="entry_tags"> 14044 </td> 14045 14046 </tr> 14047 <tr class="entries_header"> 14048 <th class="th_details" colspan="5">Details</th> 14049 </tr> 14050 <tr class="entry_cont"> 14051 <td class="entry_details" colspan="5"> 14052 <p>HAL implementations should use gralloc usage flags 14053 to determine that a stream will be used for 14054 zero-shutter-lag,<wbr/> instead of relying on an explicit 14055 format setting.<wbr/> Does not need to be listed in static 14056 metadata.<wbr/> Support will be removed in future versions of 14057 camera service.<wbr/></p> 14058 </td> 14059 </tr> 14060 14061 14062 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14063 <!-- end of entry --> 14064 14065 14066 <tr class="entry" id="static_android.quirks.usePartialResult"> 14067 <td class="entry_name 14068 entry_name_deprecated 14069 " rowspan="5"> 14070 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 14071 </td> 14072 <td class="entry_type"> 14073 <span class="entry_type_name">byte</span> 14074 14075 <span class="entry_type_visibility"> [hidden]</span> 14076 14077 14078 14079 <span class="entry_type_deprecated">[deprecated] </span> 14080 14081 14082 14083 </td> <!-- entry_type --> 14084 14085 <td class="entry_description"> 14086 <p>If set to 1,<wbr/> the HAL will always split result 14087 metadata for a single capture into multiple buffers,<wbr/> 14088 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 14089 </td> 14090 14091 <td class="entry_units"> 14092 </td> 14093 14094 <td class="entry_range"> 14095 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14096 </td> 14097 14098 <td class="entry_tags"> 14099 </td> 14100 14101 </tr> 14102 <tr class="entries_header"> 14103 <th class="th_details" colspan="5">Details</th> 14104 </tr> 14105 <tr class="entry_cont"> 14106 <td class="entry_details" colspan="5"> 14107 <p>Does not need to be listed in static 14108 metadata.<wbr/> Support for partial results will be reworked in 14109 future versions of camera service.<wbr/> This quirk will stop 14110 working at that point; DO NOT USE without careful 14111 consideration of future support.<wbr/></p> 14112 </td> 14113 </tr> 14114 14115 <tr class="entries_header"> 14116 <th class="th_details" colspan="5">HAL Implementation Details</th> 14117 </tr> 14118 <tr class="entry_cont"> 14119 <td class="entry_details" colspan="5"> 14120 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 14121 for information on how to implement partial results.<wbr/></p> 14122 </td> 14123 </tr> 14124 14125 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14126 <!-- end of entry --> 14127 14128 14129 14130 <!-- end of kind --> 14131 </tbody> 14132 <tr><td colspan="6" class="kind">dynamic</td></tr> 14133 14134 <thead class="entries_header"> 14135 <tr> 14136 <th class="th_name">Property Name</th> 14137 <th class="th_type">Type</th> 14138 <th class="th_description">Description</th> 14139 <th class="th_units">Units</th> 14140 <th class="th_range">Range</th> 14141 <th class="th_tags">Tags</th> 14142 </tr> 14143 </thead> 14144 14145 <tbody> 14146 14147 14148 14149 14150 14151 14152 14153 14154 14155 14156 <tr class="entry" id="dynamic_android.quirks.partialResult"> 14157 <td class="entry_name 14158 entry_name_deprecated 14159 " rowspan="5"> 14160 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 14161 </td> 14162 <td class="entry_type"> 14163 <span class="entry_type_name entry_type_name_enum">byte</span> 14164 14165 <span class="entry_type_visibility"> [hidden as boolean]</span> 14166 14167 14168 14169 <span class="entry_type_deprecated">[deprecated] </span> 14170 14171 14172 <ul class="entry_type_enum"> 14173 <li> 14174 <span class="entry_type_enum_name">FINAL</span> 14175 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 14176 for this capture.<wbr/></p></span> 14177 </li> 14178 <li> 14179 <span class="entry_type_enum_name">PARTIAL</span> 14180 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 14181 capture.<wbr/> More result buffers for this capture will be sent 14182 by the camera device,<wbr/> the last of which will be marked 14183 FINAL.<wbr/></p></span> 14184 </li> 14185 </ul> 14186 14187 </td> <!-- entry_type --> 14188 14189 <td class="entry_description"> 14190 <p>Whether a result given to the framework is the 14191 final one for the capture,<wbr/> or only a partial that contains a 14192 subset of the full set of dynamic metadata 14193 values.<wbr/></p> 14194 </td> 14195 14196 <td class="entry_units"> 14197 </td> 14198 14199 <td class="entry_range"> 14200 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14201 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p> 14202 </td> 14203 14204 <td class="entry_tags"> 14205 </td> 14206 14207 </tr> 14208 <tr class="entries_header"> 14209 <th class="th_details" colspan="5">Details</th> 14210 </tr> 14211 <tr class="entry_cont"> 14212 <td class="entry_details" colspan="5"> 14213 <p>The entries in the result metadata buffers for a 14214 single capture may not overlap,<wbr/> except for this entry.<wbr/> The 14215 FINAL buffers must retain FIFO ordering relative to the 14216 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 14217 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 14218 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 14219 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 14220 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 14221 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 14222 </td> 14223 </tr> 14224 14225 <tr class="entries_header"> 14226 <th class="th_details" colspan="5">HAL Implementation Details</th> 14227 </tr> 14228 <tr class="entry_cont"> 14229 <td class="entry_details" colspan="5"> 14230 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 14231 for information on how to implement partial results.<wbr/></p> 14232 </td> 14233 </tr> 14234 14235 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14236 <!-- end of entry --> 14237 14238 14239 14240 <!-- end of kind --> 14241 </tbody> 14242 14243 <!-- end of section --> 14244 <tr><td colspan="6" id="section_request" class="section">request</td></tr> 14245 14246 14247 <tr><td colspan="6" class="kind">controls</td></tr> 14248 14249 <thead class="entries_header"> 14250 <tr> 14251 <th class="th_name">Property Name</th> 14252 <th class="th_type">Type</th> 14253 <th class="th_description">Description</th> 14254 <th class="th_units">Units</th> 14255 <th class="th_range">Range</th> 14256 <th class="th_tags">Tags</th> 14257 </tr> 14258 </thead> 14259 14260 <tbody> 14261 14262 14263 14264 14265 14266 14267 14268 14269 14270 14271 <tr class="entry" id="controls_android.request.frameCount"> 14272 <td class="entry_name 14273 entry_name_deprecated 14274 " rowspan="1"> 14275 android.<wbr/>request.<wbr/>frame<wbr/>Count 14276 </td> 14277 <td class="entry_type"> 14278 <span class="entry_type_name">int32</span> 14279 14280 <span class="entry_type_visibility"> [system]</span> 14281 14282 14283 14284 <span class="entry_type_deprecated">[deprecated] </span> 14285 14286 14287 14288 </td> <!-- entry_type --> 14289 14290 <td class="entry_description"> 14291 <p>A frame counter set by the framework.<wbr/> Must 14292 be maintained unchanged in output frame.<wbr/> This value monotonically 14293 increases with every new result (that is,<wbr/> each new result has a unique 14294 frameCount value).<wbr/></p> 14295 </td> 14296 14297 <td class="entry_units"> 14298 incrementing integer 14299 </td> 14300 14301 <td class="entry_range"> 14302 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14303 <p>Any int.<wbr/></p> 14304 </td> 14305 14306 <td class="entry_tags"> 14307 </td> 14308 14309 </tr> 14310 14311 14312 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14313 <!-- end of entry --> 14314 14315 14316 <tr class="entry" id="controls_android.request.id"> 14317 <td class="entry_name 14318 " rowspan="1"> 14319 android.<wbr/>request.<wbr/>id 14320 </td> 14321 <td class="entry_type"> 14322 <span class="entry_type_name">int32</span> 14323 14324 <span class="entry_type_visibility"> [hidden]</span> 14325 14326 14327 14328 14329 14330 14331 </td> <!-- entry_type --> 14332 14333 <td class="entry_description"> 14334 <p>An application-specified ID for the current 14335 request.<wbr/> Must be maintained unchanged in output 14336 frame</p> 14337 </td> 14338 14339 <td class="entry_units"> 14340 arbitrary integer assigned by application 14341 </td> 14342 14343 <td class="entry_range"> 14344 <p>Any int</p> 14345 </td> 14346 14347 <td class="entry_tags"> 14348 <ul class="entry_tags"> 14349 <li><a href="#tag_V1">V1</a></li> 14350 </ul> 14351 </td> 14352 14353 </tr> 14354 14355 14356 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14357 <!-- end of entry --> 14358 14359 14360 <tr class="entry" id="controls_android.request.inputStreams"> 14361 <td class="entry_name 14362 entry_name_deprecated 14363 " rowspan="3"> 14364 android.<wbr/>request.<wbr/>input<wbr/>Streams 14365 </td> 14366 <td class="entry_type"> 14367 <span class="entry_type_name">int32</span> 14368 <span class="entry_type_container">x</span> 14369 14370 <span class="entry_type_array"> 14371 n 14372 </span> 14373 <span class="entry_type_visibility"> [system]</span> 14374 14375 14376 14377 <span class="entry_type_deprecated">[deprecated] </span> 14378 14379 14380 14381 </td> <!-- entry_type --> 14382 14383 <td class="entry_description"> 14384 <p>List which camera reprocess stream is used 14385 for the source of reprocessing data.<wbr/></p> 14386 </td> 14387 14388 <td class="entry_units"> 14389 List of camera reprocess stream IDs 14390 </td> 14391 14392 <td class="entry_range"> 14393 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14394 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 14395 </td> 14396 14397 <td class="entry_tags"> 14398 <ul class="entry_tags"> 14399 <li><a href="#tag_HAL2">HAL2</a></li> 14400 </ul> 14401 </td> 14402 14403 </tr> 14404 <tr class="entries_header"> 14405 <th class="th_details" colspan="5">Details</th> 14406 </tr> 14407 <tr class="entry_cont"> 14408 <td class="entry_details" colspan="5"> 14409 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 14410 REPROCESS.<wbr/> Ignored otherwise</p> 14411 </td> 14412 </tr> 14413 14414 14415 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14416 <!-- end of entry --> 14417 14418 14419 <tr class="entry" id="controls_android.request.metadataMode"> 14420 <td class="entry_name 14421 " rowspan="1"> 14422 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 14423 </td> 14424 <td class="entry_type"> 14425 <span class="entry_type_name entry_type_name_enum">byte</span> 14426 14427 <span class="entry_type_visibility"> [system]</span> 14428 14429 14430 14431 14432 14433 <ul class="entry_type_enum"> 14434 <li> 14435 <span class="entry_type_enum_name">NONE</span> 14436 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 14437 for application-bound buffer data.<wbr/> If no 14438 application-bound streams exist,<wbr/> no frame should be 14439 placed in the output frame queue.<wbr/> If such streams 14440 exist,<wbr/> a frame should be placed on the output queue 14441 with null metadata but with the necessary output buffer 14442 information.<wbr/> Timestamp information should still be 14443 included with any output stream buffers</p></span> 14444 </li> 14445 <li> 14446 <span class="entry_type_enum_name">FULL</span> 14447 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 14448 only be produced if they are separately 14449 enabled</p></span> 14450 </li> 14451 </ul> 14452 14453 </td> <!-- entry_type --> 14454 14455 <td class="entry_description"> 14456 <p>How much metadata to produce on 14457 output</p> 14458 </td> 14459 14460 <td class="entry_units"> 14461 </td> 14462 14463 <td class="entry_range"> 14464 </td> 14465 14466 <td class="entry_tags"> 14467 <ul class="entry_tags"> 14468 <li><a href="#tag_FUTURE">FUTURE</a></li> 14469 </ul> 14470 </td> 14471 14472 </tr> 14473 14474 14475 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14476 <!-- end of entry --> 14477 14478 14479 <tr class="entry" id="controls_android.request.outputStreams"> 14480 <td class="entry_name 14481 entry_name_deprecated 14482 " rowspan="3"> 14483 android.<wbr/>request.<wbr/>output<wbr/>Streams 14484 </td> 14485 <td class="entry_type"> 14486 <span class="entry_type_name">int32</span> 14487 <span class="entry_type_container">x</span> 14488 14489 <span class="entry_type_array"> 14490 n 14491 </span> 14492 <span class="entry_type_visibility"> [system]</span> 14493 14494 14495 14496 <span class="entry_type_deprecated">[deprecated] </span> 14497 14498 14499 14500 </td> <!-- entry_type --> 14501 14502 <td class="entry_description"> 14503 <p>Lists which camera output streams image data 14504 from this capture must be sent to</p> 14505 </td> 14506 14507 <td class="entry_units"> 14508 List of camera stream IDs 14509 </td> 14510 14511 <td class="entry_range"> 14512 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14513 <p>List must only include streams that have been 14514 created</p> 14515 </td> 14516 14517 <td class="entry_tags"> 14518 <ul class="entry_tags"> 14519 <li><a href="#tag_HAL2">HAL2</a></li> 14520 </ul> 14521 </td> 14522 14523 </tr> 14524 <tr class="entries_header"> 14525 <th class="th_details" colspan="5">Details</th> 14526 </tr> 14527 <tr class="entry_cont"> 14528 <td class="entry_details" colspan="5"> 14529 <p>If no output streams are listed,<wbr/> then the image 14530 data should simply be discarded.<wbr/> The image data must 14531 still be captured for metadata and statistics production,<wbr/> 14532 and the lens and flash must operate as requested.<wbr/></p> 14533 </td> 14534 </tr> 14535 14536 14537 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14538 <!-- end of entry --> 14539 14540 14541 <tr class="entry" id="controls_android.request.type"> 14542 <td class="entry_name 14543 entry_name_deprecated 14544 " rowspan="1"> 14545 android.<wbr/>request.<wbr/>type 14546 </td> 14547 <td class="entry_type"> 14548 <span class="entry_type_name entry_type_name_enum">byte</span> 14549 14550 <span class="entry_type_visibility"> [system]</span> 14551 14552 14553 14554 <span class="entry_type_deprecated">[deprecated] </span> 14555 14556 14557 <ul class="entry_type_enum"> 14558 <li> 14559 <span class="entry_type_enum_name">CAPTURE</span> 14560 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 14561 and process it according to the 14562 settings</p></span> 14563 </li> 14564 <li> 14565 <span class="entry_type_enum_name">REPROCESS</span> 14566 <span class="entry_type_enum_notes"><p>Process previously captured data; the 14567 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the 14568 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 14569 needed for reprocessing with [RP]</p></span> 14570 </li> 14571 </ul> 14572 14573 </td> <!-- entry_type --> 14574 14575 <td class="entry_description"> 14576 <p>The type of the request; either CAPTURE or 14577 REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p> 14578 </td> 14579 14580 <td class="entry_units"> 14581 </td> 14582 14583 <td class="entry_range"> 14584 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14585 </td> 14586 14587 <td class="entry_tags"> 14588 <ul class="entry_tags"> 14589 <li><a href="#tag_HAL2">HAL2</a></li> 14590 </ul> 14591 </td> 14592 14593 </tr> 14594 14595 14596 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14597 <!-- end of entry --> 14598 14599 14600 14601 <!-- end of kind --> 14602 </tbody> 14603 <tr><td colspan="6" class="kind">static</td></tr> 14604 14605 <thead class="entries_header"> 14606 <tr> 14607 <th class="th_name">Property Name</th> 14608 <th class="th_type">Type</th> 14609 <th class="th_description">Description</th> 14610 <th class="th_units">Units</th> 14611 <th class="th_range">Range</th> 14612 <th class="th_tags">Tags</th> 14613 </tr> 14614 </thead> 14615 14616 <tbody> 14617 14618 14619 14620 14621 14622 14623 14624 14625 14626 14627 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 14628 <td class="entry_name 14629 " rowspan="3"> 14630 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 14631 </td> 14632 <td class="entry_type"> 14633 <span class="entry_type_name">int32</span> 14634 <span class="entry_type_container">x</span> 14635 14636 <span class="entry_type_array"> 14637 3 14638 </span> 14639 <span class="entry_type_visibility"> [hidden]</span> 14640 14641 14642 <span class="entry_type_hwlevel">[legacy] </span> 14643 14644 14645 14646 14647 </td> <!-- entry_type --> 14648 14649 <td class="entry_description"> 14650 <p>The maximum numbers of different types of output streams 14651 that can be configured and used simultaneously by a camera device.<wbr/></p> 14652 </td> 14653 14654 <td class="entry_units"> 14655 </td> 14656 14657 <td class="entry_range"> 14658 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p> 14659 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p> 14660 <p>For processed (but not stalling) format streams,<wbr/> >= 3 14661 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 14662 >= 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> 14663 </td> 14664 14665 <td class="entry_tags"> 14666 <ul class="entry_tags"> 14667 <li><a href="#tag_BC">BC</a></li> 14668 </ul> 14669 </td> 14670 14671 </tr> 14672 <tr class="entries_header"> 14673 <th class="th_details" colspan="5">Details</th> 14674 </tr> 14675 <tr class="entry_cont"> 14676 <td class="entry_details" colspan="5"> 14677 <p>This is a 3 element tuple that contains the max number of output simultaneous 14678 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) 14679 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and 14680 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 14681 number is 3,<wbr/> and max JPEG stream number is 2,<wbr/> then this tuple should be <code>(1,<wbr/> 3,<wbr/> 2)</code>.<wbr/></p> 14682 <p>This lists the upper bound of the number of output streams supported by 14683 the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14684 CPU resources that will consume more power.<wbr/> The image format for an output stream can 14685 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 14686 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized 14687 into the 3 stream types as below:</p> 14688 <ul> 14689 <li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/> 14690 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li> 14691 <li>Raw formats: <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li> 14692 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> 14693 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/> 14694 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or 14695 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li> 14696 </ul> 14697 </td> 14698 </tr> 14699 14700 14701 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14702 <!-- end of entry --> 14703 14704 14705 <tr class="entry" id="static_android.request.maxNumOutputRaw"> 14706 <td class="entry_name 14707 " rowspan="3"> 14708 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw 14709 </td> 14710 <td class="entry_type"> 14711 <span class="entry_type_name">int32</span> 14712 14713 <span class="entry_type_visibility"> [public]</span> 14714 14715 <span class="entry_type_synthetic">[synthetic] </span> 14716 14717 <span class="entry_type_hwlevel">[legacy] </span> 14718 14719 14720 14721 14722 </td> <!-- entry_type --> 14723 14724 <td class="entry_description"> 14725 <p>The maximum numbers of different types of output streams 14726 that can be configured and used simultaneously by a camera device 14727 for any <code>RAW</code> formats.<wbr/></p> 14728 </td> 14729 14730 <td class="entry_units"> 14731 </td> 14732 14733 <td class="entry_range"> 14734 <p>>= 0</p> 14735 </td> 14736 14737 <td class="entry_tags"> 14738 </td> 14739 14740 </tr> 14741 <tr class="entries_header"> 14742 <th class="th_details" colspan="5">Details</th> 14743 </tr> 14744 <tr class="entry_cont"> 14745 <td class="entry_details" colspan="5"> 14746 <p>This value contains the max number of output simultaneous 14747 streams from the raw sensor.<wbr/></p> 14748 <p>This lists the upper bound of the number of output streams supported by 14749 the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14750 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14751 be any <code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p> 14752 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p> 14753 <ul> 14754 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li> 14755 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li> 14756 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li> 14757 </ul> 14758 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY) 14759 never support raw streams.<wbr/></p> 14760 </td> 14761 </tr> 14762 14763 14764 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14765 <!-- end of entry --> 14766 14767 14768 <tr class="entry" id="static_android.request.maxNumOutputProc"> 14769 <td class="entry_name 14770 " rowspan="3"> 14771 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc 14772 </td> 14773 <td class="entry_type"> 14774 <span class="entry_type_name">int32</span> 14775 14776 <span class="entry_type_visibility"> [public]</span> 14777 14778 <span class="entry_type_synthetic">[synthetic] </span> 14779 14780 <span class="entry_type_hwlevel">[legacy] </span> 14781 14782 14783 14784 14785 </td> <!-- entry_type --> 14786 14787 <td class="entry_description"> 14788 <p>The maximum numbers of different types of output streams 14789 that can be configured and used simultaneously by a camera device 14790 for any processed (but not-stalling) formats.<wbr/></p> 14791 </td> 14792 14793 <td class="entry_units"> 14794 </td> 14795 14796 <td class="entry_range"> 14797 <p>>= 3 14798 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 14799 >= 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> 14800 </td> 14801 14802 <td class="entry_tags"> 14803 </td> 14804 14805 </tr> 14806 <tr class="entries_header"> 14807 <th class="th_details" colspan="5">Details</th> 14808 </tr> 14809 <tr class="entry_cont"> 14810 <td class="entry_details" colspan="5"> 14811 <p>This value contains the max number of output simultaneous 14812 streams for any processed (but not-stalling) formats.<wbr/></p> 14813 <p>This lists the upper bound of the number of output streams supported by 14814 the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14815 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14816 be any non-<code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p> 14817 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/> 14818 Typically:</p> 14819 <ul> 14820 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li> 14821 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li> 14822 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li> 14823 <li>Implementation-defined formats,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#isOutputSupportedFor(Class)">StreamConfigurationMap#isOutputSupportedFor(Class)</a></li> 14824 </ul> 14825 <p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a 14826 processed format -- it will return 0 for a non-stalling stream.<wbr/></p> 14827 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p> 14828 </td> 14829 </tr> 14830 14831 14832 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14833 <!-- end of entry --> 14834 14835 14836 <tr class="entry" id="static_android.request.maxNumOutputProcStalling"> 14837 <td class="entry_name 14838 " rowspan="3"> 14839 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling 14840 </td> 14841 <td class="entry_type"> 14842 <span class="entry_type_name">int32</span> 14843 14844 <span class="entry_type_visibility"> [public]</span> 14845 14846 <span class="entry_type_synthetic">[synthetic] </span> 14847 14848 <span class="entry_type_hwlevel">[legacy] </span> 14849 14850 14851 14852 14853 </td> <!-- entry_type --> 14854 14855 <td class="entry_description"> 14856 <p>The maximum numbers of different types of output streams 14857 that can be configured and used simultaneously by a camera device 14858 for any processed (and stalling) formats.<wbr/></p> 14859 </td> 14860 14861 <td class="entry_units"> 14862 </td> 14863 14864 <td class="entry_range"> 14865 <p>>= 1</p> 14866 </td> 14867 14868 <td class="entry_tags"> 14869 </td> 14870 14871 </tr> 14872 <tr class="entries_header"> 14873 <th class="th_details" colspan="5">Details</th> 14874 </tr> 14875 <tr class="entry_cont"> 14876 <td class="entry_details" colspan="5"> 14877 <p>This value contains the max number of output simultaneous 14878 streams for any processed (but not-stalling) formats.<wbr/></p> 14879 <p>This lists the upper bound of the number of output streams supported by 14880 the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14881 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14882 be any non-<code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p> 14883 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations 14884 > 0.<wbr/> Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a 14885 stalling format.<wbr/></p> 14886 <p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a 14887 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p> 14888 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p> 14889 </td> 14890 </tr> 14891 14892 14893 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14894 <!-- end of entry --> 14895 14896 14897 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 14898 <td class="entry_name 14899 entry_name_deprecated 14900 " rowspan="3"> 14901 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 14902 </td> 14903 <td class="entry_type"> 14904 <span class="entry_type_name">int32</span> 14905 <span class="entry_type_container">x</span> 14906 14907 <span class="entry_type_array"> 14908 1 14909 </span> 14910 <span class="entry_type_visibility"> [system]</span> 14911 14912 14913 14914 <span class="entry_type_deprecated">[deprecated] </span> 14915 14916 14917 14918 </td> <!-- entry_type --> 14919 14920 <td class="entry_description"> 14921 <p>How many reprocessing streams of any type 14922 can be allocated at the same time.<wbr/></p> 14923 </td> 14924 14925 <td class="entry_units"> 14926 </td> 14927 14928 <td class="entry_range"> 14929 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14930 <p>>= 0</p> 14931 </td> 14932 14933 <td class="entry_tags"> 14934 <ul class="entry_tags"> 14935 <li><a href="#tag_HAL2">HAL2</a></li> 14936 </ul> 14937 </td> 14938 14939 </tr> 14940 <tr class="entries_header"> 14941 <th class="th_details" colspan="5">Details</th> 14942 </tr> 14943 <tr class="entry_cont"> 14944 <td class="entry_details" colspan="5"> 14945 <p>Only used by HAL2.<wbr/>x.<wbr/></p> 14946 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 14947 </td> 14948 </tr> 14949 14950 14951 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14952 <!-- end of entry --> 14953 14954 14955 <tr class="entry" id="static_android.request.maxNumInputStreams"> 14956 <td class="entry_name 14957 " rowspan="5"> 14958 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 14959 </td> 14960 <td class="entry_type"> 14961 <span class="entry_type_name">int32</span> 14962 14963 <span class="entry_type_visibility"> [public]</span> 14964 14965 14966 <span class="entry_type_hwlevel">[full] </span> 14967 14968 14969 14970 14971 </td> <!-- entry_type --> 14972 14973 <td class="entry_description"> 14974 <p>The maximum numbers of any type of input streams 14975 that can be configured and used simultaneously by a camera device.<wbr/></p> 14976 </td> 14977 14978 <td class="entry_units"> 14979 </td> 14980 14981 <td class="entry_range"> 14982 <p>0 or 1.<wbr/></p> 14983 </td> 14984 14985 <td class="entry_tags"> 14986 <ul class="entry_tags"> 14987 <li><a href="#tag_REPROC">REPROC</a></li> 14988 </ul> 14989 </td> 14990 14991 </tr> 14992 <tr class="entries_header"> 14993 <th class="th_details" colspan="5">Details</th> 14994 </tr> 14995 <tr class="entry_cont"> 14996 <td class="entry_details" colspan="5"> 14997 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 14998 <p>The image format for a input stream can be any supported format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/> When using an 14999 input stream,<wbr/> there must be at least one output stream configured to to receive the 15000 reprocessed images.<wbr/></p> 15001 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/> 15002 only the input buffer will be used to produce these output stream buffers,<wbr/> and a 15003 new sensor image will not be captured.<wbr/></p> 15004 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 15005 stream image format will be PRIVATE,<wbr/> the associated output stream image format 15006 should be JPEG.<wbr/></p> 15007 </td> 15008 </tr> 15009 15010 <tr class="entries_header"> 15011 <th class="th_details" colspan="5">HAL Implementation Details</th> 15012 </tr> 15013 <tr class="entry_cont"> 15014 <td class="entry_details" colspan="5"> 15015 <p>For the reprocessing flow and controls,<wbr/> see 15016 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<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.pipelineMaxDepth"> 15025 <td class="entry_name 15026 " rowspan="5"> 15027 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 15028 </td> 15029 <td class="entry_type"> 15030 <span class="entry_type_name">byte</span> 15031 15032 <span class="entry_type_visibility"> [public]</span> 15033 15034 15035 <span class="entry_type_hwlevel">[legacy] </span> 15036 15037 15038 15039 15040 </td> <!-- entry_type --> 15041 15042 <td class="entry_description"> 15043 <p>Specifies the number of maximum pipeline stages a frame 15044 has to go through from when it's exposed to when it's available 15045 to the framework.<wbr/></p> 15046 </td> 15047 15048 <td class="entry_units"> 15049 </td> 15050 15051 <td class="entry_range"> 15052 </td> 15053 15054 <td class="entry_tags"> 15055 </td> 15056 15057 </tr> 15058 <tr class="entries_header"> 15059 <th class="th_details" colspan="5">Details</th> 15060 </tr> 15061 <tr class="entry_cont"> 15062 <td class="entry_details" colspan="5"> 15063 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 15064 one stage to readout) from the sensor.<wbr/> The ISP then usually adds 15065 its own stages to do custom HW processing.<wbr/> Further stages may be 15066 added by SW processing.<wbr/></p> 15067 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 15068 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 15069 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 15070 the max pipeline depth.<wbr/></p> 15071 <p>A pipeline depth of X stages is equivalent to a pipeline latency of 15072 X frame intervals.<wbr/></p> 15073 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/> 15074 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p> 15075 </td> 15076 </tr> 15077 15078 <tr class="entries_header"> 15079 <th class="th_details" colspan="5">HAL Implementation Details</th> 15080 </tr> 15081 <tr class="entry_cont"> 15082 <td class="entry_details" colspan="5"> 15083 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the 15084 max batch sizes may be larger than 1.<wbr/></p> 15085 </td> 15086 </tr> 15087 15088 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15089 <!-- end of entry --> 15090 15091 15092 <tr class="entry" id="static_android.request.partialResultCount"> 15093 <td class="entry_name 15094 " rowspan="3"> 15095 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 15096 </td> 15097 <td class="entry_type"> 15098 <span class="entry_type_name">int32</span> 15099 15100 <span class="entry_type_visibility"> [public]</span> 15101 15102 15103 15104 15105 15106 15107 </td> <!-- entry_type --> 15108 15109 <td class="entry_description"> 15110 <p>Defines how many sub-components 15111 a result will be composed of.<wbr/></p> 15112 </td> 15113 15114 <td class="entry_units"> 15115 </td> 15116 15117 <td class="entry_range"> 15118 <p>>= 1</p> 15119 </td> 15120 15121 <td class="entry_tags"> 15122 </td> 15123 15124 </tr> 15125 <tr class="entries_header"> 15126 <th class="th_details" colspan="5">Details</th> 15127 </tr> 15128 <tr class="entry_cont"> 15129 <td class="entry_details" colspan="5"> 15130 <p>In order to combat the pipeline latency,<wbr/> partial results 15131 may be delivered to the application layer from the camera device as 15132 soon as they are available.<wbr/></p> 15133 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial 15134 results are not supported,<wbr/> and only the final TotalCaptureResult will 15135 be produced by the camera device.<wbr/></p> 15136 <p>A typical use case for this might be: after requesting an 15137 auto-focus (AF) lock the new AF state might be available 50% 15138 of the way through the pipeline.<wbr/> The camera device could 15139 then immediately dispatch this state via a partial result to 15140 the application,<wbr/> and the rest of the metadata via later 15141 partial results.<wbr/></p> 15142 </td> 15143 </tr> 15144 15145 15146 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15147 <!-- end of entry --> 15148 15149 15150 <tr class="entry" id="static_android.request.availableCapabilities"> 15151 <td class="entry_name 15152 " rowspan="5"> 15153 android.<wbr/>request.<wbr/>available<wbr/>Capabilities 15154 </td> 15155 <td class="entry_type"> 15156 <span class="entry_type_name entry_type_name_enum">byte</span> 15157 <span class="entry_type_container">x</span> 15158 15159 <span class="entry_type_array"> 15160 n 15161 </span> 15162 <span class="entry_type_visibility"> [public]</span> 15163 15164 15165 <span class="entry_type_hwlevel">[legacy] </span> 15166 15167 15168 15169 <ul class="entry_type_enum"> 15170 <li> 15171 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span> 15172 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera 15173 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 15174 supports.<wbr/></p> 15175 <p>This capability is listed by all normal devices,<wbr/> and 15176 indicates that the camera device has a feature set 15177 that's comparable to the baseline requirements for the 15178 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 15179 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this 15180 capability,<wbr/> indicating that they support only depth measurement,<wbr/> 15181 not standard color output.<wbr/></p></span> 15182 </li> 15183 <li> 15184 <span class="entry_type_enum_name">MANUAL_SENSOR</span> 15185 <span class="entry_type_enum_optional">[optional]</span> 15186 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such 15187 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/> 15188 The camera device supports basic manual control of the sensor image 15189 acquisition related stages.<wbr/> This means the following controls are 15190 guaranteed to be supported:</p> 15191 <ul> 15192 <li>Manual frame duration control<ul> 15193 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li> 15194 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 15195 </ul> 15196 </li> 15197 <li>Manual exposure control<ul> 15198 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 15199 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 15200 </ul> 15201 </li> 15202 <li>Manual sensitivity control<ul> 15203 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 15204 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 15205 </ul> 15206 </li> 15207 <li>Manual lens control (if the lens is adjustable)<ul> 15208 <li>android.<wbr/>lens.<wbr/>*</li> 15209 </ul> 15210 </li> 15211 <li>Manual flash control (if a flash unit is present)<ul> 15212 <li>android.<wbr/>flash.<wbr/>*</li> 15213 </ul> 15214 </li> 15215 <li>Manual black level locking<ul> 15216 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> 15217 </ul> 15218 </li> 15219 <li>Auto exposure lock<ul> 15220 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 15221 </ul> 15222 </li> 15223 </ul> 15224 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera 15225 device will accurately report the values applied by 3A in the 15226 result.<wbr/></p> 15227 <p>A given camera device may also support additional manual sensor controls,<wbr/> 15228 but this capability only covers the above list of controls.<wbr/></p> 15229 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will 15230 additionally return a min frame duration that is greater than 15231 zero for each supported size-format combination.<wbr/></p></span> 15232 </li> 15233 <li> 15234 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span> 15235 <span class="entry_type_enum_optional">[optional]</span> 15236 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/> 15237 The camera device supports basic manual control of the image post-processing 15238 stages.<wbr/> This means the following controls are guaranteed to be supported:</p> 15239 <ul> 15240 <li> 15241 <p>Manual tonemap control</p> 15242 <ul> 15243 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li> 15244 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> 15245 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> 15246 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li> 15247 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li> 15248 </ul> 15249 </li> 15250 <li> 15251 <p>Manual white balance control</p> 15252 <ul> 15253 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> 15254 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> 15255 </ul> 15256 </li> 15257 <li>Manual lens shading map control<ul> 15258 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li> 15259 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li> 15260 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> 15261 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> 15262 </ul> 15263 </li> 15264 <li>Manual aberration correction control (if aberration correction is supported)<ul> 15265 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li> 15266 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li> 15267 </ul> 15268 </li> 15269 <li>Auto white balance lock<ul> 15270 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 15271 </ul> 15272 </li> 15273 </ul> 15274 <p>If auto white balance is enabled,<wbr/> then the camera device 15275 will accurately report the values applied by AWB in the result.<wbr/></p> 15276 <p>A given camera device may also support additional post-processing 15277 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span> 15278 </li> 15279 <li> 15280 <span class="entry_type_enum_name">RAW</span> 15281 <span class="entry_type_enum_optional">[optional]</span> 15282 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and 15283 metadata for interpreting them.<wbr/></p> 15284 <p>Devices supporting the RAW capability allow both for 15285 saving DNG files,<wbr/> and for direct application processing of 15286 raw sensor images.<wbr/></p> 15287 <ul> 15288 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li> 15289 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams 15290 will match either the value in 15291 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or 15292 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 15293 <li>All DNG-related optional metadata entries are provided 15294 by the camera device.<wbr/></li> 15295 </ul></span> 15296 </li> 15297 <li> 15298 <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span> 15299 <span class="entry_type_enum_optional">[optional]</span> 15300 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p> 15301 <ul> 15302 <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> 15303 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is supported as an output/<wbr/>input format,<wbr/> 15304 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of 15305 formats returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li> 15306 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 15307 returns non empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li> 15308 <li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">getInputSizes(ImageFormat.<wbr/>PRIVATE)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">getOutputSizes(ImageFormat.<wbr/>PRIVATE)</a></li> 15309 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop 15310 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 15311 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both 15312 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and 15313 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li> 15314 <li>The maximum available resolution for PRIVATE streams 15315 (both input/<wbr/>output) will match the maximum available 15316 resolution of JPEG streams.<wbr/></li> 15317 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 15318 <li>Only below controls are effective for reprocessing requests and 15319 will be present in capture results,<wbr/> other controls in reprocess 15320 requests will be ignored by the camera device.<wbr/><ul> 15321 <li>android.<wbr/>jpeg.<wbr/>*</li> 15322 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 15323 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 15324 </ul> 15325 </li> 15326 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 15327 <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li> 15328 </ul></span> 15329 </li> 15330 <li> 15331 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span> 15332 <span class="entry_type_enum_optional">[optional]</span> 15333 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of 15334 the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows 15335 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p> 15336 <p>The values reported for the following controls are guaranteed to be available 15337 in the CaptureResult,<wbr/> including when 3A is enabled:</p> 15338 <ul> 15339 <li>Exposure control<ul> 15340 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 15341 </ul> 15342 </li> 15343 <li>Sensitivity control<ul> 15344 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 15345 </ul> 15346 </li> 15347 <li>Lens controls (if the lens is adjustable)<ul> 15348 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li> 15349 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li> 15350 </ul> 15351 </li> 15352 </ul> 15353 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will 15354 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span> 15355 </li> 15356 <li> 15357 <span class="entry_type_enum_name">BURST_CAPTURE</span> 15358 <span class="entry_type_enum_optional">[optional]</span> 15359 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per 15360 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set 15361 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames 15362 per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum 15363 resolution of the device,<wbr/> whichever is smaller.<wbr/></p> 15364 <p>More specifically,<wbr/> this means that a size matching the camera device's active array 15365 size is listed as a supported size for the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> format in either <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> or <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/> 15366 with a minimum frame duration for that format and size of either <= 1/<wbr/>20 s,<wbr/> or 15367 <= 1/<wbr/>10 s,<wbr/> respectively; and the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry 15368 lists at least one FPS range where the minimum FPS is >= 1 /<wbr/> minimumFrameDuration 15369 for the maximum-size YUV_<wbr/>420_<wbr/>888 format.<wbr/> If that maximum size is listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/> 15370 then the list of resolutions for YUV_<wbr/>420_<wbr/>888 from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> contains at 15371 least one resolution >= 8 megapixels,<wbr/> with a minimum frame duration of <= 1/<wbr/>20 15372 s.<wbr/></p> 15373 <p>If the device supports the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a>,<wbr/> then those can also be captured at the same rate 15374 as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p> 15375 <p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees 15376 as for the YUV_<wbr/>420_<wbr/>888 format also apply to the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> format.<wbr/></p> 15377 <p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is guaranted to have a value between 0 15378 and 4,<wbr/> inclusive.<wbr/> <a href="#static_android.control.aeLockAvailable">android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available</a> and <a href="#static_android.control.awbLockAvailable">android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available</a> 15379 are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields 15380 consistent image output.<wbr/></p></span> 15381 </li> 15382 <li> 15383 <span class="entry_type_enum_name">YUV_REPROCESSING</span> 15384 <span class="entry_type_enum_optional">[optional]</span> 15385 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as 15386 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the 15387 following:</p> 15388 <ul> 15389 <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> 15390 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> is supported as an output/<wbr/>input format,<wbr/> that is,<wbr/> 15391 YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by 15392 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and 15393 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li> 15394 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 15395 returns non-empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li> 15396 <li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">get<wbr/>Input<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">get<wbr/>Output<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a></li> 15397 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> does not cause a frame rate drop 15398 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 15399 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> will be reprocessable into both 15400 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li> 15401 <li>The maximum available resolution for <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> streams (both input/<wbr/>output) will match the 15402 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li> 15403 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 15404 <li>Only the below controls are effective for reprocessing requests and will be present 15405 in capture results.<wbr/> The reprocess requests are from the original capture results that 15406 are associated with the intermediate <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> 15407 output buffers.<wbr/> All other controls in the reprocess requests will be ignored by the 15408 camera device.<wbr/><ul> 15409 <li>android.<wbr/>jpeg.<wbr/>*</li> 15410 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 15411 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 15412 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li> 15413 </ul> 15414 </li> 15415 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 15416 <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li> 15417 </ul></span> 15418 </li> 15419 <li> 15420 <span class="entry_type_enum_name">DEPTH_OUTPUT</span> 15421 <span class="entry_type_enum_optional">[optional]</span> 15422 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p> 15423 <p>This capability requires the camera device to support the following:</p> 15424 <ul> 15425 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li> 15426 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a> is optionally supported as an 15427 output format.<wbr/></li> 15428 <li>This camera device,<wbr/> and all camera devices with the same <a href="#static_android.lens.facing">android.<wbr/>lens.<wbr/>facing</a>,<wbr/> 15429 will list the following calibration entries in both 15430 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and 15431 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul> 15432 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 15433 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 15434 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 15435 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li> 15436 </ul> 15437 </li> 15438 <li>The <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> entry is listed by this device.<wbr/></li> 15439 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support 15440 normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16 15441 format.<wbr/></li> 15442 </ul> 15443 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/> 15444 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that 15445 should be accounted for (see 15446 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/> 15447 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/> 15448 using a repeating burst is recommended,<wbr/> where a depth-output target is only included 15449 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output 15450 rate,<wbr/> including depth stall time.<wbr/></p></span> 15451 </li> 15452 <li> 15453 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span> 15454 <span class="entry_type_enum_optional">[optional]</span> 15455 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) 15456 use case.<wbr/> The camera device will support high speed capture session created by 15457 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which 15458 only accepts high speed request lists created by 15459 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p> 15460 <p>A camera device can still support high speed video streaming by advertising the high speed 15461 FPS ranges in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a>.<wbr/> For this case,<wbr/> all normal 15462 capture request per frame control and synchronization requirements will apply to 15463 the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes 15464 the capability of a specialized operating mode with many limitations (see below),<wbr/> which 15465 is only targeted at high speed video recording.<wbr/></p> 15466 <p>The supported high speed video sizes and fps ranges are specified in 15467 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/> 15468 To get desired output frame rates,<wbr/> the application is only allowed to select video size 15469 and FPS range combinations provided by 15470 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/> 15471 The fps range can be controlled via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 15472 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 15473 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 15474 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 15475 and post-processing parameters is possible.<wbr/> All other controls operate the 15476 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 15477 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 15478 <ul> 15479 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 15480 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 15481 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 15482 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 15483 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 15484 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 15485 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 15486 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 15487 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 15488 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 15489 </ul> 15490 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 15491 <ul> 15492 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not 15493 work since aeMode is ON)</li> 15494 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 15495 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 15496 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li> 15497 </ul> 15498 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 15499 be lower than what camera can output,<wbr/> depending on the destination Surfaces for 15500 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 15501 the application need check if the video encoder is capable of supporting the 15502 high frame rate for a given video size,<wbr/> or it will end up with lower recording 15503 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame 15504 rate will be bounded by the screen refresh rate.<wbr/></p> 15505 <p>The camera device will only support up to 2 high speed simultaneous output surfaces 15506 (preview and recording surfaces) 15507 in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p> 15508 <ul> 15509 <li>The application creates a camera capture session with no more than 2 surfaces via 15510 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The 15511 targeted surfaces must be preview surface (either from 15512 <a href="https://developer.android.com/reference/android/view/SurfaceView.html">SurfaceView</a> or <a href="https://developer.android.com/reference/android/graphics/SurfaceTexture.html">SurfaceTexture</a>) or 15513 recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or 15514 <a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li> 15515 <li>The stream sizes are selected from the sizes reported by 15516 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li> 15517 <li>The FPS ranges are selected from 15518 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li> 15519 </ul> 15520 <p>When above conditions are NOT satistied,<wbr/> 15521 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> 15522 will fail.<wbr/></p> 15523 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device 15524 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 15525 the application avoids unnecessary maximum target FPS changes as much as possible 15526 during high speed streaming.<wbr/></p></span> 15527 </li> 15528 </ul> 15529 15530 </td> <!-- entry_type --> 15531 15532 <td class="entry_description"> 15533 <p>List of capabilities that this camera device 15534 advertises as fully supporting.<wbr/></p> 15535 </td> 15536 15537 <td class="entry_units"> 15538 </td> 15539 15540 <td class="entry_range"> 15541 </td> 15542 15543 <td class="entry_tags"> 15544 </td> 15545 15546 </tr> 15547 <tr class="entries_header"> 15548 <th class="th_details" colspan="5">Details</th> 15549 </tr> 15550 <tr class="entry_cont"> 15551 <td class="entry_details" colspan="5"> 15552 <p>A capability is a contract that the camera device makes in order 15553 to be able to satisfy one or more use cases.<wbr/></p> 15554 <p>Listing a capability guarantees that the whole set of features 15555 required to support a common use will all be available.<wbr/></p> 15556 <p>Using a subset of the functionality provided by an unsupported 15557 capability may be possible on a specific camera device implementation; 15558 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> 15559 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> 15560 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> 15561 <p>The following capabilities are guaranteed to be available on 15562 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> 15563 <ul> 15564 <li>MANUAL_<wbr/>SENSOR</li> 15565 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li> 15566 </ul> 15567 <p>Other capabilities may be available on either FULL or LIMITED 15568 devices,<wbr/> but the application should query this key to be sure.<wbr/></p> 15569 </td> 15570 </tr> 15571 15572 <tr class="entries_header"> 15573 <th class="th_details" colspan="5">HAL Implementation Details</th> 15574 </tr> 15575 <tr class="entry_cont"> 15576 <td class="entry_details" colspan="5"> 15577 <p>Additional constraint details per-capability will be available 15578 in the Compatibility Test Suite.<wbr/></p> 15579 <p>Minimum baseline requirements required for the 15580 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/> 15581 Instead refer to "BC" tags and the camera CTS tests in the 15582 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p> 15583 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> 15584 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the 15585 request and the result in order to be considered to be 15586 capability-compliant.<wbr/></p> 15587 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 15588 then exposure time must be configurable via the request <em>and</em> 15589 the actual exposure applied must be available via 15590 the result.<wbr/></p> 15591 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the 15592 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p> 15593 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see 15594 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p> 15595 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the 15596 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p> 15597 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the 15598 YUV_<wbr/>REPROCESSING capability must support the 15599 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p> 15600 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys 15601 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> 15602 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> 15603 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in 15604 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT 15605 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available 15606 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace 15607 DEPTH).<wbr/></p> 15608 </td> 15609 </tr> 15610 15611 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15612 <!-- end of entry --> 15613 15614 15615 <tr class="entry" id="static_android.request.availableRequestKeys"> 15616 <td class="entry_name 15617 " rowspan="5"> 15618 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys 15619 </td> 15620 <td class="entry_type"> 15621 <span class="entry_type_name">int32</span> 15622 <span class="entry_type_container">x</span> 15623 15624 <span class="entry_type_array"> 15625 n 15626 </span> 15627 <span class="entry_type_visibility"> [hidden]</span> 15628 15629 15630 <span class="entry_type_hwlevel">[legacy] </span> 15631 15632 15633 15634 15635 </td> <!-- entry_type --> 15636 15637 <td class="entry_description"> 15638 <p>A list of all keys that the camera device has available 15639 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p> 15640 </td> 15641 15642 <td class="entry_units"> 15643 </td> 15644 15645 <td class="entry_range"> 15646 </td> 15647 15648 <td class="entry_tags"> 15649 </td> 15650 15651 </tr> 15652 <tr class="entries_header"> 15653 <th class="th_details" colspan="5">Details</th> 15654 </tr> 15655 <tr class="entry_cont"> 15656 <td class="entry_details" colspan="5"> 15657 <p>Attempting to set a key into a CaptureRequest that is not 15658 listed here will result in an invalid request and will be rejected 15659 by the camera device.<wbr/></p> 15660 <p>This field can be used to query the feature set of a camera device 15661 at a more granular level than capabilities.<wbr/> This is especially 15662 important for optional keys that are not listed under any capability 15663 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<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>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15673 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15674 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15675 vendor extensions API and not against this field.<wbr/></p> 15676 <p>The HAL must not consume any request tags that are not listed either 15677 here or in the vendor tag list.<wbr/></p> 15678 <p>The public camera2 API will always make the vendor tags visible 15679 via 15680 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></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 <tr class="entry" id="static_android.request.availableResultKeys"> 15689 <td class="entry_name 15690 " rowspan="5"> 15691 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys 15692 </td> 15693 <td class="entry_type"> 15694 <span class="entry_type_name">int32</span> 15695 <span class="entry_type_container">x</span> 15696 15697 <span class="entry_type_array"> 15698 n 15699 </span> 15700 <span class="entry_type_visibility"> [hidden]</span> 15701 15702 15703 <span class="entry_type_hwlevel">[legacy] </span> 15704 15705 15706 15707 15708 </td> <!-- entry_type --> 15709 15710 <td class="entry_description"> 15711 <p>A list of all keys that the camera device has available 15712 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p> 15713 </td> 15714 15715 <td class="entry_units"> 15716 </td> 15717 15718 <td class="entry_range"> 15719 </td> 15720 15721 <td class="entry_tags"> 15722 </td> 15723 15724 </tr> 15725 <tr class="entries_header"> 15726 <th class="th_details" colspan="5">Details</th> 15727 </tr> 15728 <tr class="entry_cont"> 15729 <td class="entry_details" colspan="5"> 15730 <p>Attempting to get a key from a CaptureResult that is not 15731 listed here will always return a <code>null</code> value.<wbr/> Getting a key from 15732 a CaptureResult that is listed here will generally never return a <code>null</code> 15733 value.<wbr/></p> 15734 <p>The following keys may return <code>null</code> unless they are enabled:</p> 15735 <ul> 15736 <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> 15737 </ul> 15738 <p>(Those sometimes-null keys will nevertheless be listed here 15739 if they are available.<wbr/>)</p> 15740 <p>This field can be used to query the feature set of a camera device 15741 at a more granular level than capabilities.<wbr/> This is especially 15742 important for optional keys that are not listed under any capability 15743 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 15744 </td> 15745 </tr> 15746 15747 <tr class="entries_header"> 15748 <th class="th_details" colspan="5">HAL Implementation Details</th> 15749 </tr> 15750 <tr class="entry_cont"> 15751 <td class="entry_details" colspan="5"> 15752 <p>Tags listed here must always have an entry in the result metadata,<wbr/> 15753 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 15754 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 15755 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15756 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15757 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15758 vendor extensions API and not against this field.<wbr/></p> 15759 <p>The HAL must not produce any result tags that are not listed either 15760 here or in the vendor tag list.<wbr/></p> 15761 <p>The public camera2 API will always make the vendor tags visible via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p> 15762 </td> 15763 </tr> 15764 15765 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15766 <!-- end of entry --> 15767 15768 15769 <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> 15770 <td class="entry_name 15771 " rowspan="5"> 15772 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys 15773 </td> 15774 <td class="entry_type"> 15775 <span class="entry_type_name">int32</span> 15776 <span class="entry_type_container">x</span> 15777 15778 <span class="entry_type_array"> 15779 n 15780 </span> 15781 <span class="entry_type_visibility"> [hidden]</span> 15782 15783 15784 <span class="entry_type_hwlevel">[legacy] </span> 15785 15786 15787 15788 15789 </td> <!-- entry_type --> 15790 15791 <td class="entry_description"> 15792 <p>A list of all keys that the camera device has available 15793 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> 15794 </td> 15795 15796 <td class="entry_units"> 15797 </td> 15798 15799 <td class="entry_range"> 15800 </td> 15801 15802 <td class="entry_tags"> 15803 </td> 15804 15805 </tr> 15806 <tr class="entries_header"> 15807 <th class="th_details" colspan="5">Details</th> 15808 </tr> 15809 <tr class="entry_cont"> 15810 <td class="entry_details" colspan="5"> 15811 <p>This entry follows the same rules as 15812 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for 15813 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 15814 details.<wbr/></p> 15815 </td> 15816 </tr> 15817 15818 <tr class="entries_header"> 15819 <th class="th_details" colspan="5">HAL Implementation Details</th> 15820 </tr> 15821 <tr class="entry_cont"> 15822 <td class="entry_details" colspan="5"> 15823 <p>Keys listed here must always have an entry in the static info metadata,<wbr/> 15824 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 15825 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 15826 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15827 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15828 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15829 vendor extensions API and not against this field.<wbr/></p> 15830 <p>The HAL must not have any tags in its static info that are not listed 15831 either here or in the vendor tag list.<wbr/></p> 15832 <p>The public camera2 API will always make the vendor tags visible 15833 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p> 15834 </td> 15835 </tr> 15836 15837 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15838 <!-- end of entry --> 15839 15840 15841 15842 <!-- end of kind --> 15843 </tbody> 15844 <tr><td colspan="6" class="kind">dynamic</td></tr> 15845 15846 <thead class="entries_header"> 15847 <tr> 15848 <th class="th_name">Property Name</th> 15849 <th class="th_type">Type</th> 15850 <th class="th_description">Description</th> 15851 <th class="th_units">Units</th> 15852 <th class="th_range">Range</th> 15853 <th class="th_tags">Tags</th> 15854 </tr> 15855 </thead> 15856 15857 <tbody> 15858 15859 15860 15861 15862 15863 15864 15865 15866 15867 15868 <tr class="entry" id="dynamic_android.request.frameCount"> 15869 <td class="entry_name 15870 entry_name_deprecated 15871 " rowspan="3"> 15872 android.<wbr/>request.<wbr/>frame<wbr/>Count 15873 </td> 15874 <td class="entry_type"> 15875 <span class="entry_type_name">int32</span> 15876 15877 <span class="entry_type_visibility"> [hidden]</span> 15878 15879 15880 15881 <span class="entry_type_deprecated">[deprecated] </span> 15882 15883 15884 15885 </td> <!-- entry_type --> 15886 15887 <td class="entry_description"> 15888 <p>A frame counter set by the framework.<wbr/> This value monotonically 15889 increases with every new result (that is,<wbr/> each new result has a unique 15890 frameCount value).<wbr/></p> 15891 </td> 15892 15893 <td class="entry_units"> 15894 count of frames 15895 </td> 15896 15897 <td class="entry_range"> 15898 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15899 <p>> 0</p> 15900 </td> 15901 15902 <td class="entry_tags"> 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>Reset on release()</p> 15912 </td> 15913 </tr> 15914 15915 15916 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15917 <!-- end of entry --> 15918 15919 15920 <tr class="entry" id="dynamic_android.request.id"> 15921 <td class="entry_name 15922 " rowspan="1"> 15923 android.<wbr/>request.<wbr/>id 15924 </td> 15925 <td class="entry_type"> 15926 <span class="entry_type_name">int32</span> 15927 15928 <span class="entry_type_visibility"> [hidden]</span> 15929 15930 15931 15932 15933 15934 15935 </td> <!-- entry_type --> 15936 15937 <td class="entry_description"> 15938 <p>An application-specified ID for the current 15939 request.<wbr/> Must be maintained unchanged in output 15940 frame</p> 15941 </td> 15942 15943 <td class="entry_units"> 15944 arbitrary integer assigned by application 15945 </td> 15946 15947 <td class="entry_range"> 15948 <p>Any int</p> 15949 </td> 15950 15951 <td class="entry_tags"> 15952 <ul class="entry_tags"> 15953 <li><a href="#tag_V1">V1</a></li> 15954 </ul> 15955 </td> 15956 15957 </tr> 15958 15959 15960 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15961 <!-- end of entry --> 15962 15963 15964 <tr class="entry" id="dynamic_android.request.metadataMode"> 15965 <td class="entry_name 15966 " rowspan="1"> 15967 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 15968 </td> 15969 <td class="entry_type"> 15970 <span class="entry_type_name entry_type_name_enum">byte</span> 15971 15972 <span class="entry_type_visibility"> [system]</span> 15973 15974 15975 15976 15977 15978 <ul class="entry_type_enum"> 15979 <li> 15980 <span class="entry_type_enum_name">NONE</span> 15981 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 15982 for application-bound buffer data.<wbr/> If no 15983 application-bound streams exist,<wbr/> no frame should be 15984 placed in the output frame queue.<wbr/> If such streams 15985 exist,<wbr/> a frame should be placed on the output queue 15986 with null metadata but with the necessary output buffer 15987 information.<wbr/> Timestamp information should still be 15988 included with any output stream buffers</p></span> 15989 </li> 15990 <li> 15991 <span class="entry_type_enum_name">FULL</span> 15992 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 15993 only be produced if they are separately 15994 enabled</p></span> 15995 </li> 15996 </ul> 15997 15998 </td> <!-- entry_type --> 15999 16000 <td class="entry_description"> 16001 <p>How much metadata to produce on 16002 output</p> 16003 </td> 16004 16005 <td class="entry_units"> 16006 </td> 16007 16008 <td class="entry_range"> 16009 </td> 16010 16011 <td class="entry_tags"> 16012 <ul class="entry_tags"> 16013 <li><a href="#tag_FUTURE">FUTURE</a></li> 16014 </ul> 16015 </td> 16016 16017 </tr> 16018 16019 16020 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16021 <!-- end of entry --> 16022 16023 16024 <tr class="entry" id="dynamic_android.request.outputStreams"> 16025 <td class="entry_name 16026 entry_name_deprecated 16027 " rowspan="3"> 16028 android.<wbr/>request.<wbr/>output<wbr/>Streams 16029 </td> 16030 <td class="entry_type"> 16031 <span class="entry_type_name">int32</span> 16032 <span class="entry_type_container">x</span> 16033 16034 <span class="entry_type_array"> 16035 n 16036 </span> 16037 <span class="entry_type_visibility"> [system]</span> 16038 16039 16040 16041 <span class="entry_type_deprecated">[deprecated] </span> 16042 16043 16044 16045 </td> <!-- entry_type --> 16046 16047 <td class="entry_description"> 16048 <p>Lists which camera output streams image data 16049 from this capture must be sent to</p> 16050 </td> 16051 16052 <td class="entry_units"> 16053 List of camera stream IDs 16054 </td> 16055 16056 <td class="entry_range"> 16057 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16058 <p>List must only include streams that have been 16059 created</p> 16060 </td> 16061 16062 <td class="entry_tags"> 16063 <ul class="entry_tags"> 16064 <li><a href="#tag_HAL2">HAL2</a></li> 16065 </ul> 16066 </td> 16067 16068 </tr> 16069 <tr class="entries_header"> 16070 <th class="th_details" colspan="5">Details</th> 16071 </tr> 16072 <tr class="entry_cont"> 16073 <td class="entry_details" colspan="5"> 16074 <p>If no output streams are listed,<wbr/> then the image 16075 data should simply be discarded.<wbr/> The image data must 16076 still be captured for metadata and statistics production,<wbr/> 16077 and the lens and flash must operate as requested.<wbr/></p> 16078 </td> 16079 </tr> 16080 16081 16082 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16083 <!-- end of entry --> 16084 16085 16086 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 16087 <td class="entry_name 16088 " rowspan="5"> 16089 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 16090 </td> 16091 <td class="entry_type"> 16092 <span class="entry_type_name">byte</span> 16093 16094 <span class="entry_type_visibility"> [public]</span> 16095 16096 16097 <span class="entry_type_hwlevel">[legacy] </span> 16098 16099 16100 16101 16102 </td> <!-- entry_type --> 16103 16104 <td class="entry_description"> 16105 <p>Specifies the number of pipeline stages the frame went 16106 through from when it was exposed to when the final completed result 16107 was available to the framework.<wbr/></p> 16108 </td> 16109 16110 <td class="entry_units"> 16111 </td> 16112 16113 <td class="entry_range"> 16114 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 16115 </td> 16116 16117 <td class="entry_tags"> 16118 </td> 16119 16120 </tr> 16121 <tr class="entries_header"> 16122 <th class="th_details" colspan="5">Details</th> 16123 </tr> 16124 <tr class="entry_cont"> 16125 <td class="entry_details" colspan="5"> 16126 <p>Depending on what settings are used in the request,<wbr/> and 16127 what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 16128 and some pipeline stages skipped.<wbr/></p> 16129 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 16130 </td> 16131 </tr> 16132 16133 <tr class="entries_header"> 16134 <th class="th_details" colspan="5">HAL Implementation Details</th> 16135 </tr> 16136 <tr class="entry_cont"> 16137 <td class="entry_details" colspan="5"> 16138 <p>This value must always represent the accurate count of how many 16139 pipeline stages were actually used.<wbr/></p> 16140 </td> 16141 </tr> 16142 16143 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16144 <!-- end of entry --> 16145 16146 16147 16148 <!-- end of kind --> 16149 </tbody> 16150 16151 <!-- end of section --> 16152 <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr> 16153 16154 16155 <tr><td colspan="6" class="kind">controls</td></tr> 16156 16157 <thead class="entries_header"> 16158 <tr> 16159 <th class="th_name">Property Name</th> 16160 <th class="th_type">Type</th> 16161 <th class="th_description">Description</th> 16162 <th class="th_units">Units</th> 16163 <th class="th_range">Range</th> 16164 <th class="th_tags">Tags</th> 16165 </tr> 16166 </thead> 16167 16168 <tbody> 16169 16170 16171 16172 16173 16174 16175 16176 16177 16178 16179 <tr class="entry" id="controls_android.scaler.cropRegion"> 16180 <td class="entry_name 16181 " rowspan="5"> 16182 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 16183 </td> 16184 <td class="entry_type"> 16185 <span class="entry_type_name">int32</span> 16186 <span class="entry_type_container">x</span> 16187 16188 <span class="entry_type_array"> 16189 4 16190 </span> 16191 <span class="entry_type_visibility"> [public as rectangle]</span> 16192 16193 16194 <span class="entry_type_hwlevel">[legacy] </span> 16195 16196 16197 16198 16199 </td> <!-- entry_type --> 16200 16201 <td class="entry_description"> 16202 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 16203 </td> 16204 16205 <td class="entry_units"> 16206 Pixel coordinates relative to 16207 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 16208 </td> 16209 16210 <td class="entry_range"> 16211 </td> 16212 16213 <td class="entry_tags"> 16214 <ul class="entry_tags"> 16215 <li><a href="#tag_BC">BC</a></li> 16216 </ul> 16217 </td> 16218 16219 </tr> 16220 <tr class="entries_header"> 16221 <th class="th_details" colspan="5">Details</th> 16222 </tr> 16223 <tr class="entry_cont"> 16224 <td class="entry_details" colspan="5"> 16225 <p>This control can be used to implement digital zoom.<wbr/></p> 16226 <p>The crop region coordinate system is based off 16227 <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 16228 top-left corner of the sensor active array.<wbr/></p> 16229 <p>Output streams use this rectangle to produce their output,<wbr/> 16230 cropping to a smaller region if necessary to maintain the 16231 stream's aspect ratio,<wbr/> then scaling the sensor input to 16232 match the output's configured resolution.<wbr/></p> 16233 <p>The crop region is applied after the RAW to other color 16234 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 16235 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 16236 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 16237 <p>For non-raw streams,<wbr/> any additional per-stream cropping will 16238 be done to maximize the final pixel area of the stream.<wbr/></p> 16239 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect 16240 ratio,<wbr/> then 4:3 streams will use the exact crop 16241 region.<wbr/> 16:9 streams will further crop vertically 16242 (letterbox).<wbr/></p> 16243 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 16244 outputs will crop horizontally (pillarbox),<wbr/> and 16:9 16245 streams will match exactly.<wbr/> These additional crops will 16246 be centered within the crop region.<wbr/></p> 16247 <p>The width and height of the crop region cannot 16248 be set to be smaller than 16249 <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 16250 <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> 16251 <p>The camera device may adjust the crop region to account 16252 for rounding and other hardware requirements; the final 16253 crop region used will be included in the output capture 16254 result.<wbr/></p> 16255 </td> 16256 </tr> 16257 16258 <tr class="entries_header"> 16259 <th class="th_details" colspan="5">HAL Implementation Details</th> 16260 </tr> 16261 <tr class="entry_cont"> 16262 <td class="entry_details" colspan="5"> 16263 <p>The output streams must maintain square pixels at all 16264 times,<wbr/> no matter what the relative aspect ratios of the 16265 crop region and the stream are.<wbr/> Negative values for 16266 corner are allowed for raw output if full pixel array is 16267 larger than active pixel array.<wbr/> Width and height may be 16268 rounded to nearest larger supportable width,<wbr/> especially 16269 for raw output,<wbr/> where only a few fixed scales may be 16270 possible.<wbr/></p> 16271 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 16272 size than active array size,<wbr/> the HAL need follow below cropping rules:</p> 16273 <ul> 16274 <li> 16275 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active 16276 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from 16277 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p> 16278 <ol> 16279 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 16280 cropped pixel area by (tx,<wbr/> ty),<wbr/> 16281 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 16282 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The 16283 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 16284 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 16285 <li>Scale the width and height of requested cropRegion with scaling factor of 16286 sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height 16287 respectively.<wbr/> 16288 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 16289 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 16290 follow the general cropping rule for this new cropRegion and effective active 16291 array size.<wbr/></li> 16292 </ol> 16293 </li> 16294 <li> 16295 <p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> 16296 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 16297 The reported cropRegion may be slightly different with the requested cropRegion since 16298 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 16299 hardware limitations.<wbr/></p> 16300 </li> 16301 </ul> 16302 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 16303 </td> 16304 </tr> 16305 16306 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16307 <!-- end of entry --> 16308 16309 16310 16311 <!-- end of kind --> 16312 </tbody> 16313 <tr><td colspan="6" class="kind">static</td></tr> 16314 16315 <thead class="entries_header"> 16316 <tr> 16317 <th class="th_name">Property Name</th> 16318 <th class="th_type">Type</th> 16319 <th class="th_description">Description</th> 16320 <th class="th_units">Units</th> 16321 <th class="th_range">Range</th> 16322 <th class="th_tags">Tags</th> 16323 </tr> 16324 </thead> 16325 16326 <tbody> 16327 16328 16329 16330 16331 16332 16333 16334 16335 16336 16337 <tr class="entry" id="static_android.scaler.availableFormats"> 16338 <td class="entry_name 16339 entry_name_deprecated 16340 " rowspan="5"> 16341 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 16342 </td> 16343 <td class="entry_type"> 16344 <span class="entry_type_name entry_type_name_enum">int32</span> 16345 <span class="entry_type_container">x</span> 16346 16347 <span class="entry_type_array"> 16348 n 16349 </span> 16350 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 16351 16352 16353 16354 <span class="entry_type_deprecated">[deprecated] </span> 16355 16356 16357 <ul class="entry_type_enum"> 16358 <li> 16359 <span class="entry_type_enum_name">RAW16</span> 16360 <span class="entry_type_enum_optional">[optional]</span> 16361 <span class="entry_type_enum_value">0x20</span> 16362 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image 16363 buffers with 16-bit pixels.<wbr/></p> 16364 <p>Buffers of this format are typically expected to have a 16365 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in 16366 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with 16367 CFAs that are not representable by a format in 16368 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not 16369 use this format.<wbr/></p> 16370 <p>Buffers of this format will also follow the constraints given for 16371 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> 16372 <p>This format is intended to give users access to the full contents 16373 of the buffers coming directly from the image sensor prior to any 16374 cropping or scaling operations,<wbr/> and all coordinate systems for 16375 metadata used for this format are relative to the size of the 16376 active region of the image sensor before any geometric distortion 16377 correction has been applied (i.<wbr/>e.<wbr/> 16378 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>).<wbr/> Supported 16379 dimensions for this format are limited to the full dimensions of 16380 the sensor (e.<wbr/>g.<wbr/> either <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or 16381 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> will be the 16382 only supported output size).<wbr/></p> 16383 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for 16384 the full set of performance guarantees.<wbr/></p></span> 16385 </li> 16386 <li> 16387 <span class="entry_type_enum_name">RAW_OPAQUE</span> 16388 <span class="entry_type_enum_optional">[optional]</span> 16389 <span class="entry_type_enum_value">0x24</span> 16390 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an 16391 image sensor.<wbr/></p> 16392 <p>The actual structure of buffers of this format is 16393 platform-specific,<wbr/> but must follow several constraints:</p> 16394 <ol> 16395 <li>No image post-processing operations may have been applied to 16396 buffers of this type.<wbr/> These buffers contain raw image data coming 16397 directly from the image sensor.<wbr/></li> 16398 <li>If a buffer of this format is passed to the camera device for 16399 reprocessing,<wbr/> the resulting images will be identical to the images 16400 produced if the buffer had come directly from the sensor and was 16401 processed with the same settings.<wbr/></li> 16402 </ol> 16403 <p>The intended use for this format is to allow access to the native 16404 raw format buffers coming directly from the camera sensor without 16405 any additional conversions or decrease in framerate.<wbr/></p> 16406 <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 16407 performance guarantees.<wbr/></p></span> 16408 </li> 16409 <li> 16410 <span class="entry_type_enum_name">YV12</span> 16411 <span class="entry_type_enum_optional">[optional]</span> 16412 <span class="entry_type_enum_value">0x32315659</span> 16413 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 16414 </li> 16415 <li> 16416 <span class="entry_type_enum_name">YCrCb_420_SP</span> 16417 <span class="entry_type_enum_optional">[optional]</span> 16418 <span class="entry_type_enum_value">0x11</span> 16419 <span class="entry_type_enum_notes"><p>NV21</p></span> 16420 </li> 16421 <li> 16422 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span> 16423 <span class="entry_type_enum_value">0x22</span> 16424 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 16425 </li> 16426 <li> 16427 <span class="entry_type_enum_name">YCbCr_420_888</span> 16428 <span class="entry_type_enum_value">0x23</span> 16429 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 16430 </li> 16431 <li> 16432 <span class="entry_type_enum_name">BLOB</span> 16433 <span class="entry_type_enum_value">0x21</span> 16434 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 16435 </li> 16436 </ul> 16437 16438 </td> <!-- entry_type --> 16439 16440 <td class="entry_description"> 16441 <p>The list of image formats that are supported by this 16442 camera device for output streams.<wbr/></p> 16443 </td> 16444 16445 <td class="entry_units"> 16446 </td> 16447 16448 <td class="entry_range"> 16449 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16450 </td> 16451 16452 <td class="entry_tags"> 16453 <ul class="entry_tags"> 16454 <li><a href="#tag_BC">BC</a></li> 16455 </ul> 16456 </td> 16457 16458 </tr> 16459 <tr class="entries_header"> 16460 <th class="th_details" colspan="5">Details</th> 16461 </tr> 16462 <tr class="entry_cont"> 16463 <td class="entry_details" colspan="5"> 16464 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 16465 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 16466 </td> 16467 </tr> 16468 16469 <tr class="entries_header"> 16470 <th class="th_details" colspan="5">HAL Implementation Details</th> 16471 </tr> 16472 <tr class="entry_cont"> 16473 <td class="entry_details" colspan="5"> 16474 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 16475 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 16476 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 16477 gralloc module will select a format based on the usage flags provided 16478 by the camera HAL device and the other endpoint of the stream.<wbr/> It is 16479 usually used by preview and recording streams,<wbr/> where the application doesn't 16480 need access the image data.<wbr/></p> 16481 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 16482 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p> 16483 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 16484 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly 16485 recommended that any information used by the camera device when 16486 processing images is fully expressed by the result metadata 16487 for that image buffer.<wbr/></p> 16488 </td> 16489 </tr> 16490 16491 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16492 <!-- end of entry --> 16493 16494 16495 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 16496 <td class="entry_name 16497 entry_name_deprecated 16498 " rowspan="3"> 16499 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 16500 </td> 16501 <td class="entry_type"> 16502 <span class="entry_type_name">int64</span> 16503 <span class="entry_type_container">x</span> 16504 16505 <span class="entry_type_array"> 16506 n 16507 </span> 16508 <span class="entry_type_visibility"> [hidden]</span> 16509 16510 16511 16512 <span class="entry_type_deprecated">[deprecated] </span> 16513 16514 16515 16516 </td> <!-- entry_type --> 16517 16518 <td class="entry_description"> 16519 <p>The minimum frame duration that is supported 16520 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 16521 </td> 16522 16523 <td class="entry_units"> 16524 Nanoseconds 16525 </td> 16526 16527 <td class="entry_range"> 16528 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16529 <p>TODO: Remove property.<wbr/></p> 16530 </td> 16531 16532 <td class="entry_tags"> 16533 <ul class="entry_tags"> 16534 <li><a href="#tag_BC">BC</a></li> 16535 </ul> 16536 </td> 16537 16538 </tr> 16539 <tr class="entries_header"> 16540 <th class="th_details" colspan="5">Details</th> 16541 </tr> 16542 <tr class="entry_cont"> 16543 <td class="entry_details" colspan="5"> 16544 <p>This corresponds to the minimum steady-state frame duration when only 16545 that JPEG stream is active and captured in a burst,<wbr/> with all 16546 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 16547 <p>When multiple streams are configured,<wbr/> the minimum 16548 frame duration will be >= max(individual stream min 16549 durations)</p> 16550 </td> 16551 </tr> 16552 16553 16554 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16555 <!-- end of entry --> 16556 16557 16558 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 16559 <td class="entry_name 16560 entry_name_deprecated 16561 " rowspan="5"> 16562 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 16563 </td> 16564 <td class="entry_type"> 16565 <span class="entry_type_name">int32</span> 16566 <span class="entry_type_container">x</span> 16567 16568 <span class="entry_type_array"> 16569 n x 2 16570 </span> 16571 <span class="entry_type_visibility"> [hidden as size]</span> 16572 16573 16574 16575 <span class="entry_type_deprecated">[deprecated] </span> 16576 16577 16578 16579 </td> <!-- entry_type --> 16580 16581 <td class="entry_description"> 16582 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 16583 </td> 16584 16585 <td class="entry_units"> 16586 </td> 16587 16588 <td class="entry_range"> 16589 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16590 <p>TODO: Remove property.<wbr/></p> 16591 </td> 16592 16593 <td class="entry_tags"> 16594 <ul class="entry_tags"> 16595 <li><a href="#tag_BC">BC</a></li> 16596 </ul> 16597 </td> 16598 16599 </tr> 16600 <tr class="entries_header"> 16601 <th class="th_details" colspan="5">Details</th> 16602 </tr> 16603 <tr class="entry_cont"> 16604 <td class="entry_details" colspan="5"> 16605 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 16606 sensor maximum resolution (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 16607 </td> 16608 </tr> 16609 16610 <tr class="entries_header"> 16611 <th class="th_details" colspan="5">HAL Implementation Details</th> 16612 </tr> 16613 <tr class="entry_cont"> 16614 <td class="entry_details" colspan="5"> 16615 <p>The HAL must include sensor maximum resolution 16616 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 16617 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 16618 </td> 16619 </tr> 16620 16621 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16622 <!-- end of entry --> 16623 16624 16625 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 16626 <td class="entry_name 16627 " rowspan="3"> 16628 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 16629 </td> 16630 <td class="entry_type"> 16631 <span class="entry_type_name">float</span> 16632 16633 <span class="entry_type_visibility"> [public]</span> 16634 16635 16636 <span class="entry_type_hwlevel">[legacy] </span> 16637 16638 16639 16640 16641 </td> <!-- entry_type --> 16642 16643 <td class="entry_description"> 16644 <p>The maximum ratio between both active area width 16645 and crop region width,<wbr/> and active area height and 16646 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 16647 </td> 16648 16649 <td class="entry_units"> 16650 Zoom scale factor 16651 </td> 16652 16653 <td class="entry_range"> 16654 <p>>=1</p> 16655 </td> 16656 16657 <td class="entry_tags"> 16658 <ul class="entry_tags"> 16659 <li><a href="#tag_BC">BC</a></li> 16660 </ul> 16661 </td> 16662 16663 </tr> 16664 <tr class="entries_header"> 16665 <th class="th_details" colspan="5">Details</th> 16666 </tr> 16667 <tr class="entry_cont"> 16668 <td class="entry_details" colspan="5"> 16669 <p>This represents the maximum amount of zooming possible by 16670 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping 16671 window size.<wbr/></p> 16672 <p>Crop regions that have a width or height that is smaller 16673 than this ratio allows will be rounded up to the minimum 16674 allowed size by the camera device.<wbr/></p> 16675 </td> 16676 </tr> 16677 16678 16679 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16680 <!-- end of entry --> 16681 16682 16683 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 16684 <td class="entry_name 16685 entry_name_deprecated 16686 " rowspan="3"> 16687 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 16688 </td> 16689 <td class="entry_type"> 16690 <span class="entry_type_name">int64</span> 16691 <span class="entry_type_container">x</span> 16692 16693 <span class="entry_type_array"> 16694 n 16695 </span> 16696 <span class="entry_type_visibility"> [hidden]</span> 16697 16698 16699 16700 <span class="entry_type_deprecated">[deprecated] </span> 16701 16702 16703 16704 </td> <!-- entry_type --> 16705 16706 <td class="entry_description"> 16707 <p>For each available processed output size (defined in 16708 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 16709 minimum supportable frame duration for that size.<wbr/></p> 16710 </td> 16711 16712 <td class="entry_units"> 16713 Nanoseconds 16714 </td> 16715 16716 <td class="entry_range"> 16717 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16718 </td> 16719 16720 <td class="entry_tags"> 16721 <ul class="entry_tags"> 16722 <li><a href="#tag_BC">BC</a></li> 16723 </ul> 16724 </td> 16725 16726 </tr> 16727 <tr class="entries_header"> 16728 <th class="th_details" colspan="5">Details</th> 16729 </tr> 16730 <tr class="entry_cont"> 16731 <td class="entry_details" colspan="5"> 16732 <p>This should correspond to the frame duration when only that processed 16733 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 16734 set to FAST.<wbr/></p> 16735 <p>When multiple streams are configured,<wbr/> the minimum frame duration will 16736 be >= max(individual stream min durations).<wbr/></p> 16737 </td> 16738 </tr> 16739 16740 16741 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16742 <!-- end of entry --> 16743 16744 16745 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 16746 <td class="entry_name 16747 entry_name_deprecated 16748 " rowspan="5"> 16749 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 16750 </td> 16751 <td class="entry_type"> 16752 <span class="entry_type_name">int32</span> 16753 <span class="entry_type_container">x</span> 16754 16755 <span class="entry_type_array"> 16756 n x 2 16757 </span> 16758 <span class="entry_type_visibility"> [hidden as size]</span> 16759 16760 16761 16762 <span class="entry_type_deprecated">[deprecated] </span> 16763 16764 16765 16766 </td> <!-- entry_type --> 16767 16768 <td class="entry_description"> 16769 <p>The resolutions available for use with 16770 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 16771 platform opaque YUV/<wbr/>RGB streams to the GPU or video 16772 encoders.<wbr/></p> 16773 </td> 16774 16775 <td class="entry_units"> 16776 </td> 16777 16778 <td class="entry_range"> 16779 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16780 </td> 16781 16782 <td class="entry_tags"> 16783 <ul class="entry_tags"> 16784 <li><a href="#tag_BC">BC</a></li> 16785 </ul> 16786 </td> 16787 16788 </tr> 16789 <tr class="entries_header"> 16790 <th class="th_details" colspan="5">Details</th> 16791 </tr> 16792 <tr class="entry_cont"> 16793 <td class="entry_details" colspan="5"> 16794 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 16795 <p>For a given use case,<wbr/> the actual maximum supported resolution 16796 may be lower than what is listed here,<wbr/> depending on the destination 16797 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 16798 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 16799 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 16800 can provide.<wbr/></p> 16801 <p>Please reference the documentation for the image data destination to 16802 check if it limits the maximum size for image data.<wbr/></p> 16803 </td> 16804 </tr> 16805 16806 <tr class="entries_header"> 16807 <th class="th_details" colspan="5">HAL Implementation Details</th> 16808 </tr> 16809 <tr class="entry_cont"> 16810 <td class="entry_details" colspan="5"> 16811 <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/> 16812 the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> 16813 and each below resolution if it is smaller than or equal to the sensor 16814 maximum resolution (if they are not listed in JPEG sizes already):</p> 16815 <ul> 16816 <li>240p (320 x 240)</li> 16817 <li>480p (640 x 480)</li> 16818 <li>720p (1280 x 720)</li> 16819 <li>1080p (1920 x 1080)</li> 16820 </ul> 16821 <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/> 16822 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 16823 </td> 16824 </tr> 16825 16826 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16827 <!-- end of entry --> 16828 16829 16830 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 16831 <td class="entry_name 16832 entry_name_deprecated 16833 " rowspan="3"> 16834 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 16835 </td> 16836 <td class="entry_type"> 16837 <span class="entry_type_name">int64</span> 16838 <span class="entry_type_container">x</span> 16839 16840 <span class="entry_type_array"> 16841 n 16842 </span> 16843 <span class="entry_type_visibility"> [system]</span> 16844 16845 16846 16847 <span class="entry_type_deprecated">[deprecated] </span> 16848 16849 16850 16851 </td> <!-- entry_type --> 16852 16853 <td class="entry_description"> 16854 <p>For each available raw output size (defined in 16855 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 16856 supportable frame duration for that size.<wbr/></p> 16857 </td> 16858 16859 <td class="entry_units"> 16860 Nanoseconds 16861 </td> 16862 16863 <td class="entry_range"> 16864 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16865 </td> 16866 16867 <td class="entry_tags"> 16868 <ul class="entry_tags"> 16869 <li><a href="#tag_BC">BC</a></li> 16870 </ul> 16871 </td> 16872 16873 </tr> 16874 <tr class="entries_header"> 16875 <th class="th_details" colspan="5">Details</th> 16876 </tr> 16877 <tr class="entry_cont"> 16878 <td class="entry_details" colspan="5"> 16879 <p>Should correspond to the frame duration when only the raw stream is 16880 active.<wbr/></p> 16881 <p>When multiple streams are configured,<wbr/> the minimum 16882 frame duration will be >= max(individual stream min 16883 durations)</p> 16884 </td> 16885 </tr> 16886 16887 16888 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16889 <!-- end of entry --> 16890 16891 16892 <tr class="entry" id="static_android.scaler.availableRawSizes"> 16893 <td class="entry_name 16894 entry_name_deprecated 16895 " rowspan="1"> 16896 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 16897 </td> 16898 <td class="entry_type"> 16899 <span class="entry_type_name">int32</span> 16900 <span class="entry_type_container">x</span> 16901 16902 <span class="entry_type_array"> 16903 n x 2 16904 </span> 16905 <span class="entry_type_visibility"> [system as size]</span> 16906 16907 16908 16909 <span class="entry_type_deprecated">[deprecated] </span> 16910 16911 16912 16913 </td> <!-- entry_type --> 16914 16915 <td class="entry_description"> 16916 <p>The resolutions available for use with raw 16917 sensor output streams,<wbr/> listed as width,<wbr/> 16918 height</p> 16919 </td> 16920 16921 <td class="entry_units"> 16922 </td> 16923 16924 <td class="entry_range"> 16925 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16926 </td> 16927 16928 <td class="entry_tags"> 16929 </td> 16930 16931 </tr> 16932 16933 16934 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16935 <!-- end of entry --> 16936 16937 16938 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> 16939 <td class="entry_name 16940 " rowspan="5"> 16941 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 16942 </td> 16943 <td class="entry_type"> 16944 <span class="entry_type_name">int32</span> 16945 16946 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span> 16947 16948 16949 16950 16951 16952 16953 </td> <!-- entry_type --> 16954 16955 <td class="entry_description"> 16956 <p>The mapping of image formats that are supported by this 16957 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 16958 </td> 16959 16960 <td class="entry_units"> 16961 </td> 16962 16963 <td class="entry_range"> 16964 </td> 16965 16966 <td class="entry_tags"> 16967 <ul class="entry_tags"> 16968 <li><a href="#tag_REPROC">REPROC</a></li> 16969 </ul> 16970 </td> 16971 16972 </tr> 16973 <tr class="entries_header"> 16974 <th class="th_details" colspan="5">Details</th> 16975 </tr> 16976 <tr class="entry_cont"> 16977 <td class="entry_details" colspan="5"> 16978 <p>All camera devices with at least 1 16979 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one 16980 available input format.<wbr/></p> 16981 <p>The camera device will support the following map of formats,<wbr/> 16982 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> 16983 <table> 16984 <thead> 16985 <tr> 16986 <th align="left">Input Format</th> 16987 <th align="left">Output Format</th> 16988 <th align="left">Capability</th> 16989 </tr> 16990 </thead> 16991 <tbody> 16992 <tr> 16993 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 16994 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 16995 <td align="left">PRIVATE_<wbr/>REPROCESSING</td> 16996 </tr> 16997 <tr> 16998 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 16999 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 17000 <td align="left">PRIVATE_<wbr/>REPROCESSING</td> 17001 </tr> 17002 <tr> 17003 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 17004 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17005 <td align="left">YUV_<wbr/>REPROCESSING</td> 17006 </tr> 17007 <tr> 17008 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 17009 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 17010 <td align="left">YUV_<wbr/>REPROCESSING</td> 17011 </tr> 17012 </tbody> 17013 </table> 17014 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A 17015 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a> 17016 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p> 17017 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input 17018 or output will never hurt maximum frame rate (i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">getOutputStallDuration(ImageFormat.<wbr/>PRIVATE,<wbr/> size)</a> is always 0),<wbr/></p> 17019 <p>Attempting to configure an input stream with output streams not 17020 listed as available in this map is not valid.<wbr/></p> 17021 </td> 17022 </tr> 17023 17024 <tr class="entries_header"> 17025 <th class="th_details" colspan="5">HAL Implementation Details</th> 17026 </tr> 17027 <tr class="entry_cont"> 17028 <td class="entry_details" colspan="5"> 17029 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition 17030 of the image format enumerations.<wbr/> The PRIVATE format refers to the 17031 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine 17032 the actual format by using the gralloc usage flags.<wbr/> 17033 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially 17034 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/> 17035 See camera3.<wbr/>h for more details.<wbr/></p> 17036 <p>This value is encoded as a variable-size array-of-arrays.<wbr/> 17037 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where 17038 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another 17039 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> 17040 <p>A code sample to read/<wbr/>write this encoding (with a device that 17041 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 17042 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 17043 <pre><code>//<wbr/> reading 17044 int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 17045 for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { 17046 int32_<wbr/>t format = contents[i++]; 17047 int32_<wbr/>t length = contents[i++]; 17048 int32_<wbr/>t output_<wbr/>formats[length]; 17049 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> 17050 length * sizeof(int32_<wbr/>t)); 17051 i += length; 17052 } 17053 17054 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING) 17055 int32_<wbr/>t[] contents = { 17056 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 17057 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 17058 }; 17059 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> 17060 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); 17061 </code></pre> 17062 <p>If the HAL claims to support any of the capabilities listed in the 17063 above details,<wbr/> then it must also support all the input-output 17064 combinations listed for that capability.<wbr/> It can optionally support 17065 additional formats if it so chooses.<wbr/></p> 17066 </td> 17067 </tr> 17068 17069 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17070 <!-- end of entry --> 17071 17072 17073 <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> 17074 <td class="entry_name 17075 " rowspan="5"> 17076 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations 17077 </td> 17078 <td class="entry_type"> 17079 <span class="entry_type_name entry_type_name_enum">int32</span> 17080 <span class="entry_type_container">x</span> 17081 17082 <span class="entry_type_array"> 17083 n x 4 17084 </span> 17085 <span class="entry_type_visibility"> [hidden as streamConfiguration]</span> 17086 17087 17088 <span class="entry_type_hwlevel">[legacy] </span> 17089 17090 17091 17092 <ul class="entry_type_enum"> 17093 <li> 17094 <span class="entry_type_enum_name">OUTPUT</span> 17095 </li> 17096 <li> 17097 <span class="entry_type_enum_name">INPUT</span> 17098 </li> 17099 </ul> 17100 17101 </td> <!-- entry_type --> 17102 17103 <td class="entry_description"> 17104 <p>The available stream configurations that this 17105 camera device supports 17106 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 17107 </td> 17108 17109 <td class="entry_units"> 17110 </td> 17111 17112 <td class="entry_range"> 17113 </td> 17114 17115 <td class="entry_tags"> 17116 </td> 17117 17118 </tr> 17119 <tr class="entries_header"> 17120 <th class="th_details" colspan="5">Details</th> 17121 </tr> 17122 <tr class="entry_cont"> 17123 <td class="entry_details" colspan="5"> 17124 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> 17125 tuples.<wbr/></p> 17126 <p>For a given use case,<wbr/> the actual maximum supported resolution 17127 may be lower than what is listed here,<wbr/> depending on the destination 17128 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 17129 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 17130 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 17131 can provide.<wbr/></p> 17132 <p>Please reference the documentation for the image data destination to 17133 check if it limits the maximum size for image data.<wbr/></p> 17134 <p>Not all output formats may be supported in a configuration with 17135 an input stream of a particular format.<wbr/> For more details,<wbr/> see 17136 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 17137 <p>The following table describes the minimum required output stream 17138 configurations based on the hardware level 17139 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 17140 <table> 17141 <thead> 17142 <tr> 17143 <th align="center">Format</th> 17144 <th align="center">Size</th> 17145 <th align="center">Hardware Level</th> 17146 <th align="center">Notes</th> 17147 </tr> 17148 </thead> 17149 <tbody> 17150 <tr> 17151 <td align="center">JPEG</td> 17152 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 17153 <td align="center">Any</td> 17154 <td align="center"></td> 17155 </tr> 17156 <tr> 17157 <td align="center">JPEG</td> 17158 <td align="center">1920x1080 (1080p)</td> 17159 <td align="center">Any</td> 17160 <td align="center">if 1080p <= activeArraySize</td> 17161 </tr> 17162 <tr> 17163 <td align="center">JPEG</td> 17164 <td align="center">1280x720 (720)</td> 17165 <td align="center">Any</td> 17166 <td align="center">if 720p <= activeArraySize</td> 17167 </tr> 17168 <tr> 17169 <td align="center">JPEG</td> 17170 <td align="center">640x480 (480p)</td> 17171 <td align="center">Any</td> 17172 <td align="center">if 480p <= activeArraySize</td> 17173 </tr> 17174 <tr> 17175 <td align="center">JPEG</td> 17176 <td align="center">320x240 (240p)</td> 17177 <td align="center">Any</td> 17178 <td align="center">if 240p <= activeArraySize</td> 17179 </tr> 17180 <tr> 17181 <td align="center">YUV_<wbr/>420_<wbr/>888</td> 17182 <td align="center">all output sizes available for JPEG</td> 17183 <td align="center">FULL</td> 17184 <td align="center"></td> 17185 </tr> 17186 <tr> 17187 <td align="center">YUV_<wbr/>420_<wbr/>888</td> 17188 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 17189 <td align="center">LIMITED</td> 17190 <td align="center"></td> 17191 </tr> 17192 <tr> 17193 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 17194 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 17195 <td align="center">Any</td> 17196 <td align="center"></td> 17197 </tr> 17198 </tbody> 17199 </table> 17200 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 17201 mandatory stream configurations on a per-capability basis.<wbr/></p> 17202 </td> 17203 </tr> 17204 17205 <tr class="entries_header"> 17206 <th class="th_details" colspan="5">HAL Implementation Details</th> 17207 </tr> 17208 <tr class="entry_cont"> 17209 <td class="entry_details" colspan="5"> 17210 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 17211 of sensor maximum resolution for JPEG formats (regardless of hardware 17212 level).<wbr/></p> 17213 <p>(The following is a rewording of the above required table):</p> 17214 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 17215 <ul> 17216 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 17217 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 17218 (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/> 17219 it does not have to be included in the supported JPEG sizes.<wbr/></li> 17220 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 17221 the dimensions being a multiple of 16.<wbr/></li> 17222 </ul> 17223 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 17224 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum 17225 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 17226 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 17227 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 17228 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 17229 3264x2448.<wbr/></p> 17230 <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/> 17231 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 17232 here as output streams.<wbr/></p> 17233 <p>It must also include each below resolution if it is smaller than or 17234 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 17235 formats),<wbr/> as output streams:</p> 17236 <ul> 17237 <li>240p (320 x 240)</li> 17238 <li>480p (640 x 480)</li> 17239 <li>720p (1280 x 720)</li> 17240 <li>1080p (1920 x 1080)</li> 17241 </ul> 17242 <p>For LIMITED capability devices 17243 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 17244 the HAL only has to list up to the maximum video size 17245 supported by the device.<wbr/></p> 17246 <p>Regardless of hardware level,<wbr/> every output resolution available for 17247 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 17248 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 17249 <ul> 17250 <li>availableFormats</li> 17251 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 17252 </ul> 17253 </td> 17254 </tr> 17255 17256 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17257 <!-- end of entry --> 17258 17259 17260 <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> 17261 <td class="entry_name 17262 " rowspan="3"> 17263 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations 17264 </td> 17265 <td class="entry_type"> 17266 <span class="entry_type_name">int64</span> 17267 <span class="entry_type_container">x</span> 17268 17269 <span class="entry_type_array"> 17270 4 x n 17271 </span> 17272 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 17273 17274 17275 <span class="entry_type_hwlevel">[legacy] </span> 17276 17277 17278 17279 17280 </td> <!-- entry_type --> 17281 17282 <td class="entry_description"> 17283 <p>This lists the minimum frame duration for each 17284 format/<wbr/>size combination.<wbr/></p> 17285 </td> 17286 17287 <td class="entry_units"> 17288 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 17289 </td> 17290 17291 <td class="entry_range"> 17292 </td> 17293 17294 <td class="entry_tags"> 17295 <ul class="entry_tags"> 17296 <li><a href="#tag_V1">V1</a></li> 17297 </ul> 17298 </td> 17299 17300 </tr> 17301 <tr class="entries_header"> 17302 <th class="th_details" colspan="5">Details</th> 17303 </tr> 17304 <tr class="entry_cont"> 17305 <td class="entry_details" colspan="5"> 17306 <p>This should correspond to the frame duration when only that 17307 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 17308 set to either OFF or FAST.<wbr/></p> 17309 <p>When multiple streams are used in a request,<wbr/> the minimum frame 17310 duration will be max(individual stream min durations).<wbr/></p> 17311 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 17312 is the same regardless of whether the stream is input or output.<wbr/></p> 17313 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 17314 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 17315 calculating the max frame rate.<wbr/></p> 17316 <p>(Keep in sync with 17317 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p> 17318 </td> 17319 </tr> 17320 17321 17322 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17323 <!-- end of entry --> 17324 17325 17326 <tr class="entry" id="static_android.scaler.availableStallDurations"> 17327 <td class="entry_name 17328 " rowspan="5"> 17329 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations 17330 </td> 17331 <td class="entry_type"> 17332 <span class="entry_type_name">int64</span> 17333 <span class="entry_type_container">x</span> 17334 17335 <span class="entry_type_array"> 17336 4 x n 17337 </span> 17338 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 17339 17340 17341 <span class="entry_type_hwlevel">[legacy] </span> 17342 17343 17344 17345 17346 </td> <!-- entry_type --> 17347 17348 <td class="entry_description"> 17349 <p>This lists the maximum stall duration for each 17350 output format/<wbr/>size combination.<wbr/></p> 17351 </td> 17352 17353 <td class="entry_units"> 17354 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 17355 </td> 17356 17357 <td class="entry_range"> 17358 </td> 17359 17360 <td class="entry_tags"> 17361 <ul class="entry_tags"> 17362 <li><a href="#tag_V1">V1</a></li> 17363 </ul> 17364 </td> 17365 17366 </tr> 17367 <tr class="entries_header"> 17368 <th class="th_details" colspan="5">Details</th> 17369 </tr> 17370 <tr class="entry_cont"> 17371 <td class="entry_details" colspan="5"> 17372 <p>A stall duration is how much extra time would get added 17373 to the normal minimum frame duration for a repeating request 17374 that has streams with non-zero stall.<wbr/></p> 17375 <p>For example,<wbr/> consider JPEG captures which have the following 17376 characteristics:</p> 17377 <ul> 17378 <li>JPEG streams act like processed YUV streams in requests for which 17379 they are not included; in requests in which they are directly 17380 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 17381 JPEG stream requires the underlying YUV data to always be ready for 17382 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 17383 frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 17384 <li>The JPEG processor can run concurrently to the rest of the camera 17385 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 17386 </ul> 17387 <p>In other words,<wbr/> using a repeating YUV request would result 17388 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 17389 JPEG request is submitted periodically,<wbr/> the frame rate will stay 17390 at 30 FPS (as long as we wait for the previous JPEG to return each 17391 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 17392 the frame rate will drop from 30 FPS.<wbr/></p> 17393 <p>In general,<wbr/> submitting a new request with a non-0 stall time 17394 stream will <em>not</em> cause a frame rate drop unless there are still 17395 outstanding buffers for that stream from previous requests.<wbr/></p> 17396 <p>Submitting a repeating request with streams (call this <code>S</code>) 17397 is the same as setting the minimum frame duration from 17398 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 17399 the maximum stall duration for <code>S</code>.<wbr/></p> 17400 <p>If interleaving requests with and without a stall duration,<wbr/> 17401 a request will stall by the maximum of the remaining times 17402 for each can-stall stream with outstanding buffers.<wbr/></p> 17403 <p>This means that a stalling request will not have an exposure start 17404 until the stall has completed.<wbr/></p> 17405 <p>This should correspond to the stall duration when only that stream is 17406 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 17407 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 17408 effectively results in an indeterminate stall duration for all 17409 streams in a request (the regular stall calculation rules are 17410 ignored).<wbr/></p> 17411 <p>The following formats may always have a stall duration:</p> 17412 <ul> 17413 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li> 17414 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li> 17415 </ul> 17416 <p>The following formats will never have a stall duration:</p> 17417 <ul> 17418 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></li> 17419 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li> 17420 </ul> 17421 <p>All other formats may or may not have an allowed stall duration on 17422 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 17423 for more details.<wbr/></p> 17424 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about 17425 calculating the max frame rate (absent stalls).<wbr/></p> 17426 <p>(Keep up to date with 17427 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p> 17428 </td> 17429 </tr> 17430 17431 <tr class="entries_header"> 17432 <th class="th_details" colspan="5">HAL Implementation Details</th> 17433 </tr> 17434 <tr class="entry_cont"> 17435 <td class="entry_details" colspan="5"> 17436 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 17437 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE 17438 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> 17439 </td> 17440 </tr> 17441 17442 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17443 <!-- end of entry --> 17444 17445 17446 <tr class="entry" id="static_android.scaler.streamConfigurationMap"> 17447 <td class="entry_name 17448 " rowspan="5"> 17449 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map 17450 </td> 17451 <td class="entry_type"> 17452 <span class="entry_type_name">int32</span> 17453 17454 <span class="entry_type_visibility"> [public as streamConfigurationMap]</span> 17455 17456 <span class="entry_type_synthetic">[synthetic] </span> 17457 17458 <span class="entry_type_hwlevel">[legacy] </span> 17459 17460 17461 17462 17463 </td> <!-- entry_type --> 17464 17465 <td class="entry_description"> 17466 <p>The available stream configurations that this 17467 camera device supports; also includes the minimum frame durations 17468 and the stall durations for each format/<wbr/>size combination.<wbr/></p> 17469 </td> 17470 17471 <td class="entry_units"> 17472 </td> 17473 17474 <td class="entry_range"> 17475 </td> 17476 17477 <td class="entry_tags"> 17478 </td> 17479 17480 </tr> 17481 <tr class="entries_header"> 17482 <th class="th_details" colspan="5">Details</th> 17483 </tr> 17484 <tr class="entry_cont"> 17485 <td class="entry_details" colspan="5"> 17486 <p>All camera devices will support sensor maximum resolution (defined by 17487 <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> 17488 <p>For a given use case,<wbr/> the actual maximum supported resolution 17489 may be lower than what is listed here,<wbr/> depending on the destination 17490 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 17491 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 17492 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 17493 can provide.<wbr/></p> 17494 <p>Please reference the documentation for the image data destination to 17495 check if it limits the maximum size for image data.<wbr/></p> 17496 <p>The following table describes the minimum required output stream 17497 configurations based on the hardware level 17498 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 17499 <table> 17500 <thead> 17501 <tr> 17502 <th align="center">Format</th> 17503 <th align="center">Size</th> 17504 <th align="center">Hardware Level</th> 17505 <th align="center">Notes</th> 17506 </tr> 17507 </thead> 17508 <tbody> 17509 <tr> 17510 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17511 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td> 17512 <td align="center">Any</td> 17513 <td align="center"></td> 17514 </tr> 17515 <tr> 17516 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17517 <td align="center">1920x1080 (1080p)</td> 17518 <td align="center">Any</td> 17519 <td align="center">if 1080p <= activeArraySize</td> 17520 </tr> 17521 <tr> 17522 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17523 <td align="center">1280x720 (720p)</td> 17524 <td align="center">Any</td> 17525 <td align="center">if 720p <= activeArraySize</td> 17526 </tr> 17527 <tr> 17528 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17529 <td align="center">640x480 (480p)</td> 17530 <td align="center">Any</td> 17531 <td align="center">if 480p <= activeArraySize</td> 17532 </tr> 17533 <tr> 17534 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17535 <td align="center">320x240 (240p)</td> 17536 <td align="center">Any</td> 17537 <td align="center">if 240p <= activeArraySize</td> 17538 </tr> 17539 <tr> 17540 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 17541 <td align="center">all output sizes available for JPEG</td> 17542 <td align="center">FULL</td> 17543 <td align="center"></td> 17544 </tr> 17545 <tr> 17546 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 17547 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 17548 <td align="center">LIMITED</td> 17549 <td align="center"></td> 17550 </tr> 17551 <tr> 17552 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 17553 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 17554 <td align="center">Any</td> 17555 <td align="center"></td> 17556 </tr> 17557 </tbody> 17558 </table> 17559 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for additional mandatory 17560 stream configurations on a per-capability basis.<wbr/></p> 17561 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 17562 <ul> 17563 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 17564 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 17565 (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/> 17566 it does not have to be included in the supported JPEG sizes.<wbr/></li> 17567 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 17568 the dimensions being a multiple of 16.<wbr/> 17569 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 17570 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum 17571 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 17572 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 17573 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 17574 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 17575 3264x2448.<wbr/></li> 17576 </ul> 17577 </td> 17578 </tr> 17579 17580 <tr class="entries_header"> 17581 <th class="th_details" colspan="5">HAL Implementation Details</th> 17582 </tr> 17583 <tr class="entry_cont"> 17584 <td class="entry_details" colspan="5"> 17585 <p>Do not set this property directly 17586 (it is synthetic and will not be available at the HAL layer); 17587 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p> 17588 <p>Not all output formats may be supported in a configuration with 17589 an input stream of a particular format.<wbr/> For more details,<wbr/> see 17590 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 17591 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 17592 of sensor maximum resolution for JPEG formats (regardless of hardware 17593 level).<wbr/></p> 17594 <p>(The following is a rewording of the above required table):</p> 17595 <p>The HAL must include sensor maximum resolution (defined by 17596 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 17597 <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/> 17598 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 17599 here as output streams.<wbr/></p> 17600 <p>It must also include each below resolution if it is smaller than or 17601 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 17602 formats),<wbr/> as output streams:</p> 17603 <ul> 17604 <li>240p (320 x 240)</li> 17605 <li>480p (640 x 480)</li> 17606 <li>720p (1280 x 720)</li> 17607 <li>1080p (1920 x 1080)</li> 17608 </ul> 17609 <p>For LIMITED capability devices 17610 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 17611 the HAL only has to list up to the maximum video size 17612 supported by the device.<wbr/></p> 17613 <p>Regardless of hardware level,<wbr/> every output resolution available for 17614 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 17615 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 17616 <ul> 17617 <li>availableFormats</li> 17618 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 17619 </ul> 17620 </td> 17621 </tr> 17622 17623 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17624 <!-- end of entry --> 17625 17626 17627 <tr class="entry" id="static_android.scaler.croppingType"> 17628 <td class="entry_name 17629 " rowspan="3"> 17630 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type 17631 </td> 17632 <td class="entry_type"> 17633 <span class="entry_type_name entry_type_name_enum">byte</span> 17634 17635 <span class="entry_type_visibility"> [public]</span> 17636 17637 17638 <span class="entry_type_hwlevel">[legacy] </span> 17639 17640 17641 17642 <ul class="entry_type_enum"> 17643 <li> 17644 <span class="entry_type_enum_name">CENTER_ONLY</span> 17645 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span> 17646 </li> 17647 <li> 17648 <span class="entry_type_enum_name">FREEFORM</span> 17649 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span> 17650 </li> 17651 </ul> 17652 17653 </td> <!-- entry_type --> 17654 17655 <td class="entry_description"> 17656 <p>The crop type that this camera device supports.<wbr/></p> 17657 </td> 17658 17659 <td class="entry_units"> 17660 </td> 17661 17662 <td class="entry_range"> 17663 </td> 17664 17665 <td class="entry_tags"> 17666 </td> 17667 17668 </tr> 17669 <tr class="entries_header"> 17670 <th class="th_details" colspan="5">Details</th> 17671 </tr> 17672 <tr class="entry_cont"> 17673 <td class="entry_details" colspan="5"> 17674 <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 17675 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the 17676 crop region to the center of the sensor active array (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>) 17677 and keep the crop region width and height unchanged.<wbr/> The camera device will return the 17678 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 17679 <p>Camera devices that support FREEFORM cropping will support any crop region that 17680 is inside of the active array.<wbr/> The camera device will apply the same crop region and 17681 return the final used crop region in capture result metadata <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 17682 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p> 17683 </td> 17684 </tr> 17685 17686 17687 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17688 <!-- end of entry --> 17689 17690 17691 17692 <!-- end of kind --> 17693 </tbody> 17694 <tr><td colspan="6" class="kind">dynamic</td></tr> 17695 17696 <thead class="entries_header"> 17697 <tr> 17698 <th class="th_name">Property Name</th> 17699 <th class="th_type">Type</th> 17700 <th class="th_description">Description</th> 17701 <th class="th_units">Units</th> 17702 <th class="th_range">Range</th> 17703 <th class="th_tags">Tags</th> 17704 </tr> 17705 </thead> 17706 17707 <tbody> 17708 17709 17710 17711 17712 17713 17714 17715 17716 17717 17718 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 17719 <td class="entry_name 17720 " rowspan="5"> 17721 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 17722 </td> 17723 <td class="entry_type"> 17724 <span class="entry_type_name">int32</span> 17725 <span class="entry_type_container">x</span> 17726 17727 <span class="entry_type_array"> 17728 4 17729 </span> 17730 <span class="entry_type_visibility"> [public as rectangle]</span> 17731 17732 17733 <span class="entry_type_hwlevel">[legacy] </span> 17734 17735 17736 17737 17738 </td> <!-- entry_type --> 17739 17740 <td class="entry_description"> 17741 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 17742 </td> 17743 17744 <td class="entry_units"> 17745 Pixel coordinates relative to 17746 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 17747 </td> 17748 17749 <td class="entry_range"> 17750 </td> 17751 17752 <td class="entry_tags"> 17753 <ul class="entry_tags"> 17754 <li><a href="#tag_BC">BC</a></li> 17755 </ul> 17756 </td> 17757 17758 </tr> 17759 <tr class="entries_header"> 17760 <th class="th_details" colspan="5">Details</th> 17761 </tr> 17762 <tr class="entry_cont"> 17763 <td class="entry_details" colspan="5"> 17764 <p>This control can be used to implement digital zoom.<wbr/></p> 17765 <p>The crop region coordinate system is based off 17766 <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 17767 top-left corner of the sensor active array.<wbr/></p> 17768 <p>Output streams use this rectangle to produce their output,<wbr/> 17769 cropping to a smaller region if necessary to maintain the 17770 stream's aspect ratio,<wbr/> then scaling the sensor input to 17771 match the output's configured resolution.<wbr/></p> 17772 <p>The crop region is applied after the RAW to other color 17773 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 17774 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 17775 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 17776 <p>For non-raw streams,<wbr/> any additional per-stream cropping will 17777 be done to maximize the final pixel area of the stream.<wbr/></p> 17778 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect 17779 ratio,<wbr/> then 4:3 streams will use the exact crop 17780 region.<wbr/> 16:9 streams will further crop vertically 17781 (letterbox).<wbr/></p> 17782 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 17783 outputs will crop horizontally (pillarbox),<wbr/> and 16:9 17784 streams will match exactly.<wbr/> These additional crops will 17785 be centered within the crop region.<wbr/></p> 17786 <p>The width and height of the crop region cannot 17787 be set to be smaller than 17788 <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 17789 <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> 17790 <p>The camera device may adjust the crop region to account 17791 for rounding and other hardware requirements; the final 17792 crop region used will be included in the output capture 17793 result.<wbr/></p> 17794 </td> 17795 </tr> 17796 17797 <tr class="entries_header"> 17798 <th class="th_details" colspan="5">HAL Implementation Details</th> 17799 </tr> 17800 <tr class="entry_cont"> 17801 <td class="entry_details" colspan="5"> 17802 <p>The output streams must maintain square pixels at all 17803 times,<wbr/> no matter what the relative aspect ratios of the 17804 crop region and the stream are.<wbr/> Negative values for 17805 corner are allowed for raw output if full pixel array is 17806 larger than active pixel array.<wbr/> Width and height may be 17807 rounded to nearest larger supportable width,<wbr/> especially 17808 for raw output,<wbr/> where only a few fixed scales may be 17809 possible.<wbr/></p> 17810 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 17811 size than active array size,<wbr/> the HAL need follow below cropping rules:</p> 17812 <ul> 17813 <li> 17814 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active 17815 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from 17816 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p> 17817 <ol> 17818 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 17819 cropped pixel area by (tx,<wbr/> ty),<wbr/> 17820 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 17821 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The 17822 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 17823 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 17824 <li>Scale the width and height of requested cropRegion with scaling factor of 17825 sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height 17826 respectively.<wbr/> 17827 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 17828 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 17829 follow the general cropping rule for this new cropRegion and effective active 17830 array size.<wbr/></li> 17831 </ol> 17832 </li> 17833 <li> 17834 <p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> 17835 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 17836 The reported cropRegion may be slightly different with the requested cropRegion since 17837 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 17838 hardware limitations.<wbr/></p> 17839 </li> 17840 </ul> 17841 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 17842 </td> 17843 </tr> 17844 17845 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17846 <!-- end of entry --> 17847 17848 17849 17850 <!-- end of kind --> 17851 </tbody> 17852 17853 <!-- end of section --> 17854 <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr> 17855 17856 17857 <tr><td colspan="6" class="kind">controls</td></tr> 17858 17859 <thead class="entries_header"> 17860 <tr> 17861 <th class="th_name">Property Name</th> 17862 <th class="th_type">Type</th> 17863 <th class="th_description">Description</th> 17864 <th class="th_units">Units</th> 17865 <th class="th_range">Range</th> 17866 <th class="th_tags">Tags</th> 17867 </tr> 17868 </thead> 17869 17870 <tbody> 17871 17872 17873 17874 17875 17876 17877 17878 17879 17880 17881 <tr class="entry" id="controls_android.sensor.exposureTime"> 17882 <td class="entry_name 17883 " rowspan="3"> 17884 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 17885 </td> 17886 <td class="entry_type"> 17887 <span class="entry_type_name">int64</span> 17888 17889 <span class="entry_type_visibility"> [public]</span> 17890 17891 17892 <span class="entry_type_hwlevel">[full] </span> 17893 17894 17895 17896 17897 </td> <!-- entry_type --> 17898 17899 <td class="entry_description"> 17900 <p>Duration each pixel is exposed to 17901 light.<wbr/></p> 17902 </td> 17903 17904 <td class="entry_units"> 17905 Nanoseconds 17906 </td> 17907 17908 <td class="entry_range"> 17909 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 17910 </td> 17911 17912 <td class="entry_tags"> 17913 <ul class="entry_tags"> 17914 <li><a href="#tag_V1">V1</a></li> 17915 </ul> 17916 </td> 17917 17918 </tr> 17919 <tr class="entries_header"> 17920 <th class="th_details" colspan="5">Details</th> 17921 </tr> 17922 <tr class="entry_cont"> 17923 <td class="entry_details" colspan="5"> 17924 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 17925 duration exposed to the nearest possible value (rather than expose longer).<wbr/> 17926 The final exposure time used will be available in the output capture result.<wbr/></p> 17927 <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 17928 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 17929 </td> 17930 </tr> 17931 17932 17933 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17934 <!-- end of entry --> 17935 17936 17937 <tr class="entry" id="controls_android.sensor.frameDuration"> 17938 <td class="entry_name 17939 " rowspan="5"> 17940 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 17941 </td> 17942 <td class="entry_type"> 17943 <span class="entry_type_name">int64</span> 17944 17945 <span class="entry_type_visibility"> [public]</span> 17946 17947 17948 <span class="entry_type_hwlevel">[full] </span> 17949 17950 17951 17952 17953 </td> <!-- entry_type --> 17954 17955 <td class="entry_description"> 17956 <p>Duration from start of frame exposure to 17957 start of next frame exposure.<wbr/></p> 17958 </td> 17959 17960 <td class="entry_units"> 17961 Nanoseconds 17962 </td> 17963 17964 <td class="entry_range"> 17965 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 17966 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 17967 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 17968 </td> 17969 17970 <td class="entry_tags"> 17971 <ul class="entry_tags"> 17972 <li><a href="#tag_V1">V1</a></li> 17973 </ul> 17974 </td> 17975 17976 </tr> 17977 <tr class="entries_header"> 17978 <th class="th_details" colspan="5">Details</th> 17979 </tr> 17980 <tr class="entry_cont"> 17981 <td class="entry_details" colspan="5"> 17982 <p>The maximum frame rate that can be supported by a camera subsystem is 17983 a function of many factors:</p> 17984 <ul> 17985 <li>Requested resolutions of output image streams</li> 17986 <li>Availability of binning /<wbr/> skipping modes on the imager</li> 17987 <li>The bandwidth of the imager interface</li> 17988 <li>The bandwidth of the various ISP processing blocks</li> 17989 </ul> 17990 <p>Since these factors can vary greatly between different ISPs and 17991 sensors,<wbr/> the camera abstraction tries to represent the bandwidth 17992 restrictions with as simple a model as possible.<wbr/></p> 17993 <p>The model presented has the following characteristics:</p> 17994 <ul> 17995 <li>The image sensor is always configured to output the smallest 17996 resolution possible given the application's requested output stream 17997 sizes.<wbr/> The smallest resolution is defined as being at least as large 17998 as the largest requested output stream size; the camera pipeline must 17999 never digitally upsample sensor data when the crop region covers the 18000 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 18001 resolutions are configured,<wbr/> the sensor can provide a higher frame 18002 rate.<wbr/></li> 18003 <li>Since any request may use any or all the currently configured 18004 output streams,<wbr/> the sensor and ISP must be configured to support 18005 scaling a single capture to all the streams at the same time.<wbr/> This 18006 means the camera pipeline must be ready to produce the largest 18007 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 18008 frame rate of a given configured stream set is governed only by the 18009 largest requested stream resolution.<wbr/></li> 18010 <li>Using more than one output stream in a request does not affect the 18011 frame duration.<wbr/></li> 18012 <li>Certain format-streams may need to do additional background processing 18013 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 18014 can run concurrently to the rest of the camera pipeline,<wbr/> but 18015 cannot process more than 1 capture at a time.<wbr/></li> 18016 </ul> 18017 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> 18018 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using 18019 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 18020 These are used to determine the maximum frame rate /<wbr/> minimum frame 18021 duration that is possible for a given stream configuration.<wbr/></p> 18022 <p>Specifically,<wbr/> the application can use the following rules to 18023 determine the minimum frame duration it can request from the camera 18024 device:</p> 18025 <ol> 18026 <li>Let the set of currently configured input/<wbr/>output streams 18027 be called <code>S</code>.<wbr/></li> 18028 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking 18029 it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 18030 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be 18031 called <code>F</code>.<wbr/></li> 18032 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 18033 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 18034 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 18035 </ol> 18036 <p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> 18037 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> 18038 determines the steady state frame rate that the application will get 18039 if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of 18040 request be called <code>Rsimple</code>.<wbr/></p> 18041 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 18042 by a single capture of a new request <code>Rstall</code> (which has at least 18043 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 18044 same minimum frame duration this will not cause a frame rate loss 18045 if all buffers from the previous <code>Rstall</code> have already been 18046 delivered.<wbr/></p> 18047 <p>For more details about stalling,<wbr/> see 18048 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> 18049 <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 18050 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 18051 </td> 18052 </tr> 18053 18054 <tr class="entries_header"> 18055 <th class="th_details" colspan="5">HAL Implementation Details</th> 18056 </tr> 18057 <tr class="entry_cont"> 18058 <td class="entry_details" colspan="5"> 18059 <p>For more details about stalling,<wbr/> see 18060 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 18061 </td> 18062 </tr> 18063 18064 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18065 <!-- end of entry --> 18066 18067 18068 <tr class="entry" id="controls_android.sensor.sensitivity"> 18069 <td class="entry_name 18070 " rowspan="5"> 18071 android.<wbr/>sensor.<wbr/>sensitivity 18072 </td> 18073 <td class="entry_type"> 18074 <span class="entry_type_name">int32</span> 18075 18076 <span class="entry_type_visibility"> [public]</span> 18077 18078 18079 <span class="entry_type_hwlevel">[full] </span> 18080 18081 18082 18083 18084 </td> <!-- entry_type --> 18085 18086 <td class="entry_description"> 18087 <p>The amount of gain applied to sensor data 18088 before processing.<wbr/></p> 18089 </td> 18090 18091 <td class="entry_units"> 18092 ISO arithmetic units 18093 </td> 18094 18095 <td class="entry_range"> 18096 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 18097 </td> 18098 18099 <td class="entry_tags"> 18100 <ul class="entry_tags"> 18101 <li><a href="#tag_V1">V1</a></li> 18102 </ul> 18103 </td> 18104 18105 </tr> 18106 <tr class="entries_header"> 18107 <th class="th_details" colspan="5">Details</th> 18108 </tr> 18109 <tr class="entry_cont"> 18110 <td class="entry_details" colspan="5"> 18111 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 18112 as defined in ISO 12232:2006.<wbr/></p> 18113 <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 18114 if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 18115 is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 18116 <p>If the camera device cannot apply the exact sensitivity 18117 requested,<wbr/> it will reduce the gain to the nearest supported 18118 value.<wbr/> The final sensitivity used will be available in the 18119 output capture result.<wbr/></p> 18120 </td> 18121 </tr> 18122 18123 <tr class="entries_header"> 18124 <th class="th_details" colspan="5">HAL Implementation Details</th> 18125 </tr> 18126 <tr class="entry_cont"> 18127 <td class="entry_details" colspan="5"> 18128 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 18129 </td> 18130 </tr> 18131 18132 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18133 <!-- end of entry --> 18134 18135 18136 <tr class="entry" id="controls_android.sensor.testPatternData"> 18137 <td class="entry_name 18138 " rowspan="5"> 18139 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 18140 </td> 18141 <td class="entry_type"> 18142 <span class="entry_type_name">int32</span> 18143 <span class="entry_type_container">x</span> 18144 18145 <span class="entry_type_array"> 18146 4 18147 </span> 18148 <span class="entry_type_visibility"> [public]</span> 18149 18150 18151 18152 18153 18154 18155 </td> <!-- entry_type --> 18156 18157 <td class="entry_description"> 18158 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 18159 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 18160 </td> 18161 18162 <td class="entry_units"> 18163 </td> 18164 18165 <td class="entry_range"> 18166 </td> 18167 18168 <td class="entry_tags"> 18169 </td> 18170 18171 </tr> 18172 <tr class="entries_header"> 18173 <th class="th_details" colspan="5">Details</th> 18174 </tr> 18175 <tr class="entry_cont"> 18176 <td class="entry_details" colspan="5"> 18177 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 18178 The camera device then uses the most significant X bits 18179 that correspond to how many bits are in its Bayer raw sensor 18180 output.<wbr/></p> 18181 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 18182 10 most significant bits from each color channel.<wbr/></p> 18183 </td> 18184 </tr> 18185 18186 <tr class="entries_header"> 18187 <th class="th_details" colspan="5">HAL Implementation Details</th> 18188 </tr> 18189 <tr class="entry_cont"> 18190 <td class="entry_details" colspan="5"> 18191 18192 </td> 18193 </tr> 18194 18195 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18196 <!-- end of entry --> 18197 18198 18199 <tr class="entry" id="controls_android.sensor.testPatternMode"> 18200 <td class="entry_name 18201 " rowspan="5"> 18202 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 18203 </td> 18204 <td class="entry_type"> 18205 <span class="entry_type_name entry_type_name_enum">int32</span> 18206 18207 <span class="entry_type_visibility"> [public]</span> 18208 18209 18210 18211 18212 18213 <ul class="entry_type_enum"> 18214 <li> 18215 <span class="entry_type_enum_name">OFF</span> 18216 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 18217 device returns captures from the image sensor.<wbr/></p> 18218 <p>This is the default if the key is not set.<wbr/></p></span> 18219 </li> 18220 <li> 18221 <span class="entry_type_enum_name">SOLID_COLOR</span> 18222 <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 18223 respective color channel provided in 18224 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 18225 <p>For example:</p> 18226 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 18227 </code></pre> 18228 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 18229 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 18230 </code></pre> 18231 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels 18232 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 18233 </li> 18234 <li> 18235 <span class="entry_type_enum_name">COLOR_BARS</span> 18236 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 18237 <p>The vertical bars (left-to-right) are as follows:</p> 18238 <ul> 18239 <li>100% white</li> 18240 <li>yellow</li> 18241 <li>cyan</li> 18242 <li>green</li> 18243 <li>magenta</li> 18244 <li>red</li> 18245 <li>blue</li> 18246 <li>black</li> 18247 </ul> 18248 <p>In general the image would look like the following:</p> 18249 <pre><code>W Y C G M R B K 18250 W Y C G M R B K 18251 W Y C G M R B K 18252 W Y C G M R B K 18253 W Y C G M R B K 18254 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18255 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18256 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18257 18258 (B = Blue,<wbr/> K = Black) 18259 </code></pre> 18260 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 18261 When this is not possible,<wbr/> the bar size should be rounded 18262 down to the nearest integer and the pattern can repeat 18263 on the right side.<wbr/></p> 18264 <p>Each bar's height must always take up the full sensor 18265 pixel array height.<wbr/></p> 18266 <p>Each pixel in this test pattern must be set to either 18267 0% intensity or 100% intensity.<wbr/></p></span> 18268 </li> 18269 <li> 18270 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 18271 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 18272 each bar should start at its specified color at the top,<wbr/> 18273 and fade to gray at the bottom.<wbr/></p> 18274 <p>Furthermore each bar is further subdivided into a left and 18275 right half.<wbr/> The left half should have a smooth gradient,<wbr/> 18276 and the right half should have a quantized gradient.<wbr/></p> 18277 <p>In particular,<wbr/> the right half's should consist of blocks of the 18278 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 18279 <p>The least significant bits in the quantized gradient should 18280 be copied from the most significant bits of the smooth gradient.<wbr/></p> 18281 <p>The height of each bar should always be a multiple of 128.<wbr/> 18282 When this is not the case,<wbr/> the pattern should repeat at the bottom 18283 of the image.<wbr/></p></span> 18284 </li> 18285 <li> 18286 <span class="entry_type_enum_name">PN9</span> 18287 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 18288 generated from a PN9 512-bit sequence (typically implemented 18289 in hardware with a linear feedback shift register).<wbr/></p> 18290 <p>The generator should be reset at the beginning of each frame,<wbr/> 18291 and thus each subsequent raw frame with this test pattern should 18292 be exactly the same as the last.<wbr/></p></span> 18293 </li> 18294 <li> 18295 <span class="entry_type_enum_name">CUSTOM1</span> 18296 <span class="entry_type_enum_value">256</span> 18297 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 18298 available only on this camera device are at least this numeric 18299 value.<wbr/></p> 18300 <p>All of the custom test patterns will be static 18301 (that is the raw image must not vary from frame to frame).<wbr/></p></span> 18302 </li> 18303 </ul> 18304 18305 </td> <!-- entry_type --> 18306 18307 <td class="entry_description"> 18308 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 18309 doing a real exposure from the camera.<wbr/></p> 18310 </td> 18311 18312 <td class="entry_units"> 18313 </td> 18314 18315 <td class="entry_range"> 18316 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 18317 </td> 18318 18319 <td class="entry_tags"> 18320 </td> 18321 18322 </tr> 18323 <tr class="entries_header"> 18324 <th class="th_details" colspan="5">Details</th> 18325 </tr> 18326 <tr class="entry_cont"> 18327 <td class="entry_details" colspan="5"> 18328 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 18329 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 18330 work as normal.<wbr/></p> 18331 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 18332 occur (and that the test pattern remain unmodified,<wbr/> since the flash 18333 would not actually affect it).<wbr/></p> 18334 <p>Defaults to OFF.<wbr/></p> 18335 </td> 18336 </tr> 18337 18338 <tr class="entries_header"> 18339 <th class="th_details" colspan="5">HAL Implementation Details</th> 18340 </tr> 18341 <tr class="entry_cont"> 18342 <td class="entry_details" colspan="5"> 18343 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 18344 <p>The HAL may choose to substitute test patterns from the sensor 18345 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 18346 indistinguishable to the ISP whether the data came from the 18347 sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 18348 </td> 18349 </tr> 18350 18351 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18352 <!-- end of entry --> 18353 18354 18355 18356 <!-- end of kind --> 18357 </tbody> 18358 <tr><td colspan="6" class="kind">static</td></tr> 18359 18360 <thead class="entries_header"> 18361 <tr> 18362 <th class="th_name">Property Name</th> 18363 <th class="th_type">Type</th> 18364 <th class="th_description">Description</th> 18365 <th class="th_units">Units</th> 18366 <th class="th_range">Range</th> 18367 <th class="th_tags">Tags</th> 18368 </tr> 18369 </thead> 18370 18371 <tbody> 18372 18373 18374 18375 18376 18377 18378 18379 18380 18381 18382 18383 18384 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 18385 <td class="entry_name 18386 " rowspan="5"> 18387 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 18388 </td> 18389 <td class="entry_type"> 18390 <span class="entry_type_name">int32</span> 18391 <span class="entry_type_container">x</span> 18392 18393 <span class="entry_type_array"> 18394 4 18395 </span> 18396 <span class="entry_type_visibility"> [public as rectangle]</span> 18397 18398 18399 <span class="entry_type_hwlevel">[legacy] </span> 18400 18401 18402 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 18403 18404 18405 </td> <!-- entry_type --> 18406 18407 <td class="entry_description"> 18408 <p>The area of the image sensor which corresponds to active pixels after any geometric 18409 distortion correction has been applied.<wbr/></p> 18410 </td> 18411 18412 <td class="entry_units"> 18413 Pixel coordinates on the image sensor 18414 </td> 18415 18416 <td class="entry_range"> 18417 </td> 18418 18419 <td class="entry_tags"> 18420 <ul class="entry_tags"> 18421 <li><a href="#tag_RAW">RAW</a></li> 18422 </ul> 18423 </td> 18424 18425 </tr> 18426 <tr class="entries_header"> 18427 <th class="th_details" colspan="5">Details</th> 18428 </tr> 18429 <tr class="entry_cont"> 18430 <td class="entry_details" colspan="5"> 18431 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 18432 the region that actually receives light from the scene) after any geometric correction 18433 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the 18434 image output formats aside from the raw formats.<wbr/></p> 18435 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 18436 the full pixel array,<wbr/> and the size of the full pixel array is given by 18437 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 18438 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including 18439 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> is defined relative to the active array rectangle given in 18440 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p> 18441 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may 18442 include black calibration pixels or other inactive regions,<wbr/> and geometric correction 18443 resulting in scaling or cropping may have been applied.<wbr/></p> 18444 </td> 18445 </tr> 18446 18447 <tr class="entries_header"> 18448 <th class="th_details" colspan="5">HAL Implementation Details</th> 18449 </tr> 18450 <tr class="entry_cont"> 18451 <td class="entry_details" colspan="5"> 18452 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 18453 >= <code>(0,<wbr/>0)</code>.<wbr/> 18454 The <code>(width,<wbr/> height)</code> must be <= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p> 18455 </td> 18456 </tr> 18457 18458 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18459 <!-- end of entry --> 18460 18461 18462 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 18463 <td class="entry_name 18464 " rowspan="3"> 18465 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 18466 </td> 18467 <td class="entry_type"> 18468 <span class="entry_type_name">int32</span> 18469 <span class="entry_type_container">x</span> 18470 18471 <span class="entry_type_array"> 18472 2 18473 </span> 18474 <span class="entry_type_visibility"> [public as rangeInt]</span> 18475 18476 18477 <span class="entry_type_hwlevel">[full] </span> 18478 18479 18480 <div class="entry_type_notes">Range of supported sensitivities</div> 18481 18482 18483 </td> <!-- entry_type --> 18484 18485 <td class="entry_description"> 18486 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this 18487 camera device.<wbr/></p> 18488 </td> 18489 18490 <td class="entry_units"> 18491 </td> 18492 18493 <td class="entry_range"> 18494 <p>Min <= 100,<wbr/> Max >= 800</p> 18495 </td> 18496 18497 <td class="entry_tags"> 18498 <ul class="entry_tags"> 18499 <li><a href="#tag_BC">BC</a></li> 18500 <li><a href="#tag_V1">V1</a></li> 18501 </ul> 18502 </td> 18503 18504 </tr> 18505 <tr class="entries_header"> 18506 <th class="th_details" colspan="5">Details</th> 18507 </tr> 18508 <tr class="entry_cont"> 18509 <td class="entry_details" colspan="5"> 18510 <p>The values are the standard ISO sensitivity values,<wbr/> 18511 as defined in ISO 12232:2006.<wbr/></p> 18512 </td> 18513 </tr> 18514 18515 18516 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18517 <!-- end of entry --> 18518 18519 18520 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 18521 <td class="entry_name 18522 " rowspan="1"> 18523 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 18524 </td> 18525 <td class="entry_type"> 18526 <span class="entry_type_name entry_type_name_enum">byte</span> 18527 18528 <span class="entry_type_visibility"> [public]</span> 18529 18530 18531 <span class="entry_type_hwlevel">[full] </span> 18532 18533 18534 18535 <ul class="entry_type_enum"> 18536 <li> 18537 <span class="entry_type_enum_name">RGGB</span> 18538 </li> 18539 <li> 18540 <span class="entry_type_enum_name">GRBG</span> 18541 </li> 18542 <li> 18543 <span class="entry_type_enum_name">GBRG</span> 18544 </li> 18545 <li> 18546 <span class="entry_type_enum_name">BGGR</span> 18547 </li> 18548 <li> 18549 <span class="entry_type_enum_name">RGB</span> 18550 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 18551 values for each pixel,<wbr/> instead of just 1 16-bit value 18552 per pixel.<wbr/></p></span> 18553 </li> 18554 </ul> 18555 18556 </td> <!-- entry_type --> 18557 18558 <td class="entry_description"> 18559 <p>The arrangement of color filters on sensor; 18560 represents the colors in the top-left 2x2 section of 18561 the sensor,<wbr/> in reading order.<wbr/></p> 18562 </td> 18563 18564 <td class="entry_units"> 18565 </td> 18566 18567 <td class="entry_range"> 18568 </td> 18569 18570 <td class="entry_tags"> 18571 <ul class="entry_tags"> 18572 <li><a href="#tag_RAW">RAW</a></li> 18573 </ul> 18574 </td> 18575 18576 </tr> 18577 18578 18579 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18580 <!-- end of entry --> 18581 18582 18583 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 18584 <td class="entry_name 18585 " rowspan="3"> 18586 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 18587 </td> 18588 <td class="entry_type"> 18589 <span class="entry_type_name">int64</span> 18590 <span class="entry_type_container">x</span> 18591 18592 <span class="entry_type_array"> 18593 2 18594 </span> 18595 <span class="entry_type_visibility"> [public as rangeLong]</span> 18596 18597 18598 <span class="entry_type_hwlevel">[full] </span> 18599 18600 18601 <div class="entry_type_notes">nanoseconds</div> 18602 18603 18604 </td> <!-- entry_type --> 18605 18606 <td class="entry_description"> 18607 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported 18608 by this camera device.<wbr/></p> 18609 </td> 18610 18611 <td class="entry_units"> 18612 Nanoseconds 18613 </td> 18614 18615 <td class="entry_range"> 18616 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL 18617 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 18618 the maximum exposure time will be greater than 100ms.<wbr/></p> 18619 </td> 18620 18621 <td class="entry_tags"> 18622 <ul class="entry_tags"> 18623 <li><a href="#tag_V1">V1</a></li> 18624 </ul> 18625 </td> 18626 18627 </tr> 18628 18629 <tr class="entries_header"> 18630 <th class="th_details" colspan="5">HAL Implementation Details</th> 18631 </tr> 18632 <tr class="entry_cont"> 18633 <td class="entry_details" colspan="5"> 18634 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 18635 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least 18636 100ms.<wbr/></p> 18637 </td> 18638 </tr> 18639 18640 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18641 <!-- end of entry --> 18642 18643 18644 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 18645 <td class="entry_name 18646 " rowspan="5"> 18647 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 18648 </td> 18649 <td class="entry_type"> 18650 <span class="entry_type_name">int64</span> 18651 18652 <span class="entry_type_visibility"> [public]</span> 18653 18654 18655 <span class="entry_type_hwlevel">[full] </span> 18656 18657 18658 18659 18660 </td> <!-- entry_type --> 18661 18662 <td class="entry_description"> 18663 <p>The maximum possible frame duration (minimum frame rate) for 18664 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p> 18665 </td> 18666 18667 <td class="entry_units"> 18668 Nanoseconds 18669 </td> 18670 18671 <td class="entry_range"> 18672 <p>For FULL capability devices 18673 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p> 18674 </td> 18675 18676 <td class="entry_tags"> 18677 <ul class="entry_tags"> 18678 <li><a href="#tag_V1">V1</a></li> 18679 </ul> 18680 </td> 18681 18682 </tr> 18683 <tr class="entries_header"> 18684 <th class="th_details" colspan="5">Details</th> 18685 </tr> 18686 <tr class="entry_cont"> 18687 <td class="entry_details" colspan="5"> 18688 <p>Attempting to use frame durations beyond the maximum will result in the frame 18689 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame 18690 durations.<wbr/></p> 18691 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 18692 for the minimum frame duration values.<wbr/></p> 18693 </td> 18694 </tr> 18695 18696 <tr class="entries_header"> 18697 <th class="th_details" colspan="5">HAL Implementation Details</th> 18698 </tr> 18699 <tr class="entry_cont"> 18700 <td class="entry_details" colspan="5"> 18701 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 18702 The maximum of the range SHOULD be at least 18703 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> 18704 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or 18705 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 18706 value (since exposure time overrides frame duration).<wbr/></p> 18707 <p>Available minimum frame durations for JPEG must be no greater 18708 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 18709 minimum frame durations (for that respective size).<wbr/></p> 18710 <p>Since JPEG processing is considered offline and can take longer than 18711 a single uncompressed capture,<wbr/> refer to 18712 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 18713 for details about encoding this scenario.<wbr/></p> 18714 </td> 18715 </tr> 18716 18717 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18718 <!-- end of entry --> 18719 18720 18721 <tr class="entry" id="static_android.sensor.info.physicalSize"> 18722 <td class="entry_name 18723 " rowspan="5"> 18724 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 18725 </td> 18726 <td class="entry_type"> 18727 <span class="entry_type_name">float</span> 18728 <span class="entry_type_container">x</span> 18729 18730 <span class="entry_type_array"> 18731 2 18732 </span> 18733 <span class="entry_type_visibility"> [public as sizeF]</span> 18734 18735 18736 <span class="entry_type_hwlevel">[legacy] </span> 18737 18738 18739 <div class="entry_type_notes">width x height</div> 18740 18741 18742 </td> <!-- entry_type --> 18743 18744 <td class="entry_description"> 18745 <p>The physical dimensions of the full pixel 18746 array.<wbr/></p> 18747 </td> 18748 18749 <td class="entry_units"> 18750 Millimeters 18751 </td> 18752 18753 <td class="entry_range"> 18754 </td> 18755 18756 <td class="entry_tags"> 18757 <ul class="entry_tags"> 18758 <li><a href="#tag_V1">V1</a></li> 18759 <li><a href="#tag_BC">BC</a></li> 18760 </ul> 18761 </td> 18762 18763 </tr> 18764 <tr class="entries_header"> 18765 <th class="th_details" colspan="5">Details</th> 18766 </tr> 18767 <tr class="entry_cont"> 18768 <td class="entry_details" colspan="5"> 18769 <p>This is the physical size of the sensor pixel 18770 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 18771 </td> 18772 </tr> 18773 18774 <tr class="entries_header"> 18775 <th class="th_details" colspan="5">HAL Implementation Details</th> 18776 </tr> 18777 <tr class="entry_cont"> 18778 <td class="entry_details" colspan="5"> 18779 <p>Needed for FOV calculation for old API</p> 18780 </td> 18781 </tr> 18782 18783 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18784 <!-- end of entry --> 18785 18786 18787 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 18788 <td class="entry_name 18789 " rowspan="3"> 18790 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 18791 </td> 18792 <td class="entry_type"> 18793 <span class="entry_type_name">int32</span> 18794 <span class="entry_type_container">x</span> 18795 18796 <span class="entry_type_array"> 18797 2 18798 </span> 18799 <span class="entry_type_visibility"> [public as size]</span> 18800 18801 18802 <span class="entry_type_hwlevel">[legacy] </span> 18803 18804 18805 18806 18807 </td> <!-- entry_type --> 18808 18809 <td class="entry_description"> 18810 <p>Dimensions of the full pixel array,<wbr/> possibly 18811 including black calibration pixels.<wbr/></p> 18812 </td> 18813 18814 <td class="entry_units"> 18815 Pixels 18816 </td> 18817 18818 <td class="entry_range"> 18819 </td> 18820 18821 <td class="entry_tags"> 18822 <ul class="entry_tags"> 18823 <li><a href="#tag_RAW">RAW</a></li> 18824 <li><a href="#tag_BC">BC</a></li> 18825 </ul> 18826 </td> 18827 18828 </tr> 18829 <tr class="entries_header"> 18830 <th class="th_details" colspan="5">Details</th> 18831 </tr> 18832 <tr class="entry_cont"> 18833 <td class="entry_details" colspan="5"> 18834 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers 18835 <a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/> This represents the full pixel dimensions of 18836 the raw buffers produced by this sensor.<wbr/></p> 18837 <p>If a camera device supports raw sensor formats,<wbr/> either this or 18838 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is the maximum dimensions for the raw 18839 output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on 18840 whether or not the image sensor returns buffers containing pixels that are not 18841 part of the active array region for blacklevel calibration or other purposes).<wbr/></p> 18842 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/> 18843 or be otherwise inactive.<wbr/> The <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> key 18844 defines the rectangle of active pixels that will be included in processed image 18845 formats.<wbr/></p> 18846 </td> 18847 </tr> 18848 18849 18850 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18851 <!-- end of entry --> 18852 18853 18854 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 18855 <td class="entry_name 18856 " rowspan="5"> 18857 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 18858 </td> 18859 <td class="entry_type"> 18860 <span class="entry_type_name">int32</span> 18861 18862 <span class="entry_type_visibility"> [public]</span> 18863 18864 18865 18866 18867 18868 18869 </td> <!-- entry_type --> 18870 18871 <td class="entry_description"> 18872 <p>Maximum raw value output by sensor.<wbr/></p> 18873 </td> 18874 18875 <td class="entry_units"> 18876 </td> 18877 18878 <td class="entry_range"> 18879 <p>> 255 (8-bit output)</p> 18880 </td> 18881 18882 <td class="entry_tags"> 18883 <ul class="entry_tags"> 18884 <li><a href="#tag_RAW">RAW</a></li> 18885 </ul> 18886 </td> 18887 18888 </tr> 18889 <tr class="entries_header"> 18890 <th class="th_details" colspan="5">Details</th> 18891 </tr> 18892 <tr class="entry_cont"> 18893 <td class="entry_details" colspan="5"> 18894 <p>This specifies the fully-saturated encoding level for the raw 18895 sample values from the sensor.<wbr/> This is typically caused by the 18896 sensor becoming highly non-linear or clipping.<wbr/> The minimum for 18897 each channel is specified by the offset in the 18898 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p> 18899 <p>The white level is typically determined either by sensor bit depth 18900 (8-14 bits is expected),<wbr/> or by the point where the sensor response 18901 becomes too non-linear to be useful.<wbr/> The default value for this is 18902 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> 18903 </td> 18904 </tr> 18905 18906 <tr class="entries_header"> 18907 <th class="th_details" colspan="5">HAL Implementation Details</th> 18908 </tr> 18909 <tr class="entry_cont"> 18910 <td class="entry_details" colspan="5"> 18911 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 18912 so the value for linear sensors should not be significantly lower 18913 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 18914 </td> 18915 </tr> 18916 18917 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18918 <!-- end of entry --> 18919 18920 18921 <tr class="entry" id="static_android.sensor.info.timestampSource"> 18922 <td class="entry_name 18923 " rowspan="3"> 18924 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source 18925 </td> 18926 <td class="entry_type"> 18927 <span class="entry_type_name entry_type_name_enum">byte</span> 18928 18929 <span class="entry_type_visibility"> [public]</span> 18930 18931 18932 <span class="entry_type_hwlevel">[legacy] </span> 18933 18934 18935 18936 <ul class="entry_type_enum"> 18937 <li> 18938 <span class="entry_type_enum_name">UNKNOWN</span> 18939 <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/> 18940 but can not be compared to timestamps from other subsystems 18941 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different 18942 camera devices in the same system.<wbr/> Timestamps between streams and results for 18943 a single camera instance are comparable,<wbr/> and the timestamps for all buffers 18944 and the result metadata generated by a single capture are identical.<wbr/></p></span> 18945 </li> 18946 <li> 18947 <span class="entry_type_enum_name">REALTIME</span> 18948 <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 18949 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> 18950 and they can be compared to other timestamps using that base.<wbr/></p></span> 18951 </li> 18952 </ul> 18953 18954 </td> <!-- entry_type --> 18955 18956 <td class="entry_description"> 18957 <p>The time base source for sensor capture start timestamps.<wbr/></p> 18958 </td> 18959 18960 <td class="entry_units"> 18961 </td> 18962 18963 <td class="entry_range"> 18964 </td> 18965 18966 <td class="entry_tags"> 18967 <ul class="entry_tags"> 18968 <li><a href="#tag_V1">V1</a></li> 18969 </ul> 18970 </td> 18971 18972 </tr> 18973 <tr class="entries_header"> 18974 <th class="th_details" colspan="5">Details</th> 18975 </tr> 18976 <tr class="entry_cont"> 18977 <td class="entry_details" colspan="5"> 18978 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but 18979 may not based on a time source that can be compared to other system time sources.<wbr/></p> 18980 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they 18981 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p> 18982 </td> 18983 </tr> 18984 18985 18986 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18987 <!-- end of entry --> 18988 18989 18990 <tr class="entry" id="static_android.sensor.info.lensShadingApplied"> 18991 <td class="entry_name 18992 " rowspan="3"> 18993 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied 18994 </td> 18995 <td class="entry_type"> 18996 <span class="entry_type_name entry_type_name_enum">byte</span> 18997 18998 <span class="entry_type_visibility"> [public as boolean]</span> 18999 19000 19001 19002 19003 19004 <ul class="entry_type_enum"> 19005 <li> 19006 <span class="entry_type_enum_name">FALSE</span> 19007 </li> 19008 <li> 19009 <span class="entry_type_enum_name">TRUE</span> 19010 </li> 19011 </ul> 19012 19013 </td> <!-- entry_type --> 19014 19015 <td class="entry_description"> 19016 <p>Whether the RAW images output from this camera device are subject to 19017 lens shading correction.<wbr/></p> 19018 </td> 19019 19020 <td class="entry_units"> 19021 </td> 19022 19023 <td class="entry_range"> 19024 </td> 19025 19026 <td class="entry_tags"> 19027 </td> 19028 19029 </tr> 19030 <tr class="entries_header"> 19031 <th class="th_details" colspan="5">Details</th> 19032 </tr> 19033 <tr class="entry_cont"> 19034 <td class="entry_details" colspan="5"> 19035 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will 19036 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will 19037 not be adjusted for lens shading correction.<wbr/> 19038 See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a list of RAW image formats.<wbr/></p> 19039 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/> 19040 Devices with RAW capability will always report this information in this key.<wbr/></p> 19041 </td> 19042 </tr> 19043 19044 19045 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19046 <!-- end of entry --> 19047 19048 19049 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize"> 19050 <td class="entry_name 19051 " rowspan="5"> 19052 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 19053 </td> 19054 <td class="entry_type"> 19055 <span class="entry_type_name">int32</span> 19056 <span class="entry_type_container">x</span> 19057 19058 <span class="entry_type_array"> 19059 4 19060 </span> 19061 <span class="entry_type_visibility"> [public as rectangle]</span> 19062 19063 19064 <span class="entry_type_hwlevel">[legacy] </span> 19065 19066 19067 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 19068 19069 19070 </td> <!-- entry_type --> 19071 19072 <td class="entry_description"> 19073 <p>The area of the image sensor which corresponds to active pixels prior to the 19074 application of any geometric distortion correction.<wbr/></p> 19075 </td> 19076 19077 <td class="entry_units"> 19078 Pixel coordinates on the image sensor 19079 </td> 19080 19081 <td class="entry_range"> 19082 </td> 19083 19084 <td class="entry_tags"> 19085 <ul class="entry_tags"> 19086 <li><a href="#tag_RAW">RAW</a></li> 19087 </ul> 19088 </td> 19089 19090 </tr> 19091 <tr class="entries_header"> 19092 <th class="th_details" colspan="5">Details</th> 19093 </tr> 19094 <tr class="entry_cont"> 19095 <td class="entry_details" colspan="5"> 19096 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 19097 the region that actually receives light from the scene) before any geometric correction 19098 has been applied,<wbr/> and should be treated as the active region rectangle for any of the 19099 raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading 19100 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as 19101 the origin,<wbr/> (0,<wbr/>0).<wbr/></p> 19102 <p>The size of this region determines the maximum field of view and the maximum number of 19103 pixels that an image from this sensor can contain,<wbr/> prior to the application of 19104 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a 19105 post-distortion-corrected image is given by the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> 19106 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image 19107 can be calculated by applying the geometric distortion correction fields to this 19108 rectangle,<wbr/> and cropping to the rectangle given in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19109 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the 19110 dimensions in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> given the position of a pixel,<wbr/> 19111 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in 19112 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p> 19113 <ol> 19114 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in 19115 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> otherwise this pixel is considered 19116 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li> 19117 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/> 19118 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw 19119 buffers is defined relative to the top,<wbr/> left of the 19120 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> rectangle.<wbr/></li> 19121 <li>If the resulting corrected pixel coordinate is within the region given in 19122 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> then the position of this pixel in the 19123 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/> 19124 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li> 19125 </ol> 19126 <p>Thus,<wbr/> for pixel x',<wbr/>y' = (25,<wbr/> 25) on a sensor where <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> 19127 is (100,<wbr/>100),<wbr/> <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is (10,<wbr/> 10,<wbr/> 100,<wbr/> 100),<wbr/> 19128 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> is (20,<wbr/> 20,<wbr/> 80,<wbr/> 80),<wbr/> and the geometric distortion 19129 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in 19130 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer 19131 with dimensions given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>,<wbr/> and would be (5,<wbr/> 5) 19132 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in 19133 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19134 <p>The currently supported fields that correct for geometric distortion are:</p> 19135 <ol> 19136 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li> 19137 </ol> 19138 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same 19139 as the post-distortion-corrected rectangle given in 19140 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19141 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 19142 the full pixel array,<wbr/> and the size of the full pixel array is given by 19143 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19144 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the 19145 full array may include black calibration pixels or other inactive regions.<wbr/></p> 19146 </td> 19147 </tr> 19148 19149 <tr class="entries_header"> 19150 <th class="th_details" colspan="5">HAL Implementation Details</th> 19151 </tr> 19152 <tr class="entry_cont"> 19153 <td class="entry_details" colspan="5"> 19154 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 19155 >= <code>(0,<wbr/>0)</code>.<wbr/> 19156 The <code>(width,<wbr/> height)</code> must be <= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p> 19157 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is 19158 the same as the post-correction active array region given in 19159 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19160 </td> 19161 </tr> 19162 19163 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19164 <!-- end of entry --> 19165 19166 19167 19168 19169 19170 <tr class="entry" id="static_android.sensor.referenceIlluminant1"> 19171 <td class="entry_name 19172 " rowspan="5"> 19173 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 19174 </td> 19175 <td class="entry_type"> 19176 <span class="entry_type_name entry_type_name_enum">byte</span> 19177 19178 <span class="entry_type_visibility"> [public]</span> 19179 19180 19181 19182 19183 19184 <ul class="entry_type_enum"> 19185 <li> 19186 <span class="entry_type_enum_name">DAYLIGHT</span> 19187 <span class="entry_type_enum_value">1</span> 19188 </li> 19189 <li> 19190 <span class="entry_type_enum_name">FLUORESCENT</span> 19191 <span class="entry_type_enum_value">2</span> 19192 </li> 19193 <li> 19194 <span class="entry_type_enum_name">TUNGSTEN</span> 19195 <span class="entry_type_enum_value">3</span> 19196 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 19197 </li> 19198 <li> 19199 <span class="entry_type_enum_name">FLASH</span> 19200 <span class="entry_type_enum_value">4</span> 19201 </li> 19202 <li> 19203 <span class="entry_type_enum_name">FINE_WEATHER</span> 19204 <span class="entry_type_enum_value">9</span> 19205 </li> 19206 <li> 19207 <span class="entry_type_enum_name">CLOUDY_WEATHER</span> 19208 <span class="entry_type_enum_value">10</span> 19209 </li> 19210 <li> 19211 <span class="entry_type_enum_name">SHADE</span> 19212 <span class="entry_type_enum_value">11</span> 19213 </li> 19214 <li> 19215 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span> 19216 <span class="entry_type_enum_value">12</span> 19217 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 19218 </li> 19219 <li> 19220 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span> 19221 <span class="entry_type_enum_value">13</span> 19222 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 19223 </li> 19224 <li> 19225 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span> 19226 <span class="entry_type_enum_value">14</span> 19227 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 19228 </li> 19229 <li> 19230 <span class="entry_type_enum_name">WHITE_FLUORESCENT</span> 19231 <span class="entry_type_enum_value">15</span> 19232 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 19233 </li> 19234 <li> 19235 <span class="entry_type_enum_name">STANDARD_A</span> 19236 <span class="entry_type_enum_value">17</span> 19237 </li> 19238 <li> 19239 <span class="entry_type_enum_name">STANDARD_B</span> 19240 <span class="entry_type_enum_value">18</span> 19241 </li> 19242 <li> 19243 <span class="entry_type_enum_name">STANDARD_C</span> 19244 <span class="entry_type_enum_value">19</span> 19245 </li> 19246 <li> 19247 <span class="entry_type_enum_name">D55</span> 19248 <span class="entry_type_enum_value">20</span> 19249 </li> 19250 <li> 19251 <span class="entry_type_enum_name">D65</span> 19252 <span class="entry_type_enum_value">21</span> 19253 </li> 19254 <li> 19255 <span class="entry_type_enum_name">D75</span> 19256 <span class="entry_type_enum_value">22</span> 19257 </li> 19258 <li> 19259 <span class="entry_type_enum_name">D50</span> 19260 <span class="entry_type_enum_value">23</span> 19261 </li> 19262 <li> 19263 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span> 19264 <span class="entry_type_enum_value">24</span> 19265 </li> 19266 </ul> 19267 19268 </td> <!-- entry_type --> 19269 19270 <td class="entry_description"> 19271 <p>The standard reference illuminant used as the scene light source when 19272 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 19273 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 19274 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p> 19275 </td> 19276 19277 <td class="entry_units"> 19278 </td> 19279 19280 <td class="entry_range"> 19281 </td> 19282 19283 <td class="entry_tags"> 19284 <ul class="entry_tags"> 19285 <li><a href="#tag_RAW">RAW</a></li> 19286 </ul> 19287 </td> 19288 19289 </tr> 19290 <tr class="entries_header"> 19291 <th class="th_details" colspan="5">Details</th> 19292 </tr> 19293 <tr class="entry_cont"> 19294 <td class="entry_details" colspan="5"> 19295 <p>The values in this key correspond to the values defined for the 19296 EXIF LightSource tag.<wbr/> These illuminants are standard light sources 19297 that are often used calibrating camera devices.<wbr/></p> 19298 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 19299 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 19300 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p> 19301 <p>Some devices may choose to provide a second set of calibration 19302 information for improved quality,<wbr/> including 19303 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p> 19304 </td> 19305 </tr> 19306 19307 <tr class="entries_header"> 19308 <th class="th_details" colspan="5">HAL Implementation Details</th> 19309 </tr> 19310 <tr class="entry_cont"> 19311 <td class="entry_details" colspan="5"> 19312 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 19313 and corresponding matrices must be present to support the RAW capability 19314 and DNG output.<wbr/></p> 19315 <p>When producing raw images with a color profile that has only been 19316 calibrated against a single light source,<wbr/> it is valid to omit 19317 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the 19318 <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/> 19319 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 19320 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be 19321 chosen so that it is representative of typical scene lighting.<wbr/> In 19322 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p> 19323 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and 19324 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be 19325 chosen to represent the typical range of scene lighting conditions.<wbr/> 19326 In general,<wbr/> low color temperature illuminant such as Standard-A will 19327 be chosen for the first reference illuminant and a higher color 19328 temperature illuminant such as D65 will be chosen for the second 19329 reference illuminant.<wbr/></p> 19330 </td> 19331 </tr> 19332 19333 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19334 <!-- end of entry --> 19335 19336 19337 <tr class="entry" id="static_android.sensor.referenceIlluminant2"> 19338 <td class="entry_name 19339 " rowspan="3"> 19340 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 19341 </td> 19342 <td class="entry_type"> 19343 <span class="entry_type_name">byte</span> 19344 19345 <span class="entry_type_visibility"> [public]</span> 19346 19347 19348 19349 19350 19351 19352 </td> <!-- entry_type --> 19353 19354 <td class="entry_description"> 19355 <p>The standard reference illuminant used as the scene light source when 19356 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 19357 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 19358 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 19359 </td> 19360 19361 <td class="entry_units"> 19362 </td> 19363 19364 <td class="entry_range"> 19365 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p> 19366 </td> 19367 19368 <td class="entry_tags"> 19369 <ul class="entry_tags"> 19370 <li><a href="#tag_RAW">RAW</a></li> 19371 </ul> 19372 </td> 19373 19374 </tr> 19375 <tr class="entries_header"> 19376 <th class="th_details" colspan="5">Details</th> 19377 </tr> 19378 <tr class="entry_cont"> 19379 <td class="entry_details" colspan="5"> 19380 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p> 19381 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 19382 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 19383 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p> 19384 </td> 19385 </tr> 19386 19387 19388 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19389 <!-- end of entry --> 19390 19391 19392 <tr class="entry" id="static_android.sensor.calibrationTransform1"> 19393 <td class="entry_name 19394 " rowspan="3"> 19395 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 19396 </td> 19397 <td class="entry_type"> 19398 <span class="entry_type_name">rational</span> 19399 <span class="entry_type_container">x</span> 19400 19401 <span class="entry_type_array"> 19402 3 x 3 19403 </span> 19404 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19405 19406 19407 19408 19409 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19410 19411 19412 </td> <!-- entry_type --> 19413 19414 <td class="entry_description"> 19415 <p>A per-device calibration transform matrix that maps from the 19416 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p> 19417 </td> 19418 19419 <td class="entry_units"> 19420 </td> 19421 19422 <td class="entry_range"> 19423 </td> 19424 19425 <td class="entry_tags"> 19426 <ul class="entry_tags"> 19427 <li><a href="#tag_RAW">RAW</a></li> 19428 </ul> 19429 </td> 19430 19431 </tr> 19432 <tr class="entries_header"> 19433 <th class="th_details" colspan="5">Details</th> 19434 </tr> 19435 <tr class="entry_cont"> 19436 <td class="entry_details" colspan="5"> 19437 <p>This matrix is used to correct for per-device variations in the 19438 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 19439 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19440 contains a per-device calibration transform that maps colors 19441 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 19442 colorspace) into this camera device's native sensor color 19443 space under the first reference illuminant 19444 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 19445 </td> 19446 </tr> 19447 19448 19449 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19450 <!-- end of entry --> 19451 19452 19453 <tr class="entry" id="static_android.sensor.calibrationTransform2"> 19454 <td class="entry_name 19455 " rowspan="3"> 19456 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 19457 </td> 19458 <td class="entry_type"> 19459 <span class="entry_type_name">rational</span> 19460 <span class="entry_type_container">x</span> 19461 19462 <span class="entry_type_array"> 19463 3 x 3 19464 </span> 19465 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19466 19467 19468 19469 19470 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19471 19472 19473 </td> <!-- entry_type --> 19474 19475 <td class="entry_description"> 19476 <p>A per-device calibration transform matrix that maps from the 19477 reference sensor colorspace to the actual device sensor colorspace 19478 (this is the colorspace of the raw buffer data).<wbr/></p> 19479 </td> 19480 19481 <td class="entry_units"> 19482 </td> 19483 19484 <td class="entry_range"> 19485 </td> 19486 19487 <td class="entry_tags"> 19488 <ul class="entry_tags"> 19489 <li><a href="#tag_RAW">RAW</a></li> 19490 </ul> 19491 </td> 19492 19493 </tr> 19494 <tr class="entries_header"> 19495 <th class="th_details" colspan="5">Details</th> 19496 </tr> 19497 <tr class="entry_cont"> 19498 <td class="entry_details" colspan="5"> 19499 <p>This matrix is used to correct for per-device variations in the 19500 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 19501 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19502 contains a per-device calibration transform that maps colors 19503 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 19504 colorspace) into this camera device's native sensor color 19505 space under the second reference illuminant 19506 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 19507 <p>This matrix will only be present if the second reference 19508 illuminant is present.<wbr/></p> 19509 </td> 19510 </tr> 19511 19512 19513 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19514 <!-- end of entry --> 19515 19516 19517 <tr class="entry" id="static_android.sensor.colorTransform1"> 19518 <td class="entry_name 19519 " rowspan="3"> 19520 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 19521 </td> 19522 <td class="entry_type"> 19523 <span class="entry_type_name">rational</span> 19524 <span class="entry_type_container">x</span> 19525 19526 <span class="entry_type_array"> 19527 3 x 3 19528 </span> 19529 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19530 19531 19532 19533 19534 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19535 19536 19537 </td> <!-- entry_type --> 19538 19539 <td class="entry_description"> 19540 <p>A matrix that transforms color values from CIE XYZ color space to 19541 reference sensor color space.<wbr/></p> 19542 </td> 19543 19544 <td class="entry_units"> 19545 </td> 19546 19547 <td class="entry_range"> 19548 </td> 19549 19550 <td class="entry_tags"> 19551 <ul class="entry_tags"> 19552 <li><a href="#tag_RAW">RAW</a></li> 19553 </ul> 19554 </td> 19555 19556 </tr> 19557 <tr class="entries_header"> 19558 <th class="th_details" colspan="5">Details</th> 19559 </tr> 19560 <tr class="entry_cont"> 19561 <td class="entry_details" colspan="5"> 19562 <p>This matrix is used to convert from the standard CIE XYZ color 19563 space to the reference sensor colorspace,<wbr/> and is used when processing 19564 raw buffer data.<wbr/></p> 19565 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19566 contains a color transform matrix that maps colors from the CIE 19567 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 19568 "golden module" colorspace) under the first reference illuminant 19569 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 19570 <p>The white points chosen in both the reference sensor color space 19571 and the CIE XYZ colorspace when calculating this transform will 19572 match the standard white point for the first reference illuminant 19573 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 19574 </td> 19575 </tr> 19576 19577 19578 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19579 <!-- end of entry --> 19580 19581 19582 <tr class="entry" id="static_android.sensor.colorTransform2"> 19583 <td class="entry_name 19584 " rowspan="3"> 19585 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 19586 </td> 19587 <td class="entry_type"> 19588 <span class="entry_type_name">rational</span> 19589 <span class="entry_type_container">x</span> 19590 19591 <span class="entry_type_array"> 19592 3 x 3 19593 </span> 19594 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19595 19596 19597 19598 19599 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19600 19601 19602 </td> <!-- entry_type --> 19603 19604 <td class="entry_description"> 19605 <p>A matrix that transforms color values from CIE XYZ color space to 19606 reference sensor color space.<wbr/></p> 19607 </td> 19608 19609 <td class="entry_units"> 19610 </td> 19611 19612 <td class="entry_range"> 19613 </td> 19614 19615 <td class="entry_tags"> 19616 <ul class="entry_tags"> 19617 <li><a href="#tag_RAW">RAW</a></li> 19618 </ul> 19619 </td> 19620 19621 </tr> 19622 <tr class="entries_header"> 19623 <th class="th_details" colspan="5">Details</th> 19624 </tr> 19625 <tr class="entry_cont"> 19626 <td class="entry_details" colspan="5"> 19627 <p>This matrix is used to convert from the standard CIE XYZ color 19628 space to the reference sensor colorspace,<wbr/> and is used when processing 19629 raw buffer data.<wbr/></p> 19630 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19631 contains a color transform matrix that maps colors from the CIE 19632 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 19633 "golden module" colorspace) under the second reference illuminant 19634 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 19635 <p>The white points chosen in both the reference sensor color space 19636 and the CIE XYZ colorspace when calculating this transform will 19637 match the standard white point for the second reference illuminant 19638 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 19639 <p>This matrix will only be present if the second reference 19640 illuminant is present.<wbr/></p> 19641 </td> 19642 </tr> 19643 19644 19645 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19646 <!-- end of entry --> 19647 19648 19649 <tr class="entry" id="static_android.sensor.forwardMatrix1"> 19650 <td class="entry_name 19651 " rowspan="3"> 19652 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 19653 </td> 19654 <td class="entry_type"> 19655 <span class="entry_type_name">rational</span> 19656 <span class="entry_type_container">x</span> 19657 19658 <span class="entry_type_array"> 19659 3 x 3 19660 </span> 19661 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19662 19663 19664 19665 19666 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19667 19668 19669 </td> <!-- entry_type --> 19670 19671 <td class="entry_description"> 19672 <p>A matrix that transforms white balanced camera colors from the reference 19673 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 19674 </td> 19675 19676 <td class="entry_units"> 19677 </td> 19678 19679 <td class="entry_range"> 19680 </td> 19681 19682 <td class="entry_tags"> 19683 <ul class="entry_tags"> 19684 <li><a href="#tag_RAW">RAW</a></li> 19685 </ul> 19686 </td> 19687 19688 </tr> 19689 <tr class="entries_header"> 19690 <th class="th_details" colspan="5">Details</th> 19691 </tr> 19692 <tr class="entry_cont"> 19693 <td class="entry_details" colspan="5"> 19694 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 19695 is used when processing raw buffer data.<wbr/></p> 19696 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 19697 a color transform matrix that maps white balanced colors from the 19698 reference sensor color space to the CIE XYZ color space with a D50 white 19699 point.<wbr/></p> 19700 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 19701 this matrix is chosen so that the standard white point for this reference 19702 illuminant in the reference sensor colorspace is mapped to D50 in the 19703 CIE XYZ colorspace.<wbr/></p> 19704 </td> 19705 </tr> 19706 19707 19708 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19709 <!-- end of entry --> 19710 19711 19712 <tr class="entry" id="static_android.sensor.forwardMatrix2"> 19713 <td class="entry_name 19714 " rowspan="3"> 19715 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 19716 </td> 19717 <td class="entry_type"> 19718 <span class="entry_type_name">rational</span> 19719 <span class="entry_type_container">x</span> 19720 19721 <span class="entry_type_array"> 19722 3 x 3 19723 </span> 19724 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19725 19726 19727 19728 19729 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19730 19731 19732 </td> <!-- entry_type --> 19733 19734 <td class="entry_description"> 19735 <p>A matrix that transforms white balanced camera colors from the reference 19736 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 19737 </td> 19738 19739 <td class="entry_units"> 19740 </td> 19741 19742 <td class="entry_range"> 19743 </td> 19744 19745 <td class="entry_tags"> 19746 <ul class="entry_tags"> 19747 <li><a href="#tag_RAW">RAW</a></li> 19748 </ul> 19749 </td> 19750 19751 </tr> 19752 <tr class="entries_header"> 19753 <th class="th_details" colspan="5">Details</th> 19754 </tr> 19755 <tr class="entry_cont"> 19756 <td class="entry_details" colspan="5"> 19757 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 19758 is used when processing raw buffer data.<wbr/></p> 19759 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 19760 a color transform matrix that maps white balanced colors from the 19761 reference sensor color space to the CIE XYZ color space with a D50 white 19762 point.<wbr/></p> 19763 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) 19764 this matrix is chosen so that the standard white point for this reference 19765 illuminant in the reference sensor colorspace is mapped to D50 in the 19766 CIE XYZ colorspace.<wbr/></p> 19767 <p>This matrix will only be present if the second reference 19768 illuminant is present.<wbr/></p> 19769 </td> 19770 </tr> 19771 19772 19773 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19774 <!-- end of entry --> 19775 19776 19777 <tr class="entry" id="static_android.sensor.baseGainFactor"> 19778 <td class="entry_name 19779 " rowspan="1"> 19780 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 19781 </td> 19782 <td class="entry_type"> 19783 <span class="entry_type_name">rational</span> 19784 19785 <span class="entry_type_visibility"> [system]</span> 19786 19787 19788 19789 19790 19791 19792 </td> <!-- entry_type --> 19793 19794 <td class="entry_description"> 19795 <p>Gain factor from electrons to raw units when 19796 ISO=100</p> 19797 </td> 19798 19799 <td class="entry_units"> 19800 </td> 19801 19802 <td class="entry_range"> 19803 </td> 19804 19805 <td class="entry_tags"> 19806 <ul class="entry_tags"> 19807 <li><a href="#tag_FUTURE">FUTURE</a></li> 19808 </ul> 19809 </td> 19810 19811 </tr> 19812 19813 19814 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19815 <!-- end of entry --> 19816 19817 19818 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 19819 <td class="entry_name 19820 " rowspan="5"> 19821 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 19822 </td> 19823 <td class="entry_type"> 19824 <span class="entry_type_name">int32</span> 19825 <span class="entry_type_container">x</span> 19826 19827 <span class="entry_type_array"> 19828 4 19829 </span> 19830 <span class="entry_type_visibility"> [public as blackLevelPattern]</span> 19831 19832 19833 19834 19835 <div class="entry_type_notes">2x2 raw count block</div> 19836 19837 19838 </td> <!-- entry_type --> 19839 19840 <td class="entry_description"> 19841 <p>A fixed black level offset for each of the color filter arrangement 19842 (CFA) mosaic channels.<wbr/></p> 19843 </td> 19844 19845 <td class="entry_units"> 19846 </td> 19847 19848 <td class="entry_range"> 19849 <p>>= 0 for each.<wbr/></p> 19850 </td> 19851 19852 <td class="entry_tags"> 19853 <ul class="entry_tags"> 19854 <li><a href="#tag_RAW">RAW</a></li> 19855 </ul> 19856 </td> 19857 19858 </tr> 19859 <tr class="entries_header"> 19860 <th class="th_details" colspan="5">Details</th> 19861 </tr> 19862 <tr class="entry_cont"> 19863 <td class="entry_details" colspan="5"> 19864 <p>This key specifies the zero light value for each of the CFA mosaic 19865 channels in the camera sensor.<wbr/> The maximal value output by the 19866 sensor is represented by the value in <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>.<wbr/></p> 19867 <p>The values are given in the same order as channels listed for the CFA 19868 layout key (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>),<wbr/> i.<wbr/>e.<wbr/> the 19869 nth value given corresponds to the black level offset for the nth 19870 color channel listed in the CFA.<wbr/></p> 19871 </td> 19872 </tr> 19873 19874 <tr class="entries_header"> 19875 <th class="th_details" colspan="5">HAL Implementation Details</th> 19876 </tr> 19877 <tr class="entry_cont"> 19878 <td class="entry_details" colspan="5"> 19879 <p>The values are given in row-column scan order,<wbr/> with the first value 19880 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 19881 </td> 19882 </tr> 19883 19884 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19885 <!-- end of entry --> 19886 19887 19888 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 19889 <td class="entry_name 19890 " rowspan="3"> 19891 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 19892 </td> 19893 <td class="entry_type"> 19894 <span class="entry_type_name">int32</span> 19895 19896 <span class="entry_type_visibility"> [public]</span> 19897 19898 19899 <span class="entry_type_hwlevel">[full] </span> 19900 19901 19902 19903 19904 </td> <!-- entry_type --> 19905 19906 <td class="entry_description"> 19907 <p>Maximum sensitivity that is implemented 19908 purely through analog gain.<wbr/></p> 19909 </td> 19910 19911 <td class="entry_units"> 19912 </td> 19913 19914 <td class="entry_range"> 19915 </td> 19916 19917 <td class="entry_tags"> 19918 <ul class="entry_tags"> 19919 <li><a href="#tag_V1">V1</a></li> 19920 <li><a href="#tag_FULL">FULL</a></li> 19921 </ul> 19922 </td> 19923 19924 </tr> 19925 <tr class="entries_header"> 19926 <th class="th_details" colspan="5">Details</th> 19927 </tr> 19928 <tr class="entry_cont"> 19929 <td class="entry_details" colspan="5"> 19930 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 19931 equal to this,<wbr/> all applied gain must be analog.<wbr/> For 19932 values above this,<wbr/> the gain applied can be a mix of analog and 19933 digital.<wbr/></p> 19934 </td> 19935 </tr> 19936 19937 19938 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19939 <!-- end of entry --> 19940 19941 19942 <tr class="entry" id="static_android.sensor.orientation"> 19943 <td class="entry_name 19944 " rowspan="3"> 19945 android.<wbr/>sensor.<wbr/>orientation 19946 </td> 19947 <td class="entry_type"> 19948 <span class="entry_type_name">int32</span> 19949 19950 <span class="entry_type_visibility"> [public]</span> 19951 19952 19953 <span class="entry_type_hwlevel">[legacy] </span> 19954 19955 19956 19957 19958 </td> <!-- entry_type --> 19959 19960 <td class="entry_description"> 19961 <p>Clockwise angle through which the output image needs to be rotated to be 19962 upright on the device screen in its native orientation.<wbr/></p> 19963 </td> 19964 19965 <td class="entry_units"> 19966 Degrees of clockwise rotation; always a multiple of 19967 90 19968 </td> 19969 19970 <td class="entry_range"> 19971 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 19972 </td> 19973 19974 <td class="entry_tags"> 19975 <ul class="entry_tags"> 19976 <li><a href="#tag_BC">BC</a></li> 19977 </ul> 19978 </td> 19979 19980 </tr> 19981 <tr class="entries_header"> 19982 <th class="th_details" colspan="5">Details</th> 19983 </tr> 19984 <tr class="entry_cont"> 19985 <td class="entry_details" colspan="5"> 19986 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in 19987 the sensor's coordinate system.<wbr/></p> 19988 </td> 19989 </tr> 19990 19991 19992 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19993 <!-- end of entry --> 19994 19995 19996 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> 19997 <td class="entry_name 19998 " rowspan="3"> 19999 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions 20000 </td> 20001 <td class="entry_type"> 20002 <span class="entry_type_name">int32</span> 20003 <span class="entry_type_container">x</span> 20004 20005 <span class="entry_type_array"> 20006 3 20007 </span> 20008 <span class="entry_type_visibility"> [system]</span> 20009 20010 20011 20012 20013 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> 20014 20015 20016 </td> <!-- entry_type --> 20017 20018 <td class="entry_description"> 20019 <p>The number of input samples for each dimension of 20020 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> 20021 </td> 20022 20023 <td class="entry_units"> 20024 </td> 20025 20026 <td class="entry_range"> 20027 <p>Hue >= 1,<wbr/> 20028 Saturation >= 2,<wbr/> 20029 Value >= 1</p> 20030 </td> 20031 20032 <td class="entry_tags"> 20033 <ul class="entry_tags"> 20034 <li><a href="#tag_RAW">RAW</a></li> 20035 </ul> 20036 </td> 20037 20038 </tr> 20039 <tr class="entries_header"> 20040 <th class="th_details" colspan="5">Details</th> 20041 </tr> 20042 <tr class="entry_cont"> 20043 <td class="entry_details" colspan="5"> 20044 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value 20045 dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the 20046 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 20047 element.<wbr/></p> 20048 </td> 20049 </tr> 20050 20051 20052 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20053 <!-- end of entry --> 20054 20055 20056 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 20057 <td class="entry_name 20058 " rowspan="5"> 20059 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 20060 </td> 20061 <td class="entry_type"> 20062 <span class="entry_type_name">int32</span> 20063 <span class="entry_type_container">x</span> 20064 20065 <span class="entry_type_array"> 20066 n 20067 </span> 20068 <span class="entry_type_visibility"> [public]</span> 20069 20070 20071 20072 20073 <div class="entry_type_notes">list of enums</div> 20074 20075 20076 </td> <!-- entry_type --> 20077 20078 <td class="entry_description"> 20079 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> 20080 supported by this camera device.<wbr/></p> 20081 </td> 20082 20083 <td class="entry_units"> 20084 </td> 20085 20086 <td class="entry_range"> 20087 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p> 20088 </td> 20089 20090 <td class="entry_tags"> 20091 </td> 20092 20093 </tr> 20094 <tr class="entries_header"> 20095 <th class="th_details" colspan="5">Details</th> 20096 </tr> 20097 <tr class="entry_cont"> 20098 <td class="entry_details" colspan="5"> 20099 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p> 20100 </td> 20101 </tr> 20102 20103 <tr class="entries_header"> 20104 <th class="th_details" colspan="5">HAL Implementation Details</th> 20105 </tr> 20106 <tr class="entry_cont"> 20107 <td class="entry_details" colspan="5"> 20108 <p>All custom modes must be >= CUSTOM1.<wbr/></p> 20109 </td> 20110 </tr> 20111 20112 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20113 <!-- end of entry --> 20114 20115 20116 20117 <!-- end of kind --> 20118 </tbody> 20119 <tr><td colspan="6" class="kind">dynamic</td></tr> 20120 20121 <thead class="entries_header"> 20122 <tr> 20123 <th class="th_name">Property Name</th> 20124 <th class="th_type">Type</th> 20125 <th class="th_description">Description</th> 20126 <th class="th_units">Units</th> 20127 <th class="th_range">Range</th> 20128 <th class="th_tags">Tags</th> 20129 </tr> 20130 </thead> 20131 20132 <tbody> 20133 20134 20135 20136 20137 20138 20139 20140 20141 20142 20143 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 20144 <td class="entry_name 20145 " rowspan="3"> 20146 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 20147 </td> 20148 <td class="entry_type"> 20149 <span class="entry_type_name">int64</span> 20150 20151 <span class="entry_type_visibility"> [public]</span> 20152 20153 20154 <span class="entry_type_hwlevel">[full] </span> 20155 20156 20157 20158 20159 </td> <!-- entry_type --> 20160 20161 <td class="entry_description"> 20162 <p>Duration each pixel is exposed to 20163 light.<wbr/></p> 20164 </td> 20165 20166 <td class="entry_units"> 20167 Nanoseconds 20168 </td> 20169 20170 <td class="entry_range"> 20171 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 20172 </td> 20173 20174 <td class="entry_tags"> 20175 <ul class="entry_tags"> 20176 <li><a href="#tag_V1">V1</a></li> 20177 </ul> 20178 </td> 20179 20180 </tr> 20181 <tr class="entries_header"> 20182 <th class="th_details" colspan="5">Details</th> 20183 </tr> 20184 <tr class="entry_cont"> 20185 <td class="entry_details" colspan="5"> 20186 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 20187 duration exposed to the nearest possible value (rather than expose longer).<wbr/> 20188 The final exposure time used will be available in the output capture result.<wbr/></p> 20189 <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 20190 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20191 </td> 20192 </tr> 20193 20194 20195 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20196 <!-- end of entry --> 20197 20198 20199 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 20200 <td class="entry_name 20201 " rowspan="5"> 20202 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 20203 </td> 20204 <td class="entry_type"> 20205 <span class="entry_type_name">int64</span> 20206 20207 <span class="entry_type_visibility"> [public]</span> 20208 20209 20210 <span class="entry_type_hwlevel">[full] </span> 20211 20212 20213 20214 20215 </td> <!-- entry_type --> 20216 20217 <td class="entry_description"> 20218 <p>Duration from start of frame exposure to 20219 start of next frame exposure.<wbr/></p> 20220 </td> 20221 20222 <td class="entry_units"> 20223 Nanoseconds 20224 </td> 20225 20226 <td class="entry_range"> 20227 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 20228 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 20229 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 20230 </td> 20231 20232 <td class="entry_tags"> 20233 <ul class="entry_tags"> 20234 <li><a href="#tag_V1">V1</a></li> 20235 </ul> 20236 </td> 20237 20238 </tr> 20239 <tr class="entries_header"> 20240 <th class="th_details" colspan="5">Details</th> 20241 </tr> 20242 <tr class="entry_cont"> 20243 <td class="entry_details" colspan="5"> 20244 <p>The maximum frame rate that can be supported by a camera subsystem is 20245 a function of many factors:</p> 20246 <ul> 20247 <li>Requested resolutions of output image streams</li> 20248 <li>Availability of binning /<wbr/> skipping modes on the imager</li> 20249 <li>The bandwidth of the imager interface</li> 20250 <li>The bandwidth of the various ISP processing blocks</li> 20251 </ul> 20252 <p>Since these factors can vary greatly between different ISPs and 20253 sensors,<wbr/> the camera abstraction tries to represent the bandwidth 20254 restrictions with as simple a model as possible.<wbr/></p> 20255 <p>The model presented has the following characteristics:</p> 20256 <ul> 20257 <li>The image sensor is always configured to output the smallest 20258 resolution possible given the application's requested output stream 20259 sizes.<wbr/> The smallest resolution is defined as being at least as large 20260 as the largest requested output stream size; the camera pipeline must 20261 never digitally upsample sensor data when the crop region covers the 20262 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 20263 resolutions are configured,<wbr/> the sensor can provide a higher frame 20264 rate.<wbr/></li> 20265 <li>Since any request may use any or all the currently configured 20266 output streams,<wbr/> the sensor and ISP must be configured to support 20267 scaling a single capture to all the streams at the same time.<wbr/> This 20268 means the camera pipeline must be ready to produce the largest 20269 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 20270 frame rate of a given configured stream set is governed only by the 20271 largest requested stream resolution.<wbr/></li> 20272 <li>Using more than one output stream in a request does not affect the 20273 frame duration.<wbr/></li> 20274 <li>Certain format-streams may need to do additional background processing 20275 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 20276 can run concurrently to the rest of the camera pipeline,<wbr/> but 20277 cannot process more than 1 capture at a time.<wbr/></li> 20278 </ul> 20279 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> 20280 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using 20281 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 20282 These are used to determine the maximum frame rate /<wbr/> minimum frame 20283 duration that is possible for a given stream configuration.<wbr/></p> 20284 <p>Specifically,<wbr/> the application can use the following rules to 20285 determine the minimum frame duration it can request from the camera 20286 device:</p> 20287 <ol> 20288 <li>Let the set of currently configured input/<wbr/>output streams 20289 be called <code>S</code>.<wbr/></li> 20290 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking 20291 it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 20292 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be 20293 called <code>F</code>.<wbr/></li> 20294 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 20295 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 20296 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 20297 </ol> 20298 <p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> 20299 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> 20300 determines the steady state frame rate that the application will get 20301 if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of 20302 request be called <code>Rsimple</code>.<wbr/></p> 20303 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 20304 by a single capture of a new request <code>Rstall</code> (which has at least 20305 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 20306 same minimum frame duration this will not cause a frame rate loss 20307 if all buffers from the previous <code>Rstall</code> have already been 20308 delivered.<wbr/></p> 20309 <p>For more details about stalling,<wbr/> see 20310 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> 20311 <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 20312 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20313 </td> 20314 </tr> 20315 20316 <tr class="entries_header"> 20317 <th class="th_details" colspan="5">HAL Implementation Details</th> 20318 </tr> 20319 <tr class="entry_cont"> 20320 <td class="entry_details" colspan="5"> 20321 <p>For more details about stalling,<wbr/> see 20322 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 20323 </td> 20324 </tr> 20325 20326 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20327 <!-- end of entry --> 20328 20329 20330 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 20331 <td class="entry_name 20332 " rowspan="5"> 20333 android.<wbr/>sensor.<wbr/>sensitivity 20334 </td> 20335 <td class="entry_type"> 20336 <span class="entry_type_name">int32</span> 20337 20338 <span class="entry_type_visibility"> [public]</span> 20339 20340 20341 <span class="entry_type_hwlevel">[full] </span> 20342 20343 20344 20345 20346 </td> <!-- entry_type --> 20347 20348 <td class="entry_description"> 20349 <p>The amount of gain applied to sensor data 20350 before processing.<wbr/></p> 20351 </td> 20352 20353 <td class="entry_units"> 20354 ISO arithmetic units 20355 </td> 20356 20357 <td class="entry_range"> 20358 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 20359 </td> 20360 20361 <td class="entry_tags"> 20362 <ul class="entry_tags"> 20363 <li><a href="#tag_V1">V1</a></li> 20364 </ul> 20365 </td> 20366 20367 </tr> 20368 <tr class="entries_header"> 20369 <th class="th_details" colspan="5">Details</th> 20370 </tr> 20371 <tr class="entry_cont"> 20372 <td class="entry_details" colspan="5"> 20373 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 20374 as defined in ISO 12232:2006.<wbr/></p> 20375 <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 20376 if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 20377 is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 20378 <p>If the camera device cannot apply the exact sensitivity 20379 requested,<wbr/> it will reduce the gain to the nearest supported 20380 value.<wbr/> The final sensitivity used will be available in the 20381 output capture result.<wbr/></p> 20382 </td> 20383 </tr> 20384 20385 <tr class="entries_header"> 20386 <th class="th_details" colspan="5">HAL Implementation Details</th> 20387 </tr> 20388 <tr class="entry_cont"> 20389 <td class="entry_details" colspan="5"> 20390 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 20391 </td> 20392 </tr> 20393 20394 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20395 <!-- end of entry --> 20396 20397 20398 <tr class="entry" id="dynamic_android.sensor.timestamp"> 20399 <td class="entry_name 20400 " rowspan="5"> 20401 android.<wbr/>sensor.<wbr/>timestamp 20402 </td> 20403 <td class="entry_type"> 20404 <span class="entry_type_name">int64</span> 20405 20406 <span class="entry_type_visibility"> [public]</span> 20407 20408 20409 <span class="entry_type_hwlevel">[legacy] </span> 20410 20411 20412 20413 20414 </td> <!-- entry_type --> 20415 20416 <td class="entry_description"> 20417 <p>Time at start of exposure of first 20418 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p> 20419 </td> 20420 20421 <td class="entry_units"> 20422 Nanoseconds 20423 </td> 20424 20425 <td class="entry_range"> 20426 <p>> 0</p> 20427 </td> 20428 20429 <td class="entry_tags"> 20430 <ul class="entry_tags"> 20431 <li><a href="#tag_BC">BC</a></li> 20432 </ul> 20433 </td> 20434 20435 </tr> 20436 <tr class="entries_header"> 20437 <th class="th_details" colspan="5">Details</th> 20438 </tr> 20439 <tr class="entry_cont"> 20440 <td class="entry_details" colspan="5"> 20441 <p>The timestamps are also included in all image 20442 buffers produced for the same capture,<wbr/> and will be identical 20443 on all the outputs.<wbr/></p> 20444 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/> 20445 the timestamps measure time since an unspecified starting point,<wbr/> 20446 and are monotonically increasing.<wbr/> They can be compared with the 20447 timestamps for other captures from the same camera device,<wbr/> but are 20448 not guaranteed to be comparable to any other time source.<wbr/></p> 20449 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the 20450 timestamps measure time in the same timebase as <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> and they can 20451 be compared to other timestamps from other subsystems that 20452 are using that base.<wbr/></p> 20453 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of 20454 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the 20455 timestamp</a> in the TotalCaptureResult that was used to create the 20456 reprocess capture request.<wbr/></p> 20457 </td> 20458 </tr> 20459 20460 <tr class="entries_header"> 20461 <th class="th_details" colspan="5">HAL Implementation Details</th> 20462 </tr> 20463 <tr class="entry_cont"> 20464 <td class="entry_details" colspan="5"> 20465 <p>All timestamps must be in reference to the kernel's 20466 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for 20467 time spent asleep.<wbr/> This allows for synchronization with 20468 sensors that continue to operate while the system is 20469 otherwise asleep.<wbr/></p> 20470 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> 20471 The timestamp must be synchronized with the timestamps from other 20472 sensor subsystems that are using the same timebase.<wbr/></p> 20473 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up 20474 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the 20475 capture request.<wbr/></p> 20476 </td> 20477 </tr> 20478 20479 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20480 <!-- end of entry --> 20481 20482 20483 <tr class="entry" id="dynamic_android.sensor.temperature"> 20484 <td class="entry_name 20485 " rowspan="1"> 20486 android.<wbr/>sensor.<wbr/>temperature 20487 </td> 20488 <td class="entry_type"> 20489 <span class="entry_type_name">float</span> 20490 20491 <span class="entry_type_visibility"> [system]</span> 20492 20493 20494 20495 20496 20497 20498 </td> <!-- entry_type --> 20499 20500 <td class="entry_description"> 20501 <p>The temperature of the sensor,<wbr/> sampled at the time 20502 exposure began for this frame.<wbr/></p> 20503 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 20504 somewhere close to it.<wbr/></p> 20505 </td> 20506 20507 <td class="entry_units"> 20508 Celsius 20509 </td> 20510 20511 <td class="entry_range"> 20512 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 20513 </td> 20514 20515 <td class="entry_tags"> 20516 <ul class="entry_tags"> 20517 <li><a href="#tag_FUTURE">FUTURE</a></li> 20518 </ul> 20519 </td> 20520 20521 </tr> 20522 20523 20524 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20525 <!-- end of entry --> 20526 20527 20528 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> 20529 <td class="entry_name 20530 " rowspan="3"> 20531 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point 20532 </td> 20533 <td class="entry_type"> 20534 <span class="entry_type_name">rational</span> 20535 <span class="entry_type_container">x</span> 20536 20537 <span class="entry_type_array"> 20538 3 20539 </span> 20540 <span class="entry_type_visibility"> [public]</span> 20541 20542 20543 20544 20545 20546 20547 </td> <!-- entry_type --> 20548 20549 <td class="entry_description"> 20550 <p>The estimated camera neutral color in the native sensor colorspace at 20551 the time of capture.<wbr/></p> 20552 </td> 20553 20554 <td class="entry_units"> 20555 </td> 20556 20557 <td class="entry_range"> 20558 </td> 20559 20560 <td class="entry_tags"> 20561 <ul class="entry_tags"> 20562 <li><a href="#tag_RAW">RAW</a></li> 20563 </ul> 20564 </td> 20565 20566 </tr> 20567 <tr class="entries_header"> 20568 <th class="th_details" colspan="5">Details</th> 20569 </tr> 20570 <tr class="entry_cont"> 20571 <td class="entry_details" colspan="5"> 20572 <p>This value gives the neutral color point encoded as an RGB value in the 20573 native sensor color space.<wbr/> The neutral color point indicates the 20574 currently estimated white point of the scene illumination.<wbr/> It can be 20575 used to interpolate between the provided color transforms when 20576 processing raw sensor data.<wbr/></p> 20577 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> 20578 </td> 20579 </tr> 20580 20581 20582 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20583 <!-- end of entry --> 20584 20585 20586 <tr class="entry" id="dynamic_android.sensor.noiseProfile"> 20587 <td class="entry_name 20588 " rowspan="5"> 20589 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile 20590 </td> 20591 <td class="entry_type"> 20592 <span class="entry_type_name">double</span> 20593 <span class="entry_type_container">x</span> 20594 20595 <span class="entry_type_array"> 20596 2 x CFA Channels 20597 </span> 20598 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span> 20599 20600 20601 20602 20603 <div class="entry_type_notes">Pairs of noise model coefficients</div> 20604 20605 20606 </td> <!-- entry_type --> 20607 20608 <td class="entry_description"> 20609 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p> 20610 </td> 20611 20612 <td class="entry_units"> 20613 </td> 20614 20615 <td class="entry_range"> 20616 </td> 20617 20618 <td class="entry_tags"> 20619 <ul class="entry_tags"> 20620 <li><a href="#tag_RAW">RAW</a></li> 20621 </ul> 20622 </td> 20623 20624 </tr> 20625 <tr class="entries_header"> 20626 <th class="th_details" colspan="5">Details</th> 20627 </tr> 20628 <tr class="entry_cont"> 20629 <td class="entry_details" colspan="5"> 20630 <p>This key contains two noise model coefficients for each CFA channel 20631 corresponding to the sensor amplification (S) and sensor readout 20632 noise (O).<wbr/> These are given as pairs of coefficients for each channel 20633 in the same order as channels listed for the CFA layout key 20634 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is 20635 represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where 20636 the first member of the Pair at index n is the S coefficient and the 20637 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p> 20638 <p>These coefficients are used in a two parameter noise model to describe 20639 the amount of noise present in the image for each CFA channel.<wbr/> The 20640 noise model used here is:</p> 20641 <p>N(x) = sqrt(Sx + O)</p> 20642 <p>Where x represents the recorded signal of a CFA channel normalized to 20643 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for 20644 that channel.<wbr/></p> 20645 <p>A more detailed description of the noise model can be found in the 20646 Adobe DNG specification for the NoiseProfile tag.<wbr/></p> 20647 </td> 20648 </tr> 20649 20650 <tr class="entries_header"> 20651 <th class="th_details" colspan="5">HAL Implementation Details</th> 20652 </tr> 20653 <tr class="entry_cont"> 20654 <td class="entry_details" colspan="5"> 20655 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as 20656 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients 20657 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green 20658 channel,<wbr/> etc.<wbr/></p> 20659 </td> 20660 </tr> 20661 20662 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20663 <!-- end of entry --> 20664 20665 20666 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> 20667 <td class="entry_name 20668 " rowspan="3"> 20669 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map 20670 </td> 20671 <td class="entry_type"> 20672 <span class="entry_type_name">float</span> 20673 <span class="entry_type_container">x</span> 20674 20675 <span class="entry_type_array"> 20676 hue_samples x saturation_samples x value_samples x 3 20677 </span> 20678 <span class="entry_type_visibility"> [system]</span> 20679 20680 20681 20682 20683 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> 20684 20685 20686 </td> <!-- entry_type --> 20687 20688 <td class="entry_description"> 20689 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale 20690 for each pixel.<wbr/></p> 20691 </td> 20692 20693 <td class="entry_units"> 20694 20695 The hue shift is given in degrees; saturation and value scale factors are 20696 unitless and are between 0 and 1 inclusive 20697 20698 </td> 20699 20700 <td class="entry_range"> 20701 </td> 20702 20703 <td class="entry_tags"> 20704 <ul class="entry_tags"> 20705 <li><a href="#tag_RAW">RAW</a></li> 20706 </ul> 20707 </td> 20708 20709 </tr> 20710 <tr class="entries_header"> 20711 <th class="th_details" colspan="5">Details</th> 20712 </tr> 20713 <tr class="entry_cont"> 20714 <td class="entry_details" colspan="5"> 20715 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in 20716 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> 20717 <p>Each entry of this map contains three floats corresponding to the 20718 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 20719 hue shift has the lowest index.<wbr/> The map entries are stored in the key 20720 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 20721 hue divisions in the middle loop,<wbr/> and the saturation divisions in the 20722 inner loop.<wbr/> All zero input saturation entries are required to have a 20723 value scale factor of 1.<wbr/>0.<wbr/></p> 20724 </td> 20725 </tr> 20726 20727 20728 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20729 <!-- end of entry --> 20730 20731 20732 <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> 20733 <td class="entry_name 20734 " rowspan="3"> 20735 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve 20736 </td> 20737 <td class="entry_type"> 20738 <span class="entry_type_name">float</span> 20739 <span class="entry_type_container">x</span> 20740 20741 <span class="entry_type_array"> 20742 samples x 2 20743 </span> 20744 <span class="entry_type_visibility"> [system]</span> 20745 20746 20747 20748 20749 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> 20750 20751 20752 </td> <!-- entry_type --> 20753 20754 <td class="entry_description"> 20755 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> 20756 </td> 20757 20758 <td class="entry_units"> 20759 </td> 20760 20761 <td class="entry_range"> 20762 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of 20763 <code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last 20764 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> 20765 </td> 20766 20767 <td class="entry_tags"> 20768 <ul class="entry_tags"> 20769 <li><a href="#tag_RAW">RAW</a></li> 20770 </ul> 20771 </td> 20772 20773 </tr> 20774 <tr class="entries_header"> 20775 <th class="th_details" colspan="5">Details</th> 20776 </tr> 20777 <tr class="entry_cont"> 20778 <td class="entry_details" colspan="5"> 20779 <p>This key contains a default tone curve that can be applied while 20780 processing the image as a starting point for user adjustments.<wbr/> 20781 The curve is specified as a list of value pairs in linear gamma.<wbr/> 20782 The curve is interpolated using a cubic spline.<wbr/></p> 20783 </td> 20784 </tr> 20785 20786 20787 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20788 <!-- end of entry --> 20789 20790 20791 <tr class="entry" id="dynamic_android.sensor.greenSplit"> 20792 <td class="entry_name 20793 " rowspan="5"> 20794 android.<wbr/>sensor.<wbr/>green<wbr/>Split 20795 </td> 20796 <td class="entry_type"> 20797 <span class="entry_type_name">float</span> 20798 20799 <span class="entry_type_visibility"> [public]</span> 20800 20801 20802 20803 20804 20805 20806 </td> <!-- entry_type --> 20807 20808 <td class="entry_description"> 20809 <p>The worst-case divergence between Bayer green channels.<wbr/></p> 20810 </td> 20811 20812 <td class="entry_units"> 20813 </td> 20814 20815 <td class="entry_range"> 20816 <p>>= 0</p> 20817 </td> 20818 20819 <td class="entry_tags"> 20820 <ul class="entry_tags"> 20821 <li><a href="#tag_RAW">RAW</a></li> 20822 </ul> 20823 </td> 20824 20825 </tr> 20826 <tr class="entries_header"> 20827 <th class="th_details" colspan="5">Details</th> 20828 </tr> 20829 <tr class="entry_cont"> 20830 <td class="entry_details" colspan="5"> 20831 <p>This value is an estimate of the worst case split between the 20832 Bayer green channels in the red and blue rows in the sensor color 20833 filter array.<wbr/></p> 20834 <p>The green split is calculated as follows:</p> 20835 <ol> 20836 <li>A 5x5 pixel (or larger) window W within the active sensor array is 20837 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 20838 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 20839 chosen is implementation defined,<wbr/> and should be chosen to provide a 20840 green split estimate that is both representative of the entire image 20841 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 20842 <li>The arithmetic mean of the green channels from the red 20843 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 20844 <li>The arithmetic mean of the green channels from the blue 20845 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> 20846 <li>The maximum ratio R of the two means is computed as follows: 20847 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> 20848 </ol> 20849 <p>The ratio R is the green split divergence reported for this property,<wbr/> 20850 which represents how much the green channels differ in the mosaic 20851 pattern.<wbr/> This value is typically used to determine the treatment of 20852 the green mosaic channels when demosaicing.<wbr/></p> 20853 <p>The green split value can be roughly interpreted as follows:</p> 20854 <ul> 20855 <li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> 20856 <li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software 20857 correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 20858 <li>R > 1.<wbr/>20 will require strong software correction to produce 20859 a usuable image (>20% divergence).<wbr/></li> 20860 </ul> 20861 </td> 20862 </tr> 20863 20864 <tr class="entries_header"> 20865 <th class="th_details" colspan="5">HAL Implementation Details</th> 20866 </tr> 20867 <tr class="entry_cont"> 20868 <td class="entry_details" colspan="5"> 20869 <p>The green split given may be a static value based on prior 20870 characterization of the camera sensor using the green split 20871 calculation method given here over a large,<wbr/> representative,<wbr/> sample 20872 set of images.<wbr/> Other methods of calculation that produce equivalent 20873 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> 20874 </td> 20875 </tr> 20876 20877 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20878 <!-- end of entry --> 20879 20880 20881 <tr class="entry" id="dynamic_android.sensor.testPatternData"> 20882 <td class="entry_name 20883 " rowspan="5"> 20884 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 20885 </td> 20886 <td class="entry_type"> 20887 <span class="entry_type_name">int32</span> 20888 <span class="entry_type_container">x</span> 20889 20890 <span class="entry_type_array"> 20891 4 20892 </span> 20893 <span class="entry_type_visibility"> [public]</span> 20894 20895 20896 20897 20898 20899 20900 </td> <!-- entry_type --> 20901 20902 <td class="entry_description"> 20903 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 20904 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 20905 </td> 20906 20907 <td class="entry_units"> 20908 </td> 20909 20910 <td class="entry_range"> 20911 </td> 20912 20913 <td class="entry_tags"> 20914 </td> 20915 20916 </tr> 20917 <tr class="entries_header"> 20918 <th class="th_details" colspan="5">Details</th> 20919 </tr> 20920 <tr class="entry_cont"> 20921 <td class="entry_details" colspan="5"> 20922 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 20923 The camera device then uses the most significant X bits 20924 that correspond to how many bits are in its Bayer raw sensor 20925 output.<wbr/></p> 20926 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 20927 10 most significant bits from each color channel.<wbr/></p> 20928 </td> 20929 </tr> 20930 20931 <tr class="entries_header"> 20932 <th class="th_details" colspan="5">HAL Implementation Details</th> 20933 </tr> 20934 <tr class="entry_cont"> 20935 <td class="entry_details" colspan="5"> 20936 20937 </td> 20938 </tr> 20939 20940 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20941 <!-- end of entry --> 20942 20943 20944 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 20945 <td class="entry_name 20946 " rowspan="5"> 20947 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 20948 </td> 20949 <td class="entry_type"> 20950 <span class="entry_type_name entry_type_name_enum">int32</span> 20951 20952 <span class="entry_type_visibility"> [public]</span> 20953 20954 20955 20956 20957 20958 <ul class="entry_type_enum"> 20959 <li> 20960 <span class="entry_type_enum_name">OFF</span> 20961 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 20962 device returns captures from the image sensor.<wbr/></p> 20963 <p>This is the default if the key is not set.<wbr/></p></span> 20964 </li> 20965 <li> 20966 <span class="entry_type_enum_name">SOLID_COLOR</span> 20967 <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 20968 respective color channel provided in 20969 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 20970 <p>For example:</p> 20971 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 20972 </code></pre> 20973 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 20974 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 20975 </code></pre> 20976 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels 20977 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 20978 </li> 20979 <li> 20980 <span class="entry_type_enum_name">COLOR_BARS</span> 20981 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 20982 <p>The vertical bars (left-to-right) are as follows:</p> 20983 <ul> 20984 <li>100% white</li> 20985 <li>yellow</li> 20986 <li>cyan</li> 20987 <li>green</li> 20988 <li>magenta</li> 20989 <li>red</li> 20990 <li>blue</li> 20991 <li>black</li> 20992 </ul> 20993 <p>In general the image would look like the following:</p> 20994 <pre><code>W Y C G M R B K 20995 W Y C G M R B K 20996 W Y C G M R B K 20997 W Y C G M R B K 20998 W Y C G M R B K 20999 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21000 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21001 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21002 21003 (B = Blue,<wbr/> K = Black) 21004 </code></pre> 21005 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 21006 When this is not possible,<wbr/> the bar size should be rounded 21007 down to the nearest integer and the pattern can repeat 21008 on the right side.<wbr/></p> 21009 <p>Each bar's height must always take up the full sensor 21010 pixel array height.<wbr/></p> 21011 <p>Each pixel in this test pattern must be set to either 21012 0% intensity or 100% intensity.<wbr/></p></span> 21013 </li> 21014 <li> 21015 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 21016 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 21017 each bar should start at its specified color at the top,<wbr/> 21018 and fade to gray at the bottom.<wbr/></p> 21019 <p>Furthermore each bar is further subdivided into a left and 21020 right half.<wbr/> The left half should have a smooth gradient,<wbr/> 21021 and the right half should have a quantized gradient.<wbr/></p> 21022 <p>In particular,<wbr/> the right half's should consist of blocks of the 21023 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 21024 <p>The least significant bits in the quantized gradient should 21025 be copied from the most significant bits of the smooth gradient.<wbr/></p> 21026 <p>The height of each bar should always be a multiple of 128.<wbr/> 21027 When this is not the case,<wbr/> the pattern should repeat at the bottom 21028 of the image.<wbr/></p></span> 21029 </li> 21030 <li> 21031 <span class="entry_type_enum_name">PN9</span> 21032 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 21033 generated from a PN9 512-bit sequence (typically implemented 21034 in hardware with a linear feedback shift register).<wbr/></p> 21035 <p>The generator should be reset at the beginning of each frame,<wbr/> 21036 and thus each subsequent raw frame with this test pattern should 21037 be exactly the same as the last.<wbr/></p></span> 21038 </li> 21039 <li> 21040 <span class="entry_type_enum_name">CUSTOM1</span> 21041 <span class="entry_type_enum_value">256</span> 21042 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 21043 available only on this camera device are at least this numeric 21044 value.<wbr/></p> 21045 <p>All of the custom test patterns will be static 21046 (that is the raw image must not vary from frame to frame).<wbr/></p></span> 21047 </li> 21048 </ul> 21049 21050 </td> <!-- entry_type --> 21051 21052 <td class="entry_description"> 21053 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 21054 doing a real exposure from the camera.<wbr/></p> 21055 </td> 21056 21057 <td class="entry_units"> 21058 </td> 21059 21060 <td class="entry_range"> 21061 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 21062 </td> 21063 21064 <td class="entry_tags"> 21065 </td> 21066 21067 </tr> 21068 <tr class="entries_header"> 21069 <th class="th_details" colspan="5">Details</th> 21070 </tr> 21071 <tr class="entry_cont"> 21072 <td class="entry_details" colspan="5"> 21073 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 21074 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 21075 work as normal.<wbr/></p> 21076 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 21077 occur (and that the test pattern remain unmodified,<wbr/> since the flash 21078 would not actually affect it).<wbr/></p> 21079 <p>Defaults to OFF.<wbr/></p> 21080 </td> 21081 </tr> 21082 21083 <tr class="entries_header"> 21084 <th class="th_details" colspan="5">HAL Implementation Details</th> 21085 </tr> 21086 <tr class="entry_cont"> 21087 <td class="entry_details" colspan="5"> 21088 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 21089 <p>The HAL may choose to substitute test patterns from the sensor 21090 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 21091 indistinguishable to the ISP whether the data came from the 21092 sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 21093 </td> 21094 </tr> 21095 21096 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21097 <!-- end of entry --> 21098 21099 21100 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew"> 21101 <td class="entry_name 21102 " rowspan="5"> 21103 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew 21104 </td> 21105 <td class="entry_type"> 21106 <span class="entry_type_name">int64</span> 21107 21108 <span class="entry_type_visibility"> [public]</span> 21109 21110 21111 <span class="entry_type_hwlevel">[limited] </span> 21112 21113 21114 21115 21116 </td> <!-- entry_type --> 21117 21118 <td class="entry_description"> 21119 <p>Duration between the start of first row exposure 21120 and the start of last row exposure.<wbr/></p> 21121 </td> 21122 21123 <td class="entry_units"> 21124 Nanoseconds 21125 </td> 21126 21127 <td class="entry_range"> 21128 <p>>= 0 and < 21129 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p> 21130 </td> 21131 21132 <td class="entry_tags"> 21133 <ul class="entry_tags"> 21134 <li><a href="#tag_V1">V1</a></li> 21135 </ul> 21136 </td> 21137 21138 </tr> 21139 <tr class="entries_header"> 21140 <th class="th_details" colspan="5">Details</th> 21141 </tr> 21142 <tr class="entry_cont"> 21143 <td class="entry_details" colspan="5"> 21144 <p>This is the exposure time skew between the first and last 21145 row exposure start times.<wbr/> The first row and the last row are 21146 the first and last rows inside of the 21147 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 21148 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent 21149 to the frame readout time.<wbr/></p> 21150 </td> 21151 </tr> 21152 21153 <tr class="entries_header"> 21154 <th class="th_details" colspan="5">HAL Implementation Details</th> 21155 </tr> 21156 <tr class="entry_cont"> 21157 <td class="entry_details" colspan="5"> 21158 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin 21159 exposure at the same time.<wbr/></p> 21160 </td> 21161 </tr> 21162 21163 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21164 <!-- end of entry --> 21165 21166 21167 21168 <!-- end of kind --> 21169 </tbody> 21170 21171 <!-- end of section --> 21172 <tr><td colspan="6" id="section_shading" class="section">shading</td></tr> 21173 21174 21175 <tr><td colspan="6" class="kind">controls</td></tr> 21176 21177 <thead class="entries_header"> 21178 <tr> 21179 <th class="th_name">Property Name</th> 21180 <th class="th_type">Type</th> 21181 <th class="th_description">Description</th> 21182 <th class="th_units">Units</th> 21183 <th class="th_range">Range</th> 21184 <th class="th_tags">Tags</th> 21185 </tr> 21186 </thead> 21187 21188 <tbody> 21189 21190 21191 21192 21193 21194 21195 21196 21197 21198 21199 <tr class="entry" id="controls_android.shading.mode"> 21200 <td class="entry_name 21201 " rowspan="3"> 21202 android.<wbr/>shading.<wbr/>mode 21203 </td> 21204 <td class="entry_type"> 21205 <span class="entry_type_name entry_type_name_enum">byte</span> 21206 21207 <span class="entry_type_visibility"> [public]</span> 21208 21209 21210 <span class="entry_type_hwlevel">[full] </span> 21211 21212 21213 21214 <ul class="entry_type_enum"> 21215 <li> 21216 <span class="entry_type_enum_name">OFF</span> 21217 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 21218 </li> 21219 <li> 21220 <span class="entry_type_enum_name">FAST</span> 21221 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 21222 frame rate relative to sensor raw output</p></span> 21223 </li> 21224 <li> 21225 <span class="entry_type_enum_name">HIGH_QUALITY</span> 21226 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 21227 cost of possibly reduced frame rate.<wbr/></p></span> 21228 </li> 21229 </ul> 21230 21231 </td> <!-- entry_type --> 21232 21233 <td class="entry_description"> 21234 <p>Quality of lens shading correction applied 21235 to the image data.<wbr/></p> 21236 </td> 21237 21238 <td class="entry_units"> 21239 </td> 21240 21241 <td class="entry_range"> 21242 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 21243 </td> 21244 21245 <td class="entry_tags"> 21246 </td> 21247 21248 </tr> 21249 <tr class="entries_header"> 21250 <th class="th_details" colspan="5">Details</th> 21251 </tr> 21252 <tr class="entry_cont"> 21253 <td class="entry_details" colspan="5"> 21254 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 21255 camera device,<wbr/> and an identity lens shading map data will be provided 21256 if <code><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON</code>.<wbr/> For example,<wbr/> for lens 21257 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 21258 the output <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a> for this case will be an identity 21259 map shown below:</p> 21260 <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/> 21261 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/> 21262 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/> 21263 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/> 21264 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/> 21265 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 ] 21266 </code></pre> 21267 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 21268 device.<wbr/> Applications can request lens shading map data by setting 21269 <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 21270 shading map data in <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a>; the returned shading map 21271 data will be the one applied by the camera device for this capture request.<wbr/></p> 21272 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 21273 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 21274 AWB are in AUTO modes(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code> 21275 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 21276 to be converged before using the returned shading map data.<wbr/></p> 21277 </td> 21278 </tr> 21279 21280 21281 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21282 <!-- end of entry --> 21283 21284 21285 <tr class="entry" id="controls_android.shading.strength"> 21286 <td class="entry_name 21287 " rowspan="1"> 21288 android.<wbr/>shading.<wbr/>strength 21289 </td> 21290 <td class="entry_type"> 21291 <span class="entry_type_name">byte</span> 21292 21293 <span class="entry_type_visibility"> [system]</span> 21294 21295 21296 21297 21298 21299 21300 </td> <!-- entry_type --> 21301 21302 <td class="entry_description"> 21303 <p>Control the amount of shading correction 21304 applied to the images</p> 21305 </td> 21306 21307 <td class="entry_units"> 21308 unitless: 1-10; 10 is full shading 21309 compensation 21310 </td> 21311 21312 <td class="entry_range"> 21313 </td> 21314 21315 <td class="entry_tags"> 21316 <ul class="entry_tags"> 21317 <li><a href="#tag_FUTURE">FUTURE</a></li> 21318 </ul> 21319 </td> 21320 21321 </tr> 21322 21323 21324 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21325 <!-- end of entry --> 21326 21327 21328 21329 <!-- end of kind --> 21330 </tbody> 21331 <tr><td colspan="6" class="kind">dynamic</td></tr> 21332 21333 <thead class="entries_header"> 21334 <tr> 21335 <th class="th_name">Property Name</th> 21336 <th class="th_type">Type</th> 21337 <th class="th_description">Description</th> 21338 <th class="th_units">Units</th> 21339 <th class="th_range">Range</th> 21340 <th class="th_tags">Tags</th> 21341 </tr> 21342 </thead> 21343 21344 <tbody> 21345 21346 21347 21348 21349 21350 21351 21352 21353 21354 21355 <tr class="entry" id="dynamic_android.shading.mode"> 21356 <td class="entry_name 21357 " rowspan="3"> 21358 android.<wbr/>shading.<wbr/>mode 21359 </td> 21360 <td class="entry_type"> 21361 <span class="entry_type_name entry_type_name_enum">byte</span> 21362 21363 <span class="entry_type_visibility"> [public]</span> 21364 21365 21366 <span class="entry_type_hwlevel">[full] </span> 21367 21368 21369 21370 <ul class="entry_type_enum"> 21371 <li> 21372 <span class="entry_type_enum_name">OFF</span> 21373 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 21374 </li> 21375 <li> 21376 <span class="entry_type_enum_name">FAST</span> 21377 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 21378 frame rate relative to sensor raw output</p></span> 21379 </li> 21380 <li> 21381 <span class="entry_type_enum_name">HIGH_QUALITY</span> 21382 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 21383 cost of possibly reduced frame rate.<wbr/></p></span> 21384 </li> 21385 </ul> 21386 21387 </td> <!-- entry_type --> 21388 21389 <td class="entry_description"> 21390 <p>Quality of lens shading correction applied 21391 to the image data.<wbr/></p> 21392 </td> 21393 21394 <td class="entry_units"> 21395 </td> 21396 21397 <td class="entry_range"> 21398 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 21399 </td> 21400 21401 <td class="entry_tags"> 21402 </td> 21403 21404 </tr> 21405 <tr class="entries_header"> 21406 <th class="th_details" colspan="5">Details</th> 21407 </tr> 21408 <tr class="entry_cont"> 21409 <td class="entry_details" colspan="5"> 21410 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 21411 camera device,<wbr/> and an identity lens shading map data will be provided 21412 if <code><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON</code>.<wbr/> For example,<wbr/> for lens 21413 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 21414 the output <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a> for this case will be an identity 21415 map shown below:</p> 21416 <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/> 21417 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/> 21418 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/> 21419 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/> 21420 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/> 21421 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 ] 21422 </code></pre> 21423 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 21424 device.<wbr/> Applications can request lens shading map data by setting 21425 <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 21426 shading map data in <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a>; the returned shading map 21427 data will be the one applied by the camera device for this capture request.<wbr/></p> 21428 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 21429 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 21430 AWB are in AUTO modes(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code> 21431 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 21432 to be converged before using the returned shading map data.<wbr/></p> 21433 </td> 21434 </tr> 21435 21436 21437 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21438 <!-- end of entry --> 21439 21440 21441 21442 <!-- end of kind --> 21443 </tbody> 21444 <tr><td colspan="6" class="kind">static</td></tr> 21445 21446 <thead class="entries_header"> 21447 <tr> 21448 <th class="th_name">Property Name</th> 21449 <th class="th_type">Type</th> 21450 <th class="th_description">Description</th> 21451 <th class="th_units">Units</th> 21452 <th class="th_range">Range</th> 21453 <th class="th_tags">Tags</th> 21454 </tr> 21455 </thead> 21456 21457 <tbody> 21458 21459 21460 21461 21462 21463 21464 21465 21466 21467 21468 <tr class="entry" id="static_android.shading.availableModes"> 21469 <td class="entry_name 21470 " rowspan="5"> 21471 android.<wbr/>shading.<wbr/>available<wbr/>Modes 21472 </td> 21473 <td class="entry_type"> 21474 <span class="entry_type_name">byte</span> 21475 <span class="entry_type_container">x</span> 21476 21477 <span class="entry_type_array"> 21478 n 21479 </span> 21480 <span class="entry_type_visibility"> [public as enumList]</span> 21481 21482 21483 <span class="entry_type_hwlevel">[legacy] </span> 21484 21485 21486 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div> 21487 21488 21489 </td> <!-- entry_type --> 21490 21491 <td class="entry_description"> 21492 <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> 21493 </td> 21494 21495 <td class="entry_units"> 21496 </td> 21497 21498 <td class="entry_range"> 21499 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p> 21500 </td> 21501 21502 <td class="entry_tags"> 21503 </td> 21504 21505 </tr> 21506 <tr class="entries_header"> 21507 <th class="th_details" colspan="5">Details</th> 21508 </tr> 21509 <tr class="entry_cont"> 21510 <td class="entry_details" colspan="5"> 21511 <p>This list contains lens shading modes that can be set for the camera device.<wbr/> 21512 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always 21513 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/> 21514 LEGACY devices will always only support FAST mode.<wbr/></p> 21515 </td> 21516 </tr> 21517 21518 <tr class="entries_header"> 21519 <th class="th_details" colspan="5">HAL Implementation Details</th> 21520 </tr> 21521 <tr class="entry_cont"> 21522 <td class="entry_details" colspan="5"> 21523 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is 21524 available on the camera device,<wbr/> but the underlying implementation can be the same for 21525 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not 21526 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 21527 </td> 21528 </tr> 21529 21530 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21531 <!-- end of entry --> 21532 21533 21534 21535 <!-- end of kind --> 21536 </tbody> 21537 21538 <!-- end of section --> 21539 <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr> 21540 21541 21542 <tr><td colspan="6" class="kind">controls</td></tr> 21543 21544 <thead class="entries_header"> 21545 <tr> 21546 <th class="th_name">Property Name</th> 21547 <th class="th_type">Type</th> 21548 <th class="th_description">Description</th> 21549 <th class="th_units">Units</th> 21550 <th class="th_range">Range</th> 21551 <th class="th_tags">Tags</th> 21552 </tr> 21553 </thead> 21554 21555 <tbody> 21556 21557 21558 21559 21560 21561 21562 21563 21564 21565 21566 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 21567 <td class="entry_name 21568 " rowspan="5"> 21569 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 21570 </td> 21571 <td class="entry_type"> 21572 <span class="entry_type_name entry_type_name_enum">byte</span> 21573 21574 <span class="entry_type_visibility"> [public]</span> 21575 21576 21577 <span class="entry_type_hwlevel">[legacy] </span> 21578 21579 21580 21581 <ul class="entry_type_enum"> 21582 <li> 21583 <span class="entry_type_enum_name">OFF</span> 21584 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 21585 results.<wbr/></p></span> 21586 </li> 21587 <li> 21588 <span class="entry_type_enum_name">SIMPLE</span> 21589 <span class="entry_type_enum_optional">[optional]</span> 21590 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 21591 </li> 21592 <li> 21593 <span class="entry_type_enum_name">FULL</span> 21594 <span class="entry_type_enum_optional">[optional]</span> 21595 <span class="entry_type_enum_notes"><p>Return all face 21596 metadata.<wbr/></p> 21597 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 21598 </li> 21599 </ul> 21600 21601 </td> <!-- entry_type --> 21602 21603 <td class="entry_description"> 21604 <p>Operating mode for the face detector 21605 unit.<wbr/></p> 21606 </td> 21607 21608 <td class="entry_units"> 21609 </td> 21610 21611 <td class="entry_range"> 21612 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 21613 </td> 21614 21615 <td class="entry_tags"> 21616 <ul class="entry_tags"> 21617 <li><a href="#tag_BC">BC</a></li> 21618 </ul> 21619 </td> 21620 21621 </tr> 21622 <tr class="entries_header"> 21623 <th class="th_details" colspan="5">Details</th> 21624 </tr> 21625 <tr class="entry_cont"> 21626 <td class="entry_details" colspan="5"> 21627 <p>Whether face detection is enabled,<wbr/> and whether it 21628 should output just the basic fields or the full set of 21629 fields.<wbr/></p> 21630 </td> 21631 </tr> 21632 21633 <tr class="entries_header"> 21634 <th class="th_details" colspan="5">HAL Implementation Details</th> 21635 </tr> 21636 <tr class="entry_cont"> 21637 <td class="entry_details" colspan="5"> 21638 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 21639 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 21640 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 21641 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 21642 </td> 21643 </tr> 21644 21645 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21646 <!-- end of entry --> 21647 21648 21649 <tr class="entry" id="controls_android.statistics.histogramMode"> 21650 <td class="entry_name 21651 " rowspan="1"> 21652 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 21653 </td> 21654 <td class="entry_type"> 21655 <span class="entry_type_name entry_type_name_enum">byte</span> 21656 21657 <span class="entry_type_visibility"> [system as boolean]</span> 21658 21659 21660 21661 21662 21663 <ul class="entry_type_enum"> 21664 <li> 21665 <span class="entry_type_enum_name">OFF</span> 21666 </li> 21667 <li> 21668 <span class="entry_type_enum_name">ON</span> 21669 </li> 21670 </ul> 21671 21672 </td> <!-- entry_type --> 21673 21674 <td class="entry_description"> 21675 <p>Operating mode for histogram 21676 generation</p> 21677 </td> 21678 21679 <td class="entry_units"> 21680 </td> 21681 21682 <td class="entry_range"> 21683 </td> 21684 21685 <td class="entry_tags"> 21686 <ul class="entry_tags"> 21687 <li><a href="#tag_FUTURE">FUTURE</a></li> 21688 </ul> 21689 </td> 21690 21691 </tr> 21692 21693 21694 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21695 <!-- end of entry --> 21696 21697 21698 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 21699 <td class="entry_name 21700 " rowspan="1"> 21701 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 21702 </td> 21703 <td class="entry_type"> 21704 <span class="entry_type_name entry_type_name_enum">byte</span> 21705 21706 <span class="entry_type_visibility"> [system as boolean]</span> 21707 21708 21709 21710 21711 21712 <ul class="entry_type_enum"> 21713 <li> 21714 <span class="entry_type_enum_name">OFF</span> 21715 </li> 21716 <li> 21717 <span class="entry_type_enum_name">ON</span> 21718 </li> 21719 </ul> 21720 21721 </td> <!-- entry_type --> 21722 21723 <td class="entry_description"> 21724 <p>Operating mode for sharpness map 21725 generation</p> 21726 </td> 21727 21728 <td class="entry_units"> 21729 </td> 21730 21731 <td class="entry_range"> 21732 </td> 21733 21734 <td class="entry_tags"> 21735 <ul class="entry_tags"> 21736 <li><a href="#tag_FUTURE">FUTURE</a></li> 21737 </ul> 21738 </td> 21739 21740 </tr> 21741 21742 21743 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21744 <!-- end of entry --> 21745 21746 21747 <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> 21748 <td class="entry_name 21749 " rowspan="3"> 21750 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 21751 </td> 21752 <td class="entry_type"> 21753 <span class="entry_type_name entry_type_name_enum">byte</span> 21754 21755 <span class="entry_type_visibility"> [public as boolean]</span> 21756 21757 21758 21759 21760 21761 <ul class="entry_type_enum"> 21762 <li> 21763 <span class="entry_type_enum_name">OFF</span> 21764 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 21765 </li> 21766 <li> 21767 <span class="entry_type_enum_name">ON</span> 21768 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 21769 </li> 21770 </ul> 21771 21772 </td> <!-- entry_type --> 21773 21774 <td class="entry_description"> 21775 <p>Operating mode for hot pixel map generation.<wbr/></p> 21776 </td> 21777 21778 <td class="entry_units"> 21779 </td> 21780 21781 <td class="entry_range"> 21782 <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> 21783 </td> 21784 21785 <td class="entry_tags"> 21786 <ul class="entry_tags"> 21787 <li><a href="#tag_V1">V1</a></li> 21788 <li><a href="#tag_RAW">RAW</a></li> 21789 </ul> 21790 </td> 21791 21792 </tr> 21793 <tr class="entries_header"> 21794 <th class="th_details" colspan="5">Details</th> 21795 </tr> 21796 <tr class="entry_cont"> 21797 <td class="entry_details" colspan="5"> 21798 <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/> 21799 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 21800 </td> 21801 </tr> 21802 21803 21804 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21805 <!-- end of entry --> 21806 21807 21808 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 21809 <td class="entry_name 21810 " rowspan="3"> 21811 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 21812 </td> 21813 <td class="entry_type"> 21814 <span class="entry_type_name entry_type_name_enum">byte</span> 21815 21816 <span class="entry_type_visibility"> [public]</span> 21817 21818 21819 <span class="entry_type_hwlevel">[full] </span> 21820 21821 21822 21823 <ul class="entry_type_enum"> 21824 <li> 21825 <span class="entry_type_enum_name">OFF</span> 21826 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 21827 </li> 21828 <li> 21829 <span class="entry_type_enum_name">ON</span> 21830 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 21831 </li> 21832 </ul> 21833 21834 </td> <!-- entry_type --> 21835 21836 <td class="entry_description"> 21837 <p>Whether the camera device will output the lens 21838 shading map in output result metadata.<wbr/></p> 21839 </td> 21840 21841 <td class="entry_units"> 21842 </td> 21843 21844 <td class="entry_range"> 21845 <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> 21846 </td> 21847 21848 <td class="entry_tags"> 21849 <ul class="entry_tags"> 21850 <li><a href="#tag_RAW">RAW</a></li> 21851 </ul> 21852 </td> 21853 21854 </tr> 21855 <tr class="entries_header"> 21856 <th class="th_details" colspan="5">Details</th> 21857 </tr> 21858 <tr class="entry_cont"> 21859 <td class="entry_details" colspan="5"> 21860 <p>When set to ON,<wbr/> 21861 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 21862 the output result metadata.<wbr/></p> 21863 <p>ON is always supported on devices with the RAW capability.<wbr/></p> 21864 </td> 21865 </tr> 21866 21867 21868 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21869 <!-- end of entry --> 21870 21871 21872 21873 <!-- end of kind --> 21874 </tbody> 21875 <tr><td colspan="6" class="kind">static</td></tr> 21876 21877 <thead class="entries_header"> 21878 <tr> 21879 <th class="th_name">Property Name</th> 21880 <th class="th_type">Type</th> 21881 <th class="th_description">Description</th> 21882 <th class="th_units">Units</th> 21883 <th class="th_range">Range</th> 21884 <th class="th_tags">Tags</th> 21885 </tr> 21886 </thead> 21887 21888 <tbody> 21889 21890 21891 21892 21893 21894 21895 21896 21897 21898 21899 21900 21901 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 21902 <td class="entry_name 21903 " rowspan="3"> 21904 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 21905 </td> 21906 <td class="entry_type"> 21907 <span class="entry_type_name">byte</span> 21908 <span class="entry_type_container">x</span> 21909 21910 <span class="entry_type_array"> 21911 n 21912 </span> 21913 <span class="entry_type_visibility"> [public as enumList]</span> 21914 21915 21916 <span class="entry_type_hwlevel">[legacy] </span> 21917 21918 21919 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 21920 21921 21922 </td> <!-- entry_type --> 21923 21924 <td class="entry_description"> 21925 <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 21926 supported by this camera device.<wbr/></p> 21927 </td> 21928 21929 <td class="entry_units"> 21930 </td> 21931 21932 <td class="entry_range"> 21933 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p> 21934 </td> 21935 21936 <td class="entry_tags"> 21937 </td> 21938 21939 </tr> 21940 <tr class="entries_header"> 21941 <th class="th_details" colspan="5">Details</th> 21942 </tr> 21943 <tr class="entry_cont"> 21944 <td class="entry_details" colspan="5"> 21945 <p>OFF is always supported.<wbr/></p> 21946 </td> 21947 </tr> 21948 21949 21950 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21951 <!-- end of entry --> 21952 21953 21954 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 21955 <td class="entry_name 21956 " rowspan="1"> 21957 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 21958 </td> 21959 <td class="entry_type"> 21960 <span class="entry_type_name">int32</span> 21961 21962 <span class="entry_type_visibility"> [system]</span> 21963 21964 21965 21966 21967 21968 21969 </td> <!-- entry_type --> 21970 21971 <td class="entry_description"> 21972 <p>Number of histogram buckets 21973 supported</p> 21974 </td> 21975 21976 <td class="entry_units"> 21977 </td> 21978 21979 <td class="entry_range"> 21980 <p>>= 64</p> 21981 </td> 21982 21983 <td class="entry_tags"> 21984 <ul class="entry_tags"> 21985 <li><a href="#tag_FUTURE">FUTURE</a></li> 21986 </ul> 21987 </td> 21988 21989 </tr> 21990 21991 21992 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21993 <!-- end of entry --> 21994 21995 21996 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 21997 <td class="entry_name 21998 " rowspan="1"> 21999 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 22000 </td> 22001 <td class="entry_type"> 22002 <span class="entry_type_name">int32</span> 22003 22004 <span class="entry_type_visibility"> [public]</span> 22005 22006 22007 <span class="entry_type_hwlevel">[legacy] </span> 22008 22009 22010 22011 22012 </td> <!-- entry_type --> 22013 22014 <td class="entry_description"> 22015 <p>The maximum number of simultaneously detectable 22016 faces.<wbr/></p> 22017 </td> 22018 22019 <td class="entry_units"> 22020 </td> 22021 22022 <td class="entry_range"> 22023 <p>0 for cameras without available face detection; otherwise: 22024 <code>>=4</code> for LIMITED or FULL hwlevel devices or 22025 <code>>0</code> for LEGACY devices.<wbr/></p> 22026 </td> 22027 22028 <td class="entry_tags"> 22029 <ul class="entry_tags"> 22030 <li><a href="#tag_BC">BC</a></li> 22031 </ul> 22032 </td> 22033 22034 </tr> 22035 22036 22037 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22038 <!-- end of entry --> 22039 22040 22041 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 22042 <td class="entry_name 22043 " rowspan="1"> 22044 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 22045 </td> 22046 <td class="entry_type"> 22047 <span class="entry_type_name">int32</span> 22048 22049 <span class="entry_type_visibility"> [system]</span> 22050 22051 22052 22053 22054 22055 22056 </td> <!-- entry_type --> 22057 22058 <td class="entry_description"> 22059 <p>Maximum value possible for a histogram 22060 bucket</p> 22061 </td> 22062 22063 <td class="entry_units"> 22064 </td> 22065 22066 <td class="entry_range"> 22067 </td> 22068 22069 <td class="entry_tags"> 22070 <ul class="entry_tags"> 22071 <li><a href="#tag_FUTURE">FUTURE</a></li> 22072 </ul> 22073 </td> 22074 22075 </tr> 22076 22077 22078 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22079 <!-- end of entry --> 22080 22081 22082 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 22083 <td class="entry_name 22084 " rowspan="1"> 22085 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 22086 </td> 22087 <td class="entry_type"> 22088 <span class="entry_type_name">int32</span> 22089 22090 <span class="entry_type_visibility"> [system]</span> 22091 22092 22093 22094 22095 22096 22097 </td> <!-- entry_type --> 22098 22099 <td class="entry_description"> 22100 <p>Maximum value possible for a sharpness map 22101 region.<wbr/></p> 22102 </td> 22103 22104 <td class="entry_units"> 22105 </td> 22106 22107 <td class="entry_range"> 22108 </td> 22109 22110 <td class="entry_tags"> 22111 <ul class="entry_tags"> 22112 <li><a href="#tag_FUTURE">FUTURE</a></li> 22113 </ul> 22114 </td> 22115 22116 </tr> 22117 22118 22119 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22120 <!-- end of entry --> 22121 22122 22123 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 22124 <td class="entry_name 22125 " rowspan="1"> 22126 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 22127 </td> 22128 <td class="entry_type"> 22129 <span class="entry_type_name">int32</span> 22130 <span class="entry_type_container">x</span> 22131 22132 <span class="entry_type_array"> 22133 2 22134 </span> 22135 <span class="entry_type_visibility"> [system as size]</span> 22136 22137 22138 22139 22140 <div class="entry_type_notes">width x height</div> 22141 22142 22143 </td> <!-- entry_type --> 22144 22145 <td class="entry_description"> 22146 <p>Dimensions of the sharpness 22147 map</p> 22148 </td> 22149 22150 <td class="entry_units"> 22151 </td> 22152 22153 <td class="entry_range"> 22154 <p>Must be at least 32 x 32</p> 22155 </td> 22156 22157 <td class="entry_tags"> 22158 <ul class="entry_tags"> 22159 <li><a href="#tag_FUTURE">FUTURE</a></li> 22160 </ul> 22161 </td> 22162 22163 </tr> 22164 22165 22166 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22167 <!-- end of entry --> 22168 22169 22170 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> 22171 <td class="entry_name 22172 " rowspan="3"> 22173 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes 22174 </td> 22175 <td class="entry_type"> 22176 <span class="entry_type_name">byte</span> 22177 <span class="entry_type_container">x</span> 22178 22179 <span class="entry_type_array"> 22180 n 22181 </span> 22182 <span class="entry_type_visibility"> [public as boolean]</span> 22183 22184 22185 22186 22187 <div class="entry_type_notes">list of enums</div> 22188 22189 22190 </td> <!-- entry_type --> 22191 22192 <td class="entry_description"> 22193 <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 22194 supported by this camera device.<wbr/></p> 22195 </td> 22196 22197 <td class="entry_units"> 22198 </td> 22199 22200 <td class="entry_range"> 22201 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p> 22202 </td> 22203 22204 <td class="entry_tags"> 22205 <ul class="entry_tags"> 22206 <li><a href="#tag_V1">V1</a></li> 22207 <li><a href="#tag_RAW">RAW</a></li> 22208 </ul> 22209 </td> 22210 22211 </tr> 22212 <tr class="entries_header"> 22213 <th class="th_details" colspan="5">Details</th> 22214 </tr> 22215 <tr class="entry_cont"> 22216 <td class="entry_details" colspan="5"> 22217 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only 22218 <code>false</code>.<wbr/></p> 22219 <p>ON is always supported on devices with the RAW capability.<wbr/></p> 22220 </td> 22221 </tr> 22222 22223 22224 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22225 <!-- end of entry --> 22226 22227 22228 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes"> 22229 <td class="entry_name 22230 " rowspan="3"> 22231 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes 22232 </td> 22233 <td class="entry_type"> 22234 <span class="entry_type_name">byte</span> 22235 <span class="entry_type_container">x</span> 22236 22237 <span class="entry_type_array"> 22238 n 22239 </span> 22240 <span class="entry_type_visibility"> [public as enumList]</span> 22241 22242 22243 22244 22245 <div class="entry_type_notes">list of enums</div> 22246 22247 22248 </td> <!-- entry_type --> 22249 22250 <td class="entry_description"> 22251 <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 22252 are supported by this camera device.<wbr/></p> 22253 </td> 22254 22255 <td class="entry_units"> 22256 </td> 22257 22258 <td class="entry_range"> 22259 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p> 22260 </td> 22261 22262 <td class="entry_tags"> 22263 </td> 22264 22265 </tr> 22266 <tr class="entries_header"> 22267 <th class="th_details" colspan="5">Details</th> 22268 </tr> 22269 <tr class="entry_cont"> 22270 <td class="entry_details" colspan="5"> 22271 <p>If no lens shading map output is available for this camera device,<wbr/> this key will 22272 contain only OFF.<wbr/></p> 22273 <p>ON is always supported on devices with the RAW capability.<wbr/> 22274 LEGACY mode devices will always only support OFF.<wbr/></p> 22275 </td> 22276 </tr> 22277 22278 22279 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22280 <!-- end of entry --> 22281 22282 22283 22284 22285 22286 22287 <!-- end of kind --> 22288 </tbody> 22289 <tr><td colspan="6" class="kind">dynamic</td></tr> 22290 22291 <thead class="entries_header"> 22292 <tr> 22293 <th class="th_name">Property Name</th> 22294 <th class="th_type">Type</th> 22295 <th class="th_description">Description</th> 22296 <th class="th_units">Units</th> 22297 <th class="th_range">Range</th> 22298 <th class="th_tags">Tags</th> 22299 </tr> 22300 </thead> 22301 22302 <tbody> 22303 22304 22305 22306 22307 22308 22309 22310 22311 22312 22313 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 22314 <td class="entry_name 22315 " rowspan="5"> 22316 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 22317 </td> 22318 <td class="entry_type"> 22319 <span class="entry_type_name entry_type_name_enum">byte</span> 22320 22321 <span class="entry_type_visibility"> [public]</span> 22322 22323 22324 <span class="entry_type_hwlevel">[legacy] </span> 22325 22326 22327 22328 <ul class="entry_type_enum"> 22329 <li> 22330 <span class="entry_type_enum_name">OFF</span> 22331 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 22332 results.<wbr/></p></span> 22333 </li> 22334 <li> 22335 <span class="entry_type_enum_name">SIMPLE</span> 22336 <span class="entry_type_enum_optional">[optional]</span> 22337 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 22338 </li> 22339 <li> 22340 <span class="entry_type_enum_name">FULL</span> 22341 <span class="entry_type_enum_optional">[optional]</span> 22342 <span class="entry_type_enum_notes"><p>Return all face 22343 metadata.<wbr/></p> 22344 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 22345 </li> 22346 </ul> 22347 22348 </td> <!-- entry_type --> 22349 22350 <td class="entry_description"> 22351 <p>Operating mode for the face detector 22352 unit.<wbr/></p> 22353 </td> 22354 22355 <td class="entry_units"> 22356 </td> 22357 22358 <td class="entry_range"> 22359 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 22360 </td> 22361 22362 <td class="entry_tags"> 22363 <ul class="entry_tags"> 22364 <li><a href="#tag_BC">BC</a></li> 22365 </ul> 22366 </td> 22367 22368 </tr> 22369 <tr class="entries_header"> 22370 <th class="th_details" colspan="5">Details</th> 22371 </tr> 22372 <tr class="entry_cont"> 22373 <td class="entry_details" colspan="5"> 22374 <p>Whether face detection is enabled,<wbr/> and whether it 22375 should output just the basic fields or the full set of 22376 fields.<wbr/></p> 22377 </td> 22378 </tr> 22379 22380 <tr class="entries_header"> 22381 <th class="th_details" colspan="5">HAL Implementation Details</th> 22382 </tr> 22383 <tr class="entry_cont"> 22384 <td class="entry_details" colspan="5"> 22385 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 22386 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 22387 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 22388 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 22389 </td> 22390 </tr> 22391 22392 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22393 <!-- end of entry --> 22394 22395 22396 <tr class="entry" id="dynamic_android.statistics.faceIds"> 22397 <td class="entry_name 22398 " rowspan="3"> 22399 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 22400 </td> 22401 <td class="entry_type"> 22402 <span class="entry_type_name">int32</span> 22403 <span class="entry_type_container">x</span> 22404 22405 <span class="entry_type_array"> 22406 n 22407 </span> 22408 <span class="entry_type_visibility"> [hidden]</span> 22409 22410 22411 <span class="entry_type_hwlevel">[legacy] </span> 22412 22413 22414 22415 22416 </td> <!-- entry_type --> 22417 22418 <td class="entry_description"> 22419 <p>List of unique IDs for detected faces.<wbr/></p> 22420 </td> 22421 22422 <td class="entry_units"> 22423 </td> 22424 22425 <td class="entry_range"> 22426 </td> 22427 22428 <td class="entry_tags"> 22429 <ul class="entry_tags"> 22430 <li><a href="#tag_BC">BC</a></li> 22431 </ul> 22432 </td> 22433 22434 </tr> 22435 <tr class="entries_header"> 22436 <th class="th_details" colspan="5">Details</th> 22437 </tr> 22438 <tr class="entry_cont"> 22439 <td class="entry_details" colspan="5"> 22440 <p>Each detected face is given a unique ID that is valid for as long as the face is visible 22441 to the camera device.<wbr/> A face that leaves the field of view and later returns may be 22442 assigned a new ID.<wbr/></p> 22443 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 22444 </td> 22445 </tr> 22446 22447 22448 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22449 <!-- end of entry --> 22450 22451 22452 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 22453 <td class="entry_name 22454 " rowspan="3"> 22455 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 22456 </td> 22457 <td class="entry_type"> 22458 <span class="entry_type_name">int32</span> 22459 <span class="entry_type_container">x</span> 22460 22461 <span class="entry_type_array"> 22462 n x 6 22463 </span> 22464 <span class="entry_type_visibility"> [hidden]</span> 22465 22466 22467 <span class="entry_type_hwlevel">[legacy] </span> 22468 22469 22470 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 22471 22472 22473 </td> <!-- entry_type --> 22474 22475 <td class="entry_description"> 22476 <p>List of landmarks for detected 22477 faces.<wbr/></p> 22478 </td> 22479 22480 <td class="entry_units"> 22481 </td> 22482 22483 <td class="entry_range"> 22484 </td> 22485 22486 <td class="entry_tags"> 22487 <ul class="entry_tags"> 22488 <li><a href="#tag_BC">BC</a></li> 22489 </ul> 22490 </td> 22491 22492 </tr> 22493 <tr class="entries_header"> 22494 <th class="th_details" colspan="5">Details</th> 22495 </tr> 22496 <tr class="entry_cont"> 22497 <td class="entry_details" colspan="5"> 22498 <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 22499 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 22500 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 22501 </td> 22502 </tr> 22503 22504 22505 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22506 <!-- end of entry --> 22507 22508 22509 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 22510 <td class="entry_name 22511 " rowspan="3"> 22512 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 22513 </td> 22514 <td class="entry_type"> 22515 <span class="entry_type_name">int32</span> 22516 <span class="entry_type_container">x</span> 22517 22518 <span class="entry_type_array"> 22519 n x 4 22520 </span> 22521 <span class="entry_type_visibility"> [hidden as rectangle]</span> 22522 22523 22524 <span class="entry_type_hwlevel">[legacy] </span> 22525 22526 22527 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 22528 22529 22530 </td> <!-- entry_type --> 22531 22532 <td class="entry_description"> 22533 <p>List of the bounding rectangles for detected 22534 faces.<wbr/></p> 22535 </td> 22536 22537 <td class="entry_units"> 22538 </td> 22539 22540 <td class="entry_range"> 22541 </td> 22542 22543 <td class="entry_tags"> 22544 <ul class="entry_tags"> 22545 <li><a href="#tag_BC">BC</a></li> 22546 </ul> 22547 </td> 22548 22549 </tr> 22550 <tr class="entries_header"> 22551 <th class="th_details" colspan="5">Details</th> 22552 </tr> 22553 <tr class="entry_cont"> 22554 <td class="entry_details" colspan="5"> 22555 <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 22556 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 22557 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p> 22558 </td> 22559 </tr> 22560 22561 22562 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22563 <!-- end of entry --> 22564 22565 22566 <tr class="entry" id="dynamic_android.statistics.faceScores"> 22567 <td class="entry_name 22568 " rowspan="5"> 22569 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 22570 </td> 22571 <td class="entry_type"> 22572 <span class="entry_type_name">byte</span> 22573 <span class="entry_type_container">x</span> 22574 22575 <span class="entry_type_array"> 22576 n 22577 </span> 22578 <span class="entry_type_visibility"> [hidden]</span> 22579 22580 22581 <span class="entry_type_hwlevel">[legacy] </span> 22582 22583 22584 22585 22586 </td> <!-- entry_type --> 22587 22588 <td class="entry_description"> 22589 <p>List of the face confidence scores for 22590 detected faces</p> 22591 </td> 22592 22593 <td class="entry_units"> 22594 </td> 22595 22596 <td class="entry_range"> 22597 <p>1-100</p> 22598 </td> 22599 22600 <td class="entry_tags"> 22601 <ul class="entry_tags"> 22602 <li><a href="#tag_BC">BC</a></li> 22603 </ul> 22604 </td> 22605 22606 </tr> 22607 <tr class="entries_header"> 22608 <th class="th_details" colspan="5">Details</th> 22609 </tr> 22610 <tr class="entry_cont"> 22611 <td class="entry_details" colspan="5"> 22612 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> 22613 </td> 22614 </tr> 22615 22616 <tr class="entries_header"> 22617 <th class="th_details" colspan="5">HAL Implementation Details</th> 22618 </tr> 22619 <tr class="entry_cont"> 22620 <td class="entry_details" colspan="5"> 22621 <p>The value should be meaningful (for example,<wbr/> setting 100 at 22622 all times is illegal).<wbr/></p> 22623 </td> 22624 </tr> 22625 22626 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22627 <!-- end of entry --> 22628 22629 22630 <tr class="entry" id="dynamic_android.statistics.faces"> 22631 <td class="entry_name 22632 " rowspan="3"> 22633 android.<wbr/>statistics.<wbr/>faces 22634 </td> 22635 <td class="entry_type"> 22636 <span class="entry_type_name">int32</span> 22637 <span class="entry_type_container">x</span> 22638 22639 <span class="entry_type_array"> 22640 n 22641 </span> 22642 <span class="entry_type_visibility"> [public as face]</span> 22643 22644 <span class="entry_type_synthetic">[synthetic] </span> 22645 22646 <span class="entry_type_hwlevel">[legacy] </span> 22647 22648 22649 22650 22651 </td> <!-- entry_type --> 22652 22653 <td class="entry_description"> 22654 <p>List of the faces detected through camera face detection 22655 in this capture.<wbr/></p> 22656 </td> 22657 22658 <td class="entry_units"> 22659 </td> 22660 22661 <td class="entry_range"> 22662 </td> 22663 22664 <td class="entry_tags"> 22665 </td> 22666 22667 </tr> 22668 <tr class="entries_header"> 22669 <th class="th_details" colspan="5">Details</th> 22670 </tr> 22671 <tr class="entry_cont"> 22672 <td class="entry_details" colspan="5"> 22673 <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> 22674 </td> 22675 </tr> 22676 22677 22678 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22679 <!-- end of entry --> 22680 22681 22682 <tr class="entry" id="dynamic_android.statistics.histogram"> 22683 <td class="entry_name 22684 " rowspan="3"> 22685 android.<wbr/>statistics.<wbr/>histogram 22686 </td> 22687 <td class="entry_type"> 22688 <span class="entry_type_name">int32</span> 22689 <span class="entry_type_container">x</span> 22690 22691 <span class="entry_type_array"> 22692 n x 3 22693 </span> 22694 <span class="entry_type_visibility"> [system]</span> 22695 22696 22697 22698 22699 <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> 22700 22701 22702 </td> <!-- entry_type --> 22703 22704 <td class="entry_description"> 22705 <p>A 3-channel histogram based on the raw 22706 sensor data</p> 22707 </td> 22708 22709 <td class="entry_units"> 22710 </td> 22711 22712 <td class="entry_range"> 22713 </td> 22714 22715 <td class="entry_tags"> 22716 <ul class="entry_tags"> 22717 <li><a href="#tag_FUTURE">FUTURE</a></li> 22718 </ul> 22719 </td> 22720 22721 </tr> 22722 <tr class="entries_header"> 22723 <th class="th_details" colspan="5">Details</th> 22724 </tr> 22725 <tr class="entry_cont"> 22726 <td class="entry_details" colspan="5"> 22727 <p>The k'th bucket (0-based) covers the input range 22728 (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/> 22729 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 22730 supported,<wbr/> all channels should have the same data</p> 22731 </td> 22732 </tr> 22733 22734 22735 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22736 <!-- end of entry --> 22737 22738 22739 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 22740 <td class="entry_name 22741 " rowspan="1"> 22742 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 22743 </td> 22744 <td class="entry_type"> 22745 <span class="entry_type_name entry_type_name_enum">byte</span> 22746 22747 <span class="entry_type_visibility"> [system as boolean]</span> 22748 22749 22750 22751 22752 22753 <ul class="entry_type_enum"> 22754 <li> 22755 <span class="entry_type_enum_name">OFF</span> 22756 </li> 22757 <li> 22758 <span class="entry_type_enum_name">ON</span> 22759 </li> 22760 </ul> 22761 22762 </td> <!-- entry_type --> 22763 22764 <td class="entry_description"> 22765 <p>Operating mode for histogram 22766 generation</p> 22767 </td> 22768 22769 <td class="entry_units"> 22770 </td> 22771 22772 <td class="entry_range"> 22773 </td> 22774 22775 <td class="entry_tags"> 22776 <ul class="entry_tags"> 22777 <li><a href="#tag_FUTURE">FUTURE</a></li> 22778 </ul> 22779 </td> 22780 22781 </tr> 22782 22783 22784 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22785 <!-- end of entry --> 22786 22787 22788 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 22789 <td class="entry_name 22790 " rowspan="3"> 22791 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 22792 </td> 22793 <td class="entry_type"> 22794 <span class="entry_type_name">int32</span> 22795 <span class="entry_type_container">x</span> 22796 22797 <span class="entry_type_array"> 22798 n x m x 3 22799 </span> 22800 <span class="entry_type_visibility"> [system]</span> 22801 22802 22803 22804 22805 <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> 22806 22807 22808 </td> <!-- entry_type --> 22809 22810 <td class="entry_description"> 22811 <p>A 3-channel sharpness map,<wbr/> based on the raw 22812 sensor data</p> 22813 </td> 22814 22815 <td class="entry_units"> 22816 </td> 22817 22818 <td class="entry_range"> 22819 </td> 22820 22821 <td class="entry_tags"> 22822 <ul class="entry_tags"> 22823 <li><a href="#tag_FUTURE">FUTURE</a></li> 22824 </ul> 22825 </td> 22826 22827 </tr> 22828 <tr class="entries_header"> 22829 <th class="th_details" colspan="5">Details</th> 22830 </tr> 22831 <tr class="entry_cont"> 22832 <td class="entry_details" colspan="5"> 22833 <p>If only a monochrome sharpness map is supported,<wbr/> 22834 all channels should have the same data</p> 22835 </td> 22836 </tr> 22837 22838 22839 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22840 <!-- end of entry --> 22841 22842 22843 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> 22844 <td class="entry_name 22845 " rowspan="1"> 22846 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 22847 </td> 22848 <td class="entry_type"> 22849 <span class="entry_type_name entry_type_name_enum">byte</span> 22850 22851 <span class="entry_type_visibility"> [system as boolean]</span> 22852 22853 22854 22855 22856 22857 <ul class="entry_type_enum"> 22858 <li> 22859 <span class="entry_type_enum_name">OFF</span> 22860 </li> 22861 <li> 22862 <span class="entry_type_enum_name">ON</span> 22863 </li> 22864 </ul> 22865 22866 </td> <!-- entry_type --> 22867 22868 <td class="entry_description"> 22869 <p>Operating mode for sharpness map 22870 generation</p> 22871 </td> 22872 22873 <td class="entry_units"> 22874 </td> 22875 22876 <td class="entry_range"> 22877 </td> 22878 22879 <td class="entry_tags"> 22880 <ul class="entry_tags"> 22881 <li><a href="#tag_FUTURE">FUTURE</a></li> 22882 </ul> 22883 </td> 22884 22885 </tr> 22886 22887 22888 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22889 <!-- end of entry --> 22890 22891 22892 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap"> 22893 <td class="entry_name 22894 " rowspan="3"> 22895 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map 22896 </td> 22897 <td class="entry_type"> 22898 <span class="entry_type_name">byte</span> 22899 22900 <span class="entry_type_visibility"> [public as lensShadingMap]</span> 22901 22902 22903 <span class="entry_type_hwlevel">[full] </span> 22904 22905 22906 22907 22908 </td> <!-- entry_type --> 22909 22910 <td class="entry_description"> 22911 <p>The shading map is a low-resolution floating-point map 22912 that lists the coefficients used to correct for vignetting,<wbr/> for each 22913 Bayer color channel.<wbr/></p> 22914 </td> 22915 22916 <td class="entry_units"> 22917 </td> 22918 22919 <td class="entry_range"> 22920 <p>Each gain factor is >= 1</p> 22921 </td> 22922 22923 <td class="entry_tags"> 22924 </td> 22925 22926 </tr> 22927 <tr class="entries_header"> 22928 <th class="th_details" colspan="5">Details</th> 22929 </tr> 22930 <tr class="entry_cont"> 22931 <td class="entry_details" colspan="5"> 22932 <p>The least shaded section of the image should have a gain factor 22933 of 1; all other sections should have gains above 1.<wbr/></p> 22934 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 22935 must take into account the colorCorrection settings.<wbr/></p> 22936 <p>The shading map is for the entire active pixel array,<wbr/> and is not 22937 affected by the crop region specified in the request.<wbr/> Each shading map 22938 entry is the value of the shading compensation map over a specific 22939 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 22940 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 22941 (x,<wbr/>y) (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 22942 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 22943 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 22944 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 22945 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 22946 The shading map is stored in a fully interleaved format.<wbr/></p> 22947 <p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 22948 and must be smaller than 64x64.<wbr/></p> 22949 <p>As an example,<wbr/> given a very small map defined as:</p> 22950 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ] 22951 values = 22952 [ 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/> 22953 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/> 22954 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/> 22955 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/> 22956 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/> 22957 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 ] 22958 </code></pre> 22959 <p>The low-resolution scaling map images for each channel are 22960 (displayed using nearest-neighbor interpolation):</p> 22961 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 22962 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 22963 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 22964 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 22965 <p>As a visualization only,<wbr/> inverting the full-color map to recover an 22966 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 22967 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 22968 </td> 22969 </tr> 22970 22971 22972 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22973 <!-- end of entry --> 22974 22975 22976 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 22977 <td class="entry_name 22978 " rowspan="5"> 22979 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 22980 </td> 22981 <td class="entry_type"> 22982 <span class="entry_type_name">float</span> 22983 <span class="entry_type_container">x</span> 22984 22985 <span class="entry_type_array"> 22986 4 x n x m 22987 </span> 22988 <span class="entry_type_visibility"> [hidden]</span> 22989 22990 22991 <span class="entry_type_hwlevel">[full] </span> 22992 22993 22994 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 22995 22996 22997 </td> <!-- entry_type --> 22998 22999 <td class="entry_description"> 23000 <p>The shading map is a low-resolution floating-point map 23001 that lists the coefficients used to correct for vignetting,<wbr/> for each 23002 Bayer color channel of RAW image data.<wbr/></p> 23003 </td> 23004 23005 <td class="entry_units"> 23006 </td> 23007 23008 <td class="entry_range"> 23009 <p>Each gain factor is >= 1</p> 23010 </td> 23011 23012 <td class="entry_tags"> 23013 </td> 23014 23015 </tr> 23016 <tr class="entries_header"> 23017 <th class="th_details" colspan="5">Details</th> 23018 </tr> 23019 <tr class="entry_cont"> 23020 <td class="entry_details" colspan="5"> 23021 <p>The least shaded section of the image should have a gain factor 23022 of 1; all other sections should have gains above 1.<wbr/></p> 23023 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 23024 must take into account the colorCorrection settings.<wbr/></p> 23025 <p>The shading map is for the entire active pixel array,<wbr/> and is not 23026 affected by the crop region specified in the request.<wbr/> Each shading map 23027 entry is the value of the shading compensation map over a specific 23028 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 23029 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 23030 (x,<wbr/>y) (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 23031 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 23032 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 23033 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 23034 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 23035 The shading map is stored in a fully interleaved format,<wbr/> and its size 23036 is provided in the camera static metadata by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>.<wbr/></p> 23037 <p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 23038 and must be smaller than 64x64.<wbr/></p> 23039 <p>As an example,<wbr/> given a very small map defined as:</p> 23040 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 23041 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 23042 [ 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/> 23043 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/> 23044 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/> 23045 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/> 23046 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/> 23047 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 ] 23048 </code></pre> 23049 <p>The low-resolution scaling map images for each channel are 23050 (displayed using nearest-neighbor interpolation):</p> 23051 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 23052 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 23053 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 23054 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 23055 <p>As a visualization only,<wbr/> inverting the full-color map to recover an 23056 image of a gray wall (using bicubic interpolation for visual quality) 23057 as captured by the sensor gives:</p> 23058 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 23059 <p>Note that the RAW image data might be subject to lens shading 23060 correction not reported on this map.<wbr/> Query 23061 <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 23062 to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> 23063 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading 23064 correction.<wbr/> In the case full lens shading correction is applied to RAW 23065 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/> 23066 In other words,<wbr/> the map reported in this key is the remaining lens shading 23067 that needs to be applied on the RAW image to get images without lens shading 23068 artifacts.<wbr/> See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a list of RAW image 23069 formats.<wbr/></p> 23070 </td> 23071 </tr> 23072 23073 <tr class="entries_header"> 23074 <th class="th_details" colspan="5">HAL Implementation Details</th> 23075 </tr> 23076 <tr class="entry_cont"> 23077 <td class="entry_details" colspan="5"> 23078 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/> 23079 When AE and AWB are in AUTO modes 23080 (<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 23081 may have all the information it need to generate most accurate lens shading map.<wbr/> When 23082 AE or AWB are in manual mode 23083 (<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 23084 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid 23085 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with 23086 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p> 23087 </td> 23088 </tr> 23089 23090 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23091 <!-- end of entry --> 23092 23093 23094 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 23095 <td class="entry_name 23096 entry_name_deprecated 23097 " rowspan="3"> 23098 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 23099 </td> 23100 <td class="entry_type"> 23101 <span class="entry_type_name">float</span> 23102 <span class="entry_type_container">x</span> 23103 23104 <span class="entry_type_array"> 23105 4 23106 </span> 23107 <span class="entry_type_visibility"> [hidden]</span> 23108 23109 23110 23111 <span class="entry_type_deprecated">[deprecated] </span> 23112 23113 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 23114 23115 23116 </td> <!-- entry_type --> 23117 23118 <td class="entry_description"> 23119 <p>The best-fit color channel gains calculated 23120 by the camera device's statistics units for the current output frame.<wbr/></p> 23121 </td> 23122 23123 <td class="entry_units"> 23124 </td> 23125 23126 <td class="entry_range"> 23127 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 23128 </td> 23129 23130 <td class="entry_tags"> 23131 </td> 23132 23133 </tr> 23134 <tr class="entries_header"> 23135 <th class="th_details" colspan="5">Details</th> 23136 </tr> 23137 <tr class="entry_cont"> 23138 <td class="entry_details" colspan="5"> 23139 <p>This may be different than the gains used for this frame,<wbr/> 23140 since statistics processing on data from a new frame 23141 typically completes after the transform has already been 23142 applied to that frame.<wbr/></p> 23143 <p>The 4 channel gains are defined in Bayer domain,<wbr/> 23144 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 23145 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 23146 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 23147 </td> 23148 </tr> 23149 23150 23151 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23152 <!-- end of entry --> 23153 23154 23155 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 23156 <td class="entry_name 23157 entry_name_deprecated 23158 " rowspan="3"> 23159 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 23160 </td> 23161 <td class="entry_type"> 23162 <span class="entry_type_name">rational</span> 23163 <span class="entry_type_container">x</span> 23164 23165 <span class="entry_type_array"> 23166 3 x 3 23167 </span> 23168 <span class="entry_type_visibility"> [hidden]</span> 23169 23170 23171 23172 <span class="entry_type_deprecated">[deprecated] </span> 23173 23174 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 23175 23176 23177 </td> <!-- entry_type --> 23178 23179 <td class="entry_description"> 23180 <p>The best-fit color transform matrix estimate 23181 calculated by the camera device's statistics units for the current 23182 output frame.<wbr/></p> 23183 </td> 23184 23185 <td class="entry_units"> 23186 </td> 23187 23188 <td class="entry_range"> 23189 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 23190 </td> 23191 23192 <td class="entry_tags"> 23193 </td> 23194 23195 </tr> 23196 <tr class="entries_header"> 23197 <th class="th_details" colspan="5">Details</th> 23198 </tr> 23199 <tr class="entry_cont"> 23200 <td class="entry_details" colspan="5"> 23201 <p>The camera device will provide the estimate from its 23202 statistics unit on the white balance transforms to use 23203 for the next frame.<wbr/> These are the values the camera device believes 23204 are the best fit for the current output frame.<wbr/> This may 23205 be different than the transform used for this frame,<wbr/> since 23206 statistics processing on data from a new frame typically 23207 completes after the transform has already been applied to 23208 that frame.<wbr/></p> 23209 <p>These estimates must be provided for all frames,<wbr/> even if 23210 capture settings and color transforms are set by the application.<wbr/></p> 23211 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 23212 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 23213 </td> 23214 </tr> 23215 23216 23217 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23218 <!-- end of entry --> 23219 23220 23221 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 23222 <td class="entry_name 23223 " rowspan="3"> 23224 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 23225 </td> 23226 <td class="entry_type"> 23227 <span class="entry_type_name entry_type_name_enum">byte</span> 23228 23229 <span class="entry_type_visibility"> [public]</span> 23230 23231 23232 <span class="entry_type_hwlevel">[full] </span> 23233 23234 23235 23236 <ul class="entry_type_enum"> 23237 <li> 23238 <span class="entry_type_enum_name">NONE</span> 23239 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination 23240 in the current scene.<wbr/></p></span> 23241 </li> 23242 <li> 23243 <span class="entry_type_enum_name">50HZ</span> 23244 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz 23245 in the current scene.<wbr/></p></span> 23246 </li> 23247 <li> 23248 <span class="entry_type_enum_name">60HZ</span> 23249 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz 23250 in the current scene.<wbr/></p></span> 23251 </li> 23252 </ul> 23253 23254 </td> <!-- entry_type --> 23255 23256 <td class="entry_description"> 23257 <p>The camera device estimated scene illumination lighting 23258 frequency.<wbr/></p> 23259 </td> 23260 23261 <td class="entry_units"> 23262 </td> 23263 23264 <td class="entry_range"> 23265 </td> 23266 23267 <td class="entry_tags"> 23268 </td> 23269 23270 </tr> 23271 <tr class="entries_header"> 23272 <th class="th_details" colspan="5">Details</th> 23273 </tr> 23274 <tr class="entry_cont"> 23275 <td class="entry_details" colspan="5"> 23276 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 23277 that depends on the local utility power standards.<wbr/> This flicker must be 23278 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 23279 The camera device uses this entry to tell the application what the scene 23280 illuminant frequency is.<wbr/></p> 23281 <p>When manual exposure control is enabled 23282 (<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> == 23283 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform 23284 antibanding,<wbr/> and the application can ensure it selects 23285 exposure times that do not cause banding issues by looking 23286 into this metadata field.<wbr/> See 23287 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p> 23288 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p> 23289 </td> 23290 </tr> 23291 23292 23293 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23294 <!-- end of entry --> 23295 23296 23297 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> 23298 <td class="entry_name 23299 " rowspan="3"> 23300 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 23301 </td> 23302 <td class="entry_type"> 23303 <span class="entry_type_name entry_type_name_enum">byte</span> 23304 23305 <span class="entry_type_visibility"> [public as boolean]</span> 23306 23307 23308 23309 23310 23311 <ul class="entry_type_enum"> 23312 <li> 23313 <span class="entry_type_enum_name">OFF</span> 23314 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 23315 </li> 23316 <li> 23317 <span class="entry_type_enum_name">ON</span> 23318 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 23319 </li> 23320 </ul> 23321 23322 </td> <!-- entry_type --> 23323 23324 <td class="entry_description"> 23325 <p>Operating mode for hot pixel map generation.<wbr/></p> 23326 </td> 23327 23328 <td class="entry_units"> 23329 </td> 23330 23331 <td class="entry_range"> 23332 <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> 23333 </td> 23334 23335 <td class="entry_tags"> 23336 <ul class="entry_tags"> 23337 <li><a href="#tag_V1">V1</a></li> 23338 <li><a href="#tag_RAW">RAW</a></li> 23339 </ul> 23340 </td> 23341 23342 </tr> 23343 <tr class="entries_header"> 23344 <th class="th_details" colspan="5">Details</th> 23345 </tr> 23346 <tr class="entry_cont"> 23347 <td class="entry_details" colspan="5"> 23348 <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/> 23349 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 23350 </td> 23351 </tr> 23352 23353 23354 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23355 <!-- end of entry --> 23356 23357 23358 <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> 23359 <td class="entry_name 23360 " rowspan="5"> 23361 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map 23362 </td> 23363 <td class="entry_type"> 23364 <span class="entry_type_name">int32</span> 23365 <span class="entry_type_container">x</span> 23366 23367 <span class="entry_type_array"> 23368 2 x n 23369 </span> 23370 <span class="entry_type_visibility"> [public as point]</span> 23371 23372 23373 23374 23375 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 23376 23377 23378 </td> <!-- entry_type --> 23379 23380 <td class="entry_description"> 23381 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> 23382 </td> 23383 23384 <td class="entry_units"> 23385 </td> 23386 23387 <td class="entry_range"> 23388 <p>n <= number of pixels on the sensor.<wbr/> 23389 The <code>(x,<wbr/> y)</code> coordinates must be bounded by 23390 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 23391 </td> 23392 23393 <td class="entry_tags"> 23394 <ul class="entry_tags"> 23395 <li><a href="#tag_V1">V1</a></li> 23396 <li><a href="#tag_RAW">RAW</a></li> 23397 </ul> 23398 </td> 23399 23400 </tr> 23401 <tr class="entries_header"> 23402 <th class="th_details" colspan="5">Details</th> 23403 </tr> 23404 <tr class="entry_cont"> 23405 <td class="entry_details" colspan="5"> 23406 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and 23407 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and 23408 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 23409 height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> 23410 This may include hot pixels that lie outside of the active array 23411 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 23412 </td> 23413 </tr> 23414 23415 <tr class="entries_header"> 23416 <th class="th_details" colspan="5">HAL Implementation Details</th> 23417 </tr> 23418 <tr class="entry_cont"> 23419 <td class="entry_details" colspan="5"> 23420 <p>A hotpixel map contains the coordinates of pixels on the camera 23421 sensor that do report valid values (usually due to defects in 23422 the camera sensor).<wbr/> This includes pixels that are stuck at certain 23423 values,<wbr/> or have a response that does not accuractly encode the 23424 incoming light from the scene.<wbr/></p> 23425 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot 23426 pixels than actual pixels on the camera sensor.<wbr/></p> 23427 </td> 23428 </tr> 23429 23430 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23431 <!-- end of entry --> 23432 23433 23434 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode"> 23435 <td class="entry_name 23436 " rowspan="3"> 23437 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 23438 </td> 23439 <td class="entry_type"> 23440 <span class="entry_type_name entry_type_name_enum">byte</span> 23441 23442 <span class="entry_type_visibility"> [public]</span> 23443 23444 23445 <span class="entry_type_hwlevel">[full] </span> 23446 23447 23448 23449 <ul class="entry_type_enum"> 23450 <li> 23451 <span class="entry_type_enum_name">OFF</span> 23452 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 23453 </li> 23454 <li> 23455 <span class="entry_type_enum_name">ON</span> 23456 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 23457 </li> 23458 </ul> 23459 23460 </td> <!-- entry_type --> 23461 23462 <td class="entry_description"> 23463 <p>Whether the camera device will output the lens 23464 shading map in output result metadata.<wbr/></p> 23465 </td> 23466 23467 <td class="entry_units"> 23468 </td> 23469 23470 <td class="entry_range"> 23471 <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> 23472 </td> 23473 23474 <td class="entry_tags"> 23475 <ul class="entry_tags"> 23476 <li><a href="#tag_RAW">RAW</a></li> 23477 </ul> 23478 </td> 23479 23480 </tr> 23481 <tr class="entries_header"> 23482 <th class="th_details" colspan="5">Details</th> 23483 </tr> 23484 <tr class="entry_cont"> 23485 <td class="entry_details" colspan="5"> 23486 <p>When set to ON,<wbr/> 23487 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 23488 the output result metadata.<wbr/></p> 23489 <p>ON is always supported on devices with the RAW capability.<wbr/></p> 23490 </td> 23491 </tr> 23492 23493 23494 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23495 <!-- end of entry --> 23496 23497 23498 23499 <!-- end of kind --> 23500 </tbody> 23501 23502 <!-- end of section --> 23503 <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr> 23504 23505 23506 <tr><td colspan="6" class="kind">controls</td></tr> 23507 23508 <thead class="entries_header"> 23509 <tr> 23510 <th class="th_name">Property Name</th> 23511 <th class="th_type">Type</th> 23512 <th class="th_description">Description</th> 23513 <th class="th_units">Units</th> 23514 <th class="th_range">Range</th> 23515 <th class="th_tags">Tags</th> 23516 </tr> 23517 </thead> 23518 23519 <tbody> 23520 23521 23522 23523 23524 23525 23526 23527 23528 23529 23530 <tr class="entry" id="controls_android.tonemap.curveBlue"> 23531 <td class="entry_name 23532 " rowspan="3"> 23533 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 23534 </td> 23535 <td class="entry_type"> 23536 <span class="entry_type_name">float</span> 23537 <span class="entry_type_container">x</span> 23538 23539 <span class="entry_type_array"> 23540 n x 2 23541 </span> 23542 <span class="entry_type_visibility"> [hidden]</span> 23543 23544 23545 <span class="entry_type_hwlevel">[full] </span> 23546 23547 23548 <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> 23549 23550 23551 </td> <!-- entry_type --> 23552 23553 <td class="entry_description"> 23554 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 23555 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23556 CONTRAST_<wbr/>CURVE.<wbr/></p> 23557 </td> 23558 23559 <td class="entry_units"> 23560 </td> 23561 23562 <td class="entry_range"> 23563 </td> 23564 23565 <td class="entry_tags"> 23566 </td> 23567 23568 </tr> 23569 <tr class="entries_header"> 23570 <th class="th_details" colspan="5">Details</th> 23571 </tr> 23572 <tr class="entry_cont"> 23573 <td class="entry_details" colspan="5"> 23574 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 23575 </td> 23576 </tr> 23577 23578 23579 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23580 <!-- end of entry --> 23581 23582 23583 <tr class="entry" id="controls_android.tonemap.curveGreen"> 23584 <td class="entry_name 23585 " rowspan="3"> 23586 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 23587 </td> 23588 <td class="entry_type"> 23589 <span class="entry_type_name">float</span> 23590 <span class="entry_type_container">x</span> 23591 23592 <span class="entry_type_array"> 23593 n x 2 23594 </span> 23595 <span class="entry_type_visibility"> [hidden]</span> 23596 23597 23598 <span class="entry_type_hwlevel">[full] </span> 23599 23600 23601 <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> 23602 23603 23604 </td> <!-- entry_type --> 23605 23606 <td class="entry_description"> 23607 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 23608 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23609 CONTRAST_<wbr/>CURVE.<wbr/></p> 23610 </td> 23611 23612 <td class="entry_units"> 23613 </td> 23614 23615 <td class="entry_range"> 23616 </td> 23617 23618 <td class="entry_tags"> 23619 </td> 23620 23621 </tr> 23622 <tr class="entries_header"> 23623 <th class="th_details" colspan="5">Details</th> 23624 </tr> 23625 <tr class="entry_cont"> 23626 <td class="entry_details" colspan="5"> 23627 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 23628 </td> 23629 </tr> 23630 23631 23632 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23633 <!-- end of entry --> 23634 23635 23636 <tr class="entry" id="controls_android.tonemap.curveRed"> 23637 <td class="entry_name 23638 " rowspan="5"> 23639 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 23640 </td> 23641 <td class="entry_type"> 23642 <span class="entry_type_name">float</span> 23643 <span class="entry_type_container">x</span> 23644 23645 <span class="entry_type_array"> 23646 n x 2 23647 </span> 23648 <span class="entry_type_visibility"> [hidden]</span> 23649 23650 23651 <span class="entry_type_hwlevel">[full] </span> 23652 23653 23654 <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> 23655 23656 23657 </td> <!-- entry_type --> 23658 23659 <td class="entry_description"> 23660 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 23661 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23662 CONTRAST_<wbr/>CURVE.<wbr/></p> 23663 </td> 23664 23665 <td class="entry_units"> 23666 </td> 23667 23668 <td class="entry_range"> 23669 <p>0-1 on both input and output coordinates,<wbr/> normalized 23670 as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 23671 </td> 23672 23673 <td class="entry_tags"> 23674 </td> 23675 23676 </tr> 23677 <tr class="entries_header"> 23678 <th class="th_details" colspan="5">Details</th> 23679 </tr> 23680 <tr class="entry_cont"> 23681 <td class="entry_details" colspan="5"> 23682 <p>Each channel's curve is defined by an array of control points:</p> 23683 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 23684 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 23685 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 23686 <p>These are sorted in order of increasing <code>Pin</code>; it is 23687 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 23688 define a complete mapping.<wbr/> For input values between control points,<wbr/> 23689 the camera device must linearly interpolate between the control 23690 points.<wbr/></p> 23691 <p>Each curve can have an independent number of points,<wbr/> and the number 23692 of points can be less than max (that is,<wbr/> the request doesn't have to 23693 always provide a curve with number of points equivalent to 23694 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 23695 <p>A few examples,<wbr/> and their corresponding graphical mappings; these 23696 only specify the red channel and the precision is limited to 4 23697 digits,<wbr/> for conciseness.<wbr/></p> 23698 <p>Linear mapping:</p> 23699 <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 ] 23700 </code></pre> 23701 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 23702 <p>Invert mapping:</p> 23703 <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 ] 23704 </code></pre> 23705 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 23706 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 23707 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 23708 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/> 23709 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/> 23710 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/> 23711 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 ] 23712 </code></pre> 23713 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 23714 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 23715 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 23716 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/> 23717 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/> 23718 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/> 23719 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 ] 23720 </code></pre> 23721 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 23722 </td> 23723 </tr> 23724 23725 <tr class="entries_header"> 23726 <th class="th_details" colspan="5">HAL Implementation Details</th> 23727 </tr> 23728 <tr class="entry_cont"> 23729 <td class="entry_details" colspan="5"> 23730 <p>For good quality of mapping,<wbr/> at least 128 control points are 23731 preferred.<wbr/></p> 23732 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 23733 control points used as are available.<wbr/></p> 23734 </td> 23735 </tr> 23736 23737 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23738 <!-- end of entry --> 23739 23740 23741 <tr class="entry" id="controls_android.tonemap.curve"> 23742 <td class="entry_name 23743 " rowspan="5"> 23744 android.<wbr/>tonemap.<wbr/>curve 23745 </td> 23746 <td class="entry_type"> 23747 <span class="entry_type_name">float</span> 23748 23749 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 23750 23751 <span class="entry_type_synthetic">[synthetic] </span> 23752 23753 <span class="entry_type_hwlevel">[full] </span> 23754 23755 23756 23757 23758 </td> <!-- entry_type --> 23759 23760 <td class="entry_description"> 23761 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 23762 is CONTRAST_<wbr/>CURVE.<wbr/></p> 23763 </td> 23764 23765 <td class="entry_units"> 23766 </td> 23767 23768 <td class="entry_range"> 23769 </td> 23770 23771 <td class="entry_tags"> 23772 </td> 23773 23774 </tr> 23775 <tr class="entries_header"> 23776 <th class="th_details" colspan="5">Details</th> 23777 </tr> 23778 <tr class="entry_cont"> 23779 <td class="entry_details" colspan="5"> 23780 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 23781 channels respectively.<wbr/> The following example uses the red channel as an 23782 example.<wbr/> The same logic applies to green and blue channel.<wbr/> 23783 Each channel's curve is defined by an array of control points:</p> 23784 <pre><code>curveRed = 23785 [ 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) ] 23786 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 23787 <p>These are sorted in order of increasing <code>Pin</code>; it is always 23788 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 23789 define a complete mapping.<wbr/> For input values between control points,<wbr/> 23790 the camera device must linearly interpolate between the control 23791 points.<wbr/></p> 23792 <p>Each curve can have an independent number of points,<wbr/> and the number 23793 of points can be less than max (that is,<wbr/> the request doesn't have to 23794 always provide a curve with number of points equivalent to 23795 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 23796 <p>A few examples,<wbr/> and their corresponding graphical mappings; these 23797 only specify the red channel and the precision is limited to 4 23798 digits,<wbr/> for conciseness.<wbr/></p> 23799 <p>Linear mapping:</p> 23800 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 23801 </code></pre> 23802 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 23803 <p>Invert mapping:</p> 23804 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 23805 </code></pre> 23806 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 23807 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 23808 <pre><code>curveRed = [ 23809 (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/> 23810 (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/> 23811 (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/> 23812 (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) ] 23813 </code></pre> 23814 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 23815 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 23816 <pre><code>curveRed = [ 23817 (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/> 23818 (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/> 23819 (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/> 23820 (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) ] 23821 </code></pre> 23822 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 23823 </td> 23824 </tr> 23825 23826 <tr class="entries_header"> 23827 <th class="th_details" colspan="5">HAL Implementation Details</th> 23828 </tr> 23829 <tr class="entry_cont"> 23830 <td class="entry_details" colspan="5"> 23831 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 23832 curveBlue entries.<wbr/></p> 23833 </td> 23834 </tr> 23835 23836 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23837 <!-- end of entry --> 23838 23839 23840 <tr class="entry" id="controls_android.tonemap.mode"> 23841 <td class="entry_name 23842 " rowspan="3"> 23843 android.<wbr/>tonemap.<wbr/>mode 23844 </td> 23845 <td class="entry_type"> 23846 <span class="entry_type_name entry_type_name_enum">byte</span> 23847 23848 <span class="entry_type_visibility"> [public]</span> 23849 23850 23851 <span class="entry_type_hwlevel">[full] </span> 23852 23853 23854 23855 <ul class="entry_type_enum"> 23856 <li> 23857 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 23858 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 23859 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 23860 <p>All color enhancement and tonemapping must be disabled,<wbr/> except 23861 for applying the tonemapping curve specified by 23862 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 23863 <p>Must not slow down frame rate relative to raw 23864 sensor output.<wbr/></p></span> 23865 </li> 23866 <li> 23867 <span class="entry_type_enum_name">FAST</span> 23868 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 23869 reducing frame rate compared to raw sensor output.<wbr/></p></span> 23870 </li> 23871 <li> 23872 <span class="entry_type_enum_name">HIGH_QUALITY</span> 23873 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 23874 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 23875 </li> 23876 <li> 23877 <span class="entry_type_enum_name">GAMMA_VALUE</span> 23878 <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform 23879 tonemapping.<wbr/></p> 23880 <p>All color enhancement and tonemapping must be disabled,<wbr/> except 23881 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 23882 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 23883 </li> 23884 <li> 23885 <span class="entry_type_enum_name">PRESET_CURVE</span> 23886 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 23887 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 23888 <p>All color enhancement and tonemapping must be disabled,<wbr/> except 23889 for applying the tonemapping curve specified by 23890 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 23891 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 23892 </li> 23893 </ul> 23894 23895 </td> <!-- entry_type --> 23896 23897 <td class="entry_description"> 23898 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 23899 </td> 23900 23901 <td class="entry_units"> 23902 </td> 23903 23904 <td class="entry_range"> 23905 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 23906 </td> 23907 23908 <td class="entry_tags"> 23909 </td> 23910 23911 </tr> 23912 <tr class="entries_header"> 23913 <th class="th_details" colspan="5">Details</th> 23914 </tr> 23915 <tr class="entry_cont"> 23916 <td class="entry_details" colspan="5"> 23917 <p>When switching to an application-defined contrast curve by setting 23918 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 23919 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 23920 mapping from input high-bit-depth pixel value to the output 23921 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 23922 and output may change depending on the camera pipeline,<wbr/> the values 23923 are specified by normalized floating-point numbers.<wbr/></p> 23924 <p>More-complex color mapping operations such as 3D color look-up 23925 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 23926 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23927 CONTRAST_<wbr/>CURVE.<wbr/></p> 23928 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 23929 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 23930 These values are always available,<wbr/> and as close as possible to the 23931 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 23932 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 23933 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 23934 roughly the same.<wbr/></p> 23935 </td> 23936 </tr> 23937 23938 23939 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23940 <!-- end of entry --> 23941 23942 23943 <tr class="entry" id="controls_android.tonemap.gamma"> 23944 <td class="entry_name 23945 " rowspan="3"> 23946 android.<wbr/>tonemap.<wbr/>gamma 23947 </td> 23948 <td class="entry_type"> 23949 <span class="entry_type_name">float</span> 23950 23951 <span class="entry_type_visibility"> [public]</span> 23952 23953 23954 23955 23956 23957 23958 </td> <!-- entry_type --> 23959 23960 <td class="entry_description"> 23961 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23962 GAMMA_<wbr/>VALUE</p> 23963 </td> 23964 23965 <td class="entry_units"> 23966 </td> 23967 23968 <td class="entry_range"> 23969 </td> 23970 23971 <td class="entry_tags"> 23972 </td> 23973 23974 </tr> 23975 <tr class="entries_header"> 23976 <th class="th_details" colspan="5">Details</th> 23977 </tr> 23978 <tr class="entry_cont"> 23979 <td class="entry_details" colspan="5"> 23980 <p>The tonemap curve will be defined the following formula: 23981 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 23982 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 23983 pow is the power function and gamma is the gamma value specified by this 23984 key.<wbr/></p> 23985 <p>The same curve will be applied to all color channels.<wbr/> The camera device 23986 may clip the input gamma value to its supported range.<wbr/> The actual applied 23987 value will be returned in capture result.<wbr/></p> 23988 <p>The valid range of gamma value varies on different devices,<wbr/> but values 23989 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 23990 </td> 23991 </tr> 23992 23993 23994 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23995 <!-- end of entry --> 23996 23997 23998 <tr class="entry" id="controls_android.tonemap.presetCurve"> 23999 <td class="entry_name 24000 " rowspan="3"> 24001 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 24002 </td> 24003 <td class="entry_type"> 24004 <span class="entry_type_name entry_type_name_enum">byte</span> 24005 24006 <span class="entry_type_visibility"> [public]</span> 24007 24008 24009 24010 24011 24012 <ul class="entry_type_enum"> 24013 <li> 24014 <span class="entry_type_enum_name">SRGB</span> 24015 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 24016 </li> 24017 <li> 24018 <span class="entry_type_enum_name">REC709</span> 24019 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 24020 </li> 24021 </ul> 24022 24023 </td> <!-- entry_type --> 24024 24025 <td class="entry_description"> 24026 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24027 PRESET_<wbr/>CURVE</p> 24028 </td> 24029 24030 <td class="entry_units"> 24031 </td> 24032 24033 <td class="entry_range"> 24034 </td> 24035 24036 <td class="entry_tags"> 24037 </td> 24038 24039 </tr> 24040 <tr class="entries_header"> 24041 <th class="th_details" colspan="5">Details</th> 24042 </tr> 24043 <tr class="entry_cont"> 24044 <td class="entry_details" colspan="5"> 24045 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 24046 <p>sRGB (approximated by 16 control points):</p> 24047 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24048 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 24049 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 24050 <p>Note that above figures show a 16 control points approximation of preset 24051 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 24052 </td> 24053 </tr> 24054 24055 24056 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24057 <!-- end of entry --> 24058 24059 24060 24061 <!-- end of kind --> 24062 </tbody> 24063 <tr><td colspan="6" class="kind">static</td></tr> 24064 24065 <thead class="entries_header"> 24066 <tr> 24067 <th class="th_name">Property Name</th> 24068 <th class="th_type">Type</th> 24069 <th class="th_description">Description</th> 24070 <th class="th_units">Units</th> 24071 <th class="th_range">Range</th> 24072 <th class="th_tags">Tags</th> 24073 </tr> 24074 </thead> 24075 24076 <tbody> 24077 24078 24079 24080 24081 24082 24083 24084 24085 24086 24087 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 24088 <td class="entry_name 24089 " rowspan="5"> 24090 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 24091 </td> 24092 <td class="entry_type"> 24093 <span class="entry_type_name">int32</span> 24094 24095 <span class="entry_type_visibility"> [public]</span> 24096 24097 24098 <span class="entry_type_hwlevel">[full] </span> 24099 24100 24101 24102 24103 </td> <!-- entry_type --> 24104 24105 <td class="entry_description"> 24106 <p>Maximum number of supported points in the 24107 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 24108 </td> 24109 24110 <td class="entry_units"> 24111 </td> 24112 24113 <td class="entry_range"> 24114 </td> 24115 24116 <td class="entry_tags"> 24117 </td> 24118 24119 </tr> 24120 <tr class="entries_header"> 24121 <th class="th_details" colspan="5">Details</th> 24122 </tr> 24123 <tr class="entry_cont"> 24124 <td class="entry_details" colspan="5"> 24125 <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 24126 less than this maximum,<wbr/> the camera device will resample the curve to its internal 24127 representation,<wbr/> using linear interpolation.<wbr/></p> 24128 <p>The output curves in the result metadata may have a different number 24129 of points than the input curves,<wbr/> and will represent the actual 24130 hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 24131 </td> 24132 </tr> 24133 24134 <tr class="entries_header"> 24135 <th class="th_details" colspan="5">HAL Implementation Details</th> 24136 </tr> 24137 <tr class="entry_cont"> 24138 <td class="entry_details" colspan="5"> 24139 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 24140 </td> 24141 </tr> 24142 24143 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24144 <!-- end of entry --> 24145 24146 24147 <tr class="entry" id="static_android.tonemap.availableToneMapModes"> 24148 <td class="entry_name 24149 " rowspan="5"> 24150 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes 24151 </td> 24152 <td class="entry_type"> 24153 <span class="entry_type_name">byte</span> 24154 <span class="entry_type_container">x</span> 24155 24156 <span class="entry_type_array"> 24157 n 24158 </span> 24159 <span class="entry_type_visibility"> [public as enumList]</span> 24160 24161 24162 <span class="entry_type_hwlevel">[full] </span> 24163 24164 24165 <div class="entry_type_notes">list of enums</div> 24166 24167 24168 </td> <!-- entry_type --> 24169 24170 <td class="entry_description"> 24171 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera 24172 device.<wbr/></p> 24173 </td> 24174 24175 <td class="entry_units"> 24176 </td> 24177 24178 <td class="entry_range"> 24179 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p> 24180 </td> 24181 24182 <td class="entry_tags"> 24183 </td> 24184 24185 </tr> 24186 <tr class="entries_header"> 24187 <th class="th_details" colspan="5">Details</th> 24188 </tr> 24189 <tr class="entry_cont"> 24190 <td class="entry_details" colspan="5"> 24191 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain 24192 at least one of below mode combinations:</p> 24193 <ul> 24194 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 24195 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 24196 </ul> 24197 <p>This includes all FULL level devices.<wbr/></p> 24198 </td> 24199 </tr> 24200 24201 <tr class="entries_header"> 24202 <th class="th_details" colspan="5">HAL Implementation Details</th> 24203 </tr> 24204 <tr class="entry_cont"> 24205 <td class="entry_details" colspan="5"> 24206 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available 24207 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 24208 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 24209 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 24210 </td> 24211 </tr> 24212 24213 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24214 <!-- end of entry --> 24215 24216 24217 24218 <!-- end of kind --> 24219 </tbody> 24220 <tr><td colspan="6" class="kind">dynamic</td></tr> 24221 24222 <thead class="entries_header"> 24223 <tr> 24224 <th class="th_name">Property Name</th> 24225 <th class="th_type">Type</th> 24226 <th class="th_description">Description</th> 24227 <th class="th_units">Units</th> 24228 <th class="th_range">Range</th> 24229 <th class="th_tags">Tags</th> 24230 </tr> 24231 </thead> 24232 24233 <tbody> 24234 24235 24236 24237 24238 24239 24240 24241 24242 24243 24244 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 24245 <td class="entry_name 24246 " rowspan="3"> 24247 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 24248 </td> 24249 <td class="entry_type"> 24250 <span class="entry_type_name">float</span> 24251 <span class="entry_type_container">x</span> 24252 24253 <span class="entry_type_array"> 24254 n x 2 24255 </span> 24256 <span class="entry_type_visibility"> [hidden]</span> 24257 24258 24259 <span class="entry_type_hwlevel">[full] </span> 24260 24261 24262 <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> 24263 24264 24265 </td> <!-- entry_type --> 24266 24267 <td class="entry_description"> 24268 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 24269 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24270 CONTRAST_<wbr/>CURVE.<wbr/></p> 24271 </td> 24272 24273 <td class="entry_units"> 24274 </td> 24275 24276 <td class="entry_range"> 24277 </td> 24278 24279 <td class="entry_tags"> 24280 </td> 24281 24282 </tr> 24283 <tr class="entries_header"> 24284 <th class="th_details" colspan="5">Details</th> 24285 </tr> 24286 <tr class="entry_cont"> 24287 <td class="entry_details" colspan="5"> 24288 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 24289 </td> 24290 </tr> 24291 24292 24293 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24294 <!-- end of entry --> 24295 24296 24297 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 24298 <td class="entry_name 24299 " rowspan="3"> 24300 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 24301 </td> 24302 <td class="entry_type"> 24303 <span class="entry_type_name">float</span> 24304 <span class="entry_type_container">x</span> 24305 24306 <span class="entry_type_array"> 24307 n x 2 24308 </span> 24309 <span class="entry_type_visibility"> [hidden]</span> 24310 24311 24312 <span class="entry_type_hwlevel">[full] </span> 24313 24314 24315 <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> 24316 24317 24318 </td> <!-- entry_type --> 24319 24320 <td class="entry_description"> 24321 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 24322 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24323 CONTRAST_<wbr/>CURVE.<wbr/></p> 24324 </td> 24325 24326 <td class="entry_units"> 24327 </td> 24328 24329 <td class="entry_range"> 24330 </td> 24331 24332 <td class="entry_tags"> 24333 </td> 24334 24335 </tr> 24336 <tr class="entries_header"> 24337 <th class="th_details" colspan="5">Details</th> 24338 </tr> 24339 <tr class="entry_cont"> 24340 <td class="entry_details" colspan="5"> 24341 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 24342 </td> 24343 </tr> 24344 24345 24346 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24347 <!-- end of entry --> 24348 24349 24350 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 24351 <td class="entry_name 24352 " rowspan="5"> 24353 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 24354 </td> 24355 <td class="entry_type"> 24356 <span class="entry_type_name">float</span> 24357 <span class="entry_type_container">x</span> 24358 24359 <span class="entry_type_array"> 24360 n x 2 24361 </span> 24362 <span class="entry_type_visibility"> [hidden]</span> 24363 24364 24365 <span class="entry_type_hwlevel">[full] </span> 24366 24367 24368 <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> 24369 24370 24371 </td> <!-- entry_type --> 24372 24373 <td class="entry_description"> 24374 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 24375 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24376 CONTRAST_<wbr/>CURVE.<wbr/></p> 24377 </td> 24378 24379 <td class="entry_units"> 24380 </td> 24381 24382 <td class="entry_range"> 24383 <p>0-1 on both input and output coordinates,<wbr/> normalized 24384 as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 24385 </td> 24386 24387 <td class="entry_tags"> 24388 </td> 24389 24390 </tr> 24391 <tr class="entries_header"> 24392 <th class="th_details" colspan="5">Details</th> 24393 </tr> 24394 <tr class="entry_cont"> 24395 <td class="entry_details" colspan="5"> 24396 <p>Each channel's curve is defined by an array of control points:</p> 24397 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 24398 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 24399 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 24400 <p>These are sorted in order of increasing <code>Pin</code>; it is 24401 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 24402 define a complete mapping.<wbr/> For input values between control points,<wbr/> 24403 the camera device must linearly interpolate between the control 24404 points.<wbr/></p> 24405 <p>Each curve can have an independent number of points,<wbr/> and the number 24406 of points can be less than max (that is,<wbr/> the request doesn't have to 24407 always provide a curve with number of points equivalent to 24408 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 24409 <p>A few examples,<wbr/> and their corresponding graphical mappings; these 24410 only specify the red channel and the precision is limited to 4 24411 digits,<wbr/> for conciseness.<wbr/></p> 24412 <p>Linear mapping:</p> 24413 <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 ] 24414 </code></pre> 24415 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 24416 <p>Invert mapping:</p> 24417 <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 ] 24418 </code></pre> 24419 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 24420 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 24421 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 24422 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/> 24423 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/> 24424 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/> 24425 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 ] 24426 </code></pre> 24427 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 24428 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 24429 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 24430 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/> 24431 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/> 24432 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/> 24433 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 ] 24434 </code></pre> 24435 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24436 </td> 24437 </tr> 24438 24439 <tr class="entries_header"> 24440 <th class="th_details" colspan="5">HAL Implementation Details</th> 24441 </tr> 24442 <tr class="entry_cont"> 24443 <td class="entry_details" colspan="5"> 24444 <p>For good quality of mapping,<wbr/> at least 128 control points are 24445 preferred.<wbr/></p> 24446 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 24447 control points used as are available.<wbr/></p> 24448 </td> 24449 </tr> 24450 24451 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24452 <!-- end of entry --> 24453 24454 24455 <tr class="entry" id="dynamic_android.tonemap.curve"> 24456 <td class="entry_name 24457 " rowspan="5"> 24458 android.<wbr/>tonemap.<wbr/>curve 24459 </td> 24460 <td class="entry_type"> 24461 <span class="entry_type_name">float</span> 24462 24463 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 24464 24465 <span class="entry_type_synthetic">[synthetic] </span> 24466 24467 <span class="entry_type_hwlevel">[full] </span> 24468 24469 24470 24471 24472 </td> <!-- entry_type --> 24473 24474 <td class="entry_description"> 24475 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 24476 is CONTRAST_<wbr/>CURVE.<wbr/></p> 24477 </td> 24478 24479 <td class="entry_units"> 24480 </td> 24481 24482 <td class="entry_range"> 24483 </td> 24484 24485 <td class="entry_tags"> 24486 </td> 24487 24488 </tr> 24489 <tr class="entries_header"> 24490 <th class="th_details" colspan="5">Details</th> 24491 </tr> 24492 <tr class="entry_cont"> 24493 <td class="entry_details" colspan="5"> 24494 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 24495 channels respectively.<wbr/> The following example uses the red channel as an 24496 example.<wbr/> The same logic applies to green and blue channel.<wbr/> 24497 Each channel's curve is defined by an array of control points:</p> 24498 <pre><code>curveRed = 24499 [ 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) ] 24500 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 24501 <p>These are sorted in order of increasing <code>Pin</code>; it is always 24502 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 24503 define a complete mapping.<wbr/> For input values between control points,<wbr/> 24504 the camera device must linearly interpolate between the control 24505 points.<wbr/></p> 24506 <p>Each curve can have an independent number of points,<wbr/> and the number 24507 of points can be less than max (that is,<wbr/> the request doesn't have to 24508 always provide a curve with number of points equivalent to 24509 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 24510 <p>A few examples,<wbr/> and their corresponding graphical mappings; these 24511 only specify the red channel and the precision is limited to 4 24512 digits,<wbr/> for conciseness.<wbr/></p> 24513 <p>Linear mapping:</p> 24514 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 24515 </code></pre> 24516 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 24517 <p>Invert mapping:</p> 24518 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 24519 </code></pre> 24520 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 24521 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 24522 <pre><code>curveRed = [ 24523 (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/> 24524 (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/> 24525 (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/> 24526 (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) ] 24527 </code></pre> 24528 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 24529 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 24530 <pre><code>curveRed = [ 24531 (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/> 24532 (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/> 24533 (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/> 24534 (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) ] 24535 </code></pre> 24536 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24537 </td> 24538 </tr> 24539 24540 <tr class="entries_header"> 24541 <th class="th_details" colspan="5">HAL Implementation Details</th> 24542 </tr> 24543 <tr class="entry_cont"> 24544 <td class="entry_details" colspan="5"> 24545 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 24546 curveBlue entries.<wbr/></p> 24547 </td> 24548 </tr> 24549 24550 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24551 <!-- end of entry --> 24552 24553 24554 <tr class="entry" id="dynamic_android.tonemap.mode"> 24555 <td class="entry_name 24556 " rowspan="3"> 24557 android.<wbr/>tonemap.<wbr/>mode 24558 </td> 24559 <td class="entry_type"> 24560 <span class="entry_type_name entry_type_name_enum">byte</span> 24561 24562 <span class="entry_type_visibility"> [public]</span> 24563 24564 24565 <span class="entry_type_hwlevel">[full] </span> 24566 24567 24568 24569 <ul class="entry_type_enum"> 24570 <li> 24571 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 24572 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 24573 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 24574 <p>All color enhancement and tonemapping must be disabled,<wbr/> except 24575 for applying the tonemapping curve specified by 24576 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 24577 <p>Must not slow down frame rate relative to raw 24578 sensor output.<wbr/></p></span> 24579 </li> 24580 <li> 24581 <span class="entry_type_enum_name">FAST</span> 24582 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 24583 reducing frame rate compared to raw sensor output.<wbr/></p></span> 24584 </li> 24585 <li> 24586 <span class="entry_type_enum_name">HIGH_QUALITY</span> 24587 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 24588 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 24589 </li> 24590 <li> 24591 <span class="entry_type_enum_name">GAMMA_VALUE</span> 24592 <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform 24593 tonemapping.<wbr/></p> 24594 <p>All color enhancement and tonemapping must be disabled,<wbr/> except 24595 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 24596 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 24597 </li> 24598 <li> 24599 <span class="entry_type_enum_name">PRESET_CURVE</span> 24600 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 24601 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 24602 <p>All color enhancement and tonemapping must be disabled,<wbr/> except 24603 for applying the tonemapping curve specified by 24604 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 24605 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 24606 </li> 24607 </ul> 24608 24609 </td> <!-- entry_type --> 24610 24611 <td class="entry_description"> 24612 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 24613 </td> 24614 24615 <td class="entry_units"> 24616 </td> 24617 24618 <td class="entry_range"> 24619 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 24620 </td> 24621 24622 <td class="entry_tags"> 24623 </td> 24624 24625 </tr> 24626 <tr class="entries_header"> 24627 <th class="th_details" colspan="5">Details</th> 24628 </tr> 24629 <tr class="entry_cont"> 24630 <td class="entry_details" colspan="5"> 24631 <p>When switching to an application-defined contrast curve by setting 24632 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 24633 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 24634 mapping from input high-bit-depth pixel value to the output 24635 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 24636 and output may change depending on the camera pipeline,<wbr/> the values 24637 are specified by normalized floating-point numbers.<wbr/></p> 24638 <p>More-complex color mapping operations such as 3D color look-up 24639 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 24640 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24641 CONTRAST_<wbr/>CURVE.<wbr/></p> 24642 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 24643 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 24644 These values are always available,<wbr/> and as close as possible to the 24645 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 24646 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 24647 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 24648 roughly the same.<wbr/></p> 24649 </td> 24650 </tr> 24651 24652 24653 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24654 <!-- end of entry --> 24655 24656 24657 <tr class="entry" id="dynamic_android.tonemap.gamma"> 24658 <td class="entry_name 24659 " rowspan="3"> 24660 android.<wbr/>tonemap.<wbr/>gamma 24661 </td> 24662 <td class="entry_type"> 24663 <span class="entry_type_name">float</span> 24664 24665 <span class="entry_type_visibility"> [public]</span> 24666 24667 24668 24669 24670 24671 24672 </td> <!-- entry_type --> 24673 24674 <td class="entry_description"> 24675 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24676 GAMMA_<wbr/>VALUE</p> 24677 </td> 24678 24679 <td class="entry_units"> 24680 </td> 24681 24682 <td class="entry_range"> 24683 </td> 24684 24685 <td class="entry_tags"> 24686 </td> 24687 24688 </tr> 24689 <tr class="entries_header"> 24690 <th class="th_details" colspan="5">Details</th> 24691 </tr> 24692 <tr class="entry_cont"> 24693 <td class="entry_details" colspan="5"> 24694 <p>The tonemap curve will be defined the following formula: 24695 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 24696 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 24697 pow is the power function and gamma is the gamma value specified by this 24698 key.<wbr/></p> 24699 <p>The same curve will be applied to all color channels.<wbr/> The camera device 24700 may clip the input gamma value to its supported range.<wbr/> The actual applied 24701 value will be returned in capture result.<wbr/></p> 24702 <p>The valid range of gamma value varies on different devices,<wbr/> but values 24703 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 24704 </td> 24705 </tr> 24706 24707 24708 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24709 <!-- end of entry --> 24710 24711 24712 <tr class="entry" id="dynamic_android.tonemap.presetCurve"> 24713 <td class="entry_name 24714 " rowspan="3"> 24715 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 24716 </td> 24717 <td class="entry_type"> 24718 <span class="entry_type_name entry_type_name_enum">byte</span> 24719 24720 <span class="entry_type_visibility"> [public]</span> 24721 24722 24723 24724 24725 24726 <ul class="entry_type_enum"> 24727 <li> 24728 <span class="entry_type_enum_name">SRGB</span> 24729 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 24730 </li> 24731 <li> 24732 <span class="entry_type_enum_name">REC709</span> 24733 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 24734 </li> 24735 </ul> 24736 24737 </td> <!-- entry_type --> 24738 24739 <td class="entry_description"> 24740 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24741 PRESET_<wbr/>CURVE</p> 24742 </td> 24743 24744 <td class="entry_units"> 24745 </td> 24746 24747 <td class="entry_range"> 24748 </td> 24749 24750 <td class="entry_tags"> 24751 </td> 24752 24753 </tr> 24754 <tr class="entries_header"> 24755 <th class="th_details" colspan="5">Details</th> 24756 </tr> 24757 <tr class="entry_cont"> 24758 <td class="entry_details" colspan="5"> 24759 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 24760 <p>sRGB (approximated by 16 control points):</p> 24761 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24762 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 24763 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 24764 <p>Note that above figures show a 16 control points approximation of preset 24765 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 24766 </td> 24767 </tr> 24768 24769 24770 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24771 <!-- end of entry --> 24772 24773 24774 24775 <!-- end of kind --> 24776 </tbody> 24777 24778 <!-- end of section --> 24779 <tr><td colspan="6" id="section_led" class="section">led</td></tr> 24780 24781 24782 <tr><td colspan="6" class="kind">controls</td></tr> 24783 24784 <thead class="entries_header"> 24785 <tr> 24786 <th class="th_name">Property Name</th> 24787 <th class="th_type">Type</th> 24788 <th class="th_description">Description</th> 24789 <th class="th_units">Units</th> 24790 <th class="th_range">Range</th> 24791 <th class="th_tags">Tags</th> 24792 </tr> 24793 </thead> 24794 24795 <tbody> 24796 24797 24798 24799 24800 24801 24802 24803 24804 24805 24806 <tr class="entry" id="controls_android.led.transmit"> 24807 <td class="entry_name 24808 " rowspan="1"> 24809 android.<wbr/>led.<wbr/>transmit 24810 </td> 24811 <td class="entry_type"> 24812 <span class="entry_type_name entry_type_name_enum">byte</span> 24813 24814 <span class="entry_type_visibility"> [hidden as boolean]</span> 24815 24816 24817 24818 24819 24820 <ul class="entry_type_enum"> 24821 <li> 24822 <span class="entry_type_enum_name">OFF</span> 24823 </li> 24824 <li> 24825 <span class="entry_type_enum_name">ON</span> 24826 </li> 24827 </ul> 24828 24829 </td> <!-- entry_type --> 24830 24831 <td class="entry_description"> 24832 <p>This LED is nominally used to indicate to the user 24833 that the camera is powered on and may be streaming images back to the 24834 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 24835 disable this when video is processed locally and not transmitted to 24836 any untrusted applications.<wbr/></p> 24837 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 24838 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 24839 data is stored locally on the device.<wbr/></p> 24840 <p>The LED <em>may</em> be off if a trusted application is using the data that 24841 doesn't violate the above rules.<wbr/></p> 24842 </td> 24843 24844 <td class="entry_units"> 24845 </td> 24846 24847 <td class="entry_range"> 24848 </td> 24849 24850 <td class="entry_tags"> 24851 </td> 24852 24853 </tr> 24854 24855 24856 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24857 <!-- end of entry --> 24858 24859 24860 24861 <!-- end of kind --> 24862 </tbody> 24863 <tr><td colspan="6" class="kind">dynamic</td></tr> 24864 24865 <thead class="entries_header"> 24866 <tr> 24867 <th class="th_name">Property Name</th> 24868 <th class="th_type">Type</th> 24869 <th class="th_description">Description</th> 24870 <th class="th_units">Units</th> 24871 <th class="th_range">Range</th> 24872 <th class="th_tags">Tags</th> 24873 </tr> 24874 </thead> 24875 24876 <tbody> 24877 24878 24879 24880 24881 24882 24883 24884 24885 24886 24887 <tr class="entry" id="dynamic_android.led.transmit"> 24888 <td class="entry_name 24889 " rowspan="1"> 24890 android.<wbr/>led.<wbr/>transmit 24891 </td> 24892 <td class="entry_type"> 24893 <span class="entry_type_name entry_type_name_enum">byte</span> 24894 24895 <span class="entry_type_visibility"> [hidden as boolean]</span> 24896 24897 24898 24899 24900 24901 <ul class="entry_type_enum"> 24902 <li> 24903 <span class="entry_type_enum_name">OFF</span> 24904 </li> 24905 <li> 24906 <span class="entry_type_enum_name">ON</span> 24907 </li> 24908 </ul> 24909 24910 </td> <!-- entry_type --> 24911 24912 <td class="entry_description"> 24913 <p>This LED is nominally used to indicate to the user 24914 that the camera is powered on and may be streaming images back to the 24915 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 24916 disable this when video is processed locally and not transmitted to 24917 any untrusted applications.<wbr/></p> 24918 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 24919 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 24920 data is stored locally on the device.<wbr/></p> 24921 <p>The LED <em>may</em> be off if a trusted application is using the data that 24922 doesn't violate the above rules.<wbr/></p> 24923 </td> 24924 24925 <td class="entry_units"> 24926 </td> 24927 24928 <td class="entry_range"> 24929 </td> 24930 24931 <td class="entry_tags"> 24932 </td> 24933 24934 </tr> 24935 24936 24937 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24938 <!-- end of entry --> 24939 24940 24941 24942 <!-- end of kind --> 24943 </tbody> 24944 <tr><td colspan="6" class="kind">static</td></tr> 24945 24946 <thead class="entries_header"> 24947 <tr> 24948 <th class="th_name">Property Name</th> 24949 <th class="th_type">Type</th> 24950 <th class="th_description">Description</th> 24951 <th class="th_units">Units</th> 24952 <th class="th_range">Range</th> 24953 <th class="th_tags">Tags</th> 24954 </tr> 24955 </thead> 24956 24957 <tbody> 24958 24959 24960 24961 24962 24963 24964 24965 24966 24967 24968 <tr class="entry" id="static_android.led.availableLeds"> 24969 <td class="entry_name 24970 " rowspan="1"> 24971 android.<wbr/>led.<wbr/>available<wbr/>Leds 24972 </td> 24973 <td class="entry_type"> 24974 <span class="entry_type_name entry_type_name_enum">byte</span> 24975 <span class="entry_type_container">x</span> 24976 24977 <span class="entry_type_array"> 24978 n 24979 </span> 24980 <span class="entry_type_visibility"> [hidden]</span> 24981 24982 24983 24984 24985 24986 <ul class="entry_type_enum"> 24987 <li> 24988 <span class="entry_type_enum_name">TRANSMIT</span> 24989 <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> 24990 </li> 24991 </ul> 24992 24993 </td> <!-- entry_type --> 24994 24995 <td class="entry_description"> 24996 <p>A list of camera LEDs that are available on this system.<wbr/></p> 24997 </td> 24998 24999 <td class="entry_units"> 25000 </td> 25001 25002 <td class="entry_range"> 25003 </td> 25004 25005 <td class="entry_tags"> 25006 </td> 25007 25008 </tr> 25009 25010 25011 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25012 <!-- end of entry --> 25013 25014 25015 25016 <!-- end of kind --> 25017 </tbody> 25018 25019 <!-- end of section --> 25020 <tr><td colspan="6" id="section_info" class="section">info</td></tr> 25021 25022 25023 <tr><td colspan="6" class="kind">static</td></tr> 25024 25025 <thead class="entries_header"> 25026 <tr> 25027 <th class="th_name">Property Name</th> 25028 <th class="th_type">Type</th> 25029 <th class="th_description">Description</th> 25030 <th class="th_units">Units</th> 25031 <th class="th_range">Range</th> 25032 <th class="th_tags">Tags</th> 25033 </tr> 25034 </thead> 25035 25036 <tbody> 25037 25038 25039 25040 25041 25042 25043 25044 25045 25046 25047 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 25048 <td class="entry_name 25049 " rowspan="5"> 25050 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 25051 </td> 25052 <td class="entry_type"> 25053 <span class="entry_type_name entry_type_name_enum">byte</span> 25054 25055 <span class="entry_type_visibility"> [public]</span> 25056 25057 25058 <span class="entry_type_hwlevel">[legacy] </span> 25059 25060 25061 25062 <ul class="entry_type_enum"> 25063 <li> 25064 <span class="entry_type_enum_name">LIMITED</span> 25065 <span class="entry_type_enum_notes"><p>This camera device has only limited capabilities.<wbr/></p></span> 25066 </li> 25067 <li> 25068 <span class="entry_type_enum_name">FULL</span> 25069 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p></span> 25070 </li> 25071 <li> 25072 <span class="entry_type_enum_name">LEGACY</span> 25073 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p></span> 25074 </li> 25075 </ul> 25076 25077 </td> <!-- entry_type --> 25078 25079 <td class="entry_description"> 25080 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> 25081 </td> 25082 25083 <td class="entry_units"> 25084 </td> 25085 25086 <td class="entry_range"> 25087 </td> 25088 25089 <td class="entry_tags"> 25090 </td> 25091 25092 </tr> 25093 <tr class="entries_header"> 25094 <th class="th_details" colspan="5">Details</th> 25095 </tr> 25096 <tr class="entry_cont"> 25097 <td class="entry_details" colspan="5"> 25098 <p>Camera devices will come in three flavors: LEGACY,<wbr/> LIMITED and FULL.<wbr/></p> 25099 <p>A FULL device will support below capabilities:</p> 25100 <ul> 25101 <li>BURST_<wbr/>CAPTURE capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains BURST_<wbr/>CAPTURE)</li> 25102 <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> 25103 <li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li> 25104 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 25105 MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li> 25106 <li>At least 3 processed (but not stalling) format output streams 25107 (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>>=</code> 3)</li> 25108 <li>The required stream configurations defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a></li> 25109 <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> 25110 <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> 25111 </ul> 25112 <p>A LIMITED device may have some or none of the above characteristics.<wbr/> 25113 To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 25114 <p>Some features are not part of any particular hardware level or capability and must be 25115 queried separately.<wbr/> These include:</p> 25116 <ul> 25117 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li> 25118 <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> 25119 <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> 25120 <li>Optical or electrical image stabilization 25121 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/> 25122 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li> 25123 </ul> 25124 <p>A LEGACY device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual 25125 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/></p> 25126 <p>Each higher level supports everything the lower level supports 25127 in this order: FULL <code>></code> LIMITED <code>></code> LEGACY.<wbr/></p> 25128 <p>Note: 25129 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region 25130 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>==</code> FREEFORM); this requirement was relaxed in API level 23,<wbr/> 25131 and FULL devices may only support CENTERED cropping.<wbr/></p> 25132 </td> 25133 </tr> 25134 25135 <tr class="entries_header"> 25136 <th class="th_details" colspan="5">HAL Implementation Details</th> 25137 </tr> 25138 <tr class="entry_cont"> 25139 <td class="entry_details" colspan="5"> 25140 <p>The camera 3 HAL device can implement one of two possible 25141 operational modes; limited and full.<wbr/> Full support is 25142 expected from new higher-end devices.<wbr/> Limited mode has 25143 hardware requirements roughly in line with those for a 25144 camera HAL device v1 implementation,<wbr/> and is expected from 25145 older or inexpensive devices.<wbr/> Full is a strict superset of 25146 limited,<wbr/> and they share the same essential operational flow.<wbr/></p> 25147 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 25148 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there 25149 for backwards compatibility in the <code>android.<wbr/>hardware.<wbr/>camera2</code> 25150 user-facing API only.<wbr/></p> 25151 </td> 25152 </tr> 25153 25154 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25155 <!-- end of entry --> 25156 25157 25158 25159 <!-- end of kind --> 25160 </tbody> 25161 25162 <!-- end of section --> 25163 <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr> 25164 25165 25166 <tr><td colspan="6" class="kind">controls</td></tr> 25167 25168 <thead class="entries_header"> 25169 <tr> 25170 <th class="th_name">Property Name</th> 25171 <th class="th_type">Type</th> 25172 <th class="th_description">Description</th> 25173 <th class="th_units">Units</th> 25174 <th class="th_range">Range</th> 25175 <th class="th_tags">Tags</th> 25176 </tr> 25177 </thead> 25178 25179 <tbody> 25180 25181 25182 25183 25184 25185 25186 25187 25188 25189 25190 <tr class="entry" id="controls_android.blackLevel.lock"> 25191 <td class="entry_name 25192 " rowspan="5"> 25193 android.<wbr/>black<wbr/>Level.<wbr/>lock 25194 </td> 25195 <td class="entry_type"> 25196 <span class="entry_type_name entry_type_name_enum">byte</span> 25197 25198 <span class="entry_type_visibility"> [public as boolean]</span> 25199 25200 25201 <span class="entry_type_hwlevel">[full] </span> 25202 25203 25204 25205 <ul class="entry_type_enum"> 25206 <li> 25207 <span class="entry_type_enum_name">OFF</span> 25208 </li> 25209 <li> 25210 <span class="entry_type_enum_name">ON</span> 25211 </li> 25212 </ul> 25213 25214 </td> <!-- entry_type --> 25215 25216 <td class="entry_description"> 25217 <p>Whether black-level compensation is locked 25218 to its current values,<wbr/> or is free to vary.<wbr/></p> 25219 </td> 25220 25221 <td class="entry_units"> 25222 </td> 25223 25224 <td class="entry_range"> 25225 </td> 25226 25227 <td class="entry_tags"> 25228 <ul class="entry_tags"> 25229 <li><a href="#tag_HAL2">HAL2</a></li> 25230 </ul> 25231 </td> 25232 25233 </tr> 25234 <tr class="entries_header"> 25235 <th class="th_details" colspan="5">Details</th> 25236 </tr> 25237 <tr class="entry_cont"> 25238 <td class="entry_details" colspan="5"> 25239 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level 25240 compensation will not change until the lock is set to 25241 <code>false</code> (OFF).<wbr/></p> 25242 <p>Since changes to certain capture parameters (such as 25243 exposure time) may require resetting of black level 25244 compensation,<wbr/> the camera device must report whether setting 25245 the black level lock was successful in the output result 25246 metadata.<wbr/></p> 25247 <p>For example,<wbr/> if a sequence of requests is as follows:</p> 25248 <ul> 25249 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 25250 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25251 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25252 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25253 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25254 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25255 </ul> 25256 <p>And the exposure change in Request 4 requires the camera 25257 device to reset the black level offsets,<wbr/> then the output 25258 result metadata is expected to be:</p> 25259 <ul> 25260 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 25261 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25262 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25263 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 25264 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25265 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25266 </ul> 25267 <p>This indicates to the application that on frame 4,<wbr/> black 25268 levels were reset due to exposure value changes,<wbr/> and pixel 25269 values may not be consistent across captures.<wbr/></p> 25270 <p>The camera device will maintain the lock to the extent 25271 possible,<wbr/> only overriding the lock to OFF when changes to 25272 other request parameters require a black level recalculation 25273 or reset.<wbr/></p> 25274 </td> 25275 </tr> 25276 25277 <tr class="entries_header"> 25278 <th class="th_details" colspan="5">HAL Implementation Details</th> 25279 </tr> 25280 <tr class="entry_cont"> 25281 <td class="entry_details" colspan="5"> 25282 <p>If for some reason black level locking is no longer possible 25283 (for example,<wbr/> the analog gain has changed,<wbr/> which forces 25284 black level offsets to be recalculated),<wbr/> then the HAL must 25285 override this request (and it must report 'OFF' when this 25286 does happen) until the next capture for which locking is 25287 possible again.<wbr/></p> 25288 </td> 25289 </tr> 25290 25291 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25292 <!-- end of entry --> 25293 25294 25295 25296 <!-- end of kind --> 25297 </tbody> 25298 <tr><td colspan="6" class="kind">dynamic</td></tr> 25299 25300 <thead class="entries_header"> 25301 <tr> 25302 <th class="th_name">Property Name</th> 25303 <th class="th_type">Type</th> 25304 <th class="th_description">Description</th> 25305 <th class="th_units">Units</th> 25306 <th class="th_range">Range</th> 25307 <th class="th_tags">Tags</th> 25308 </tr> 25309 </thead> 25310 25311 <tbody> 25312 25313 25314 25315 25316 25317 25318 25319 25320 25321 25322 <tr class="entry" id="dynamic_android.blackLevel.lock"> 25323 <td class="entry_name 25324 " rowspan="5"> 25325 android.<wbr/>black<wbr/>Level.<wbr/>lock 25326 </td> 25327 <td class="entry_type"> 25328 <span class="entry_type_name entry_type_name_enum">byte</span> 25329 25330 <span class="entry_type_visibility"> [public as boolean]</span> 25331 25332 25333 <span class="entry_type_hwlevel">[full] </span> 25334 25335 25336 25337 <ul class="entry_type_enum"> 25338 <li> 25339 <span class="entry_type_enum_name">OFF</span> 25340 </li> 25341 <li> 25342 <span class="entry_type_enum_name">ON</span> 25343 </li> 25344 </ul> 25345 25346 </td> <!-- entry_type --> 25347 25348 <td class="entry_description"> 25349 <p>Whether black-level compensation is locked 25350 to its current values,<wbr/> or is free to vary.<wbr/></p> 25351 </td> 25352 25353 <td class="entry_units"> 25354 </td> 25355 25356 <td class="entry_range"> 25357 </td> 25358 25359 <td class="entry_tags"> 25360 <ul class="entry_tags"> 25361 <li><a href="#tag_HAL2">HAL2</a></li> 25362 </ul> 25363 </td> 25364 25365 </tr> 25366 <tr class="entries_header"> 25367 <th class="th_details" colspan="5">Details</th> 25368 </tr> 25369 <tr class="entry_cont"> 25370 <td class="entry_details" colspan="5"> 25371 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 25372 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 25373 a change in other capture settings forced the camera device to 25374 perform a black level reset.<wbr/></p> 25375 </td> 25376 </tr> 25377 25378 <tr class="entries_header"> 25379 <th class="th_details" colspan="5">HAL Implementation Details</th> 25380 </tr> 25381 <tr class="entry_cont"> 25382 <td class="entry_details" colspan="5"> 25383 <p>If for some reason black level locking is no longer possible 25384 (for example,<wbr/> the analog gain has changed,<wbr/> which forces 25385 black level offsets to be recalculated),<wbr/> then the HAL must 25386 override this request (and it must report 'OFF' when this 25387 does happen) until the next capture for which locking is 25388 possible again.<wbr/></p> 25389 </td> 25390 </tr> 25391 25392 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25393 <!-- end of entry --> 25394 25395 25396 25397 <!-- end of kind --> 25398 </tbody> 25399 25400 <!-- end of section --> 25401 <tr><td colspan="6" id="section_sync" class="section">sync</td></tr> 25402 25403 25404 <tr><td colspan="6" class="kind">dynamic</td></tr> 25405 25406 <thead class="entries_header"> 25407 <tr> 25408 <th class="th_name">Property Name</th> 25409 <th class="th_type">Type</th> 25410 <th class="th_description">Description</th> 25411 <th class="th_units">Units</th> 25412 <th class="th_range">Range</th> 25413 <th class="th_tags">Tags</th> 25414 </tr> 25415 </thead> 25416 25417 <tbody> 25418 25419 25420 25421 25422 25423 25424 25425 25426 25427 25428 <tr class="entry" id="dynamic_android.sync.frameNumber"> 25429 <td class="entry_name 25430 " rowspan="5"> 25431 android.<wbr/>sync.<wbr/>frame<wbr/>Number 25432 </td> 25433 <td class="entry_type"> 25434 <span class="entry_type_name entry_type_name_enum">int64</span> 25435 25436 <span class="entry_type_visibility"> [hidden]</span> 25437 25438 25439 <span class="entry_type_hwlevel">[legacy] </span> 25440 25441 25442 25443 <ul class="entry_type_enum"> 25444 <li> 25445 <span class="entry_type_enum_name">CONVERGING</span> 25446 <span class="entry_type_enum_value">-1</span> 25447 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p> 25448 <p>Synchronization is in progress,<wbr/> and reading metadata from this 25449 result may include a mix of data that have taken effect since the 25450 last synchronization time.<wbr/></p> 25451 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 25452 this value will update to the actual frame number frame number 25453 the result is guaranteed to be synchronized to (as long as the 25454 request settings remain constant).<wbr/></p></span> 25455 </li> 25456 <li> 25457 <span class="entry_type_enum_name">UNKNOWN</span> 25458 <span class="entry_type_enum_value">-2</span> 25459 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p> 25460 <p>The result may have already converged,<wbr/> or it may be in 25461 progress.<wbr/> Reading from this result may include some mix 25462 of settings from past requests.<wbr/></p> 25463 <p>After a settings change,<wbr/> the new settings will eventually all 25464 take effect for the output buffers and results.<wbr/> However,<wbr/> this 25465 value will not change when that happens.<wbr/> Altering settings 25466 rapidly may provide outcomes using mixes of settings from recent 25467 requests.<wbr/></p> 25468 <p>This value is intended primarily for backwards compatibility with 25469 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 25470 </li> 25471 </ul> 25472 25473 </td> <!-- entry_type --> 25474 25475 <td class="entry_description"> 25476 <p>The frame number corresponding to the last request 25477 with which the output result (metadata + buffers) has been fully 25478 synchronized.<wbr/></p> 25479 </td> 25480 25481 <td class="entry_units"> 25482 </td> 25483 25484 <td class="entry_range"> 25485 <p>Either a non-negative value corresponding to a 25486 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 25487 </td> 25488 25489 <td class="entry_tags"> 25490 <ul class="entry_tags"> 25491 <li><a href="#tag_V1">V1</a></li> 25492 </ul> 25493 </td> 25494 25495 </tr> 25496 <tr class="entries_header"> 25497 <th class="th_details" colspan="5">Details</th> 25498 </tr> 25499 <tr class="entry_cont"> 25500 <td class="entry_details" colspan="5"> 25501 <p>When a request is submitted to the camera device,<wbr/> there is usually a 25502 delay of several frames before the controls get applied.<wbr/> A camera 25503 device may either choose to account for this delay by implementing a 25504 pipeline and carefully submit well-timed atomic control updates,<wbr/> or 25505 it may start streaming control changes that span over several frame 25506 boundaries.<wbr/></p> 25507 <p>In the latter case,<wbr/> whenever a request's settings change relative to 25508 the previous submitted request,<wbr/> the full set of changes may take 25509 multiple frame durations to fully take effect.<wbr/> Some settings may 25510 take effect sooner (in less frame durations) than others.<wbr/></p> 25511 <p>While a set of control changes are being propagated,<wbr/> this value 25512 will be CONVERGING.<wbr/></p> 25513 <p>Once it is fully known that a set of control changes have been 25514 finished propagating,<wbr/> and the resulting updated control settings 25515 have been read back by the camera device,<wbr/> this value will be set 25516 to a non-negative frame number (corresponding to the request to 25517 which the results have synchronized to).<wbr/></p> 25518 <p>Older camera device implementations may not have a way to detect 25519 when all camera controls have been applied,<wbr/> and will always set this 25520 value to UNKNOWN.<wbr/></p> 25521 <p>FULL capability devices will always have this value set to the 25522 frame number of the request corresponding to this result.<wbr/></p> 25523 <p><em>Further details</em>:</p> 25524 <ul> 25525 <li>Whenever a request differs from the last request,<wbr/> any future 25526 results not yet returned may have this value set to CONVERGING (this 25527 could include any in-progress captures not yet returned by the camera 25528 device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 25529 <li>Submitting a series of multiple requests that differ from the 25530 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 25531 moves the new synchronization frame to the last non-repeating 25532 request (using the smallest frame number from the contiguous list of 25533 repeating requests).<wbr/></li> 25534 <li>Submitting the same request repeatedly will not change this value 25535 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 25536 <li>When this value changes to non-negative,<wbr/> that means that all of the 25537 metadata controls from the request have been applied,<wbr/> all of the 25538 metadata controls from the camera device have been read to the 25539 updated values (into the result),<wbr/> and all of the graphics buffers 25540 corresponding to this result are also synchronized to the request.<wbr/></li> 25541 </ul> 25542 <p><em>Pipeline considerations</em>:</p> 25543 <p>Submitting a request with updated controls relative to the previously 25544 submitted requests may also invalidate the synchronization state 25545 of all the results corresponding to currently in-flight requests.<wbr/></p> 25546 <p>In other words,<wbr/> results for this current request and up to 25547 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 25548 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 25549 </td> 25550 </tr> 25551 25552 <tr class="entries_header"> 25553 <th class="th_details" colspan="5">HAL Implementation Details</th> 25554 </tr> 25555 <tr class="entry_cont"> 25556 <td class="entry_details" colspan="5"> 25557 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> 25558 is also UNKNOWN.<wbr/></p> 25559 <p>FULL capability devices should simply set this value to the 25560 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 25561 </td> 25562 </tr> 25563 25564 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25565 <!-- end of entry --> 25566 25567 25568 25569 <!-- end of kind --> 25570 </tbody> 25571 <tr><td colspan="6" class="kind">static</td></tr> 25572 25573 <thead class="entries_header"> 25574 <tr> 25575 <th class="th_name">Property Name</th> 25576 <th class="th_type">Type</th> 25577 <th class="th_description">Description</th> 25578 <th class="th_units">Units</th> 25579 <th class="th_range">Range</th> 25580 <th class="th_tags">Tags</th> 25581 </tr> 25582 </thead> 25583 25584 <tbody> 25585 25586 25587 25588 25589 25590 25591 25592 25593 25594 25595 <tr class="entry" id="static_android.sync.maxLatency"> 25596 <td class="entry_name 25597 " rowspan="5"> 25598 android.<wbr/>sync.<wbr/>max<wbr/>Latency 25599 </td> 25600 <td class="entry_type"> 25601 <span class="entry_type_name entry_type_name_enum">int32</span> 25602 25603 <span class="entry_type_visibility"> [public]</span> 25604 25605 25606 <span class="entry_type_hwlevel">[legacy] </span> 25607 25608 25609 25610 <ul class="entry_type_enum"> 25611 <li> 25612 <span class="entry_type_enum_name">PER_FRAME_CONTROL</span> 25613 <span class="entry_type_enum_value">0</span> 25614 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p> 25615 <p>Changing controls over multiple requests one after another will 25616 produce results that have those controls applied atomically 25617 each frame.<wbr/></p> 25618 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 25619 </li> 25620 <li> 25621 <span class="entry_type_enum_name">UNKNOWN</span> 25622 <span class="entry_type_enum_value">-1</span> 25623 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 25624 of the past requests applied to the camera settings.<wbr/></p> 25625 <p>By submitting a series of identical requests,<wbr/> the camera device 25626 will eventually have the camera settings applied,<wbr/> but it is 25627 unknown when that exact point will be.<wbr/></p> 25628 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span> 25629 </li> 25630 </ul> 25631 25632 </td> <!-- entry_type --> 25633 25634 <td class="entry_description"> 25635 <p>The maximum number of frames that can occur after a request 25636 (different than the previous) has been submitted,<wbr/> and before the 25637 result's state becomes synchronized.<wbr/></p> 25638 </td> 25639 25640 <td class="entry_units"> 25641 Frame counts 25642 </td> 25643 25644 <td class="entry_range"> 25645 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p> 25646 </td> 25647 25648 <td class="entry_tags"> 25649 <ul class="entry_tags"> 25650 <li><a href="#tag_V1">V1</a></li> 25651 </ul> 25652 </td> 25653 25654 </tr> 25655 <tr class="entries_header"> 25656 <th class="th_details" colspan="5">Details</th> 25657 </tr> 25658 <tr class="entry_cont"> 25659 <td class="entry_details" colspan="5"> 25660 <p>This defines the maximum distance (in number of metadata results),<wbr/> 25661 between the frame number of the request that has new controls to apply 25662 and the frame number of the result that has all the controls applied.<wbr/></p> 25663 <p>In other words this acts as an upper boundary for how many frames 25664 must occur before the camera device knows for a fact that the new 25665 submitted camera settings have been applied in outgoing frames.<wbr/></p> 25666 </td> 25667 </tr> 25668 25669 <tr class="entries_header"> 25670 <th class="th_details" colspan="5">HAL Implementation Details</th> 25671 </tr> 25672 <tr class="entry_cont"> 25673 <td class="entry_details" colspan="5"> 25674 <p>For example if maxLatency was 2,<wbr/></p> 25675 <pre><code>initial request = X (repeating) 25676 request1 = X 25677 request2 = Y 25678 request3 = Y 25679 request4 = Y 25680 25681 where requestN has frameNumber N,<wbr/> and the first of the repeating 25682 initial request's has frameNumber F (and F < 1).<wbr/> 25683 25684 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 25685 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 25686 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 25687 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 25688 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 25689 25690 where resultN has frameNumber N.<wbr/> 25691 </code></pre> 25692 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 25693 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 25694 <code>4 - 2 = 2</code>.<wbr/></p> 25695 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 25696 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or 25697 <code>@link{android.<wbr/>hardware.<wbr/>camera2.<wbr/>Capture<wbr/>Result#get<wbr/>Frame<wbr/>Number}</code>.<wbr/></p> 25698 <p>LIMITED devices are strongly encouraged to use a non-negative 25699 value.<wbr/> If UNKNOWN is used here then app developers do not have a way 25700 to know when sensor settings have been applied.<wbr/></p> 25701 </td> 25702 </tr> 25703 25704 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25705 <!-- end of entry --> 25706 25707 25708 25709 <!-- end of kind --> 25710 </tbody> 25711 25712 <!-- end of section --> 25713 <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr> 25714 25715 25716 <tr><td colspan="6" class="kind">controls</td></tr> 25717 25718 <thead class="entries_header"> 25719 <tr> 25720 <th class="th_name">Property Name</th> 25721 <th class="th_type">Type</th> 25722 <th class="th_description">Description</th> 25723 <th class="th_units">Units</th> 25724 <th class="th_range">Range</th> 25725 <th class="th_tags">Tags</th> 25726 </tr> 25727 </thead> 25728 25729 <tbody> 25730 25731 25732 25733 25734 25735 25736 25737 25738 25739 25740 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor"> 25741 <td class="entry_name 25742 " rowspan="3"> 25743 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 25744 </td> 25745 <td class="entry_type"> 25746 <span class="entry_type_name">float</span> 25747 25748 <span class="entry_type_visibility"> [public]</span> 25749 25750 25751 <span class="entry_type_hwlevel">[limited] </span> 25752 25753 25754 25755 25756 </td> <!-- entry_type --> 25757 25758 <td class="entry_description"> 25759 <p>The amount of exposure time increase factor applied to the original output 25760 frame by the application processing before sending for reprocessing.<wbr/></p> 25761 </td> 25762 25763 <td class="entry_units"> 25764 Relative exposure time increase factor.<wbr/> 25765 </td> 25766 25767 <td class="entry_range"> 25768 <p>>= 1.<wbr/>0</p> 25769 </td> 25770 25771 <td class="entry_tags"> 25772 <ul class="entry_tags"> 25773 <li><a href="#tag_REPROC">REPROC</a></li> 25774 </ul> 25775 </td> 25776 25777 </tr> 25778 <tr class="entries_header"> 25779 <th class="th_details" colspan="5">Details</th> 25780 </tr> 25781 <tr class="entry_cont"> 25782 <td class="entry_details" colspan="5"> 25783 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 25784 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 25785 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 25786 output frames to effectively reduce the noise to the same level as a frame that was 25787 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 25788 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 25789 the camera device is that the amount of noise in the image would be approximately what 25790 would be expected if the original capture parameters had been a sensitivity of 25791 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 25792 than S and T respectively.<wbr/> If the captured images were processed by the application 25793 before being sent for reprocessing,<wbr/> then the application may have used image processing 25794 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 25795 application-processed images (input images).<wbr/> By using the effectiveExposureFactor 25796 control,<wbr/> the application can communicate to the camera device the actual noise level 25797 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 25798 device can select appropriate noise reduction and edge enhancement parameters to avoid 25799 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 25800 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 25801 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 25802 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 25803 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 25804 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 25805 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 25806 produce the best quality images.<wbr/></p> 25807 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 25808 buffer in a way that affects its effective exposure time.<wbr/></p> 25809 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 25810 reduction reprocessing,<wbr/> it is only effective when <code><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> != OFF</code>.<wbr/> 25811 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 25812 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 25813 </td> 25814 </tr> 25815 25816 25817 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25818 <!-- end of entry --> 25819 25820 25821 25822 <!-- end of kind --> 25823 </tbody> 25824 <tr><td colspan="6" class="kind">dynamic</td></tr> 25825 25826 <thead class="entries_header"> 25827 <tr> 25828 <th class="th_name">Property Name</th> 25829 <th class="th_type">Type</th> 25830 <th class="th_description">Description</th> 25831 <th class="th_units">Units</th> 25832 <th class="th_range">Range</th> 25833 <th class="th_tags">Tags</th> 25834 </tr> 25835 </thead> 25836 25837 <tbody> 25838 25839 25840 25841 25842 25843 25844 25845 25846 25847 25848 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor"> 25849 <td class="entry_name 25850 " rowspan="3"> 25851 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 25852 </td> 25853 <td class="entry_type"> 25854 <span class="entry_type_name">float</span> 25855 25856 <span class="entry_type_visibility"> [public]</span> 25857 25858 25859 <span class="entry_type_hwlevel">[limited] </span> 25860 25861 25862 25863 25864 </td> <!-- entry_type --> 25865 25866 <td class="entry_description"> 25867 <p>The amount of exposure time increase factor applied to the original output 25868 frame by the application processing before sending for reprocessing.<wbr/></p> 25869 </td> 25870 25871 <td class="entry_units"> 25872 Relative exposure time increase factor.<wbr/> 25873 </td> 25874 25875 <td class="entry_range"> 25876 <p>>= 1.<wbr/>0</p> 25877 </td> 25878 25879 <td class="entry_tags"> 25880 <ul class="entry_tags"> 25881 <li><a href="#tag_REPROC">REPROC</a></li> 25882 </ul> 25883 </td> 25884 25885 </tr> 25886 <tr class="entries_header"> 25887 <th class="th_details" colspan="5">Details</th> 25888 </tr> 25889 <tr class="entry_cont"> 25890 <td class="entry_details" colspan="5"> 25891 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 25892 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 25893 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 25894 output frames to effectively reduce the noise to the same level as a frame that was 25895 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 25896 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 25897 the camera device is that the amount of noise in the image would be approximately what 25898 would be expected if the original capture parameters had been a sensitivity of 25899 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 25900 than S and T respectively.<wbr/> If the captured images were processed by the application 25901 before being sent for reprocessing,<wbr/> then the application may have used image processing 25902 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 25903 application-processed images (input images).<wbr/> By using the effectiveExposureFactor 25904 control,<wbr/> the application can communicate to the camera device the actual noise level 25905 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 25906 device can select appropriate noise reduction and edge enhancement parameters to avoid 25907 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 25908 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 25909 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 25910 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 25911 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 25912 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 25913 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 25914 produce the best quality images.<wbr/></p> 25915 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 25916 buffer in a way that affects its effective exposure time.<wbr/></p> 25917 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 25918 reduction reprocessing,<wbr/> it is only effective when <code><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> != OFF</code>.<wbr/> 25919 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 25920 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 25921 </td> 25922 </tr> 25923 25924 25925 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25926 <!-- end of entry --> 25927 25928 25929 25930 <!-- end of kind --> 25931 </tbody> 25932 <tr><td colspan="6" class="kind">static</td></tr> 25933 25934 <thead class="entries_header"> 25935 <tr> 25936 <th class="th_name">Property Name</th> 25937 <th class="th_type">Type</th> 25938 <th class="th_description">Description</th> 25939 <th class="th_units">Units</th> 25940 <th class="th_range">Range</th> 25941 <th class="th_tags">Tags</th> 25942 </tr> 25943 </thead> 25944 25945 <tbody> 25946 25947 25948 25949 25950 25951 25952 25953 25954 25955 25956 <tr class="entry" id="static_android.reprocess.maxCaptureStall"> 25957 <td class="entry_name 25958 " rowspan="3"> 25959 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall 25960 </td> 25961 <td class="entry_type"> 25962 <span class="entry_type_name">int32</span> 25963 25964 <span class="entry_type_visibility"> [public]</span> 25965 25966 25967 <span class="entry_type_hwlevel">[limited] </span> 25968 25969 25970 25971 25972 </td> <!-- entry_type --> 25973 25974 <td class="entry_description"> 25975 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a 25976 reprocess capture request.<wbr/></p> 25977 </td> 25978 25979 <td class="entry_units"> 25980 Number of frames.<wbr/> 25981 </td> 25982 25983 <td class="entry_range"> 25984 <p><= 4</p> 25985 </td> 25986 25987 <td class="entry_tags"> 25988 <ul class="entry_tags"> 25989 <li><a href="#tag_REPROC">REPROC</a></li> 25990 </ul> 25991 </td> 25992 25993 </tr> 25994 <tr class="entries_header"> 25995 <th class="th_details" colspan="5">Details</th> 25996 </tr> 25997 <tr class="entry_cont"> 25998 <td class="entry_details" colspan="5"> 25999 <p>The key describes the maximal interference that one reprocess (input) request 26000 can introduce to the camera simultaneous streaming of regular (output) capture 26001 requests,<wbr/> including repeating requests.<wbr/></p> 26002 <p>When a reprocessing capture request is submitted while a camera output repeating request 26003 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture 26004 pipeline for at least one frame duration so that the camera device is unable to process 26005 the following capture request in time for the next sensor start of exposure boundary.<wbr/> 26006 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame 26007 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview 26008 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives 26009 the worst-case number of frame stall introduced by one reprocess request with any kind of 26010 formats/<wbr/>sizes combination.<wbr/></p> 26011 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the 26012 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p> 26013 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing ( 26014 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or 26015 YUV_<wbr/>REPROCESSING).<wbr/></p> 26016 </td> 26017 </tr> 26018 26019 26020 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26021 <!-- end of entry --> 26022 26023 26024 26025 <!-- end of kind --> 26026 </tbody> 26027 26028 <!-- end of section --> 26029 <tr><td colspan="6" id="section_depth" class="section">depth</td></tr> 26030 26031 26032 <tr><td colspan="6" class="kind">static</td></tr> 26033 26034 <thead class="entries_header"> 26035 <tr> 26036 <th class="th_name">Property Name</th> 26037 <th class="th_type">Type</th> 26038 <th class="th_description">Description</th> 26039 <th class="th_units">Units</th> 26040 <th class="th_range">Range</th> 26041 <th class="th_tags">Tags</th> 26042 </tr> 26043 </thead> 26044 26045 <tbody> 26046 26047 26048 26049 26050 26051 26052 26053 26054 26055 26056 <tr class="entry" id="static_android.depth.maxDepthSamples"> 26057 <td class="entry_name 26058 " rowspan="3"> 26059 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples 26060 </td> 26061 <td class="entry_type"> 26062 <span class="entry_type_name">int32</span> 26063 26064 <span class="entry_type_visibility"> [system]</span> 26065 26066 26067 <span class="entry_type_hwlevel">[limited] </span> 26068 26069 26070 26071 26072 </td> <!-- entry_type --> 26073 26074 <td class="entry_description"> 26075 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p> 26076 </td> 26077 26078 <td class="entry_units"> 26079 </td> 26080 26081 <td class="entry_range"> 26082 </td> 26083 26084 <td class="entry_tags"> 26085 <ul class="entry_tags"> 26086 <li><a href="#tag_DEPTH">DEPTH</a></li> 26087 </ul> 26088 </td> 26089 26090 </tr> 26091 <tr class="entries_header"> 26092 <th class="th_details" colspan="5">Details</th> 26093 </tr> 26094 <tr class="entry_cont"> 26095 <td class="entry_details" colspan="5"> 26096 <p>If a camera device supports outputting depth range data in the form of a depth point 26097 cloud (<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a>),<wbr/> this is the maximum 26098 number of points an output buffer may contain.<wbr/></p> 26099 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/> 26100 If output in the depth point cloud format is not supported,<wbr/> this entry will 26101 not be defined.<wbr/></p> 26102 </td> 26103 </tr> 26104 26105 26106 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26107 <!-- end of entry --> 26108 26109 26110 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations"> 26111 <td class="entry_name 26112 " rowspan="3"> 26113 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations 26114 </td> 26115 <td class="entry_type"> 26116 <span class="entry_type_name entry_type_name_enum">int32</span> 26117 <span class="entry_type_container">x</span> 26118 26119 <span class="entry_type_array"> 26120 n x 4 26121 </span> 26122 <span class="entry_type_visibility"> [hidden as streamConfiguration]</span> 26123 26124 26125 <span class="entry_type_hwlevel">[limited] </span> 26126 26127 26128 26129 <ul class="entry_type_enum"> 26130 <li> 26131 <span class="entry_type_enum_name">OUTPUT</span> 26132 </li> 26133 <li> 26134 <span class="entry_type_enum_name">INPUT</span> 26135 </li> 26136 </ul> 26137 26138 </td> <!-- entry_type --> 26139 26140 <td class="entry_description"> 26141 <p>The available depth dataspace stream 26142 configurations that this camera device supports 26143 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 26144 </td> 26145 26146 <td class="entry_units"> 26147 </td> 26148 26149 <td class="entry_range"> 26150 </td> 26151 26152 <td class="entry_tags"> 26153 <ul class="entry_tags"> 26154 <li><a href="#tag_DEPTH">DEPTH</a></li> 26155 </ul> 26156 </td> 26157 26158 </tr> 26159 <tr class="entries_header"> 26160 <th class="th_details" colspan="5">Details</th> 26161 </tr> 26162 <tr class="entry_cont"> 26163 <td class="entry_details" colspan="5"> 26164 <p>These are output stream configurations for use with 26165 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are 26166 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 26167 <p>Only devices that support depth output for at least 26168 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include 26169 this entry.<wbr/></p> 26170 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB 26171 sparse depth point cloud must report a single entry for 26172 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/> 26173 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to 26174 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p> 26175 </td> 26176 </tr> 26177 26178 26179 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26180 <!-- end of entry --> 26181 26182 26183 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations"> 26184 <td class="entry_name 26185 " rowspan="3"> 26186 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations 26187 </td> 26188 <td class="entry_type"> 26189 <span class="entry_type_name">int64</span> 26190 <span class="entry_type_container">x</span> 26191 26192 <span class="entry_type_array"> 26193 4 x n 26194 </span> 26195 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 26196 26197 26198 <span class="entry_type_hwlevel">[limited] </span> 26199 26200 26201 26202 26203 </td> <!-- entry_type --> 26204 26205 <td class="entry_description"> 26206 <p>This lists the minimum frame duration for each 26207 format/<wbr/>size combination for depth output formats.<wbr/></p> 26208 </td> 26209 26210 <td class="entry_units"> 26211 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 26212 </td> 26213 26214 <td class="entry_range"> 26215 </td> 26216 26217 <td class="entry_tags"> 26218 <ul class="entry_tags"> 26219 <li><a href="#tag_DEPTH">DEPTH</a></li> 26220 </ul> 26221 </td> 26222 26223 </tr> 26224 <tr class="entries_header"> 26225 <th class="th_details" colspan="5">Details</th> 26226 </tr> 26227 <tr class="entry_cont"> 26228 <td class="entry_details" colspan="5"> 26229 <p>This should correspond to the frame duration when only that 26230 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 26231 set to either OFF or FAST.<wbr/></p> 26232 <p>When multiple streams are used in a request,<wbr/> the minimum frame 26233 duration will be max(individual stream min durations).<wbr/></p> 26234 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 26235 is the same regardless of whether the stream is input or output.<wbr/></p> 26236 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 26237 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 26238 calculating the max frame rate.<wbr/></p> 26239 <p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p> 26240 </td> 26241 </tr> 26242 26243 26244 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26245 <!-- end of entry --> 26246 26247 26248 <tr class="entry" id="static_android.depth.availableDepthStallDurations"> 26249 <td class="entry_name 26250 " rowspan="3"> 26251 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations 26252 </td> 26253 <td class="entry_type"> 26254 <span class="entry_type_name">int64</span> 26255 <span class="entry_type_container">x</span> 26256 26257 <span class="entry_type_array"> 26258 4 x n 26259 </span> 26260 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 26261 26262 26263 <span class="entry_type_hwlevel">[limited] </span> 26264 26265 26266 26267 26268 </td> <!-- entry_type --> 26269 26270 <td class="entry_description"> 26271 <p>This lists the maximum stall duration for each 26272 output format/<wbr/>size combination for depth streams.<wbr/></p> 26273 </td> 26274 26275 <td class="entry_units"> 26276 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 26277 </td> 26278 26279 <td class="entry_range"> 26280 </td> 26281 26282 <td class="entry_tags"> 26283 <ul class="entry_tags"> 26284 <li><a href="#tag_DEPTH">DEPTH</a></li> 26285 </ul> 26286 </td> 26287 26288 </tr> 26289 <tr class="entries_header"> 26290 <th class="th_details" colspan="5">Details</th> 26291 </tr> 26292 <tr class="entry_cont"> 26293 <td class="entry_details" colspan="5"> 26294 <p>A stall duration is how much extra time would get added 26295 to the normal minimum frame duration for a repeating request 26296 that has streams with non-zero stall.<wbr/></p> 26297 <p>This functions similarly to 26298 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth 26299 streams.<wbr/></p> 26300 <p>All depth output stream formats may have a nonzero stall 26301 duration.<wbr/></p> 26302 </td> 26303 </tr> 26304 26305 26306 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26307 <!-- end of entry --> 26308 26309 26310 <tr class="entry" id="static_android.depth.depthIsExclusive"> 26311 <td class="entry_name 26312 " rowspan="3"> 26313 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive 26314 </td> 26315 <td class="entry_type"> 26316 <span class="entry_type_name entry_type_name_enum">byte</span> 26317 26318 <span class="entry_type_visibility"> [public as boolean]</span> 26319 26320 26321 <span class="entry_type_hwlevel">[limited] </span> 26322 26323 26324 26325 <ul class="entry_type_enum"> 26326 <li> 26327 <span class="entry_type_enum_name">FALSE</span> 26328 </li> 26329 <li> 26330 <span class="entry_type_enum_name">TRUE</span> 26331 </li> 26332 </ul> 26333 26334 </td> <!-- entry_type --> 26335 26336 <td class="entry_description"> 26337 <p>Indicates whether a capture request may target both a 26338 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as 26339 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p> 26340 </td> 26341 26342 <td class="entry_units"> 26343 </td> 26344 26345 <td class="entry_range"> 26346 </td> 26347 26348 <td class="entry_tags"> 26349 </td> 26350 26351 </tr> 26352 <tr class="entries_header"> 26353 <th class="th_details" colspan="5">Details</th> 26354 </tr> 26355 <tr class="entry_cont"> 26356 <td class="entry_details" colspan="5"> 26357 <p>If TRUE,<wbr/> including both depth and color outputs in a single 26358 capture request is not supported.<wbr/> An application must interleave color 26359 and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types 26360 of output.<wbr/></p> 26361 <p>Typically,<wbr/> this restriction exists on camera devices that 26362 need to emit a specific pattern or wavelength of light to 26363 measure depth values,<wbr/> which causes the color image to be 26364 corrupted during depth measurement.<wbr/></p> 26365 </td> 26366 </tr> 26367 26368 26369 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26370 <!-- end of entry --> 26371 26372 26373 26374 <!-- end of kind --> 26375 </tbody> 26376 26377 <!-- end of section --> 26378 <!-- </namespace> --> 26379 </table> 26380 26381 <div class="tags" id="tag_index"> 26382 <h2>Tags</h2> 26383 <ul> 26384 <li id="tag_BC">BC - 26385 Needed for backwards compatibility with old Java API 26386 26387 <ul class="tags_entries"> 26388 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 26389 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 26390 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 26391 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 26392 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 26393 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 26394 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 26395 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 26396 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 26397 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 26398 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 26399 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 26400 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 26401 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 26402 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 26403 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 26404 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 26405 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 26406 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li> 26407 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 26408 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li> 26409 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 26410 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 26411 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 26412 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 26413 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 26414 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 26415 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 26416 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 26417 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 26418 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li> 26419 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li> 26420 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 26421 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 26422 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 26423 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 26424 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 26425 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 26426 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 26427 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 26428 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 26429 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 26430 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 26431 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 26432 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 26433 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 26434 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 26435 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 26436 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 26437 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 26438 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 26439 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 26440 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 26441 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 26442 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 26443 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 26444 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 26445 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 26446 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 26447 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 26448 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li> 26449 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 26450 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 26451 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 26452 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 26453 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 26454 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 26455 </ul> 26456 </li> <!-- tag_BC --> 26457 <li id="tag_V1">V1 - 26458 New features for first camera 2 release (API1) 26459 26460 <ul class="tags_entries"> 26461 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li> 26462 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li> 26463 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 26464 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 26465 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 26466 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 26467 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 26468 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 26469 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 26470 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 26471 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 26472 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 26473 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 26474 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 26475 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 26476 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 26477 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 26478 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 26479 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 26480 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 26481 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 26482 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 26483 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> 26484 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> 26485 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 26486 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 26487 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 26488 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 26489 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 26490 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 26491 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 26492 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li> 26493 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 26494 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li> 26495 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 26496 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 26497 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 26498 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 26499 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 26500 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 26501 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 26502 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 26503 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 26504 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 26505 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 26506 </ul> 26507 </li> <!-- tag_V1 --> 26508 <li id="tag_RAW">RAW - 26509 Needed for useful RAW image processing and DNG file support 26510 26511 <ul class="tags_entries"> 26512 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 26513 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 26514 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 26515 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 26516 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 26517 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 26518 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li> 26519 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 26520 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li> 26521 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> 26522 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> 26523 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> 26524 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> 26525 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> 26526 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> 26527 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 26528 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> 26529 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> 26530 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li> 26531 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> 26532 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> 26533 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> 26534 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 26535 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 26536 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 26537 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li> 26538 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 26539 </ul> 26540 </li> <!-- tag_RAW --> 26541 <li id="tag_HAL2">HAL2 - 26542 Entry is only used by camera device HAL 2.x 26543 26544 <ul class="tags_entries"> 26545 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 26546 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 26547 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 26548 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 26549 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 26550 </ul> 26551 </li> <!-- tag_HAL2 --> 26552 <li id="tag_FULL">FULL - 26553 Entry is required for full hardware level devices, and optional for other hardware levels 26554 26555 <ul class="tags_entries"> 26556 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 26557 </ul> 26558 </li> <!-- tag_FULL --> 26559 <li id="tag_DEPTH">DEPTH - 26560 Entry is required for the depth capability. 26561 26562 <ul class="tags_entries"> 26563 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li> 26564 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li> 26565 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li> 26566 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li> 26567 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li> 26568 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li> 26569 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li> 26570 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li> 26571 </ul> 26572 </li> <!-- tag_DEPTH --> 26573 <li id="tag_REPROC">REPROC - 26574 Entry is required for the YUV or PRIVATE reprocessing capability. 26575 26576 <ul class="tags_entries"> 26577 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 26578 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 26579 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 26580 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 26581 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li> 26582 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li> 26583 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li> 26584 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li> 26585 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 26586 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 26587 </ul> 26588 </li> <!-- tag_REPROC --> 26589 <li id="tag_FUTURE">FUTURE - 26590 Entry is under-specified and is not required for now. This is for book-keeping purpose, 26591 do not implement or use it, it may be revised for future. 26592 26593 <ul class="tags_entries"> 26594 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 26595 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> 26596 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 26597 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 26598 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 26599 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 26600 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 26601 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li> 26602 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li> 26603 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li> 26604 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 26605 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 26606 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 26607 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 26608 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 26609 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li> 26610 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li> 26611 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li> 26612 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li> 26613 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 26614 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 26615 </ul> 26616 </li> <!-- tag_FUTURE --> 26617 </ul> 26618 </div> 26619 26620 [ <a href="#">top</a> ] 26621 26622 </body> 26623 </html> 26624