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 </ul> 229 </li> 230 <li> 231 <span class="toc_kind_header">dynamic</span> 232 <ul class="toc_section"> 233 <li 234 class="toc_deprecated" 235 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li> 236 <li 237 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 238 <li 239 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 240 <li 241 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li> 242 <li 243 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li> 244 <li 245 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li> 246 <li 247 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 248 <li 249 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 250 <li 251 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li> 252 <li 253 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li> 254 <li 255 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li> 256 <li 257 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li> 258 <li 259 ><a href="#dynamic_android.control.afState">android.control.afState</a></li> 260 <li 261 class="toc_deprecated" 262 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li> 263 <li 264 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li> 265 <li 266 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li> 267 <li 268 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li> 269 <li 270 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li> 271 <li 272 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li> 273 <li 274 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li> 275 <li 276 ><a href="#dynamic_android.control.mode">android.control.mode</a></li> 277 <li 278 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li> 279 <li 280 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 281 </ul> 282 </li> 283 </ul> <!-- toc_section --> 284 </li> 285 <li> 286 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span> 287 <ul class="toc_section"> 288 <li> 289 <span class="toc_kind_header">controls</span> 290 <ul class="toc_section"> 291 <li 292 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li> 293 </ul> 294 </li> 295 </ul> <!-- toc_section --> 296 </li> 297 <li> 298 <span class="toc_section_header"><a href="#section_edge">edge</a></span> 299 <ul class="toc_section"> 300 <li> 301 <span class="toc_kind_header">controls</span> 302 <ul class="toc_section"> 303 <li 304 ><a href="#controls_android.edge.mode">android.edge.mode</a></li> 305 <li 306 ><a href="#controls_android.edge.strength">android.edge.strength</a></li> 307 </ul> 308 </li> 309 <li> 310 <span class="toc_kind_header">static</span> 311 <ul class="toc_section"> 312 <li 313 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li> 314 </ul> 315 </li> 316 <li> 317 <span class="toc_kind_header">dynamic</span> 318 <ul class="toc_section"> 319 <li 320 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li> 321 </ul> 322 </li> 323 </ul> <!-- toc_section --> 324 </li> 325 <li> 326 <span class="toc_section_header"><a href="#section_flash">flash</a></span> 327 <ul class="toc_section"> 328 <li> 329 <span class="toc_kind_header">controls</span> 330 <ul class="toc_section"> 331 <li 332 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li> 333 <li 334 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li> 335 <li 336 ><a href="#controls_android.flash.mode">android.flash.mode</a></li> 337 </ul> 338 </li> 339 <li> 340 <span class="toc_kind_header">static</span> 341 <ul class="toc_section"> 342 343 <li 344 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li> 345 <li 346 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li> 347 348 <li 349 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li> 350 <li 351 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li> 352 </ul> 353 </li> 354 <li> 355 <span class="toc_kind_header">dynamic</span> 356 <ul class="toc_section"> 357 <li 358 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li> 359 <li 360 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li> 361 <li 362 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li> 363 <li 364 ><a href="#dynamic_android.flash.state">android.flash.state</a></li> 365 </ul> 366 </li> 367 </ul> <!-- toc_section --> 368 </li> 369 <li> 370 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span> 371 <ul class="toc_section"> 372 <li> 373 <span class="toc_kind_header">controls</span> 374 <ul class="toc_section"> 375 <li 376 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li> 377 </ul> 378 </li> 379 <li> 380 <span class="toc_kind_header">static</span> 381 <ul class="toc_section"> 382 <li 383 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li> 384 </ul> 385 </li> 386 <li> 387 <span class="toc_kind_header">dynamic</span> 388 <ul class="toc_section"> 389 <li 390 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li> 391 </ul> 392 </li> 393 </ul> <!-- toc_section --> 394 </li> 395 <li> 396 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span> 397 <ul class="toc_section"> 398 <li> 399 <span class="toc_kind_header">controls</span> 400 <ul class="toc_section"> 401 <li 402 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 403 <li 404 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 405 <li 406 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 407 <li 408 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 409 <li 410 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li> 411 <li 412 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li> 413 <li 414 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 415 <li 416 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 417 </ul> 418 </li> 419 <li> 420 <span class="toc_kind_header">static</span> 421 <ul class="toc_section"> 422 <li 423 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li> 424 <li 425 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li> 426 </ul> 427 </li> 428 <li> 429 <span class="toc_kind_header">dynamic</span> 430 <ul class="toc_section"> 431 <li 432 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 433 <li 434 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 435 <li 436 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 437 <li 438 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 439 <li 440 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li> 441 <li 442 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li> 443 <li 444 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li> 445 <li 446 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 447 <li 448 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 449 </ul> 450 </li> 451 </ul> <!-- toc_section --> 452 </li> 453 <li> 454 <span class="toc_section_header"><a href="#section_lens">lens</a></span> 455 <ul class="toc_section"> 456 <li> 457 <span class="toc_kind_header">controls</span> 458 <ul class="toc_section"> 459 <li 460 ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li> 461 <li 462 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li> 463 <li 464 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li> 465 <li 466 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li> 467 <li 468 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 469 </ul> 470 </li> 471 <li> 472 <span class="toc_kind_header">static</span> 473 <ul class="toc_section"> 474 475 <li 476 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li> 477 <li 478 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li> 479 <li 480 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li> 481 <li 482 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li> 483 <li 484 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li> 485 <li 486 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li> 487 <li 488 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li> 489 <li 490 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li> 491 492 <li 493 ><a href="#static_android.lens.facing">android.lens.facing</a></li> 494 <li 495 ><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a></li> 496 <li 497 ><a href="#static_android.lens.position">android.lens.position</a></li> 498 </ul> 499 </li> 500 <li> 501 <span class="toc_kind_header">dynamic</span> 502 <ul class="toc_section"> 503 <li 504 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li> 505 <li 506 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li> 507 <li 508 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li> 509 <li 510 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li> 511 <li 512 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li> 513 <li 514 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 515 <li 516 ><a href="#dynamic_android.lens.state">android.lens.state</a></li> 517 </ul> 518 </li> 519 </ul> <!-- toc_section --> 520 </li> 521 <li> 522 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span> 523 <ul class="toc_section"> 524 <li> 525 <span class="toc_kind_header">controls</span> 526 <ul class="toc_section"> 527 <li 528 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 529 <li 530 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li> 531 </ul> 532 </li> 533 <li> 534 <span class="toc_kind_header">static</span> 535 <ul class="toc_section"> 536 <li 537 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li> 538 </ul> 539 </li> 540 <li> 541 <span class="toc_kind_header">dynamic</span> 542 <ul class="toc_section"> 543 <li 544 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 545 </ul> 546 </li> 547 </ul> <!-- toc_section --> 548 </li> 549 <li> 550 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span> 551 <ul class="toc_section"> 552 <li> 553 <span class="toc_kind_header">static</span> 554 <ul class="toc_section"> 555 <li 556 class="toc_deprecated" 557 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li> 558 <li 559 class="toc_deprecated" 560 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li> 561 <li 562 class="toc_deprecated" 563 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li> 564 <li 565 class="toc_deprecated" 566 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li> 567 </ul> 568 </li> 569 <li> 570 <span class="toc_kind_header">dynamic</span> 571 <ul class="toc_section"> 572 <li 573 class="toc_deprecated" 574 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li> 575 </ul> 576 </li> 577 </ul> <!-- toc_section --> 578 </li> 579 <li> 580 <span class="toc_section_header"><a href="#section_request">request</a></span> 581 <ul class="toc_section"> 582 <li> 583 <span class="toc_kind_header">controls</span> 584 <ul class="toc_section"> 585 <li 586 class="toc_deprecated" 587 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li> 588 <li 589 ><a href="#controls_android.request.id">android.request.id</a></li> 590 <li 591 class="toc_deprecated" 592 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li> 593 <li 594 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li> 595 <li 596 class="toc_deprecated" 597 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li> 598 <li 599 class="toc_deprecated" 600 ><a href="#controls_android.request.type">android.request.type</a></li> 601 </ul> 602 </li> 603 <li> 604 <span class="toc_kind_header">static</span> 605 <ul class="toc_section"> 606 <li 607 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li> 608 <li 609 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li> 610 <li 611 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li> 612 <li 613 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li> 614 <li 615 class="toc_deprecated" 616 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li> 617 <li 618 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li> 619 <li 620 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li> 621 <li 622 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li> 623 <li 624 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li> 625 <li 626 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li> 627 <li 628 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li> 629 <li 630 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li> 631 </ul> 632 </li> 633 <li> 634 <span class="toc_kind_header">dynamic</span> 635 <ul class="toc_section"> 636 <li 637 class="toc_deprecated" 638 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li> 639 <li 640 ><a href="#dynamic_android.request.id">android.request.id</a></li> 641 <li 642 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li> 643 <li 644 class="toc_deprecated" 645 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li> 646 <li 647 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li> 648 </ul> 649 </li> 650 </ul> <!-- toc_section --> 651 </li> 652 <li> 653 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span> 654 <ul class="toc_section"> 655 <li> 656 <span class="toc_kind_header">controls</span> 657 <ul class="toc_section"> 658 <li 659 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 660 </ul> 661 </li> 662 <li> 663 <span class="toc_kind_header">static</span> 664 <ul class="toc_section"> 665 <li 666 class="toc_deprecated" 667 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li> 668 <li 669 class="toc_deprecated" 670 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li> 671 <li 672 class="toc_deprecated" 673 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li> 674 <li 675 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li> 676 <li 677 class="toc_deprecated" 678 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li> 679 <li 680 class="toc_deprecated" 681 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li> 682 <li 683 class="toc_deprecated" 684 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li> 685 <li 686 class="toc_deprecated" 687 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li> 688 <li 689 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li> 690 <li 691 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li> 692 <li 693 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li> 694 <li 695 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li> 696 <li 697 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li> 698 <li 699 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li> 700 </ul> 701 </li> 702 <li> 703 <span class="toc_kind_header">dynamic</span> 704 <ul class="toc_section"> 705 <li 706 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 707 </ul> 708 </li> 709 </ul> <!-- toc_section --> 710 </li> 711 <li> 712 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span> 713 <ul class="toc_section"> 714 <li> 715 <span class="toc_kind_header">controls</span> 716 <ul class="toc_section"> 717 <li 718 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 719 <li 720 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 721 <li 722 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 723 <li 724 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 725 <li 726 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 727 </ul> 728 </li> 729 <li> 730 <span class="toc_kind_header">static</span> 731 <ul class="toc_section"> 732 733 <li 734 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li> 735 <li 736 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li> 737 <li 738 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li> 739 <li 740 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li> 741 <li 742 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li> 743 <li 744 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li> 745 <li 746 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li> 747 <li 748 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li> 749 <li 750 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li> 751 752 <li 753 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li> 754 <li 755 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li> 756 <li 757 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li> 758 <li 759 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li> 760 <li 761 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li> 762 <li 763 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li> 764 <li 765 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li> 766 <li 767 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li> 768 <li 769 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> 770 <li 771 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li> 772 <li 773 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> 774 <li 775 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li> 776 <li 777 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li> 778 <li 779 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li> 780 </ul> 781 </li> 782 <li> 783 <span class="toc_kind_header">dynamic</span> 784 <ul class="toc_section"> 785 <li 786 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 787 <li 788 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 789 <li 790 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 791 <li 792 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> 793 <li 794 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> 795 <li 796 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li> 797 <li 798 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li> 799 <li 800 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li> 801 <li 802 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li> 803 <li 804 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li> 805 <li 806 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 807 <li 808 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 809 <li 810 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li> 811 </ul> 812 </li> 813 </ul> <!-- toc_section --> 814 </li> 815 <li> 816 <span class="toc_section_header"><a href="#section_shading">shading</a></span> 817 <ul class="toc_section"> 818 <li> 819 <span class="toc_kind_header">controls</span> 820 <ul class="toc_section"> 821 <li 822 ><a href="#controls_android.shading.mode">android.shading.mode</a></li> 823 <li 824 ><a href="#controls_android.shading.strength">android.shading.strength</a></li> 825 </ul> 826 </li> 827 <li> 828 <span class="toc_kind_header">dynamic</span> 829 <ul class="toc_section"> 830 <li 831 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> 832 </ul> 833 </li> 834 </ul> <!-- toc_section --> 835 </li> 836 <li> 837 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span> 838 <ul class="toc_section"> 839 <li> 840 <span class="toc_kind_header">controls</span> 841 <ul class="toc_section"> 842 <li 843 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 844 <li 845 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 846 <li 847 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 848 <li 849 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 850 <li 851 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 852 </ul> 853 </li> 854 <li> 855 <span class="toc_kind_header">static</span> 856 <ul class="toc_section"> 857 858 <li 859 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> 860 <li 861 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> 862 <li 863 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> 864 <li 865 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> 866 <li 867 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> 868 <li 869 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> 870 <li 871 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li> 872 873 </ul> 874 </li> 875 <li> 876 <span class="toc_kind_header">dynamic</span> 877 <ul class="toc_section"> 878 <li 879 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 880 <li 881 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> 882 <li 883 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> 884 <li 885 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> 886 <li 887 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> 888 <li 889 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li> 890 <li 891 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> 892 <li 893 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 894 <li 895 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> 896 <li 897 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 898 <li 899 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li> 900 <li 901 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> 902 <li 903 class="toc_deprecated" 904 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> 905 <li 906 class="toc_deprecated" 907 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> 908 <li 909 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> 910 <li 911 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 912 <li 913 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li> 914 <li 915 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 916 </ul> 917 </li> 918 </ul> <!-- toc_section --> 919 </li> 920 <li> 921 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> 922 <ul class="toc_section"> 923 <li> 924 <span class="toc_kind_header">controls</span> 925 <ul class="toc_section"> 926 <li 927 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 928 <li 929 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 930 <li 931 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 932 <li 933 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li> 934 <li 935 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> 936 </ul> 937 </li> 938 <li> 939 <span class="toc_kind_header">static</span> 940 <ul class="toc_section"> 941 <li 942 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> 943 <li 944 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li> 945 </ul> 946 </li> 947 <li> 948 <span class="toc_kind_header">dynamic</span> 949 <ul class="toc_section"> 950 <li 951 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 952 <li 953 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 954 <li 955 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 956 <li 957 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li> 958 <li 959 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> 960 </ul> 961 </li> 962 </ul> <!-- toc_section --> 963 </li> 964 <li> 965 <span class="toc_section_header"><a href="#section_led">led</a></span> 966 <ul class="toc_section"> 967 <li> 968 <span class="toc_kind_header">controls</span> 969 <ul class="toc_section"> 970 <li 971 ><a href="#controls_android.led.transmit">android.led.transmit</a></li> 972 </ul> 973 </li> 974 <li> 975 <span class="toc_kind_header">dynamic</span> 976 <ul class="toc_section"> 977 <li 978 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> 979 </ul> 980 </li> 981 <li> 982 <span class="toc_kind_header">static</span> 983 <ul class="toc_section"> 984 <li 985 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> 986 </ul> 987 </li> 988 </ul> <!-- toc_section --> 989 </li> 990 <li> 991 <span class="toc_section_header"><a href="#section_info">info</a></span> 992 <ul class="toc_section"> 993 <li> 994 <span class="toc_kind_header">static</span> 995 <ul class="toc_section"> 996 <li 997 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> 998 </ul> 999 </li> 1000 </ul> <!-- toc_section --> 1001 </li> 1002 <li> 1003 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> 1004 <ul class="toc_section"> 1005 <li> 1006 <span class="toc_kind_header">controls</span> 1007 <ul class="toc_section"> 1008 <li 1009 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> 1010 </ul> 1011 </li> 1012 <li> 1013 <span class="toc_kind_header">dynamic</span> 1014 <ul class="toc_section"> 1015 <li 1016 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> 1017 </ul> 1018 </li> 1019 </ul> <!-- toc_section --> 1020 </li> 1021 <li> 1022 <span class="toc_section_header"><a href="#section_sync">sync</a></span> 1023 <ul class="toc_section"> 1024 <li> 1025 <span class="toc_kind_header">dynamic</span> 1026 <ul class="toc_section"> 1027 <li 1028 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> 1029 </ul> 1030 </li> 1031 <li> 1032 <span class="toc_kind_header">static</span> 1033 <ul class="toc_section"> 1034 <li 1035 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> 1036 </ul> 1037 </li> 1038 </ul> <!-- toc_section --> 1039 </li> 1040 </ul> 1041 1042 1043 <h1>Properties</h1> 1044 <table class="properties"> 1045 1046 <thead class="thead_dummy"> 1047 <tr> 1048 <th class="th_name">Property Name</th> 1049 <th class="th_type">Type</th> 1050 <th class="th_description">Description</th> 1051 <th class="th_units">Units</th> 1052 <th class="th_range">Range</th> 1053 <th class="th_tags">Tags</th> 1054 </tr> 1055 </thead> <!-- so that the first occurrence of thead is not 1056 above the first occurrence of tr --> 1057 <!-- <namespace name="android"> --> 1058 <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr> 1059 1060 1061 <tr><td colspan="6" class="kind">controls</td></tr> 1062 1063 <thead class="entries_header"> 1064 <tr> 1065 <th class="th_name">Property Name</th> 1066 <th class="th_type">Type</th> 1067 <th class="th_description">Description</th> 1068 <th class="th_units">Units</th> 1069 <th class="th_range">Range</th> 1070 <th class="th_tags">Tags</th> 1071 </tr> 1072 </thead> 1073 1074 <tbody> 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 <tr class="entry" id="controls_android.colorCorrection.mode"> 1086 <td class="entry_name 1087 " rowspan="3"> 1088 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1089 </td> 1090 <td class="entry_type"> 1091 <span class="entry_type_name entry_type_name_enum">byte</span> 1092 1093 <span class="entry_type_visibility"> [public]</span> 1094 1095 1096 <span class="entry_type_hwlevel">[full] </span> 1097 1098 1099 1100 <ul class="entry_type_enum"> 1101 <li> 1102 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1103 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1104 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1105 <p>All advanced white balance adjustments (not specified 1106 by our white balance pipeline) must be disabled.<wbr/></p> 1107 <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 1108 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1109 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1110 </li> 1111 <li> 1112 <span class="entry_type_enum_name">FAST</span> 1113 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1114 capture rate relative to sensor raw output.<wbr/></p> 1115 <p>Advanced white balance adjustments above and beyond 1116 the specified white balance pipeline may be applied.<wbr/></p> 1117 <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 1118 the camera device uses the last frame's AWB values 1119 (or defaults if AWB has never been run).<wbr/></p></span> 1120 </li> 1121 <li> 1122 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1123 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1124 quality but reduced capture rate (relative to sensor raw 1125 output).<wbr/></p> 1126 <p>Advanced white balance adjustments above and beyond 1127 the specified white balance pipeline may be applied.<wbr/></p> 1128 <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 1129 the camera device uses the last frame's AWB values 1130 (or defaults if AWB has never been run).<wbr/></p></span> 1131 </li> 1132 </ul> 1133 1134 </td> <!-- entry_type --> 1135 1136 <td class="entry_description"> 1137 <p>The mode control selects how the image data is converted from the 1138 sensor's native color into linear sRGB color.<wbr/></p> 1139 </td> 1140 1141 <td class="entry_units"> 1142 </td> 1143 1144 <td class="entry_range"> 1145 </td> 1146 1147 <td class="entry_tags"> 1148 </td> 1149 1150 </tr> 1151 <tr class="entries_header"> 1152 <th class="th_details" colspan="5">Details</th> 1153 </tr> 1154 <tr class="entry_cont"> 1155 <td class="entry_details" colspan="5"> 1156 <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 1157 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1158 application controls how the color mapping is performed.<wbr/></p> 1159 <p>We define the expected processing pipeline below.<wbr/> For consistency 1160 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1161 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1162 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1163 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1164 camera device (in the results) and be roughly correct.<wbr/></p> 1165 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1166 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1167 as what was produced by the camera device in the earlier frame.<wbr/></p> 1168 <p>The expected processing pipeline is as follows:</p> 1169 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1170 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1171 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1172 matrix (applied after demosaic).<wbr/></p> 1173 <p>The 4-channel white-balance gains are defined as:</p> 1174 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1175 </code></pre> 1176 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1177 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1178 These may be identical for a given camera device implementation; if 1179 the camera device does not support a separate gain for even/<wbr/>odd green 1180 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1181 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1182 <p>The matrices for color transforms are defined as a 9-entry vector:</p> 1183 <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 ] 1184 </code></pre> 1185 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1186 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1187 <p>with colors as follows:</p> 1188 <pre><code>r' = I0r + I1g + I2b 1189 g' = I3r + I4g + I5b 1190 b' = I6r + I7g + I8b 1191 </code></pre> 1192 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1193 values are clipped to fit within the range.<wbr/></p> 1194 </td> 1195 </tr> 1196 1197 1198 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1199 <!-- end of entry --> 1200 1201 1202 <tr class="entry" id="controls_android.colorCorrection.transform"> 1203 <td class="entry_name 1204 " rowspan="3"> 1205 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1206 </td> 1207 <td class="entry_type"> 1208 <span class="entry_type_name">rational</span> 1209 <span class="entry_type_container">x</span> 1210 1211 <span class="entry_type_array"> 1212 3 x 3 1213 </span> 1214 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1215 1216 1217 <span class="entry_type_hwlevel">[full] </span> 1218 1219 1220 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1221 1222 1223 </td> <!-- entry_type --> 1224 1225 <td class="entry_description"> 1226 <p>A color transform matrix to use to transform 1227 from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1228 </td> 1229 1230 <td class="entry_units"> 1231 Unitless scale factors 1232 </td> 1233 1234 <td class="entry_range"> 1235 </td> 1236 1237 <td class="entry_tags"> 1238 </td> 1239 1240 </tr> 1241 <tr class="entries_header"> 1242 <th class="th_details" colspan="5">Details</th> 1243 </tr> 1244 <tr class="entry_cont"> 1245 <td class="entry_details" colspan="5"> 1246 <p>This matrix is either set by the camera device when the request 1247 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1248 directly by the application in the request when the 1249 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1250 <p>In the latter case,<wbr/> the camera device may round the matrix to account 1251 for precision issues; the final rounded matrix should be reported back 1252 in this matrix result metadata.<wbr/> The transform should keep the magnitude 1253 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1254 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1255 </td> 1256 </tr> 1257 1258 1259 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1260 <!-- end of entry --> 1261 1262 1263 <tr class="entry" id="controls_android.colorCorrection.gains"> 1264 <td class="entry_name 1265 " rowspan="5"> 1266 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1267 </td> 1268 <td class="entry_type"> 1269 <span class="entry_type_name">float</span> 1270 <span class="entry_type_container">x</span> 1271 1272 <span class="entry_type_array"> 1273 4 1274 </span> 1275 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1276 1277 1278 <span class="entry_type_hwlevel">[full] </span> 1279 1280 1281 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1282 1283 1284 </td> <!-- entry_type --> 1285 1286 <td class="entry_description"> 1287 <p>Gains applying to Bayer raw color channels for 1288 white-balance.<wbr/></p> 1289 </td> 1290 1291 <td class="entry_units"> 1292 Unitless gain factors 1293 </td> 1294 1295 <td class="entry_range"> 1296 </td> 1297 1298 <td class="entry_tags"> 1299 </td> 1300 1301 </tr> 1302 <tr class="entries_header"> 1303 <th class="th_details" colspan="5">Details</th> 1304 </tr> 1305 <tr class="entry_cont"> 1306 <td class="entry_details" colspan="5"> 1307 <p>These per-channel gains are either set by the camera device 1308 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1309 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1310 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1311 TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1312 <p>The gains in the result metadata are the gains actually 1313 applied by the camera device to the current frame.<wbr/></p> 1314 </td> 1315 </tr> 1316 1317 <tr class="entries_header"> 1318 <th class="th_details" colspan="5">HAL Implementation Details</th> 1319 </tr> 1320 <tr class="entry_cont"> 1321 <td class="entry_details" colspan="5"> 1322 <p>The 4-channel white-balance gains are defined in 1323 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1324 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1325 is the gain for green pixels on the odd rows.<wbr/></p> 1326 <p>If a HAL does not support a separate gain for even/<wbr/>odd green 1327 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1328 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1329 </td> 1330 </tr> 1331 1332 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1333 <!-- end of entry --> 1334 1335 1336 <tr class="entry" id="controls_android.colorCorrection.aberrationMode"> 1337 <td class="entry_name 1338 " rowspan="3"> 1339 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1340 </td> 1341 <td class="entry_type"> 1342 <span class="entry_type_name entry_type_name_enum">byte</span> 1343 1344 <span class="entry_type_visibility"> [public]</span> 1345 1346 1347 <span class="entry_type_hwlevel">[legacy] </span> 1348 1349 1350 1351 <ul class="entry_type_enum"> 1352 <li> 1353 <span class="entry_type_enum_name">OFF</span> 1354 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1355 </li> 1356 <li> 1357 <span class="entry_type_enum_name">FAST</span> 1358 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1359 relative to sensor raw output.<wbr/></p></span> 1360 </li> 1361 <li> 1362 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1363 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but reduced 1364 capture rate (relative to sensor raw output).<wbr/></p></span> 1365 </li> 1366 </ul> 1367 1368 </td> <!-- entry_type --> 1369 1370 <td class="entry_description"> 1371 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1372 </td> 1373 1374 <td class="entry_units"> 1375 </td> 1376 1377 <td class="entry_range"> 1378 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1379 </td> 1380 1381 <td class="entry_tags"> 1382 </td> 1383 1384 </tr> 1385 <tr class="entries_header"> 1386 <th class="th_details" colspan="5">Details</th> 1387 </tr> 1388 <tr class="entry_cont"> 1389 <td class="entry_details" colspan="5"> 1390 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1391 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1392 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1393 minimize the chromatic artifacts that may occur along the object boundaries in an 1394 image.<wbr/></p> 1395 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1396 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1397 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1398 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1399 applying aberration correction.<wbr/></p> 1400 <p>LEGACY devices will always be in FAST mode.<wbr/></p> 1401 </td> 1402 </tr> 1403 1404 1405 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1406 <!-- end of entry --> 1407 1408 1409 1410 <!-- end of kind --> 1411 </tbody> 1412 <tr><td colspan="6" class="kind">dynamic</td></tr> 1413 1414 <thead class="entries_header"> 1415 <tr> 1416 <th class="th_name">Property Name</th> 1417 <th class="th_type">Type</th> 1418 <th class="th_description">Description</th> 1419 <th class="th_units">Units</th> 1420 <th class="th_range">Range</th> 1421 <th class="th_tags">Tags</th> 1422 </tr> 1423 </thead> 1424 1425 <tbody> 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 <tr class="entry" id="dynamic_android.colorCorrection.mode"> 1437 <td class="entry_name 1438 " rowspan="3"> 1439 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1440 </td> 1441 <td class="entry_type"> 1442 <span class="entry_type_name entry_type_name_enum">byte</span> 1443 1444 <span class="entry_type_visibility"> [public]</span> 1445 1446 1447 <span class="entry_type_hwlevel">[full] </span> 1448 1449 1450 1451 <ul class="entry_type_enum"> 1452 <li> 1453 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1454 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1455 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1456 <p>All advanced white balance adjustments (not specified 1457 by our white balance pipeline) must be disabled.<wbr/></p> 1458 <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 1459 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1460 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1461 </li> 1462 <li> 1463 <span class="entry_type_enum_name">FAST</span> 1464 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1465 capture rate relative to sensor raw output.<wbr/></p> 1466 <p>Advanced white balance adjustments above and beyond 1467 the specified white balance pipeline may be applied.<wbr/></p> 1468 <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 1469 the camera device uses the last frame's AWB values 1470 (or defaults if AWB has never been run).<wbr/></p></span> 1471 </li> 1472 <li> 1473 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1474 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1475 quality but reduced capture rate (relative to sensor raw 1476 output).<wbr/></p> 1477 <p>Advanced white balance adjustments above and beyond 1478 the specified white balance pipeline may be applied.<wbr/></p> 1479 <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 1480 the camera device uses the last frame's AWB values 1481 (or defaults if AWB has never been run).<wbr/></p></span> 1482 </li> 1483 </ul> 1484 1485 </td> <!-- entry_type --> 1486 1487 <td class="entry_description"> 1488 <p>The mode control selects how the image data is converted from the 1489 sensor's native color into linear sRGB color.<wbr/></p> 1490 </td> 1491 1492 <td class="entry_units"> 1493 </td> 1494 1495 <td class="entry_range"> 1496 </td> 1497 1498 <td class="entry_tags"> 1499 </td> 1500 1501 </tr> 1502 <tr class="entries_header"> 1503 <th class="th_details" colspan="5">Details</th> 1504 </tr> 1505 <tr class="entry_cont"> 1506 <td class="entry_details" colspan="5"> 1507 <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 1508 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1509 application controls how the color mapping is performed.<wbr/></p> 1510 <p>We define the expected processing pipeline below.<wbr/> For consistency 1511 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1512 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1513 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1514 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1515 camera device (in the results) and be roughly correct.<wbr/></p> 1516 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1517 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1518 as what was produced by the camera device in the earlier frame.<wbr/></p> 1519 <p>The expected processing pipeline is as follows:</p> 1520 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1521 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1522 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1523 matrix (applied after demosaic).<wbr/></p> 1524 <p>The 4-channel white-balance gains are defined as:</p> 1525 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1526 </code></pre> 1527 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1528 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1529 These may be identical for a given camera device implementation; if 1530 the camera device does not support a separate gain for even/<wbr/>odd green 1531 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1532 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1533 <p>The matrices for color transforms are defined as a 9-entry vector:</p> 1534 <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 ] 1535 </code></pre> 1536 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1537 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1538 <p>with colors as follows:</p> 1539 <pre><code>r' = I0r + I1g + I2b 1540 g' = I3r + I4g + I5b 1541 b' = I6r + I7g + I8b 1542 </code></pre> 1543 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1544 values are clipped to fit within the range.<wbr/></p> 1545 </td> 1546 </tr> 1547 1548 1549 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1550 <!-- end of entry --> 1551 1552 1553 <tr class="entry" id="dynamic_android.colorCorrection.transform"> 1554 <td class="entry_name 1555 " rowspan="3"> 1556 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1557 </td> 1558 <td class="entry_type"> 1559 <span class="entry_type_name">rational</span> 1560 <span class="entry_type_container">x</span> 1561 1562 <span class="entry_type_array"> 1563 3 x 3 1564 </span> 1565 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1566 1567 1568 <span class="entry_type_hwlevel">[full] </span> 1569 1570 1571 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1572 1573 1574 </td> <!-- entry_type --> 1575 1576 <td class="entry_description"> 1577 <p>A color transform matrix to use to transform 1578 from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1579 </td> 1580 1581 <td class="entry_units"> 1582 Unitless scale factors 1583 </td> 1584 1585 <td class="entry_range"> 1586 </td> 1587 1588 <td class="entry_tags"> 1589 </td> 1590 1591 </tr> 1592 <tr class="entries_header"> 1593 <th class="th_details" colspan="5">Details</th> 1594 </tr> 1595 <tr class="entry_cont"> 1596 <td class="entry_details" colspan="5"> 1597 <p>This matrix is either set by the camera device when the request 1598 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1599 directly by the application in the request when the 1600 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1601 <p>In the latter case,<wbr/> the camera device may round the matrix to account 1602 for precision issues; the final rounded matrix should be reported back 1603 in this matrix result metadata.<wbr/> The transform should keep the magnitude 1604 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1605 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1606 </td> 1607 </tr> 1608 1609 1610 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1611 <!-- end of entry --> 1612 1613 1614 <tr class="entry" id="dynamic_android.colorCorrection.gains"> 1615 <td class="entry_name 1616 " rowspan="5"> 1617 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1618 </td> 1619 <td class="entry_type"> 1620 <span class="entry_type_name">float</span> 1621 <span class="entry_type_container">x</span> 1622 1623 <span class="entry_type_array"> 1624 4 1625 </span> 1626 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1627 1628 1629 <span class="entry_type_hwlevel">[full] </span> 1630 1631 1632 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1633 1634 1635 </td> <!-- entry_type --> 1636 1637 <td class="entry_description"> 1638 <p>Gains applying to Bayer raw color channels for 1639 white-balance.<wbr/></p> 1640 </td> 1641 1642 <td class="entry_units"> 1643 Unitless gain factors 1644 </td> 1645 1646 <td class="entry_range"> 1647 </td> 1648 1649 <td class="entry_tags"> 1650 </td> 1651 1652 </tr> 1653 <tr class="entries_header"> 1654 <th class="th_details" colspan="5">Details</th> 1655 </tr> 1656 <tr class="entry_cont"> 1657 <td class="entry_details" colspan="5"> 1658 <p>These per-channel gains are either set by the camera device 1659 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1660 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1661 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1662 TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1663 <p>The gains in the result metadata are the gains actually 1664 applied by the camera device to the current frame.<wbr/></p> 1665 </td> 1666 </tr> 1667 1668 <tr class="entries_header"> 1669 <th class="th_details" colspan="5">HAL Implementation Details</th> 1670 </tr> 1671 <tr class="entry_cont"> 1672 <td class="entry_details" colspan="5"> 1673 <p>The 4-channel white-balance gains are defined in 1674 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1675 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1676 is the gain for green pixels on the odd rows.<wbr/></p> 1677 <p>If a HAL does not support a separate gain for even/<wbr/>odd green 1678 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1679 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1680 </td> 1681 </tr> 1682 1683 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1684 <!-- end of entry --> 1685 1686 1687 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode"> 1688 <td class="entry_name 1689 " rowspan="3"> 1690 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1691 </td> 1692 <td class="entry_type"> 1693 <span class="entry_type_name entry_type_name_enum">byte</span> 1694 1695 <span class="entry_type_visibility"> [public]</span> 1696 1697 1698 <span class="entry_type_hwlevel">[legacy] </span> 1699 1700 1701 1702 <ul class="entry_type_enum"> 1703 <li> 1704 <span class="entry_type_enum_name">OFF</span> 1705 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1706 </li> 1707 <li> 1708 <span class="entry_type_enum_name">FAST</span> 1709 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1710 relative to sensor raw output.<wbr/></p></span> 1711 </li> 1712 <li> 1713 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1714 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but reduced 1715 capture rate (relative to sensor raw output).<wbr/></p></span> 1716 </li> 1717 </ul> 1718 1719 </td> <!-- entry_type --> 1720 1721 <td class="entry_description"> 1722 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1723 </td> 1724 1725 <td class="entry_units"> 1726 </td> 1727 1728 <td class="entry_range"> 1729 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1730 </td> 1731 1732 <td class="entry_tags"> 1733 </td> 1734 1735 </tr> 1736 <tr class="entries_header"> 1737 <th class="th_details" colspan="5">Details</th> 1738 </tr> 1739 <tr class="entry_cont"> 1740 <td class="entry_details" colspan="5"> 1741 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1742 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1743 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1744 minimize the chromatic artifacts that may occur along the object boundaries in an 1745 image.<wbr/></p> 1746 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1747 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1748 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1749 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1750 applying aberration correction.<wbr/></p> 1751 <p>LEGACY devices will always be in FAST mode.<wbr/></p> 1752 </td> 1753 </tr> 1754 1755 1756 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1757 <!-- end of entry --> 1758 1759 1760 1761 <!-- end of kind --> 1762 </tbody> 1763 <tr><td colspan="6" class="kind">static</td></tr> 1764 1765 <thead class="entries_header"> 1766 <tr> 1767 <th class="th_name">Property Name</th> 1768 <th class="th_type">Type</th> 1769 <th class="th_description">Description</th> 1770 <th class="th_units">Units</th> 1771 <th class="th_range">Range</th> 1772 <th class="th_tags">Tags</th> 1773 </tr> 1774 </thead> 1775 1776 <tbody> 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes"> 1788 <td class="entry_name 1789 " rowspan="3"> 1790 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes 1791 </td> 1792 <td class="entry_type"> 1793 <span class="entry_type_name">byte</span> 1794 <span class="entry_type_container">x</span> 1795 1796 <span class="entry_type_array"> 1797 n 1798 </span> 1799 <span class="entry_type_visibility"> [public as enumList]</span> 1800 1801 1802 <span class="entry_type_hwlevel">[legacy] </span> 1803 1804 1805 <div class="entry_type_notes">list of enums</div> 1806 1807 1808 </td> <!-- entry_type --> 1809 1810 <td class="entry_description"> 1811 <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 1812 supported by this camera device.<wbr/></p> 1813 </td> 1814 1815 <td class="entry_units"> 1816 </td> 1817 1818 <td class="entry_range"> 1819 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p> 1820 </td> 1821 1822 <td class="entry_tags"> 1823 <ul class="entry_tags"> 1824 <li><a href="#tag_V1">V1</a></li> 1825 </ul> 1826 </td> 1827 1828 </tr> 1829 <tr class="entries_header"> 1830 <th class="th_details" colspan="5">Details</th> 1831 </tr> 1832 <tr class="entry_cont"> 1833 <td class="entry_details" colspan="5"> 1834 <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 1835 aberration correction modes are available for a device,<wbr/> this list will solely include 1836 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p> 1837 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list 1838 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p> 1839 <p>LEGACY devices will always only support FAST mode.<wbr/></p> 1840 </td> 1841 </tr> 1842 1843 1844 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1845 <!-- end of entry --> 1846 1847 1848 1849 <!-- end of kind --> 1850 </tbody> 1851 1852 <!-- end of section --> 1853 <tr><td colspan="6" id="section_control" class="section">control</td></tr> 1854 1855 1856 <tr><td colspan="6" class="kind">controls</td></tr> 1857 1858 <thead class="entries_header"> 1859 <tr> 1860 <th class="th_name">Property Name</th> 1861 <th class="th_type">Type</th> 1862 <th class="th_description">Description</th> 1863 <th class="th_units">Units</th> 1864 <th class="th_range">Range</th> 1865 <th class="th_tags">Tags</th> 1866 </tr> 1867 </thead> 1868 1869 <tbody> 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 <tr class="entry" id="controls_android.control.aeAntibandingMode"> 1881 <td class="entry_name 1882 " rowspan="5"> 1883 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 1884 </td> 1885 <td class="entry_type"> 1886 <span class="entry_type_name entry_type_name_enum">byte</span> 1887 1888 <span class="entry_type_visibility"> [public]</span> 1889 1890 1891 <span class="entry_type_hwlevel">[legacy] </span> 1892 1893 1894 1895 <ul class="entry_type_enum"> 1896 <li> 1897 <span class="entry_type_enum_name">OFF</span> 1898 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 1899 avoid banding problems.<wbr/></p></span> 1900 </li> 1901 <li> 1902 <span class="entry_type_enum_name">50HZ</span> 1903 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 1904 avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 1905 </li> 1906 <li> 1907 <span class="entry_type_enum_name">60HZ</span> 1908 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 1909 avoid banding problems with 60Hz illumination 1910 sources.<wbr/></p></span> 1911 </li> 1912 <li> 1913 <span class="entry_type_enum_name">AUTO</span> 1914 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 1915 antibanding routine to the current illumination 1916 condition.<wbr/> This is the default mode if AUTO is 1917 available on given camera device.<wbr/></p></span> 1918 </li> 1919 </ul> 1920 1921 </td> <!-- entry_type --> 1922 1923 <td class="entry_description"> 1924 <p>The desired setting for the camera device's auto-exposure 1925 algorithm's antibanding compensation.<wbr/></p> 1926 </td> 1927 1928 <td class="entry_units"> 1929 </td> 1930 1931 <td class="entry_range"> 1932 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 1933 </td> 1934 1935 <td class="entry_tags"> 1936 <ul class="entry_tags"> 1937 <li><a href="#tag_BC">BC</a></li> 1938 </ul> 1939 </td> 1940 1941 </tr> 1942 <tr class="entries_header"> 1943 <th class="th_details" colspan="5">Details</th> 1944 </tr> 1945 <tr class="entry_cont"> 1946 <td class="entry_details" colspan="5"> 1947 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 1948 lights,<wbr/> flicker at the rate of the power supply frequency 1949 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 1950 typically not noticeable to a person,<wbr/> it can be visible to 1951 a camera device.<wbr/> If a camera sets its exposure time to the 1952 wrong value,<wbr/> the flicker may become visible in the 1953 viewfinder as flicker or in a final captured image,<wbr/> as a 1954 set of variable-brightness bands across the image.<wbr/></p> 1955 <p>Therefore,<wbr/> the auto-exposure routines of camera devices 1956 include antibanding routines that ensure that the chosen 1957 exposure value will not cause such banding.<wbr/> The choice of 1958 exposure time depends on the rate of flicker,<wbr/> which the 1959 camera device can detect automatically,<wbr/> or the expected 1960 rate can be selected by the application using this 1961 control.<wbr/></p> 1962 <p>A given camera device may not support all of the possible 1963 options for the antibanding mode.<wbr/> The 1964 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 1965 the available modes for a given camera device.<wbr/></p> 1966 <p>AUTO mode is the default if it is available on given 1967 camera device.<wbr/> When AUTO mode is not available,<wbr/> the 1968 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 1969 and 60HZ will be available.<wbr/></p> 1970 <p>If manual exposure control is enabled (by setting 1971 <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/> 1972 then this setting has no effect,<wbr/> and the application must 1973 ensure it selects exposure times that do not cause banding 1974 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 1975 the application in this.<wbr/></p> 1976 </td> 1977 </tr> 1978 1979 <tr class="entries_header"> 1980 <th class="th_details" colspan="5">HAL Implementation Details</th> 1981 </tr> 1982 <tr class="entry_cont"> 1983 <td class="entry_details" colspan="5"> 1984 <p>For all capture request templates,<wbr/> this field must be set 1985 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 1986 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 1987 60HZ must be available.<wbr/></p> 1988 <p>If manual exposure control is enabled (by setting 1989 <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/> 1990 then the exposure values provided by the application must not be 1991 adjusted for antibanding.<wbr/></p> 1992 </td> 1993 </tr> 1994 1995 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1996 <!-- end of entry --> 1997 1998 1999 <tr class="entry" id="controls_android.control.aeExposureCompensation"> 2000 <td class="entry_name 2001 " rowspan="3"> 2002 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 2003 </td> 2004 <td class="entry_type"> 2005 <span class="entry_type_name">int32</span> 2006 2007 <span class="entry_type_visibility"> [public]</span> 2008 2009 2010 <span class="entry_type_hwlevel">[legacy] </span> 2011 2012 2013 2014 2015 </td> <!-- entry_type --> 2016 2017 <td class="entry_description"> 2018 <p>Adjustment to auto-exposure (AE) target image 2019 brightness.<wbr/></p> 2020 </td> 2021 2022 <td class="entry_units"> 2023 Compensation steps 2024 </td> 2025 2026 <td class="entry_range"> 2027 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 2028 </td> 2029 2030 <td class="entry_tags"> 2031 <ul class="entry_tags"> 2032 <li><a href="#tag_BC">BC</a></li> 2033 </ul> 2034 </td> 2035 2036 </tr> 2037 <tr class="entries_header"> 2038 <th class="th_details" colspan="5">Details</th> 2039 </tr> 2040 <tr class="entry_cont"> 2041 <td class="entry_details" colspan="5"> 2042 <p>The adjustment is measured as a count of steps,<wbr/> with the 2043 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 2044 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 2045 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 2046 will mean an exposure compensation of +2 EV; -3 will mean an 2047 exposure compensation of -1 EV.<wbr/> One EV represents a doubling 2048 of image brightness.<wbr/> Note that this control will only be 2049 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 2050 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 2051 <p>In the event of exposure compensation value being changed,<wbr/> camera device 2052 may take several frames to reach the newly requested exposure target.<wbr/> 2053 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 2054 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 2055 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 2056 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 2057 </td> 2058 </tr> 2059 2060 2061 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2062 <!-- end of entry --> 2063 2064 2065 <tr class="entry" id="controls_android.control.aeLock"> 2066 <td class="entry_name 2067 " rowspan="3"> 2068 android.<wbr/>control.<wbr/>ae<wbr/>Lock 2069 </td> 2070 <td class="entry_type"> 2071 <span class="entry_type_name entry_type_name_enum">byte</span> 2072 2073 <span class="entry_type_visibility"> [public as boolean]</span> 2074 2075 2076 <span class="entry_type_hwlevel">[legacy] </span> 2077 2078 2079 2080 <ul class="entry_type_enum"> 2081 <li> 2082 <span class="entry_type_enum_name">OFF</span> 2083 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 2084 is free to update its parameters.<wbr/></p></span> 2085 </li> 2086 <li> 2087 <span class="entry_type_enum_name">ON</span> 2088 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 2089 must not update the exposure and sensitivity parameters 2090 while the lock is active.<wbr/></p> 2091 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 2092 will still take effect while auto-exposure is locked.<wbr/></p> 2093 <p>Some rare LEGACY devices may not support 2094 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 2095 </li> 2096 </ul> 2097 2098 </td> <!-- entry_type --> 2099 2100 <td class="entry_description"> 2101 <p>Whether auto-exposure (AE) is currently locked to its latest 2102 calculated values.<wbr/></p> 2103 </td> 2104 2105 <td class="entry_units"> 2106 </td> 2107 2108 <td class="entry_range"> 2109 </td> 2110 2111 <td class="entry_tags"> 2112 <ul class="entry_tags"> 2113 <li><a href="#tag_BC">BC</a></li> 2114 </ul> 2115 </td> 2116 2117 </tr> 2118 <tr class="entries_header"> 2119 <th class="th_details" colspan="5">Details</th> 2120 </tr> 2121 <tr class="entry_cont"> 2122 <td class="entry_details" colspan="5"> 2123 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 2124 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 2125 <p>Note that even when AE is locked,<wbr/> the flash may be fired if 2126 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 2127 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 2128 <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 2129 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 2130 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 2131 when AE is already locked,<wbr/> the camera device will not change the exposure time 2132 (<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>) 2133 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 2134 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 2135 <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/></p> 2136 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 2137 get locked do not necessarily correspond to the settings that were present in the 2138 latest capture result received from the camera device,<wbr/> since additional captures 2139 and AE updates may have occurred even before the result was sent out.<wbr/> If an 2140 application is switching between automatic and manual control and wishes to eliminate 2141 any flicker during the switch,<wbr/> the following procedure is recommended:</p> 2142 <ol> 2143 <li>Starting in auto-AE mode:</li> 2144 <li>Lock AE</li> 2145 <li>Wait for the first result to be output that has the AE locked</li> 2146 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 2147 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 2148 </ol> 2149 <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> 2150 </td> 2151 </tr> 2152 2153 2154 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2155 <!-- end of entry --> 2156 2157 2158 <tr class="entry" id="controls_android.control.aeMode"> 2159 <td class="entry_name 2160 " rowspan="3"> 2161 android.<wbr/>control.<wbr/>ae<wbr/>Mode 2162 </td> 2163 <td class="entry_type"> 2164 <span class="entry_type_name entry_type_name_enum">byte</span> 2165 2166 <span class="entry_type_visibility"> [public]</span> 2167 2168 2169 <span class="entry_type_hwlevel">[legacy] </span> 2170 2171 2172 2173 <ul class="entry_type_enum"> 2174 <li> 2175 <span class="entry_type_enum_name">OFF</span> 2176 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 2177 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2178 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 2179 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 2180 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 2181 a flash unit for this camera device.<wbr/></p> 2182 <p>Note that auto-white balance (AWB) and auto-focus (AF) 2183 behavior is device dependent when AE is in OFF mode.<wbr/> 2184 To have consistent behavior across different devices,<wbr/> 2185 it is recommended to either set AWB and AF to OFF mode 2186 or lock AWB and AF before setting AE to OFF.<wbr/> 2187 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/> 2188 <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> 2189 for more details.<wbr/></p> 2190 <p>LEGACY devices do not support the OFF mode and will 2191 override attempts to use this value to ON.<wbr/></p></span> 2192 </li> 2193 <li> 2194 <span class="entry_type_enum_name">ON</span> 2195 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 2196 with no flash control.<wbr/></p> 2197 <p>The application's values for 2198 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2199 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2200 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 2201 application has control over the various 2202 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 2203 </li> 2204 <li> 2205 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 2206 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2207 the camera's flash unit,<wbr/> firing it in low-light 2208 conditions.<wbr/></p> 2209 <p>The flash may be fired during a precapture sequence 2210 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2211 may be fired for captures for which the 2212 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2213 STILL_<wbr/>CAPTURE</p></span> 2214 </li> 2215 <li> 2216 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 2217 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2218 the camera's flash unit,<wbr/> always firing it for still 2219 captures.<wbr/></p> 2220 <p>The flash may be fired during a precapture sequence 2221 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2222 will always be fired for captures for which the 2223 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2224 STILL_<wbr/>CAPTURE</p></span> 2225 </li> 2226 <li> 2227 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 2228 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 2229 reduction.<wbr/></p> 2230 <p>If deemed necessary by the camera device,<wbr/> a red eye 2231 reduction flash will fire during the precapture 2232 sequence.<wbr/></p></span> 2233 </li> 2234 </ul> 2235 2236 </td> <!-- entry_type --> 2237 2238 <td class="entry_description"> 2239 <p>The desired mode for the camera device's 2240 auto-exposure routine.<wbr/></p> 2241 </td> 2242 2243 <td class="entry_units"> 2244 </td> 2245 2246 <td class="entry_range"> 2247 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 2248 </td> 2249 2250 <td class="entry_tags"> 2251 <ul class="entry_tags"> 2252 <li><a href="#tag_BC">BC</a></li> 2253 </ul> 2254 </td> 2255 2256 </tr> 2257 <tr class="entries_header"> 2258 <th class="th_details" colspan="5">Details</th> 2259 </tr> 2260 <tr class="entry_cont"> 2261 <td class="entry_details" colspan="5"> 2262 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 2263 AUTO.<wbr/></p> 2264 <p>When set to any of the ON modes,<wbr/> the camera device's 2265 auto-exposure routine is enabled,<wbr/> overriding the 2266 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 2267 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2268 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2269 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 2270 is selected,<wbr/> the camera device's flash unit controls are 2271 also overridden.<wbr/></p> 2272 <p>The FLASH modes are only available if the camera device 2273 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> 2274 <p>If flash TORCH mode is desired,<wbr/> this field must be set to 2275 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 2276 <p>When set to any of the ON modes,<wbr/> the values chosen by the 2277 camera device auto-exposure routine for the overridden 2278 fields for a given capture will be available in its 2279 CaptureResult.<wbr/></p> 2280 </td> 2281 </tr> 2282 2283 2284 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2285 <!-- end of entry --> 2286 2287 2288 <tr class="entry" id="controls_android.control.aeRegions"> 2289 <td class="entry_name 2290 " rowspan="5"> 2291 android.<wbr/>control.<wbr/>ae<wbr/>Regions 2292 </td> 2293 <td class="entry_type"> 2294 <span class="entry_type_name">int32</span> 2295 <span class="entry_type_container">x</span> 2296 2297 <span class="entry_type_array"> 2298 5 x area_count 2299 </span> 2300 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2301 2302 2303 2304 2305 2306 2307 </td> <!-- entry_type --> 2308 2309 <td class="entry_description"> 2310 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 2311 </td> 2312 2313 <td class="entry_units"> 2314 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 2315 </td> 2316 2317 <td class="entry_range"> 2318 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2319 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 2320 </td> 2321 2322 <td class="entry_tags"> 2323 <ul class="entry_tags"> 2324 <li><a href="#tag_BC">BC</a></li> 2325 </ul> 2326 </td> 2327 2328 </tr> 2329 <tr class="entries_header"> 2330 <th class="th_details" colspan="5">Details</th> 2331 </tr> 2332 <tr class="entry_cont"> 2333 <td class="entry_details" colspan="5"> 2334 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 2335 Otherwise will always be present.<wbr/></p> 2336 <p>The maximum number of regions supported by the device is determined by the value 2337 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 2338 <p>The coordinate system is based on the active pixel array,<wbr/> 2339 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2340 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2341 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2342 bottom-right pixel in the active pixel array.<wbr/></p> 2343 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2344 for every pixel in the area.<wbr/> This means that a large metering area 2345 with the same weight as a smaller area will have more effect in 2346 the metering result.<wbr/> Metering areas can partially overlap and the 2347 camera device will add the weights in the overlap region.<wbr/></p> 2348 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 2349 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 2350 weight is ignored.<wbr/></p> 2351 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2352 camera device.<wbr/></p> 2353 <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 2354 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2355 region and output only the intersection rectangle as the metering region in the result 2356 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2357 not reported in the result metadata.<wbr/></p> 2358 </td> 2359 </tr> 2360 2361 <tr class="entries_header"> 2362 <th class="th_details" colspan="5">HAL Implementation Details</th> 2363 </tr> 2364 <tr class="entry_cont"> 2365 <td class="entry_details" colspan="5"> 2366 <p>The HAL level representation of MeteringRectangle[] is a 2367 int[5 * area_<wbr/>count].<wbr/> 2368 Every five elements represent a metering region of 2369 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2370 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2371 exclusive on xmax and ymax.<wbr/></p> 2372 </td> 2373 </tr> 2374 2375 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2376 <!-- end of entry --> 2377 2378 2379 <tr class="entry" id="controls_android.control.aeTargetFpsRange"> 2380 <td class="entry_name 2381 " rowspan="3"> 2382 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 2383 </td> 2384 <td class="entry_type"> 2385 <span class="entry_type_name">int32</span> 2386 <span class="entry_type_container">x</span> 2387 2388 <span class="entry_type_array"> 2389 2 2390 </span> 2391 <span class="entry_type_visibility"> [public as rangeInt]</span> 2392 2393 2394 <span class="entry_type_hwlevel">[legacy] </span> 2395 2396 2397 2398 2399 </td> <!-- entry_type --> 2400 2401 <td class="entry_description"> 2402 <p>Range over which the auto-exposure routine can 2403 adjust the capture frame rate to maintain good 2404 exposure.<wbr/></p> 2405 </td> 2406 2407 <td class="entry_units"> 2408 Frames per second (FPS) 2409 </td> 2410 2411 <td class="entry_range"> 2412 <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> 2413 </td> 2414 2415 <td class="entry_tags"> 2416 <ul class="entry_tags"> 2417 <li><a href="#tag_BC">BC</a></li> 2418 </ul> 2419 </td> 2420 2421 </tr> 2422 <tr class="entries_header"> 2423 <th class="th_details" colspan="5">Details</th> 2424 </tr> 2425 <tr class="entry_cont"> 2426 <td class="entry_details" colspan="5"> 2427 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 2428 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 2429 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 2430 </td> 2431 </tr> 2432 2433 2434 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2435 <!-- end of entry --> 2436 2437 2438 <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> 2439 <td class="entry_name 2440 " rowspan="3"> 2441 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 2442 </td> 2443 <td class="entry_type"> 2444 <span class="entry_type_name entry_type_name_enum">byte</span> 2445 2446 <span class="entry_type_visibility"> [public]</span> 2447 2448 2449 <span class="entry_type_hwlevel">[limited] </span> 2450 2451 2452 2453 <ul class="entry_type_enum"> 2454 <li> 2455 <span class="entry_type_enum_name">IDLE</span> 2456 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2457 </li> 2458 <li> 2459 <span class="entry_type_enum_name">START</span> 2460 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 2461 by the camera device.<wbr/></p> 2462 <p>The exact effect of the precapture trigger depends on 2463 the current AE mode and state.<wbr/></p></span> 2464 </li> 2465 </ul> 2466 2467 </td> <!-- entry_type --> 2468 2469 <td class="entry_description"> 2470 <p>Whether the camera device will trigger a precapture 2471 metering sequence when it processes this request.<wbr/></p> 2472 </td> 2473 2474 <td class="entry_units"> 2475 </td> 2476 2477 <td class="entry_range"> 2478 </td> 2479 2480 <td class="entry_tags"> 2481 <ul class="entry_tags"> 2482 <li><a href="#tag_BC">BC</a></li> 2483 </ul> 2484 </td> 2485 2486 </tr> 2487 <tr class="entries_header"> 2488 <th class="th_details" colspan="5">Details</th> 2489 </tr> 2490 <tr class="entry_cont"> 2491 <td class="entry_details" colspan="5"> 2492 <p>This entry is normally set to IDLE,<wbr/> or is not 2493 included at all in the request settings.<wbr/> When included and 2494 set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 2495 precapture metering sequence.<wbr/></p> 2496 <p>The precapture sequence should be triggered before starting a 2497 high-quality still capture for final metering decisions to 2498 be made,<wbr/> and for firing pre-capture flash pulses to estimate 2499 scene brightness and required final capture flash power,<wbr/> when 2500 the flash is enabled.<wbr/></p> 2501 <p>Normally,<wbr/> this entry should be set to START for only a 2502 single request,<wbr/> and the application should wait until the 2503 sequence completes before starting a new one.<wbr/></p> 2504 <p>When a precapture metering sequence is finished,<wbr/> the camera device 2505 may lock the auto-exposure routine internally to be able to accurately expose the 2506 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 2507 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 2508 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 2509 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 2510 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 2511 still capture request after the precapture sequence completes.<wbr/></p> 2512 <p>The exact effect of auto-exposure (AE) precapture trigger 2513 depends on the current AE mode and state; see 2514 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 2515 details.<wbr/></p> 2516 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 2517 capturing a high-resolution JPEG image will automatically trigger a 2518 precapture sequence before the high-resolution capture,<wbr/> including 2519 potentially firing a pre-capture flash.<wbr/></p> 2520 </td> 2521 </tr> 2522 2523 2524 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2525 <!-- end of entry --> 2526 2527 2528 <tr class="entry" id="controls_android.control.afMode"> 2529 <td class="entry_name 2530 " rowspan="5"> 2531 android.<wbr/>control.<wbr/>af<wbr/>Mode 2532 </td> 2533 <td class="entry_type"> 2534 <span class="entry_type_name entry_type_name_enum">byte</span> 2535 2536 <span class="entry_type_visibility"> [public]</span> 2537 2538 2539 <span class="entry_type_hwlevel">[legacy] </span> 2540 2541 2542 2543 <ul class="entry_type_enum"> 2544 <li> 2545 <span class="entry_type_enum_name">OFF</span> 2546 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 2547 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 2548 application.<wbr/></p></span> 2549 </li> 2550 <li> 2551 <span class="entry_type_enum_name">AUTO</span> 2552 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 2553 <p>In this mode,<wbr/> the lens does not move unless 2554 the autofocus trigger action is called.<wbr/> When that trigger 2555 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2556 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 2557 <p>Always supported if lens is not fixed focus.<wbr/></p> 2558 <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 2559 is fixed-focus.<wbr/></p> 2560 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 2561 and sets the AF state to INACTIVE.<wbr/></p></span> 2562 </li> 2563 <li> 2564 <span class="entry_type_enum_name">MACRO</span> 2565 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 2566 <p>In this mode,<wbr/> the lens does not move unless the 2567 autofocus trigger action is called.<wbr/> When that trigger is 2568 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2569 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 2570 mode is optimized for focusing on objects very close to 2571 the camera.<wbr/></p> 2572 <p>When that trigger is activated,<wbr/> AF will transition to 2573 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 2574 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 2575 position to default,<wbr/> and sets the AF state to 2576 INACTIVE.<wbr/></p></span> 2577 </li> 2578 <li> 2579 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 2580 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2581 position continually to attempt to provide a 2582 constantly-in-focus image stream.<wbr/></p> 2583 <p>The focusing behavior should be suitable for good quality 2584 video recording; typically this means slower focus 2585 movement and no overshoots.<wbr/> When the AF trigger is not 2586 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 2587 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 2588 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 2589 the algorithm should immediately transition into 2590 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2591 lens position until a cancel AF trigger is received.<wbr/></p> 2592 <p>Once cancel is received,<wbr/> the algorithm should transition 2593 back to INACTIVE and resume passive scan.<wbr/> Note that this 2594 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 2595 ongoing PASSIVE_<wbr/>SCAN must immediately be 2596 canceled.<wbr/></p></span> 2597 </li> 2598 <li> 2599 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 2600 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2601 position continually to attempt to provide a 2602 constantly-in-focus image stream.<wbr/></p> 2603 <p>The focusing behavior should be suitable for still image 2604 capture; typically this means focusing as fast as 2605 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 2606 algorithm should start in INACTIVE state,<wbr/> and then 2607 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 2608 appropriate as it attempts to maintain focus.<wbr/> When the AF 2609 trigger is activated,<wbr/> the algorithm should finish its 2610 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 2611 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2612 lens position until a cancel AF trigger is received.<wbr/></p> 2613 <p>When the AF cancel trigger is activated,<wbr/> the algorithm 2614 should transition back to INACTIVE and then act as if it 2615 has just been started.<wbr/></p></span> 2616 </li> 2617 <li> 2618 <span class="entry_type_enum_name">EDOF</span> 2619 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 2620 <p>The camera device will produce images with an extended 2621 depth of field automatically; no special focusing 2622 operations need to be done before taking a picture.<wbr/></p> 2623 <p>AF triggers are ignored,<wbr/> and the AF state will always be 2624 INACTIVE.<wbr/></p></span> 2625 </li> 2626 </ul> 2627 2628 </td> <!-- entry_type --> 2629 2630 <td class="entry_description"> 2631 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 2632 mode it is set to.<wbr/></p> 2633 </td> 2634 2635 <td class="entry_units"> 2636 </td> 2637 2638 <td class="entry_range"> 2639 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 2640 </td> 2641 2642 <td class="entry_tags"> 2643 <ul class="entry_tags"> 2644 <li><a href="#tag_BC">BC</a></li> 2645 </ul> 2646 </td> 2647 2648 </tr> 2649 <tr class="entries_header"> 2650 <th class="th_details" colspan="5">Details</th> 2651 </tr> 2652 <tr class="entry_cont"> 2653 <td class="entry_details" colspan="5"> 2654 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 2655 (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 2656 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 2657 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 2658 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> 2659 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 2660 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 2661 in result metadata.<wbr/></p> 2662 </td> 2663 </tr> 2664 2665 <tr class="entries_header"> 2666 <th class="th_details" colspan="5">HAL Implementation Details</th> 2667 </tr> 2668 <tr class="entry_cont"> 2669 <td class="entry_details" colspan="5"> 2670 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 2671 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 2672 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 2673 <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 2674 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 2675 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 2676 the same focal plane remains in focus.<wbr/></p> 2677 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 2678 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 2679 (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 2680 same lock behavior as above.<wbr/></p> 2681 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 2682 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/> 2683 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 2684 manual control.<wbr/></p> 2685 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 2686 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 2687 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 2688 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 2689 that will arise on camera modules with open-loop VCMs.<wbr/></p> 2690 </td> 2691 </tr> 2692 2693 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2694 <!-- end of entry --> 2695 2696 2697 <tr class="entry" id="controls_android.control.afRegions"> 2698 <td class="entry_name 2699 " rowspan="5"> 2700 android.<wbr/>control.<wbr/>af<wbr/>Regions 2701 </td> 2702 <td class="entry_type"> 2703 <span class="entry_type_name">int32</span> 2704 <span class="entry_type_container">x</span> 2705 2706 <span class="entry_type_array"> 2707 5 x area_count 2708 </span> 2709 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2710 2711 2712 2713 2714 2715 2716 </td> <!-- entry_type --> 2717 2718 <td class="entry_description"> 2719 <p>List of metering areas to use for auto-focus.<wbr/></p> 2720 </td> 2721 2722 <td class="entry_units"> 2723 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 2724 </td> 2725 2726 <td class="entry_range"> 2727 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2728 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 2729 </td> 2730 2731 <td class="entry_tags"> 2732 <ul class="entry_tags"> 2733 <li><a href="#tag_BC">BC</a></li> 2734 </ul> 2735 </td> 2736 2737 </tr> 2738 <tr class="entries_header"> 2739 <th class="th_details" colspan="5">Details</th> 2740 </tr> 2741 <tr class="entry_cont"> 2742 <td class="entry_details" colspan="5"> 2743 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 2744 Otherwise will always be present.<wbr/></p> 2745 <p>The maximum number of focus areas supported by the device is determined by the value 2746 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 2747 <p>The coordinate system is based on the active pixel array,<wbr/> 2748 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2749 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2750 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2751 bottom-right pixel in the active pixel array.<wbr/></p> 2752 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2753 for every pixel in the area.<wbr/> This means that a large metering area 2754 with the same weight as a smaller area will have more effect in 2755 the metering result.<wbr/> Metering areas can partially overlap and the 2756 camera device will add the weights in the overlap region.<wbr/></p> 2757 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 2758 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 2759 ignored.<wbr/></p> 2760 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2761 camera device.<wbr/></p> 2762 <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 2763 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2764 region and output only the intersection rectangle as the metering region in the result 2765 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2766 not reported in the result metadata.<wbr/></p> 2767 </td> 2768 </tr> 2769 2770 <tr class="entries_header"> 2771 <th class="th_details" colspan="5">HAL Implementation Details</th> 2772 </tr> 2773 <tr class="entry_cont"> 2774 <td class="entry_details" colspan="5"> 2775 <p>The HAL level representation of MeteringRectangle[] is a 2776 int[5 * area_<wbr/>count].<wbr/> 2777 Every five elements represent a metering region of 2778 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2779 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2780 exclusive on xmax and ymax.<wbr/></p> 2781 </td> 2782 </tr> 2783 2784 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2785 <!-- end of entry --> 2786 2787 2788 <tr class="entry" id="controls_android.control.afTrigger"> 2789 <td class="entry_name 2790 " rowspan="3"> 2791 android.<wbr/>control.<wbr/>af<wbr/>Trigger 2792 </td> 2793 <td class="entry_type"> 2794 <span class="entry_type_name entry_type_name_enum">byte</span> 2795 2796 <span class="entry_type_visibility"> [public]</span> 2797 2798 2799 <span class="entry_type_hwlevel">[legacy] </span> 2800 2801 2802 2803 <ul class="entry_type_enum"> 2804 <li> 2805 <span class="entry_type_enum_name">IDLE</span> 2806 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2807 </li> 2808 <li> 2809 <span class="entry_type_enum_name">START</span> 2810 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 2811 </li> 2812 <li> 2813 <span class="entry_type_enum_name">CANCEL</span> 2814 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 2815 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 2816 </li> 2817 </ul> 2818 2819 </td> <!-- entry_type --> 2820 2821 <td class="entry_description"> 2822 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 2823 </td> 2824 2825 <td class="entry_units"> 2826 </td> 2827 2828 <td class="entry_range"> 2829 </td> 2830 2831 <td class="entry_tags"> 2832 <ul class="entry_tags"> 2833 <li><a href="#tag_BC">BC</a></li> 2834 </ul> 2835 </td> 2836 2837 </tr> 2838 <tr class="entries_header"> 2839 <th class="th_details" colspan="5">Details</th> 2840 </tr> 2841 <tr class="entry_cont"> 2842 <td class="entry_details" colspan="5"> 2843 <p>This entry is normally set to IDLE,<wbr/> or is not 2844 included at all in the request settings.<wbr/></p> 2845 <p>When included and set to START,<wbr/> the camera device will trigger the 2846 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 2847 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 2848 and return to its initial AF state.<wbr/></p> 2849 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 2850 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 2851 START for multiple captures in a row means restarting the AF operation over 2852 and over again.<wbr/></p> 2853 <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> 2854 </td> 2855 </tr> 2856 2857 2858 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2859 <!-- end of entry --> 2860 2861 2862 <tr class="entry" id="controls_android.control.awbLock"> 2863 <td class="entry_name 2864 " rowspan="3"> 2865 android.<wbr/>control.<wbr/>awb<wbr/>Lock 2866 </td> 2867 <td class="entry_type"> 2868 <span class="entry_type_name entry_type_name_enum">byte</span> 2869 2870 <span class="entry_type_visibility"> [public as boolean]</span> 2871 2872 2873 <span class="entry_type_hwlevel">[legacy] </span> 2874 2875 2876 2877 <ul class="entry_type_enum"> 2878 <li> 2879 <span class="entry_type_enum_name">OFF</span> 2880 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 2881 algorithm is free to update its parameters if in AUTO 2882 mode.<wbr/></p></span> 2883 </li> 2884 <li> 2885 <span class="entry_type_enum_name">ON</span> 2886 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 2887 algorithm will not update its parameters while the lock 2888 is active.<wbr/></p></span> 2889 </li> 2890 </ul> 2891 2892 </td> <!-- entry_type --> 2893 2894 <td class="entry_description"> 2895 <p>Whether auto-white balance (AWB) is currently locked to its 2896 latest calculated values.<wbr/></p> 2897 </td> 2898 2899 <td class="entry_units"> 2900 </td> 2901 2902 <td class="entry_range"> 2903 </td> 2904 2905 <td class="entry_tags"> 2906 <ul class="entry_tags"> 2907 <li><a href="#tag_BC">BC</a></li> 2908 </ul> 2909 </td> 2910 2911 </tr> 2912 <tr class="entries_header"> 2913 <th class="th_details" colspan="5">Details</th> 2914 </tr> 2915 <tr class="entry_cont"> 2916 <td class="entry_details" colspan="5"> 2917 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 2918 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 2919 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 2920 get locked do not necessarily correspond to the settings that were present in the 2921 latest capture result received from the camera device,<wbr/> since additional captures 2922 and AWB updates may have occurred even before the result was sent out.<wbr/> If an 2923 application is switching between automatic and manual control and wishes to eliminate 2924 any flicker during the switch,<wbr/> the following procedure is recommended:</p> 2925 <ol> 2926 <li>Starting in auto-AWB mode:</li> 2927 <li>Lock AWB</li> 2928 <li>Wait for the first result to be output that has the AWB locked</li> 2929 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 2930 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 2931 </ol> 2932 <p>Note that AWB lock is only meaningful when 2933 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 2934 AWB is already fixed to a specific setting.<wbr/></p> 2935 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 2936 </td> 2937 </tr> 2938 2939 2940 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2941 <!-- end of entry --> 2942 2943 2944 <tr class="entry" id="controls_android.control.awbMode"> 2945 <td class="entry_name 2946 " rowspan="3"> 2947 android.<wbr/>control.<wbr/>awb<wbr/>Mode 2948 </td> 2949 <td class="entry_type"> 2950 <span class="entry_type_name entry_type_name_enum">byte</span> 2951 2952 <span class="entry_type_visibility"> [public]</span> 2953 2954 2955 <span class="entry_type_hwlevel">[legacy] </span> 2956 2957 2958 2959 <ul class="entry_type_enum"> 2960 <li> 2961 <span class="entry_type_enum_name">OFF</span> 2962 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 2963 <p>The application-selected color transform matrix 2964 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 2965 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 2966 device for manual white balance control.<wbr/></p></span> 2967 </li> 2968 <li> 2969 <span class="entry_type_enum_name">AUTO</span> 2970 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 2971 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 2972 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 2973 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 2974 values used by the camera device for the transform and gains 2975 will be available in the capture result for this request.<wbr/></p></span> 2976 </li> 2977 <li> 2978 <span class="entry_type_enum_name">INCANDESCENT</span> 2979 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 2980 the camera device uses incandescent light as the assumed scene 2981 illumination for white balance.<wbr/></p> 2982 <p>While the exact white balance transforms are up to the 2983 camera device,<wbr/> they will approximately match the CIE 2984 standard illuminant A.<wbr/></p> 2985 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 2986 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 2987 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 2988 values used by the camera device for the transform and gains 2989 will be available in the capture result for this request.<wbr/></p></span> 2990 </li> 2991 <li> 2992 <span class="entry_type_enum_name">FLUORESCENT</span> 2993 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 2994 the camera device uses fluorescent light as the assumed scene 2995 illumination for white balance.<wbr/></p> 2996 <p>While the exact white balance transforms are up to the 2997 camera device,<wbr/> they will approximately match the CIE 2998 standard illuminant F2.<wbr/></p> 2999 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3000 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3001 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3002 values used by the camera device for the transform and gains 3003 will be available in the capture result for this request.<wbr/></p></span> 3004 </li> 3005 <li> 3006 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 3007 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3008 the camera device uses warm fluorescent light as the assumed scene 3009 illumination for white balance.<wbr/></p> 3010 <p>While the exact white balance transforms are up to the 3011 camera device,<wbr/> they will approximately match the CIE 3012 standard illuminant F4.<wbr/></p> 3013 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3014 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3015 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3016 values used by the camera device for the transform and gains 3017 will be available in the capture result for this request.<wbr/></p></span> 3018 </li> 3019 <li> 3020 <span class="entry_type_enum_name">DAYLIGHT</span> 3021 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3022 the camera device uses daylight light as the assumed scene 3023 illumination for white balance.<wbr/></p> 3024 <p>While the exact white balance transforms are up to the 3025 camera device,<wbr/> they will approximately match the CIE 3026 standard illuminant D65.<wbr/></p> 3027 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3028 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3029 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3030 values used by the camera device for the transform and gains 3031 will be available in the capture result for this request.<wbr/></p></span> 3032 </li> 3033 <li> 3034 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 3035 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3036 the camera device uses cloudy daylight light as the assumed scene 3037 illumination for white balance.<wbr/></p> 3038 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3039 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3040 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3041 values used by the camera device for the transform and gains 3042 will be available in the capture result for this request.<wbr/></p></span> 3043 </li> 3044 <li> 3045 <span class="entry_type_enum_name">TWILIGHT</span> 3046 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3047 the camera device uses twilight light as the assumed scene 3048 illumination for white balance.<wbr/></p> 3049 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3050 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3051 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3052 values used by the camera device for the transform and gains 3053 will be available in the capture result for this request.<wbr/></p></span> 3054 </li> 3055 <li> 3056 <span class="entry_type_enum_name">SHADE</span> 3057 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3058 the camera device uses shade light as the assumed scene 3059 illumination for white balance.<wbr/></p> 3060 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3061 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3062 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3063 values used by the camera device for the transform and gains 3064 will be available in the capture result for this request.<wbr/></p></span> 3065 </li> 3066 </ul> 3067 3068 </td> <!-- entry_type --> 3069 3070 <td class="entry_description"> 3071 <p>Whether auto-white balance (AWB) is currently setting the color 3072 transform fields,<wbr/> and what its illumination target 3073 is.<wbr/></p> 3074 </td> 3075 3076 <td class="entry_units"> 3077 </td> 3078 3079 <td class="entry_range"> 3080 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 3081 </td> 3082 3083 <td class="entry_tags"> 3084 <ul class="entry_tags"> 3085 <li><a href="#tag_BC">BC</a></li> 3086 </ul> 3087 </td> 3088 3089 </tr> 3090 <tr class="entries_header"> 3091 <th class="th_details" colspan="5">Details</th> 3092 </tr> 3093 <tr class="entry_cont"> 3094 <td class="entry_details" colspan="5"> 3095 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 3096 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance 3097 routine is enabled,<wbr/> overriding the application's selected 3098 <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 3099 <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> 3100 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 3101 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 3102 setting AE mode to OFF.<wbr/></p> 3103 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 3104 routine is disabled.<wbr/> The application manually controls the white 3105 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> 3106 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 3107 <p>When set to any other modes,<wbr/> the camera device's auto-white 3108 balance routine is disabled.<wbr/> The camera device uses each 3109 particular illumination target for white balance 3110 adjustment.<wbr/> The application's values for 3111 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 3112 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 3113 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 3114 </td> 3115 </tr> 3116 3117 3118 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3119 <!-- end of entry --> 3120 3121 3122 <tr class="entry" id="controls_android.control.awbRegions"> 3123 <td class="entry_name 3124 " rowspan="5"> 3125 android.<wbr/>control.<wbr/>awb<wbr/>Regions 3126 </td> 3127 <td class="entry_type"> 3128 <span class="entry_type_name">int32</span> 3129 <span class="entry_type_container">x</span> 3130 3131 <span class="entry_type_array"> 3132 5 x area_count 3133 </span> 3134 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3135 3136 3137 3138 3139 3140 3141 </td> <!-- entry_type --> 3142 3143 <td class="entry_description"> 3144 <p>List of metering areas to use for auto-white-balance illuminant 3145 estimation.<wbr/></p> 3146 </td> 3147 3148 <td class="entry_units"> 3149 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 3150 </td> 3151 3152 <td class="entry_range"> 3153 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3154 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 3155 </td> 3156 3157 <td class="entry_tags"> 3158 <ul class="entry_tags"> 3159 <li><a href="#tag_BC">BC</a></li> 3160 </ul> 3161 </td> 3162 3163 </tr> 3164 <tr class="entries_header"> 3165 <th class="th_details" colspan="5">Details</th> 3166 </tr> 3167 <tr class="entry_cont"> 3168 <td class="entry_details" colspan="5"> 3169 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 3170 Otherwise will always be present.<wbr/></p> 3171 <p>The maximum number of regions supported by the device is determined by the value 3172 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 3173 <p>The coordinate system is based on the active pixel array,<wbr/> 3174 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 3175 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3176 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 3177 bottom-right pixel in the active pixel array.<wbr/></p> 3178 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight 3179 for every pixel in the area.<wbr/> This means that a large metering area 3180 with the same weight as a smaller area will have more effect in 3181 the metering result.<wbr/> Metering areas can partially overlap and the 3182 camera device will add the weights in the overlap region.<wbr/></p> 3183 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 3184 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 3185 0 weight is ignored.<wbr/></p> 3186 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3187 camera device.<wbr/></p> 3188 <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 3189 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3190 region and output only the intersection rectangle as the metering region in the result 3191 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3192 not reported in the result metadata.<wbr/></p> 3193 </td> 3194 </tr> 3195 3196 <tr class="entries_header"> 3197 <th class="th_details" colspan="5">HAL Implementation Details</th> 3198 </tr> 3199 <tr class="entry_cont"> 3200 <td class="entry_details" colspan="5"> 3201 <p>The HAL level representation of MeteringRectangle[] is a 3202 int[5 * area_<wbr/>count].<wbr/> 3203 Every five elements represent a metering region of 3204 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3205 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3206 exclusive on xmax and ymax.<wbr/></p> 3207 </td> 3208 </tr> 3209 3210 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3211 <!-- end of entry --> 3212 3213 3214 <tr class="entry" id="controls_android.control.captureIntent"> 3215 <td class="entry_name 3216 " rowspan="3"> 3217 android.<wbr/>control.<wbr/>capture<wbr/>Intent 3218 </td> 3219 <td class="entry_type"> 3220 <span class="entry_type_name entry_type_name_enum">byte</span> 3221 3222 <span class="entry_type_visibility"> [public]</span> 3223 3224 3225 <span class="entry_type_hwlevel">[legacy] </span> 3226 3227 3228 3229 <ul class="entry_type_enum"> 3230 <li> 3231 <span class="entry_type_enum_name">CUSTOM</span> 3232 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 3233 categories.<wbr/> The camera device will default to preview-like 3234 behavior.<wbr/></p></span> 3235 </li> 3236 <li> 3237 <span class="entry_type_enum_name">PREVIEW</span> 3238 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 3239 <p>The precapture trigger may be used to start off a metering 3240 w/<wbr/>flash sequence.<wbr/></p></span> 3241 </li> 3242 <li> 3243 <span class="entry_type_enum_name">STILL_CAPTURE</span> 3244 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 3245 use case.<wbr/></p> 3246 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 3247 </li> 3248 <li> 3249 <span class="entry_type_enum_name">VIDEO_RECORD</span> 3250 <span class="entry_type_enum_notes"><p>This request is for a video recording 3251 use case.<wbr/></p></span> 3252 </li> 3253 <li> 3254 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 3255 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 3256 image while recording video) use case.<wbr/></p> 3257 <p>The camera device should take the highest-quality image 3258 possible (given the other settings) without disrupting the 3259 frame rate of video recording.<wbr/> </p></span> 3260 </li> 3261 <li> 3262 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 3263 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 3264 application will stream full-resolution images and 3265 reprocess one or several later for a final 3266 capture.<wbr/></p></span> 3267 </li> 3268 <li> 3269 <span class="entry_type_enum_name">MANUAL</span> 3270 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 3271 the applications want to directly control the capture parameters.<wbr/></p> 3272 <p>For example,<wbr/> the application may wish to manually control 3273 <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> 3274 </li> 3275 </ul> 3276 3277 </td> <!-- entry_type --> 3278 3279 <td class="entry_description"> 3280 <p>Information to the camera device 3A (auto-exposure,<wbr/> 3281 auto-focus,<wbr/> auto-white balance) routines about the purpose 3282 of this capture,<wbr/> to help the camera device to decide optimal 3A 3283 strategy.<wbr/></p> 3284 </td> 3285 3286 <td class="entry_units"> 3287 </td> 3288 3289 <td class="entry_range"> 3290 </td> 3291 3292 <td class="entry_tags"> 3293 <ul class="entry_tags"> 3294 <li><a href="#tag_BC">BC</a></li> 3295 </ul> 3296 </td> 3297 3298 </tr> 3299 <tr class="entries_header"> 3300 <th class="th_details" colspan="5">Details</th> 3301 </tr> 3302 <tr class="entry_cont"> 3303 <td class="entry_details" colspan="5"> 3304 <p>This control (except for MANUAL) is only effective if 3305 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 3306 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 3307 contains ZSL.<wbr/> MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 3308 contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are always supported.<wbr/></p> 3309 </td> 3310 </tr> 3311 3312 3313 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3314 <!-- end of entry --> 3315 3316 3317 <tr class="entry" id="controls_android.control.effectMode"> 3318 <td class="entry_name 3319 " rowspan="3"> 3320 android.<wbr/>control.<wbr/>effect<wbr/>Mode 3321 </td> 3322 <td class="entry_type"> 3323 <span class="entry_type_name entry_type_name_enum">byte</span> 3324 3325 <span class="entry_type_visibility"> [public]</span> 3326 3327 3328 <span class="entry_type_hwlevel">[legacy] </span> 3329 3330 3331 3332 <ul class="entry_type_enum"> 3333 <li> 3334 <span class="entry_type_enum_name">OFF</span> 3335 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 3336 </li> 3337 <li> 3338 <span class="entry_type_enum_name">MONO</span> 3339 <span class="entry_type_enum_optional">[optional]</span> 3340 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 3341 a single color.<wbr/></p> 3342 <p>This will typically be grayscale.<wbr/></p></span> 3343 </li> 3344 <li> 3345 <span class="entry_type_enum_name">NEGATIVE</span> 3346 <span class="entry_type_enum_optional">[optional]</span> 3347 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 3348 are inverted.<wbr/></p></span> 3349 </li> 3350 <li> 3351 <span class="entry_type_enum_name">SOLARIZE</span> 3352 <span class="entry_type_enum_optional">[optional]</span> 3353 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 3354 image is wholly or partially reversed in 3355 tone.<wbr/></p></span> 3356 </li> 3357 <li> 3358 <span class="entry_type_enum_name">SEPIA</span> 3359 <span class="entry_type_enum_optional">[optional]</span> 3360 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 3361 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 3362 </li> 3363 <li> 3364 <span class="entry_type_enum_name">POSTERIZE</span> 3365 <span class="entry_type_enum_optional">[optional]</span> 3366 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 3367 discrete regions of tone rather than a continuous 3368 gradient of tones.<wbr/></p></span> 3369 </li> 3370 <li> 3371 <span class="entry_type_enum_name">WHITEBOARD</span> 3372 <span class="entry_type_enum_optional">[optional]</span> 3373 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 3374 as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 3375 </li> 3376 <li> 3377 <span class="entry_type_enum_name">BLACKBOARD</span> 3378 <span class="entry_type_enum_optional">[optional]</span> 3379 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 3380 as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 3381 </li> 3382 <li> 3383 <span class="entry_type_enum_name">AQUA</span> 3384 <span class="entry_type_enum_optional">[optional]</span> 3385 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 3386 </li> 3387 </ul> 3388 3389 </td> <!-- entry_type --> 3390 3391 <td class="entry_description"> 3392 <p>A special color effect to apply.<wbr/></p> 3393 </td> 3394 3395 <td class="entry_units"> 3396 </td> 3397 3398 <td class="entry_range"> 3399 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 3400 </td> 3401 3402 <td class="entry_tags"> 3403 <ul class="entry_tags"> 3404 <li><a href="#tag_BC">BC</a></li> 3405 </ul> 3406 </td> 3407 3408 </tr> 3409 <tr class="entries_header"> 3410 <th class="th_details" colspan="5">Details</th> 3411 </tr> 3412 <tr class="entry_cont"> 3413 <td class="entry_details" colspan="5"> 3414 <p>When this mode is set,<wbr/> a color effect will be applied 3415 to images produced by the camera device.<wbr/> The interpretation 3416 and implementation of these color effects is left to the 3417 implementor of the camera device,<wbr/> and should not be 3418 depended on to be consistent (or present) across all 3419 devices.<wbr/></p> 3420 </td> 3421 </tr> 3422 3423 3424 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3425 <!-- end of entry --> 3426 3427 3428 <tr class="entry" id="controls_android.control.mode"> 3429 <td class="entry_name 3430 " rowspan="3"> 3431 android.<wbr/>control.<wbr/>mode 3432 </td> 3433 <td class="entry_type"> 3434 <span class="entry_type_name entry_type_name_enum">byte</span> 3435 3436 <span class="entry_type_visibility"> [public]</span> 3437 3438 3439 <span class="entry_type_hwlevel">[legacy] </span> 3440 3441 3442 3443 <ul class="entry_type_enum"> 3444 <li> 3445 <span class="entry_type_enum_name">OFF</span> 3446 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 3447 <p>All control by the device's metering and focusing (3A) 3448 routines is disabled,<wbr/> and no other settings in 3449 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 3450 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 3451 device to select post-processing values for processing 3452 blocks that do not allow for manual control,<wbr/> or are not 3453 exposed by the camera API.<wbr/></p> 3454 <p>However,<wbr/> the camera device's 3A routines may continue to 3455 collect statistics and update their internal state so that 3456 when control is switched to AUTO mode,<wbr/> good control values 3457 can be immediately applied.<wbr/></p></span> 3458 </li> 3459 <li> 3460 <span class="entry_type_enum_name">AUTO</span> 3461 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 3462 <p>Manual control of capture parameters is disabled.<wbr/> All 3463 controls in android.<wbr/>control.<wbr/>* besides sceneMode take 3464 effect.<wbr/></p></span> 3465 </li> 3466 <li> 3467 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 3468 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 3469 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 3470 control.<wbr/>afMode controls; the camera device will ignore 3471 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 3472 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still 3473 active.<wbr/> This setting can only be used if scene mode is 3474 supported (i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 3475 contain some modes other than DISABLED).<wbr/></p></span> 3476 </li> 3477 <li> 3478 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 3479 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 3480 used by camera device background auto-exposure,<wbr/> auto-white balance and 3481 auto-focus algorithms (3A) to update their statistics.<wbr/></p> 3482 <p>Specifically,<wbr/> the 3A routines are locked to the last 3483 values set from a request with AUTO,<wbr/> OFF,<wbr/> or 3484 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 3485 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 3486 discarded by the camera device.<wbr/></p></span> 3487 </li> 3488 </ul> 3489 3490 </td> <!-- entry_type --> 3491 3492 <td class="entry_description"> 3493 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 3494 routines.<wbr/></p> 3495 </td> 3496 3497 <td class="entry_units"> 3498 </td> 3499 3500 <td class="entry_range"> 3501 </td> 3502 3503 <td class="entry_tags"> 3504 <ul class="entry_tags"> 3505 <li><a href="#tag_BC">BC</a></li> 3506 </ul> 3507 </td> 3508 3509 </tr> 3510 <tr class="entries_header"> 3511 <th class="th_details" colspan="5">Details</th> 3512 </tr> 3513 <tr class="entry_cont"> 3514 <td class="entry_details" colspan="5"> 3515 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 3516 by the camera device is disabled.<wbr/> The application must set the fields for 3517 capture parameters itself.<wbr/></p> 3518 <p>When set to AUTO,<wbr/> the individual algorithm controls in 3519 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> 3520 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 3521 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 3522 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 3523 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 3524 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 3525 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 3526 is that this frame will not be used by camera device background 3A statistics 3527 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 3528 where the application doesn't want a 3A manual control capture to affect 3529 the subsequent auto 3A capture results.<wbr/></p> 3530 <p>LEGACY mode devices will only support AUTO and USE_<wbr/>SCENE_<wbr/>MODE modes.<wbr/> 3531 LIMITED mode devices will only support OFF and OFF_<wbr/>KEEP_<wbr/>STATE if they 3532 support the MANUAL_<wbr/>SENSOR and MANUAL_<wbr/>POST_<wbr/>PROCSESING capabilities.<wbr/> 3533 FULL mode devices will always support OFF and OFF_<wbr/>KEEP_<wbr/>STATE.<wbr/></p> 3534 </td> 3535 </tr> 3536 3537 3538 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3539 <!-- end of entry --> 3540 3541 3542 <tr class="entry" id="controls_android.control.sceneMode"> 3543 <td class="entry_name 3544 " rowspan="5"> 3545 android.<wbr/>control.<wbr/>scene<wbr/>Mode 3546 </td> 3547 <td class="entry_type"> 3548 <span class="entry_type_name entry_type_name_enum">byte</span> 3549 3550 <span class="entry_type_visibility"> [public]</span> 3551 3552 3553 <span class="entry_type_hwlevel">[legacy] </span> 3554 3555 3556 3557 <ul class="entry_type_enum"> 3558 <li> 3559 <span class="entry_type_enum_name">DISABLED</span> 3560 <span class="entry_type_enum_value">0</span> 3561 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 3562 </li> 3563 <li> 3564 <span class="entry_type_enum_name">FACE_PRIORITY</span> 3565 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 3566 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 3567 auto-exposure routines.<wbr/></p> 3568 <p>If face detection statistics are disabled 3569 (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/> 3570 this should still operate correctly (but will not return 3571 face detection statistics to the framework).<wbr/></p> 3572 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3573 <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> 3574 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 3575 </li> 3576 <li> 3577 <span class="entry_type_enum_name">ACTION</span> 3578 <span class="entry_type_enum_optional">[optional]</span> 3579 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 3580 <p>Similar to SPORTS.<wbr/></p></span> 3581 </li> 3582 <li> 3583 <span class="entry_type_enum_name">PORTRAIT</span> 3584 <span class="entry_type_enum_optional">[optional]</span> 3585 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 3586 </li> 3587 <li> 3588 <span class="entry_type_enum_name">LANDSCAPE</span> 3589 <span class="entry_type_enum_optional">[optional]</span> 3590 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 3591 </li> 3592 <li> 3593 <span class="entry_type_enum_name">NIGHT</span> 3594 <span class="entry_type_enum_optional">[optional]</span> 3595 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 3596 </li> 3597 <li> 3598 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 3599 <span class="entry_type_enum_optional">[optional]</span> 3600 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 3601 settings.<wbr/></p></span> 3602 </li> 3603 <li> 3604 <span class="entry_type_enum_name">THEATRE</span> 3605 <span class="entry_type_enum_optional">[optional]</span> 3606 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 3607 remain off.<wbr/></p></span> 3608 </li> 3609 <li> 3610 <span class="entry_type_enum_name">BEACH</span> 3611 <span class="entry_type_enum_optional">[optional]</span> 3612 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 3613 </li> 3614 <li> 3615 <span class="entry_type_enum_name">SNOW</span> 3616 <span class="entry_type_enum_optional">[optional]</span> 3617 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 3618 </li> 3619 <li> 3620 <span class="entry_type_enum_name">SUNSET</span> 3621 <span class="entry_type_enum_optional">[optional]</span> 3622 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 3623 </li> 3624 <li> 3625 <span class="entry_type_enum_name">STEADYPHOTO</span> 3626 <span class="entry_type_enum_optional">[optional]</span> 3627 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 3628 device motion (for example: due to hand shake).<wbr/></p></span> 3629 </li> 3630 <li> 3631 <span class="entry_type_enum_name">FIREWORKS</span> 3632 <span class="entry_type_enum_optional">[optional]</span> 3633 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 3634 </li> 3635 <li> 3636 <span class="entry_type_enum_name">SPORTS</span> 3637 <span class="entry_type_enum_optional">[optional]</span> 3638 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 3639 <p>Similar to ACTION.<wbr/></p></span> 3640 </li> 3641 <li> 3642 <span class="entry_type_enum_name">PARTY</span> 3643 <span class="entry_type_enum_optional">[optional]</span> 3644 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 3645 people.<wbr/></p></span> 3646 </li> 3647 <li> 3648 <span class="entry_type_enum_name">CANDLELIGHT</span> 3649 <span class="entry_type_enum_optional">[optional]</span> 3650 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 3651 is a flame.<wbr/></p></span> 3652 </li> 3653 <li> 3654 <span class="entry_type_enum_name">BARCODE</span> 3655 <span class="entry_type_enum_optional">[optional]</span> 3656 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 3657 for use by camera applications that wish to read the 3658 barcode value.<wbr/></p></span> 3659 </li> 3660 <li> 3661 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> 3662 <span class="entry_type_enum_optional">[optional]</span> 3663 <span class="entry_type_enum_notes"><p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 3664 <p>The supported high speed video sizes and fps ranges are specified in 3665 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 3666 output frame rates,<wbr/> the application is only allowed to select video size 3667 and fps range combinations listed in this static metadata.<wbr/> The fps range 3668 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 3669 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 3670 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 3671 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 3672 and post-processing parameters is possible.<wbr/> All other controls operate the 3673 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 3674 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 3675 <ul> 3676 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 3677 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 3678 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 3679 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 3680 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 3681 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 3682 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 3683 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 3684 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 3685 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 3686 </ul> 3687 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 3688 <ul> 3689 <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> 3690 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 3691 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 3692 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 3693 </ul> 3694 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 3695 be lower than what camera can output,<wbr/> depending on the destination Surfaces for 3696 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 3697 the application need check if the video encoder is capable of supporting the 3698 high frame rate for a given video size,<wbr/> or it will end up with lower recording 3699 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 3700 rate will be bounded by the screen refresh rate.<wbr/></p> 3701 <p>The camera device will only support up to 2 output high speed streams 3702 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 3703 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 3704 <ul> 3705 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling 3706 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 3707 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> 3708 <li>The stream sizes are selected from the sizes reported by 3709 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 3710 <li>No processed non-stalling or raw streams are configured.<wbr/></li> 3711 </ul> 3712 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 3713 <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/> 3714 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 3715 and the returned capture result metadata will give the fps range choosen 3716 by the camera device.<wbr/></p> 3717 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 3718 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 3719 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 3720 </li> 3721 <li> 3722 <span class="entry_type_enum_name">HDR</span> 3723 <span class="entry_type_enum_optional">[optional]</span> 3724 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 3725 <p>In this scene mode,<wbr/> the camera device captures images 3726 that keep a larger range of scene illumination levels 3727 visible in the final image.<wbr/> For example,<wbr/> when taking a 3728 picture of a object in front of a bright window,<wbr/> both 3729 the object and the scene through the window may be 3730 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 3731 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 3732 HDR mode generally takes much longer to capture a single 3733 image,<wbr/> has no user control,<wbr/> and may have other artifacts 3734 depending on the HDR method used.<wbr/></p> 3735 <p>Therefore,<wbr/> HDR captures operate at a much slower rate 3736 than regular captures.<wbr/></p> 3737 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 3738 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 3739 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 3740 using a high dynamic range capture technique.<wbr/> On LEGACY 3741 devices,<wbr/> captures that target a JPEG-format output will 3742 be captured with HDR,<wbr/> and the capture intent is not 3743 relevant.<wbr/></p> 3744 <p>The HDR capture may involve the device capturing a burst 3745 of images internally and combining them into one,<wbr/> or it 3746 may involve the device using specialized high dynamic 3747 range capture hardware.<wbr/> In all cases,<wbr/> a single image is 3748 produced in response to a capture request submitted 3749 while in HDR mode.<wbr/></p> 3750 <p>Since substantial post-processing is generally needed to 3751 produce an HDR image,<wbr/> only YUV and JPEG outputs are 3752 supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only 3753 JPEG outputs are supported for LEGACY HDR 3754 captures.<wbr/> Using a RAW output for HDR capture is not 3755 supported.<wbr/></p></span> 3756 </li> 3757 </ul> 3758 3759 </td> <!-- entry_type --> 3760 3761 <td class="entry_description"> 3762 <p>Control for which scene mode is currently active.<wbr/></p> 3763 </td> 3764 3765 <td class="entry_units"> 3766 </td> 3767 3768 <td class="entry_range"> 3769 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 3770 </td> 3771 3772 <td class="entry_tags"> 3773 <ul class="entry_tags"> 3774 <li><a href="#tag_BC">BC</a></li> 3775 </ul> 3776 </td> 3777 3778 </tr> 3779 <tr class="entries_header"> 3780 <th class="th_details" colspan="5">Details</th> 3781 </tr> 3782 <tr class="entry_cont"> 3783 <td class="entry_details" colspan="5"> 3784 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 3785 capture settings.<wbr/></p> 3786 <p>This is the mode that that is active when 3787 <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/> 3788 these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3789 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> while in use.<wbr/></p> 3790 <p>The interpretation and implementation of these scene modes is left 3791 to the implementor of the camera device.<wbr/> Their behavior will not be 3792 consistent across all devices,<wbr/> and any given device may only implement 3793 a subset of these modes.<wbr/></p> 3794 </td> 3795 </tr> 3796 3797 <tr class="entries_header"> 3798 <th class="th_details" colspan="5">HAL Implementation Details</th> 3799 </tr> 3800 <tr class="entry_cont"> 3801 <td class="entry_details" colspan="5"> 3802 <p>HAL implementations that include scene modes are expected to provide 3803 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3804 <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 3805 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 3806 <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/> 3807 the HAL must list supported video size and fps range in 3808 <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/> 3809 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming 3810 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture 3811 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/></p> 3812 </td> 3813 </tr> 3814 3815 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3816 <!-- end of entry --> 3817 3818 3819 <tr class="entry" id="controls_android.control.videoStabilizationMode"> 3820 <td class="entry_name 3821 " rowspan="3"> 3822 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 3823 </td> 3824 <td class="entry_type"> 3825 <span class="entry_type_name entry_type_name_enum">byte</span> 3826 3827 <span class="entry_type_visibility"> [public]</span> 3828 3829 3830 <span class="entry_type_hwlevel">[legacy] </span> 3831 3832 3833 3834 <ul class="entry_type_enum"> 3835 <li> 3836 <span class="entry_type_enum_name">OFF</span> 3837 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 3838 </li> 3839 <li> 3840 <span class="entry_type_enum_name">ON</span> 3841 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 3842 </li> 3843 </ul> 3844 3845 </td> <!-- entry_type --> 3846 3847 <td class="entry_description"> 3848 <p>Whether video stabilization is 3849 active.<wbr/></p> 3850 </td> 3851 3852 <td class="entry_units"> 3853 </td> 3854 3855 <td class="entry_range"> 3856 </td> 3857 3858 <td class="entry_tags"> 3859 <ul class="entry_tags"> 3860 <li><a href="#tag_BC">BC</a></li> 3861 </ul> 3862 </td> 3863 3864 </tr> 3865 <tr class="entries_header"> 3866 <th class="th_details" colspan="5">Details</th> 3867 </tr> 3868 <tr class="entry_cont"> 3869 <td class="entry_details" colspan="5"> 3870 <p>Video stabilization automatically translates and scales images from 3871 the camera in order to stabilize motion between consecutive frames.<wbr/></p> 3872 <p>If enabled,<wbr/> video stabilization can modify the 3873 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 3874 <p>Switching between different video stabilization modes may take several 3875 frames to initialize,<wbr/> the camera device will report the current mode 3876 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 3877 the video stabilization modes in the first several capture results may 3878 still be "OFF",<wbr/> and it will become "ON" when the initialization is 3879 done.<wbr/></p> 3880 <p>If a camera device supports both this mode and OIS 3881 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 3882 produce undesirable interaction,<wbr/> so it is recommended not to enable 3883 both at the same time.<wbr/></p> 3884 </td> 3885 </tr> 3886 3887 3888 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3889 <!-- end of entry --> 3890 3891 3892 3893 <!-- end of kind --> 3894 </tbody> 3895 <tr><td colspan="6" class="kind">static</td></tr> 3896 3897 <thead class="entries_header"> 3898 <tr> 3899 <th class="th_name">Property Name</th> 3900 <th class="th_type">Type</th> 3901 <th class="th_description">Description</th> 3902 <th class="th_units">Units</th> 3903 <th class="th_range">Range</th> 3904 <th class="th_tags">Tags</th> 3905 </tr> 3906 </thead> 3907 3908 <tbody> 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> 3920 <td class="entry_name 3921 " rowspan="3"> 3922 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes 3923 </td> 3924 <td class="entry_type"> 3925 <span class="entry_type_name">byte</span> 3926 <span class="entry_type_container">x</span> 3927 3928 <span class="entry_type_array"> 3929 n 3930 </span> 3931 <span class="entry_type_visibility"> [public as enumList]</span> 3932 3933 3934 <span class="entry_type_hwlevel">[legacy] </span> 3935 3936 3937 <div class="entry_type_notes">list of enums</div> 3938 3939 3940 </td> <!-- entry_type --> 3941 3942 <td class="entry_description"> 3943 <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 3944 supported by this camera device.<wbr/></p> 3945 </td> 3946 3947 <td class="entry_units"> 3948 </td> 3949 3950 <td class="entry_range"> 3951 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p> 3952 </td> 3953 3954 <td class="entry_tags"> 3955 <ul class="entry_tags"> 3956 <li><a href="#tag_BC">BC</a></li> 3957 </ul> 3958 </td> 3959 3960 </tr> 3961 <tr class="entries_header"> 3962 <th class="th_details" colspan="5">Details</th> 3963 </tr> 3964 <tr class="entry_cont"> 3965 <td class="entry_details" colspan="5"> 3966 <p>Not all of the auto-exposure anti-banding modes may be 3967 supported by a given camera device.<wbr/> This field lists the 3968 valid anti-banding modes that the application may request 3969 for this camera device with the 3970 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p> 3971 </td> 3972 </tr> 3973 3974 3975 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3976 <!-- end of entry --> 3977 3978 3979 <tr class="entry" id="static_android.control.aeAvailableModes"> 3980 <td class="entry_name 3981 " rowspan="3"> 3982 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes 3983 </td> 3984 <td class="entry_type"> 3985 <span class="entry_type_name">byte</span> 3986 <span class="entry_type_container">x</span> 3987 3988 <span class="entry_type_array"> 3989 n 3990 </span> 3991 <span class="entry_type_visibility"> [public as enumList]</span> 3992 3993 3994 <span class="entry_type_hwlevel">[legacy] </span> 3995 3996 3997 <div class="entry_type_notes">list of enums</div> 3998 3999 4000 </td> <!-- entry_type --> 4001 4002 <td class="entry_description"> 4003 <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 4004 device.<wbr/></p> 4005 </td> 4006 4007 <td class="entry_units"> 4008 </td> 4009 4010 <td class="entry_range"> 4011 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p> 4012 </td> 4013 4014 <td class="entry_tags"> 4015 <ul class="entry_tags"> 4016 <li><a href="#tag_BC">BC</a></li> 4017 </ul> 4018 </td> 4019 4020 </tr> 4021 <tr class="entries_header"> 4022 <th class="th_details" colspan="5">Details</th> 4023 </tr> 4024 <tr class="entry_cont"> 4025 <td class="entry_details" colspan="5"> 4026 <p>Not all the auto-exposure modes may be supported by a 4027 given camera device,<wbr/> especially if no flash unit is 4028 available.<wbr/> This entry lists the valid modes for 4029 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> 4030 <p>All camera devices support ON,<wbr/> and all camera devices with flash 4031 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> 4032 <p>FULL mode camera devices always support OFF mode,<wbr/> 4033 which enables application control of camera exposure time,<wbr/> 4034 sensitivity,<wbr/> and frame duration.<wbr/></p> 4035 <p>LEGACY mode camera devices never support OFF mode.<wbr/> 4036 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR 4037 capability.<wbr/></p> 4038 </td> 4039 </tr> 4040 4041 4042 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4043 <!-- end of entry --> 4044 4045 4046 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> 4047 <td class="entry_name 4048 " rowspan="3"> 4049 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges 4050 </td> 4051 <td class="entry_type"> 4052 <span class="entry_type_name">int32</span> 4053 <span class="entry_type_container">x</span> 4054 4055 <span class="entry_type_array"> 4056 2 x n 4057 </span> 4058 <span class="entry_type_visibility"> [public as rangeInt]</span> 4059 4060 4061 <span class="entry_type_hwlevel">[legacy] </span> 4062 4063 4064 <div class="entry_type_notes">list of pairs of frame rates</div> 4065 4066 4067 </td> <!-- entry_type --> 4068 4069 <td class="entry_description"> 4070 <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 4071 this camera device.<wbr/></p> 4072 </td> 4073 4074 <td class="entry_units"> 4075 Frames per second (FPS) 4076 </td> 4077 4078 <td class="entry_range"> 4079 </td> 4080 4081 <td class="entry_tags"> 4082 <ul class="entry_tags"> 4083 <li><a href="#tag_BC">BC</a></li> 4084 </ul> 4085 </td> 4086 4087 </tr> 4088 <tr class="entries_header"> 4089 <th class="th_details" colspan="5">Details</th> 4090 </tr> 4091 <tr class="entry_cont"> 4092 <td class="entry_details" colspan="5"> 4093 <p>For devices at the LIMITED level or above,<wbr/> this list will include at least (30,<wbr/> 30) for 4094 constant-framerate recording.<wbr/></p> 4095 </td> 4096 </tr> 4097 4098 4099 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4100 <!-- end of entry --> 4101 4102 4103 <tr class="entry" id="static_android.control.aeCompensationRange"> 4104 <td class="entry_name 4105 " rowspan="1"> 4106 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 4107 </td> 4108 <td class="entry_type"> 4109 <span class="entry_type_name">int32</span> 4110 <span class="entry_type_container">x</span> 4111 4112 <span class="entry_type_array"> 4113 2 4114 </span> 4115 <span class="entry_type_visibility"> [public as rangeInt]</span> 4116 4117 4118 <span class="entry_type_hwlevel">[legacy] </span> 4119 4120 4121 4122 4123 </td> <!-- entry_type --> 4124 4125 <td class="entry_description"> 4126 <p>Maximum and minimum exposure compensation values for 4127 <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/> 4128 that are supported by this camera device.<wbr/></p> 4129 </td> 4130 4131 <td class="entry_units"> 4132 </td> 4133 4134 <td class="entry_range"> 4135 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p> 4136 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure 4137 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p> 4138 <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> 4139 <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> 4140 <p>LEGACY devices may support a smaller range than this.<wbr/></p> 4141 </td> 4142 4143 <td class="entry_tags"> 4144 <ul class="entry_tags"> 4145 <li><a href="#tag_BC">BC</a></li> 4146 </ul> 4147 </td> 4148 4149 </tr> 4150 4151 4152 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4153 <!-- end of entry --> 4154 4155 4156 <tr class="entry" id="static_android.control.aeCompensationStep"> 4157 <td class="entry_name 4158 " rowspan="5"> 4159 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 4160 </td> 4161 <td class="entry_type"> 4162 <span class="entry_type_name">rational</span> 4163 4164 <span class="entry_type_visibility"> [public]</span> 4165 4166 4167 <span class="entry_type_hwlevel">[legacy] </span> 4168 4169 4170 4171 4172 </td> <!-- entry_type --> 4173 4174 <td class="entry_description"> 4175 <p>Smallest step by which the exposure compensation 4176 can be changed.<wbr/></p> 4177 </td> 4178 4179 <td class="entry_units"> 4180 Exposure Value (EV) 4181 </td> 4182 4183 <td class="entry_range"> 4184 </td> 4185 4186 <td class="entry_tags"> 4187 <ul class="entry_tags"> 4188 <li><a href="#tag_BC">BC</a></li> 4189 </ul> 4190 </td> 4191 4192 </tr> 4193 <tr class="entries_header"> 4194 <th class="th_details" colspan="5">Details</th> 4195 </tr> 4196 <tr class="entry_cont"> 4197 <td class="entry_details" colspan="5"> 4198 <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 4199 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 4200 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p> 4201 <p>One unit of EV compensation changes the brightness of the captured image by a factor 4202 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p> 4203 </td> 4204 </tr> 4205 4206 <tr class="entries_header"> 4207 <th class="th_details" colspan="5">HAL Implementation Details</th> 4208 </tr> 4209 <tr class="entry_cont"> 4210 <td class="entry_details" colspan="5"> 4211 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p> 4212 </td> 4213 </tr> 4214 4215 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4216 <!-- end of entry --> 4217 4218 4219 <tr class="entry" id="static_android.control.afAvailableModes"> 4220 <td class="entry_name 4221 " rowspan="3"> 4222 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 4223 </td> 4224 <td class="entry_type"> 4225 <span class="entry_type_name">byte</span> 4226 <span class="entry_type_container">x</span> 4227 4228 <span class="entry_type_array"> 4229 n 4230 </span> 4231 <span class="entry_type_visibility"> [public as enumList]</span> 4232 4233 4234 <span class="entry_type_hwlevel">[legacy] </span> 4235 4236 4237 <div class="entry_type_notes">List of enums</div> 4238 4239 4240 </td> <!-- entry_type --> 4241 4242 <td class="entry_description"> 4243 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are 4244 supported by this camera device.<wbr/></p> 4245 </td> 4246 4247 <td class="entry_units"> 4248 </td> 4249 4250 <td class="entry_range"> 4251 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p> 4252 </td> 4253 4254 <td class="entry_tags"> 4255 <ul class="entry_tags"> 4256 <li><a href="#tag_BC">BC</a></li> 4257 </ul> 4258 </td> 4259 4260 </tr> 4261 <tr class="entries_header"> 4262 <th class="th_details" colspan="5">Details</th> 4263 </tr> 4264 <tr class="entry_cont"> 4265 <td class="entry_details" colspan="5"> 4266 <p>Not all the auto-focus modes may be supported by a 4267 given camera device.<wbr/> This entry lists the valid modes for 4268 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 4269 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all 4270 camera devices with adjustable focuser units 4271 (<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> 4272 <p>LEGACY devices will support OFF mode only if they support 4273 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to 4274 <code>0.<wbr/>0f</code>).<wbr/></p> 4275 </td> 4276 </tr> 4277 4278 4279 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4280 <!-- end of entry --> 4281 4282 4283 <tr class="entry" id="static_android.control.availableEffects"> 4284 <td class="entry_name 4285 " rowspan="3"> 4286 android.<wbr/>control.<wbr/>available<wbr/>Effects 4287 </td> 4288 <td class="entry_type"> 4289 <span class="entry_type_name">byte</span> 4290 <span class="entry_type_container">x</span> 4291 4292 <span class="entry_type_array"> 4293 n 4294 </span> 4295 <span class="entry_type_visibility"> [public as enumList]</span> 4296 4297 4298 <span class="entry_type_hwlevel">[legacy] </span> 4299 4300 4301 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 4302 4303 4304 </td> <!-- entry_type --> 4305 4306 <td class="entry_description"> 4307 <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 4308 device.<wbr/></p> 4309 </td> 4310 4311 <td class="entry_units"> 4312 </td> 4313 4314 <td class="entry_range"> 4315 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p> 4316 </td> 4317 4318 <td class="entry_tags"> 4319 <ul class="entry_tags"> 4320 <li><a href="#tag_BC">BC</a></li> 4321 </ul> 4322 </td> 4323 4324 </tr> 4325 <tr class="entries_header"> 4326 <th class="th_details" colspan="5">Details</th> 4327 </tr> 4328 <tr class="entry_cont"> 4329 <td class="entry_details" colspan="5"> 4330 <p>This list contains the color effect modes that can be applied to 4331 images produced by the camera device.<wbr/> 4332 Implementations are not expected to be consistent across all devices.<wbr/> 4333 If no color effect modes are available for a device,<wbr/> this will only list 4334 OFF.<wbr/></p> 4335 <p>A color effect will only be applied if 4336 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p> 4337 <p>This control has no effect on the operation of other control routines such 4338 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p> 4339 </td> 4340 </tr> 4341 4342 4343 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4344 <!-- end of entry --> 4345 4346 4347 <tr class="entry" id="static_android.control.availableSceneModes"> 4348 <td class="entry_name 4349 " rowspan="3"> 4350 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 4351 </td> 4352 <td class="entry_type"> 4353 <span class="entry_type_name">byte</span> 4354 <span class="entry_type_container">x</span> 4355 4356 <span class="entry_type_array"> 4357 n 4358 </span> 4359 <span class="entry_type_visibility"> [public as enumList]</span> 4360 4361 4362 <span class="entry_type_hwlevel">[legacy] </span> 4363 4364 4365 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 4366 4367 4368 </td> <!-- entry_type --> 4369 4370 <td class="entry_description"> 4371 <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 4372 device.<wbr/></p> 4373 </td> 4374 4375 <td class="entry_units"> 4376 </td> 4377 4378 <td class="entry_range"> 4379 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p> 4380 </td> 4381 4382 <td class="entry_tags"> 4383 <ul class="entry_tags"> 4384 <li><a href="#tag_BC">BC</a></li> 4385 </ul> 4386 </td> 4387 4388 </tr> 4389 <tr class="entries_header"> 4390 <th class="th_details" colspan="5">Details</th> 4391 </tr> 4392 <tr class="entry_cont"> 4393 <td class="entry_details" colspan="5"> 4394 <p>This list contains scene modes that can be set for the camera device.<wbr/> 4395 Only scene modes that have been fully implemented for the 4396 camera device may be included here.<wbr/> Implementations are not expected 4397 to be consistent across all devices.<wbr/></p> 4398 <p>If no scene modes are supported by the camera device,<wbr/> this 4399 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p> 4400 <p>FACE_<wbr/>PRIORITY is always listed if face detection is 4401 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> > 4402 0</code>).<wbr/></p> 4403 </td> 4404 </tr> 4405 4406 4407 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4408 <!-- end of entry --> 4409 4410 4411 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 4412 <td class="entry_name 4413 " rowspan="3"> 4414 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 4415 </td> 4416 <td class="entry_type"> 4417 <span class="entry_type_name">byte</span> 4418 <span class="entry_type_container">x</span> 4419 4420 <span class="entry_type_array"> 4421 n 4422 </span> 4423 <span class="entry_type_visibility"> [public as enumList]</span> 4424 4425 4426 <span class="entry_type_hwlevel">[legacy] </span> 4427 4428 4429 <div class="entry_type_notes">List of enums.<wbr/></div> 4430 4431 4432 </td> <!-- entry_type --> 4433 4434 <td class="entry_description"> 4435 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> 4436 that are supported by this camera device.<wbr/></p> 4437 </td> 4438 4439 <td class="entry_units"> 4440 </td> 4441 4442 <td class="entry_range"> 4443 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p> 4444 </td> 4445 4446 <td class="entry_tags"> 4447 <ul class="entry_tags"> 4448 <li><a href="#tag_BC">BC</a></li> 4449 </ul> 4450 </td> 4451 4452 </tr> 4453 <tr class="entries_header"> 4454 <th class="th_details" colspan="5">Details</th> 4455 </tr> 4456 <tr class="entry_cont"> 4457 <td class="entry_details" colspan="5"> 4458 <p>OFF will always be listed.<wbr/></p> 4459 </td> 4460 </tr> 4461 4462 4463 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4464 <!-- end of entry --> 4465 4466 4467 <tr class="entry" id="static_android.control.awbAvailableModes"> 4468 <td class="entry_name 4469 " rowspan="3"> 4470 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 4471 </td> 4472 <td class="entry_type"> 4473 <span class="entry_type_name">byte</span> 4474 <span class="entry_type_container">x</span> 4475 4476 <span class="entry_type_array"> 4477 n 4478 </span> 4479 <span class="entry_type_visibility"> [public as enumList]</span> 4480 4481 4482 <span class="entry_type_hwlevel">[legacy] </span> 4483 4484 4485 <div class="entry_type_notes">List of enums</div> 4486 4487 4488 </td> <!-- entry_type --> 4489 4490 <td class="entry_description"> 4491 <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 4492 camera device.<wbr/></p> 4493 </td> 4494 4495 <td class="entry_units"> 4496 </td> 4497 4498 <td class="entry_range"> 4499 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p> 4500 </td> 4501 4502 <td class="entry_tags"> 4503 <ul class="entry_tags"> 4504 <li><a href="#tag_BC">BC</a></li> 4505 </ul> 4506 </td> 4507 4508 </tr> 4509 <tr class="entries_header"> 4510 <th class="th_details" colspan="5">Details</th> 4511 </tr> 4512 <tr class="entry_cont"> 4513 <td class="entry_details" colspan="5"> 4514 <p>Not all the auto-white-balance modes may be supported by a 4515 given camera device.<wbr/> This entry lists the valid modes for 4516 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 4517 <p>All camera devices will support ON mode.<wbr/></p> 4518 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF 4519 mode,<wbr/> which enables application control of white balance,<wbr/> by using 4520 <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 4521 mode camera devices.<wbr/></p> 4522 </td> 4523 </tr> 4524 4525 4526 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4527 <!-- end of entry --> 4528 4529 4530 <tr class="entry" id="static_android.control.maxRegions"> 4531 <td class="entry_name 4532 " rowspan="1"> 4533 android.<wbr/>control.<wbr/>max<wbr/>Regions 4534 </td> 4535 <td class="entry_type"> 4536 <span class="entry_type_name">int32</span> 4537 <span class="entry_type_container">x</span> 4538 4539 <span class="entry_type_array"> 4540 3 4541 </span> 4542 <span class="entry_type_visibility"> [hidden]</span> 4543 4544 4545 <span class="entry_type_hwlevel">[legacy] </span> 4546 4547 4548 4549 4550 </td> <!-- entry_type --> 4551 4552 <td class="entry_description"> 4553 <p>List of the maximum number of regions that can be used for metering in 4554 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 4555 this corresponds to the the maximum number of elements in 4556 <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/> 4557 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 4558 </td> 4559 4560 <td class="entry_units"> 4561 </td> 4562 4563 <td class="entry_range"> 4564 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 4565 this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 4566 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 4567 </td> 4568 4569 <td class="entry_tags"> 4570 <ul class="entry_tags"> 4571 <li><a href="#tag_BC">BC</a></li> 4572 </ul> 4573 </td> 4574 4575 </tr> 4576 4577 4578 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4579 <!-- end of entry --> 4580 4581 4582 <tr class="entry" id="static_android.control.maxRegionsAe"> 4583 <td class="entry_name 4584 " rowspan="5"> 4585 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae 4586 </td> 4587 <td class="entry_type"> 4588 <span class="entry_type_name">int32</span> 4589 4590 <span class="entry_type_visibility"> [public]</span> 4591 4592 <span class="entry_type_synthetic">[synthetic] </span> 4593 4594 <span class="entry_type_hwlevel">[legacy] </span> 4595 4596 4597 4598 4599 </td> <!-- entry_type --> 4600 4601 <td class="entry_description"> 4602 <p>The maximum number of metering regions that can be used by the auto-exposure (AE) 4603 routine.<wbr/></p> 4604 </td> 4605 4606 <td class="entry_units"> 4607 </td> 4608 4609 <td class="entry_range"> 4610 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 4611 value will be >= 1.<wbr/></p> 4612 </td> 4613 4614 <td class="entry_tags"> 4615 </td> 4616 4617 </tr> 4618 <tr class="entries_header"> 4619 <th class="th_details" colspan="5">Details</th> 4620 </tr> 4621 <tr class="entry_cont"> 4622 <td class="entry_details" colspan="5"> 4623 <p>This corresponds to the the maximum allowed number of elements in 4624 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 4625 </td> 4626 </tr> 4627 4628 <tr class="entries_header"> 4629 <th class="th_details" colspan="5">HAL Implementation Details</th> 4630 </tr> 4631 <tr class="entry_cont"> 4632 <td class="entry_details" colspan="5"> 4633 <p>This entry is private to the framework.<wbr/> Fill in 4634 maxRegions to have this entry be automatically populated.<wbr/></p> 4635 </td> 4636 </tr> 4637 4638 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4639 <!-- end of entry --> 4640 4641 4642 <tr class="entry" id="static_android.control.maxRegionsAwb"> 4643 <td class="entry_name 4644 " rowspan="5"> 4645 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb 4646 </td> 4647 <td class="entry_type"> 4648 <span class="entry_type_name">int32</span> 4649 4650 <span class="entry_type_visibility"> [public]</span> 4651 4652 <span class="entry_type_synthetic">[synthetic] </span> 4653 4654 <span class="entry_type_hwlevel">[legacy] </span> 4655 4656 4657 4658 4659 </td> <!-- entry_type --> 4660 4661 <td class="entry_description"> 4662 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB) 4663 routine.<wbr/></p> 4664 </td> 4665 4666 <td class="entry_units"> 4667 </td> 4668 4669 <td class="entry_range"> 4670 <p>Value will be >= 0.<wbr/></p> 4671 </td> 4672 4673 <td class="entry_tags"> 4674 </td> 4675 4676 </tr> 4677 <tr class="entries_header"> 4678 <th class="th_details" colspan="5">Details</th> 4679 </tr> 4680 <tr class="entry_cont"> 4681 <td class="entry_details" colspan="5"> 4682 <p>This corresponds to the the maximum allowed number of elements in 4683 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 4684 </td> 4685 </tr> 4686 4687 <tr class="entries_header"> 4688 <th class="th_details" colspan="5">HAL Implementation Details</th> 4689 </tr> 4690 <tr class="entry_cont"> 4691 <td class="entry_details" colspan="5"> 4692 <p>This entry is private to the framework.<wbr/> Fill in 4693 maxRegions to have this entry be automatically populated.<wbr/></p> 4694 </td> 4695 </tr> 4696 4697 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4698 <!-- end of entry --> 4699 4700 4701 <tr class="entry" id="static_android.control.maxRegionsAf"> 4702 <td class="entry_name 4703 " rowspan="5"> 4704 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af 4705 </td> 4706 <td class="entry_type"> 4707 <span class="entry_type_name">int32</span> 4708 4709 <span class="entry_type_visibility"> [public]</span> 4710 4711 <span class="entry_type_synthetic">[synthetic] </span> 4712 4713 <span class="entry_type_hwlevel">[legacy] </span> 4714 4715 4716 4717 4718 </td> <!-- entry_type --> 4719 4720 <td class="entry_description"> 4721 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p> 4722 </td> 4723 4724 <td class="entry_units"> 4725 </td> 4726 4727 <td class="entry_range"> 4728 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 4729 value will be >= 1.<wbr/></p> 4730 </td> 4731 4732 <td class="entry_tags"> 4733 </td> 4734 4735 </tr> 4736 <tr class="entries_header"> 4737 <th class="th_details" colspan="5">Details</th> 4738 </tr> 4739 <tr class="entry_cont"> 4740 <td class="entry_details" colspan="5"> 4741 <p>This corresponds to the the maximum allowed number of elements in 4742 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 4743 </td> 4744 </tr> 4745 4746 <tr class="entries_header"> 4747 <th class="th_details" colspan="5">HAL Implementation Details</th> 4748 </tr> 4749 <tr class="entry_cont"> 4750 <td class="entry_details" colspan="5"> 4751 <p>This entry is private to the framework.<wbr/> Fill in 4752 maxRegions to have this entry be automatically populated.<wbr/></p> 4753 </td> 4754 </tr> 4755 4756 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4757 <!-- end of entry --> 4758 4759 4760 <tr class="entry" id="static_android.control.sceneModeOverrides"> 4761 <td class="entry_name 4762 " rowspan="5"> 4763 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 4764 </td> 4765 <td class="entry_type"> 4766 <span class="entry_type_name">byte</span> 4767 <span class="entry_type_container">x</span> 4768 4769 <span class="entry_type_array"> 4770 3 x length(availableSceneModes) 4771 </span> 4772 <span class="entry_type_visibility"> [system]</span> 4773 4774 4775 <span class="entry_type_hwlevel">[limited] </span> 4776 4777 4778 4779 4780 </td> <!-- entry_type --> 4781 4782 <td class="entry_description"> 4783 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 4784 settings to use with each available scene mode.<wbr/></p> 4785 </td> 4786 4787 <td class="entry_units"> 4788 </td> 4789 4790 <td class="entry_range"> 4791 <p>For each available scene mode,<wbr/> the list must contain three 4792 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4793 <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 4794 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 4795 where aeMode has the lowest index position.<wbr/></p> 4796 </td> 4797 4798 <td class="entry_tags"> 4799 <ul class="entry_tags"> 4800 <li><a href="#tag_BC">BC</a></li> 4801 </ul> 4802 </td> 4803 4804 </tr> 4805 <tr class="entries_header"> 4806 <th class="th_details" colspan="5">Details</th> 4807 </tr> 4808 <tr class="entry_cont"> 4809 <td class="entry_details" colspan="5"> 4810 <p>When a scene mode is enabled,<wbr/> the camera device is expected 4811 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/> 4812 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 4813 that scene mode.<wbr/></p> 4814 <p>The order of this list matches that of availableSceneModes,<wbr/> 4815 with 3 entries for each mode.<wbr/> The overrides listed 4816 for FACE_<wbr/>PRIORITY are ignored,<wbr/> since for that 4817 mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4818 <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 4819 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 4820 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY 4821 overrides should be set to 0.<wbr/></p> 4822 <p>For example,<wbr/> if availableSceneModes contains 4823 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 4824 expects sceneModeOverrides to have 9 entries formatted like: 4825 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 4826 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 4827 </td> 4828 </tr> 4829 4830 <tr class="entries_header"> 4831 <th class="th_details" colspan="5">HAL Implementation Details</th> 4832 </tr> 4833 <tr class="entry_cont"> 4834 <td class="entry_details" colspan="5"> 4835 <p>To maintain backward compatibility,<wbr/> this list will be made available 4836 in the static metadata of the camera service.<wbr/> The camera service will 4837 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4838 <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 4839 mode other than FACE_<wbr/>PRIORITY.<wbr/></p> 4840 </td> 4841 </tr> 4842 4843 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4844 <!-- end of entry --> 4845 4846 4847 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations"> 4848 <td class="entry_name 4849 " rowspan="5"> 4850 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations 4851 </td> 4852 <td class="entry_type"> 4853 <span class="entry_type_name">int32</span> 4854 <span class="entry_type_container">x</span> 4855 4856 <span class="entry_type_array"> 4857 4 x n 4858 </span> 4859 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> 4860 4861 4862 <span class="entry_type_hwlevel">[limited] </span> 4863 4864 4865 4866 4867 </td> <!-- entry_type --> 4868 4869 <td class="entry_description"> 4870 <p>List of available high speed video size and fps range configurations 4871 supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max).<wbr/></p> 4872 </td> 4873 4874 <td class="entry_units"> 4875 </td> 4876 4877 <td class="entry_range"> 4878 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 60fps.<wbr/></p> 4879 </td> 4880 4881 <td class="entry_tags"> 4882 <ul class="entry_tags"> 4883 <li><a href="#tag_V1">V1</a></li> 4884 </ul> 4885 </td> 4886 4887 </tr> 4888 <tr class="entries_header"> 4889 <th class="th_details" colspan="5">Details</th> 4890 </tr> 4891 <tr class="entry_cont"> 4892 <td class="entry_details" colspan="5"> 4893 <p>When HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/> 4894 this metadata will list the supported high speed video size and fps range 4895 configurations.<wbr/> All the sizes listed in this configuration will be a subset 4896 of the sizes reported by StreamConfigurationMap#getOutputSizes for processed 4897 non-stalling formats.<wbr/></p> 4898 <p>For the high speed video use case,<wbr/> where the application will set 4899 <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> to HIGH_<wbr/>SPEED_<wbr/>VIDEO in capture requests,<wbr/> the application must 4900 select the video size and fps range from this metadata to configure the recording and 4901 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends 4902 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to 4903 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata 4904 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the 4905 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application 4906 must select one unique size from this metadata to use.<wbr/> Otherwise a request error might 4907 occur.<wbr/></p> 4908 <p>For normal video recording use case,<wbr/> where some application will NOT set 4909 <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> to HIGH_<wbr/>SPEED_<wbr/>VIDEO in capture requests,<wbr/> the fps ranges 4910 reported in this metadata must not be used to setup capture requests,<wbr/> or it will cause 4911 request error.<wbr/></p> 4912 </td> 4913 </tr> 4914 4915 <tr class="entries_header"> 4916 <th class="th_details" colspan="5">HAL Implementation Details</th> 4917 </tr> 4918 <tr class="entry_cont"> 4919 <td class="entry_details" colspan="5"> 4920 <p>All the sizes listed in this configuration will be a subset of the sizes reported by 4921 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/> 4922 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum 4923 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p> 4924 <p>Since the HIGH_<wbr/>SPEED_<wbr/>VIDEO mode may be turned on for preview view only case,<wbr/> the preview 4925 fps is bounded by device refresh rate (e.<wbr/>g.<wbr/> 60fps).<wbr/> For a given resolution,<wbr/> it is 4926 recommended that this list includes some fps ranges (e.<wbr/>g.<wbr/> [30,<wbr/> 60]) that is suitable 4927 for preview only streaming case.<wbr/></p> 4928 </td> 4929 </tr> 4930 4931 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4932 <!-- end of entry --> 4933 4934 4935 4936 <!-- end of kind --> 4937 </tbody> 4938 <tr><td colspan="6" class="kind">dynamic</td></tr> 4939 4940 <thead class="entries_header"> 4941 <tr> 4942 <th class="th_name">Property Name</th> 4943 <th class="th_type">Type</th> 4944 <th class="th_description">Description</th> 4945 <th class="th_units">Units</th> 4946 <th class="th_range">Range</th> 4947 <th class="th_tags">Tags</th> 4948 </tr> 4949 </thead> 4950 4951 <tbody> 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 4963 <td class="entry_name 4964 entry_name_deprecated 4965 " rowspan="3"> 4966 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 4967 </td> 4968 <td class="entry_type"> 4969 <span class="entry_type_name">int32</span> 4970 4971 <span class="entry_type_visibility"> [system]</span> 4972 4973 4974 4975 <span class="entry_type_deprecated">[deprecated] </span> 4976 4977 4978 4979 </td> <!-- entry_type --> 4980 4981 <td class="entry_description"> 4982 <p>The ID sent with the latest 4983 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 4984 </td> 4985 4986 <td class="entry_units"> 4987 </td> 4988 4989 <td class="entry_range"> 4990 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 4991 </td> 4992 4993 <td class="entry_tags"> 4994 </td> 4995 4996 </tr> 4997 <tr class="entries_header"> 4998 <th class="th_details" colspan="5">Details</th> 4999 </tr> 5000 <tr class="entry_cont"> 5001 <td class="entry_details" colspan="5"> 5002 <p>Must be 0 if no 5003 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 5004 by HAL.<wbr/> Always updated even if AE algorithm ignores the 5005 trigger</p> 5006 </td> 5007 </tr> 5008 5009 5010 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5011 <!-- end of entry --> 5012 5013 5014 <tr class="entry" id="dynamic_android.control.aeAntibandingMode"> 5015 <td class="entry_name 5016 " rowspan="5"> 5017 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 5018 </td> 5019 <td class="entry_type"> 5020 <span class="entry_type_name entry_type_name_enum">byte</span> 5021 5022 <span class="entry_type_visibility"> [public]</span> 5023 5024 5025 <span class="entry_type_hwlevel">[legacy] </span> 5026 5027 5028 5029 <ul class="entry_type_enum"> 5030 <li> 5031 <span class="entry_type_enum_name">OFF</span> 5032 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 5033 avoid banding problems.<wbr/></p></span> 5034 </li> 5035 <li> 5036 <span class="entry_type_enum_name">50HZ</span> 5037 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5038 avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 5039 </li> 5040 <li> 5041 <span class="entry_type_enum_name">60HZ</span> 5042 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5043 avoid banding problems with 60Hz illumination 5044 sources.<wbr/></p></span> 5045 </li> 5046 <li> 5047 <span class="entry_type_enum_name">AUTO</span> 5048 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 5049 antibanding routine to the current illumination 5050 condition.<wbr/> This is the default mode if AUTO is 5051 available on given camera device.<wbr/></p></span> 5052 </li> 5053 </ul> 5054 5055 </td> <!-- entry_type --> 5056 5057 <td class="entry_description"> 5058 <p>The desired setting for the camera device's auto-exposure 5059 algorithm's antibanding compensation.<wbr/></p> 5060 </td> 5061 5062 <td class="entry_units"> 5063 </td> 5064 5065 <td class="entry_range"> 5066 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 5067 </td> 5068 5069 <td class="entry_tags"> 5070 <ul class="entry_tags"> 5071 <li><a href="#tag_BC">BC</a></li> 5072 </ul> 5073 </td> 5074 5075 </tr> 5076 <tr class="entries_header"> 5077 <th class="th_details" colspan="5">Details</th> 5078 </tr> 5079 <tr class="entry_cont"> 5080 <td class="entry_details" colspan="5"> 5081 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 5082 lights,<wbr/> flicker at the rate of the power supply frequency 5083 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 5084 typically not noticeable to a person,<wbr/> it can be visible to 5085 a camera device.<wbr/> If a camera sets its exposure time to the 5086 wrong value,<wbr/> the flicker may become visible in the 5087 viewfinder as flicker or in a final captured image,<wbr/> as a 5088 set of variable-brightness bands across the image.<wbr/></p> 5089 <p>Therefore,<wbr/> the auto-exposure routines of camera devices 5090 include antibanding routines that ensure that the chosen 5091 exposure value will not cause such banding.<wbr/> The choice of 5092 exposure time depends on the rate of flicker,<wbr/> which the 5093 camera device can detect automatically,<wbr/> or the expected 5094 rate can be selected by the application using this 5095 control.<wbr/></p> 5096 <p>A given camera device may not support all of the possible 5097 options for the antibanding mode.<wbr/> The 5098 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 5099 the available modes for a given camera device.<wbr/></p> 5100 <p>AUTO mode is the default if it is available on given 5101 camera device.<wbr/> When AUTO mode is not available,<wbr/> the 5102 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 5103 and 60HZ will be available.<wbr/></p> 5104 <p>If manual exposure control is enabled (by setting 5105 <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/> 5106 then this setting has no effect,<wbr/> and the application must 5107 ensure it selects exposure times that do not cause banding 5108 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 5109 the application in this.<wbr/></p> 5110 </td> 5111 </tr> 5112 5113 <tr class="entries_header"> 5114 <th class="th_details" colspan="5">HAL Implementation Details</th> 5115 </tr> 5116 <tr class="entry_cont"> 5117 <td class="entry_details" colspan="5"> 5118 <p>For all capture request templates,<wbr/> this field must be set 5119 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 5120 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 5121 60HZ must be available.<wbr/></p> 5122 <p>If manual exposure control is enabled (by setting 5123 <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/> 5124 then the exposure values provided by the application must not be 5125 adjusted for antibanding.<wbr/></p> 5126 </td> 5127 </tr> 5128 5129 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5130 <!-- end of entry --> 5131 5132 5133 <tr class="entry" id="dynamic_android.control.aeExposureCompensation"> 5134 <td class="entry_name 5135 " rowspan="3"> 5136 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 5137 </td> 5138 <td class="entry_type"> 5139 <span class="entry_type_name">int32</span> 5140 5141 <span class="entry_type_visibility"> [public]</span> 5142 5143 5144 <span class="entry_type_hwlevel">[legacy] </span> 5145 5146 5147 5148 5149 </td> <!-- entry_type --> 5150 5151 <td class="entry_description"> 5152 <p>Adjustment to auto-exposure (AE) target image 5153 brightness.<wbr/></p> 5154 </td> 5155 5156 <td class="entry_units"> 5157 Compensation steps 5158 </td> 5159 5160 <td class="entry_range"> 5161 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 5162 </td> 5163 5164 <td class="entry_tags"> 5165 <ul class="entry_tags"> 5166 <li><a href="#tag_BC">BC</a></li> 5167 </ul> 5168 </td> 5169 5170 </tr> 5171 <tr class="entries_header"> 5172 <th class="th_details" colspan="5">Details</th> 5173 </tr> 5174 <tr class="entry_cont"> 5175 <td class="entry_details" colspan="5"> 5176 <p>The adjustment is measured as a count of steps,<wbr/> with the 5177 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 5178 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 5179 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 5180 will mean an exposure compensation of +2 EV; -3 will mean an 5181 exposure compensation of -1 EV.<wbr/> One EV represents a doubling 5182 of image brightness.<wbr/> Note that this control will only be 5183 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 5184 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 5185 <p>In the event of exposure compensation value being changed,<wbr/> camera device 5186 may take several frames to reach the newly requested exposure target.<wbr/> 5187 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 5188 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 5189 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 5190 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 5191 </td> 5192 </tr> 5193 5194 5195 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5196 <!-- end of entry --> 5197 5198 5199 <tr class="entry" id="dynamic_android.control.aeLock"> 5200 <td class="entry_name 5201 " rowspan="3"> 5202 android.<wbr/>control.<wbr/>ae<wbr/>Lock 5203 </td> 5204 <td class="entry_type"> 5205 <span class="entry_type_name entry_type_name_enum">byte</span> 5206 5207 <span class="entry_type_visibility"> [public as boolean]</span> 5208 5209 5210 <span class="entry_type_hwlevel">[legacy] </span> 5211 5212 5213 5214 <ul class="entry_type_enum"> 5215 <li> 5216 <span class="entry_type_enum_name">OFF</span> 5217 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 5218 is free to update its parameters.<wbr/></p></span> 5219 </li> 5220 <li> 5221 <span class="entry_type_enum_name">ON</span> 5222 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 5223 must not update the exposure and sensitivity parameters 5224 while the lock is active.<wbr/></p> 5225 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 5226 will still take effect while auto-exposure is locked.<wbr/></p> 5227 <p>Some rare LEGACY devices may not support 5228 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 5229 </li> 5230 </ul> 5231 5232 </td> <!-- entry_type --> 5233 5234 <td class="entry_description"> 5235 <p>Whether auto-exposure (AE) is currently locked to its latest 5236 calculated values.<wbr/></p> 5237 </td> 5238 5239 <td class="entry_units"> 5240 </td> 5241 5242 <td class="entry_range"> 5243 </td> 5244 5245 <td class="entry_tags"> 5246 <ul class="entry_tags"> 5247 <li><a href="#tag_BC">BC</a></li> 5248 </ul> 5249 </td> 5250 5251 </tr> 5252 <tr class="entries_header"> 5253 <th class="th_details" colspan="5">Details</th> 5254 </tr> 5255 <tr class="entry_cont"> 5256 <td class="entry_details" colspan="5"> 5257 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 5258 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 5259 <p>Note that even when AE is locked,<wbr/> the flash may be fired if 5260 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 5261 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 5262 <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 5263 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 5264 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 5265 when AE is already locked,<wbr/> the camera device will not change the exposure time 5266 (<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>) 5267 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 5268 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 5269 <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/></p> 5270 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 5271 get locked do not necessarily correspond to the settings that were present in the 5272 latest capture result received from the camera device,<wbr/> since additional captures 5273 and AE updates may have occurred even before the result was sent out.<wbr/> If an 5274 application is switching between automatic and manual control and wishes to eliminate 5275 any flicker during the switch,<wbr/> the following procedure is recommended:</p> 5276 <ol> 5277 <li>Starting in auto-AE mode:</li> 5278 <li>Lock AE</li> 5279 <li>Wait for the first result to be output that has the AE locked</li> 5280 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 5281 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 5282 </ol> 5283 <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> 5284 </td> 5285 </tr> 5286 5287 5288 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5289 <!-- end of entry --> 5290 5291 5292 <tr class="entry" id="dynamic_android.control.aeMode"> 5293 <td class="entry_name 5294 " rowspan="3"> 5295 android.<wbr/>control.<wbr/>ae<wbr/>Mode 5296 </td> 5297 <td class="entry_type"> 5298 <span class="entry_type_name entry_type_name_enum">byte</span> 5299 5300 <span class="entry_type_visibility"> [public]</span> 5301 5302 5303 <span class="entry_type_hwlevel">[legacy] </span> 5304 5305 5306 5307 <ul class="entry_type_enum"> 5308 <li> 5309 <span class="entry_type_enum_name">OFF</span> 5310 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 5311 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5312 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 5313 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 5314 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 5315 a flash unit for this camera device.<wbr/></p> 5316 <p>Note that auto-white balance (AWB) and auto-focus (AF) 5317 behavior is device dependent when AE is in OFF mode.<wbr/> 5318 To have consistent behavior across different devices,<wbr/> 5319 it is recommended to either set AWB and AF to OFF mode 5320 or lock AWB and AF before setting AE to OFF.<wbr/> 5321 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/> 5322 <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> 5323 for more details.<wbr/></p> 5324 <p>LEGACY devices do not support the OFF mode and will 5325 override attempts to use this value to ON.<wbr/></p></span> 5326 </li> 5327 <li> 5328 <span class="entry_type_enum_name">ON</span> 5329 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 5330 with no flash control.<wbr/></p> 5331 <p>The application's values for 5332 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5333 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 5334 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 5335 application has control over the various 5336 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 5337 </li> 5338 <li> 5339 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 5340 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 5341 the camera's flash unit,<wbr/> firing it in low-light 5342 conditions.<wbr/></p> 5343 <p>The flash may be fired during a precapture sequence 5344 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 5345 may be fired for captures for which the 5346 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 5347 STILL_<wbr/>CAPTURE</p></span> 5348 </li> 5349 <li> 5350 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 5351 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 5352 the camera's flash unit,<wbr/> always firing it for still 5353 captures.<wbr/></p> 5354 <p>The flash may be fired during a precapture sequence 5355 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 5356 will always be fired for captures for which the 5357 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 5358 STILL_<wbr/>CAPTURE</p></span> 5359 </li> 5360 <li> 5361 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 5362 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 5363 reduction.<wbr/></p> 5364 <p>If deemed necessary by the camera device,<wbr/> a red eye 5365 reduction flash will fire during the precapture 5366 sequence.<wbr/></p></span> 5367 </li> 5368 </ul> 5369 5370 </td> <!-- entry_type --> 5371 5372 <td class="entry_description"> 5373 <p>The desired mode for the camera device's 5374 auto-exposure routine.<wbr/></p> 5375 </td> 5376 5377 <td class="entry_units"> 5378 </td> 5379 5380 <td class="entry_range"> 5381 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 5382 </td> 5383 5384 <td class="entry_tags"> 5385 <ul class="entry_tags"> 5386 <li><a href="#tag_BC">BC</a></li> 5387 </ul> 5388 </td> 5389 5390 </tr> 5391 <tr class="entries_header"> 5392 <th class="th_details" colspan="5">Details</th> 5393 </tr> 5394 <tr class="entry_cont"> 5395 <td class="entry_details" colspan="5"> 5396 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 5397 AUTO.<wbr/></p> 5398 <p>When set to any of the ON modes,<wbr/> the camera device's 5399 auto-exposure routine is enabled,<wbr/> overriding the 5400 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 5401 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5402 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 5403 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 5404 is selected,<wbr/> the camera device's flash unit controls are 5405 also overridden.<wbr/></p> 5406 <p>The FLASH modes are only available if the camera device 5407 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> 5408 <p>If flash TORCH mode is desired,<wbr/> this field must be set to 5409 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 5410 <p>When set to any of the ON modes,<wbr/> the values chosen by the 5411 camera device auto-exposure routine for the overridden 5412 fields for a given capture will be available in its 5413 CaptureResult.<wbr/></p> 5414 </td> 5415 </tr> 5416 5417 5418 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5419 <!-- end of entry --> 5420 5421 5422 <tr class="entry" id="dynamic_android.control.aeRegions"> 5423 <td class="entry_name 5424 " rowspan="5"> 5425 android.<wbr/>control.<wbr/>ae<wbr/>Regions 5426 </td> 5427 <td class="entry_type"> 5428 <span class="entry_type_name">int32</span> 5429 <span class="entry_type_container">x</span> 5430 5431 <span class="entry_type_array"> 5432 5 x area_count 5433 </span> 5434 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 5435 5436 5437 5438 5439 5440 5441 </td> <!-- entry_type --> 5442 5443 <td class="entry_description"> 5444 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 5445 </td> 5446 5447 <td class="entry_units"> 5448 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 5449 </td> 5450 5451 <td class="entry_range"> 5452 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 5453 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 5454 </td> 5455 5456 <td class="entry_tags"> 5457 <ul class="entry_tags"> 5458 <li><a href="#tag_BC">BC</a></li> 5459 </ul> 5460 </td> 5461 5462 </tr> 5463 <tr class="entries_header"> 5464 <th class="th_details" colspan="5">Details</th> 5465 </tr> 5466 <tr class="entry_cont"> 5467 <td class="entry_details" colspan="5"> 5468 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 5469 Otherwise will always be present.<wbr/></p> 5470 <p>The maximum number of regions supported by the device is determined by the value 5471 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 5472 <p>The coordinate system is based on the active pixel array,<wbr/> 5473 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 5474 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 5475 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 5476 bottom-right pixel in the active pixel array.<wbr/></p> 5477 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 5478 for every pixel in the area.<wbr/> This means that a large metering area 5479 with the same weight as a smaller area will have more effect in 5480 the metering result.<wbr/> Metering areas can partially overlap and the 5481 camera device will add the weights in the overlap region.<wbr/></p> 5482 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 5483 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 5484 weight is ignored.<wbr/></p> 5485 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 5486 camera device.<wbr/></p> 5487 <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 5488 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 5489 region and output only the intersection rectangle as the metering region in the result 5490 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 5491 not reported in the result metadata.<wbr/></p> 5492 </td> 5493 </tr> 5494 5495 <tr class="entries_header"> 5496 <th class="th_details" colspan="5">HAL Implementation Details</th> 5497 </tr> 5498 <tr class="entry_cont"> 5499 <td class="entry_details" colspan="5"> 5500 <p>The HAL level representation of MeteringRectangle[] is a 5501 int[5 * area_<wbr/>count].<wbr/> 5502 Every five elements represent a metering region of 5503 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 5504 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 5505 exclusive on xmax and ymax.<wbr/></p> 5506 </td> 5507 </tr> 5508 5509 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5510 <!-- end of entry --> 5511 5512 5513 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange"> 5514 <td class="entry_name 5515 " rowspan="3"> 5516 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 5517 </td> 5518 <td class="entry_type"> 5519 <span class="entry_type_name">int32</span> 5520 <span class="entry_type_container">x</span> 5521 5522 <span class="entry_type_array"> 5523 2 5524 </span> 5525 <span class="entry_type_visibility"> [public as rangeInt]</span> 5526 5527 5528 <span class="entry_type_hwlevel">[legacy] </span> 5529 5530 5531 5532 5533 </td> <!-- entry_type --> 5534 5535 <td class="entry_description"> 5536 <p>Range over which the auto-exposure routine can 5537 adjust the capture frame rate to maintain good 5538 exposure.<wbr/></p> 5539 </td> 5540 5541 <td class="entry_units"> 5542 Frames per second (FPS) 5543 </td> 5544 5545 <td class="entry_range"> 5546 <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> 5547 </td> 5548 5549 <td class="entry_tags"> 5550 <ul class="entry_tags"> 5551 <li><a href="#tag_BC">BC</a></li> 5552 </ul> 5553 </td> 5554 5555 </tr> 5556 <tr class="entries_header"> 5557 <th class="th_details" colspan="5">Details</th> 5558 </tr> 5559 <tr class="entry_cont"> 5560 <td class="entry_details" colspan="5"> 5561 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 5562 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 5563 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 5564 </td> 5565 </tr> 5566 5567 5568 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5569 <!-- end of entry --> 5570 5571 5572 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger"> 5573 <td class="entry_name 5574 " rowspan="3"> 5575 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 5576 </td> 5577 <td class="entry_type"> 5578 <span class="entry_type_name entry_type_name_enum">byte</span> 5579 5580 <span class="entry_type_visibility"> [public]</span> 5581 5582 5583 <span class="entry_type_hwlevel">[limited] </span> 5584 5585 5586 5587 <ul class="entry_type_enum"> 5588 <li> 5589 <span class="entry_type_enum_name">IDLE</span> 5590 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 5591 </li> 5592 <li> 5593 <span class="entry_type_enum_name">START</span> 5594 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 5595 by the camera device.<wbr/></p> 5596 <p>The exact effect of the precapture trigger depends on 5597 the current AE mode and state.<wbr/></p></span> 5598 </li> 5599 </ul> 5600 5601 </td> <!-- entry_type --> 5602 5603 <td class="entry_description"> 5604 <p>Whether the camera device will trigger a precapture 5605 metering sequence when it processes this request.<wbr/></p> 5606 </td> 5607 5608 <td class="entry_units"> 5609 </td> 5610 5611 <td class="entry_range"> 5612 </td> 5613 5614 <td class="entry_tags"> 5615 <ul class="entry_tags"> 5616 <li><a href="#tag_BC">BC</a></li> 5617 </ul> 5618 </td> 5619 5620 </tr> 5621 <tr class="entries_header"> 5622 <th class="th_details" colspan="5">Details</th> 5623 </tr> 5624 <tr class="entry_cont"> 5625 <td class="entry_details" colspan="5"> 5626 <p>This entry is normally set to IDLE,<wbr/> or is not 5627 included at all in the request settings.<wbr/> When included and 5628 set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 5629 precapture metering sequence.<wbr/></p> 5630 <p>The precapture sequence should be triggered before starting a 5631 high-quality still capture for final metering decisions to 5632 be made,<wbr/> and for firing pre-capture flash pulses to estimate 5633 scene brightness and required final capture flash power,<wbr/> when 5634 the flash is enabled.<wbr/></p> 5635 <p>Normally,<wbr/> this entry should be set to START for only a 5636 single request,<wbr/> and the application should wait until the 5637 sequence completes before starting a new one.<wbr/></p> 5638 <p>When a precapture metering sequence is finished,<wbr/> the camera device 5639 may lock the auto-exposure routine internally to be able to accurately expose the 5640 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 5641 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 5642 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 5643 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 5644 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 5645 still capture request after the precapture sequence completes.<wbr/></p> 5646 <p>The exact effect of auto-exposure (AE) precapture trigger 5647 depends on the current AE mode and state; see 5648 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 5649 details.<wbr/></p> 5650 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 5651 capturing a high-resolution JPEG image will automatically trigger a 5652 precapture sequence before the high-resolution capture,<wbr/> including 5653 potentially firing a pre-capture flash.<wbr/></p> 5654 </td> 5655 </tr> 5656 5657 5658 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5659 <!-- end of entry --> 5660 5661 5662 <tr class="entry" id="dynamic_android.control.aeState"> 5663 <td class="entry_name 5664 " rowspan="3"> 5665 android.<wbr/>control.<wbr/>ae<wbr/>State 5666 </td> 5667 <td class="entry_type"> 5668 <span class="entry_type_name entry_type_name_enum">byte</span> 5669 5670 <span class="entry_type_visibility"> [public]</span> 5671 5672 5673 <span class="entry_type_hwlevel">[limited] </span> 5674 5675 5676 5677 <ul class="entry_type_enum"> 5678 <li> 5679 <span class="entry_type_enum_name">INACTIVE</span> 5680 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p> 5681 <p>When a camera device is opened,<wbr/> it starts in 5682 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 5683 this state in capture result.<wbr/></p></span> 5684 </li> 5685 <li> 5686 <span class="entry_type_enum_name">SEARCHING</span> 5687 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 5688 for the current scene.<wbr/></p> 5689 <p>This is a transient state,<wbr/> the camera device may skip 5690 reporting this state in capture result.<wbr/></p></span> 5691 </li> 5692 <li> 5693 <span class="entry_type_enum_name">CONVERGED</span> 5694 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 5695 current scene.<wbr/></p></span> 5696 </li> 5697 <li> 5698 <span class="entry_type_enum_name">LOCKED</span> 5699 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 5700 </li> 5701 <li> 5702 <span class="entry_type_enum_name">FLASH_REQUIRED</span> 5703 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 5704 needs to be fired for good quality still 5705 capture.<wbr/></p></span> 5706 </li> 5707 <li> 5708 <span class="entry_type_enum_name">PRECAPTURE</span> 5709 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 5710 and is currently executing it.<wbr/></p> 5711 <p>Precapture can be triggered through setting 5712 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/></p> 5713 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED 5714 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient 5715 state,<wbr/> the camera device may skip reporting this state in 5716 capture result.<wbr/></p></span> 5717 </li> 5718 </ul> 5719 5720 </td> <!-- entry_type --> 5721 5722 <td class="entry_description"> 5723 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p> 5724 </td> 5725 5726 <td class="entry_units"> 5727 </td> 5728 5729 <td class="entry_range"> 5730 </td> 5731 5732 <td class="entry_tags"> 5733 </td> 5734 5735 </tr> 5736 <tr class="entries_header"> 5737 <th class="th_details" colspan="5">Details</th> 5738 </tr> 5739 <tr class="entry_cont"> 5740 <td class="entry_details" colspan="5"> 5741 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 5742 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 5743 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 5744 the algorithm states to INACTIVE.<wbr/></p> 5745 <p>The camera device can do several state transitions between two results,<wbr/> if it is 5746 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 5747 seen in a result.<wbr/></p> 5748 <p>The state in the result is the state for this image (in sync with this image): if 5749 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 5750 be good to use.<wbr/></p> 5751 <p>Below are state transition tables for different AE modes.<wbr/></p> 5752 <table> 5753 <thead> 5754 <tr> 5755 <th align="center">State</th> 5756 <th align="center">Transition Cause</th> 5757 <th align="center">New State</th> 5758 <th align="center">Notes</th> 5759 </tr> 5760 </thead> 5761 <tbody> 5762 <tr> 5763 <td align="center">INACTIVE</td> 5764 <td align="center"></td> 5765 <td align="center">INACTIVE</td> 5766 <td align="center">Camera device auto exposure algorithm is disabled</td> 5767 </tr> 5768 </tbody> 5769 </table> 5770 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p> 5771 <table> 5772 <thead> 5773 <tr> 5774 <th align="center">State</th> 5775 <th align="center">Transition Cause</th> 5776 <th align="center">New State</th> 5777 <th align="center">Notes</th> 5778 </tr> 5779 </thead> 5780 <tbody> 5781 <tr> 5782 <td align="center">INACTIVE</td> 5783 <td align="center">Camera device initiates AE scan</td> 5784 <td align="center">SEARCHING</td> 5785 <td align="center">Values changing</td> 5786 </tr> 5787 <tr> 5788 <td align="center">INACTIVE</td> 5789 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 5790 <td align="center">LOCKED</td> 5791 <td align="center">Values locked</td> 5792 </tr> 5793 <tr> 5794 <td align="center">SEARCHING</td> 5795 <td align="center">Camera device finishes AE scan</td> 5796 <td align="center">CONVERGED</td> 5797 <td align="center">Good values,<wbr/> not changing</td> 5798 </tr> 5799 <tr> 5800 <td align="center">SEARCHING</td> 5801 <td align="center">Camera device finishes AE scan</td> 5802 <td align="center">FLASH_<wbr/>REQUIRED</td> 5803 <td align="center">Converged but too dark w/<wbr/>o flash</td> 5804 </tr> 5805 <tr> 5806 <td align="center">SEARCHING</td> 5807 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 5808 <td align="center">LOCKED</td> 5809 <td align="center">Values locked</td> 5810 </tr> 5811 <tr> 5812 <td align="center">CONVERGED</td> 5813 <td align="center">Camera device initiates AE scan</td> 5814 <td align="center">SEARCHING</td> 5815 <td align="center">Values changing</td> 5816 </tr> 5817 <tr> 5818 <td align="center">CONVERGED</td> 5819 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 5820 <td align="center">LOCKED</td> 5821 <td align="center">Values locked</td> 5822 </tr> 5823 <tr> 5824 <td align="center">FLASH_<wbr/>REQUIRED</td> 5825 <td align="center">Camera device initiates AE scan</td> 5826 <td align="center">SEARCHING</td> 5827 <td align="center">Values changing</td> 5828 </tr> 5829 <tr> 5830 <td align="center">FLASH_<wbr/>REQUIRED</td> 5831 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 5832 <td align="center">LOCKED</td> 5833 <td align="center">Values locked</td> 5834 </tr> 5835 <tr> 5836 <td align="center">LOCKED</td> 5837 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 5838 <td align="center">SEARCHING</td> 5839 <td align="center">Values not good after unlock</td> 5840 </tr> 5841 <tr> 5842 <td align="center">LOCKED</td> 5843 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 5844 <td align="center">CONVERGED</td> 5845 <td align="center">Values good after unlock</td> 5846 </tr> 5847 <tr> 5848 <td align="center">LOCKED</td> 5849 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 5850 <td align="center">FLASH_<wbr/>REQUIRED</td> 5851 <td align="center">Exposure good,<wbr/> but too dark</td> 5852 </tr> 5853 <tr> 5854 <td align="center">PRECAPTURE</td> 5855 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 5856 <td align="center">CONVERGED</td> 5857 <td align="center">Ready for high-quality capture</td> 5858 </tr> 5859 <tr> 5860 <td align="center">PRECAPTURE</td> 5861 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 5862 <td align="center">LOCKED</td> 5863 <td align="center">Ready for high-quality capture</td> 5864 </tr> 5865 <tr> 5866 <td align="center">Any state</td> 5867 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 5868 <td align="center">PRECAPTURE</td> 5869 <td align="center">Start AE precapture metering sequence</td> 5870 </tr> 5871 </tbody> 5872 </table> 5873 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 5874 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 5875 can be skipped in that manner is called a transient state.<wbr/></p> 5876 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions 5877 listed in above table,<wbr/> it is also legal for the camera device to skip one or more 5878 transient states between two results.<wbr/> See below table for examples:</p> 5879 <table> 5880 <thead> 5881 <tr> 5882 <th align="center">State</th> 5883 <th align="center">Transition Cause</th> 5884 <th align="center">New State</th> 5885 <th align="center">Notes</th> 5886 </tr> 5887 </thead> 5888 <tbody> 5889 <tr> 5890 <td align="center">INACTIVE</td> 5891 <td align="center">Camera device finished AE scan</td> 5892 <td align="center">CONVERGED</td> 5893 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 5894 </tr> 5895 <tr> 5896 <td align="center">Any state</td> 5897 <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> 5898 <td align="center">FLASH_<wbr/>REQUIRED</td> 5899 <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> 5900 </tr> 5901 <tr> 5902 <td align="center">Any state</td> 5903 <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> 5904 <td align="center">CONVERGED</td> 5905 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 5906 </tr> 5907 <tr> 5908 <td align="center">CONVERGED</td> 5909 <td align="center">Camera device finished AE scan</td> 5910 <td align="center">FLASH_<wbr/>REQUIRED</td> 5911 <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> 5912 </tr> 5913 <tr> 5914 <td align="center">FLASH_<wbr/>REQUIRED</td> 5915 <td align="center">Camera device finished AE scan</td> 5916 <td align="center">CONVERGED</td> 5917 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 5918 </tr> 5919 </tbody> 5920 </table> 5921 </td> 5922 </tr> 5923 5924 5925 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5926 <!-- end of entry --> 5927 5928 5929 <tr class="entry" id="dynamic_android.control.afMode"> 5930 <td class="entry_name 5931 " rowspan="5"> 5932 android.<wbr/>control.<wbr/>af<wbr/>Mode 5933 </td> 5934 <td class="entry_type"> 5935 <span class="entry_type_name entry_type_name_enum">byte</span> 5936 5937 <span class="entry_type_visibility"> [public]</span> 5938 5939 5940 <span class="entry_type_hwlevel">[legacy] </span> 5941 5942 5943 5944 <ul class="entry_type_enum"> 5945 <li> 5946 <span class="entry_type_enum_name">OFF</span> 5947 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 5948 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 5949 application.<wbr/></p></span> 5950 </li> 5951 <li> 5952 <span class="entry_type_enum_name">AUTO</span> 5953 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 5954 <p>In this mode,<wbr/> the lens does not move unless 5955 the autofocus trigger action is called.<wbr/> When that trigger 5956 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 5957 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 5958 <p>Always supported if lens is not fixed focus.<wbr/></p> 5959 <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 5960 is fixed-focus.<wbr/></p> 5961 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 5962 and sets the AF state to INACTIVE.<wbr/></p></span> 5963 </li> 5964 <li> 5965 <span class="entry_type_enum_name">MACRO</span> 5966 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 5967 <p>In this mode,<wbr/> the lens does not move unless the 5968 autofocus trigger action is called.<wbr/> When that trigger is 5969 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 5970 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 5971 mode is optimized for focusing on objects very close to 5972 the camera.<wbr/></p> 5973 <p>When that trigger is activated,<wbr/> AF will transition to 5974 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 5975 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 5976 position to default,<wbr/> and sets the AF state to 5977 INACTIVE.<wbr/></p></span> 5978 </li> 5979 <li> 5980 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 5981 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 5982 position continually to attempt to provide a 5983 constantly-in-focus image stream.<wbr/></p> 5984 <p>The focusing behavior should be suitable for good quality 5985 video recording; typically this means slower focus 5986 movement and no overshoots.<wbr/> When the AF trigger is not 5987 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 5988 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 5989 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 5990 the algorithm should immediately transition into 5991 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 5992 lens position until a cancel AF trigger is received.<wbr/></p> 5993 <p>Once cancel is received,<wbr/> the algorithm should transition 5994 back to INACTIVE and resume passive scan.<wbr/> Note that this 5995 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 5996 ongoing PASSIVE_<wbr/>SCAN must immediately be 5997 canceled.<wbr/></p></span> 5998 </li> 5999 <li> 6000 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 6001 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 6002 position continually to attempt to provide a 6003 constantly-in-focus image stream.<wbr/></p> 6004 <p>The focusing behavior should be suitable for still image 6005 capture; typically this means focusing as fast as 6006 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 6007 algorithm should start in INACTIVE state,<wbr/> and then 6008 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 6009 appropriate as it attempts to maintain focus.<wbr/> When the AF 6010 trigger is activated,<wbr/> the algorithm should finish its 6011 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 6012 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 6013 lens position until a cancel AF trigger is received.<wbr/></p> 6014 <p>When the AF cancel trigger is activated,<wbr/> the algorithm 6015 should transition back to INACTIVE and then act as if it 6016 has just been started.<wbr/></p></span> 6017 </li> 6018 <li> 6019 <span class="entry_type_enum_name">EDOF</span> 6020 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 6021 <p>The camera device will produce images with an extended 6022 depth of field automatically; no special focusing 6023 operations need to be done before taking a picture.<wbr/></p> 6024 <p>AF triggers are ignored,<wbr/> and the AF state will always be 6025 INACTIVE.<wbr/></p></span> 6026 </li> 6027 </ul> 6028 6029 </td> <!-- entry_type --> 6030 6031 <td class="entry_description"> 6032 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 6033 mode it is set to.<wbr/></p> 6034 </td> 6035 6036 <td class="entry_units"> 6037 </td> 6038 6039 <td class="entry_range"> 6040 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 6041 </td> 6042 6043 <td class="entry_tags"> 6044 <ul class="entry_tags"> 6045 <li><a href="#tag_BC">BC</a></li> 6046 </ul> 6047 </td> 6048 6049 </tr> 6050 <tr class="entries_header"> 6051 <th class="th_details" colspan="5">Details</th> 6052 </tr> 6053 <tr class="entry_cont"> 6054 <td class="entry_details" colspan="5"> 6055 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 6056 (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 6057 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 6058 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 6059 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> 6060 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 6061 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 6062 in result metadata.<wbr/></p> 6063 </td> 6064 </tr> 6065 6066 <tr class="entries_header"> 6067 <th class="th_details" colspan="5">HAL Implementation Details</th> 6068 </tr> 6069 <tr class="entry_cont"> 6070 <td class="entry_details" colspan="5"> 6071 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 6072 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 6073 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 6074 <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 6075 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 6076 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 6077 the same focal plane remains in focus.<wbr/></p> 6078 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 6079 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 6080 (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 6081 same lock behavior as above.<wbr/></p> 6082 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 6083 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/> 6084 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 6085 manual control.<wbr/></p> 6086 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 6087 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 6088 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 6089 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 6090 that will arise on camera modules with open-loop VCMs.<wbr/></p> 6091 </td> 6092 </tr> 6093 6094 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6095 <!-- end of entry --> 6096 6097 6098 <tr class="entry" id="dynamic_android.control.afRegions"> 6099 <td class="entry_name 6100 " rowspan="5"> 6101 android.<wbr/>control.<wbr/>af<wbr/>Regions 6102 </td> 6103 <td class="entry_type"> 6104 <span class="entry_type_name">int32</span> 6105 <span class="entry_type_container">x</span> 6106 6107 <span class="entry_type_array"> 6108 5 x area_count 6109 </span> 6110 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 6111 6112 6113 6114 6115 6116 6117 </td> <!-- entry_type --> 6118 6119 <td class="entry_description"> 6120 <p>List of metering areas to use for auto-focus.<wbr/></p> 6121 </td> 6122 6123 <td class="entry_units"> 6124 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 6125 </td> 6126 6127 <td class="entry_range"> 6128 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 6129 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 6130 </td> 6131 6132 <td class="entry_tags"> 6133 <ul class="entry_tags"> 6134 <li><a href="#tag_BC">BC</a></li> 6135 </ul> 6136 </td> 6137 6138 </tr> 6139 <tr class="entries_header"> 6140 <th class="th_details" colspan="5">Details</th> 6141 </tr> 6142 <tr class="entry_cont"> 6143 <td class="entry_details" colspan="5"> 6144 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 6145 Otherwise will always be present.<wbr/></p> 6146 <p>The maximum number of focus areas supported by the device is determined by the value 6147 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 6148 <p>The coordinate system is based on the active pixel array,<wbr/> 6149 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 6150 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 6151 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 6152 bottom-right pixel in the active pixel array.<wbr/></p> 6153 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 6154 for every pixel in the area.<wbr/> This means that a large metering area 6155 with the same weight as a smaller area will have more effect in 6156 the metering result.<wbr/> Metering areas can partially overlap and the 6157 camera device will add the weights in the overlap region.<wbr/></p> 6158 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 6159 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 6160 ignored.<wbr/></p> 6161 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 6162 camera device.<wbr/></p> 6163 <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 6164 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 6165 region and output only the intersection rectangle as the metering region in the result 6166 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 6167 not reported in the result metadata.<wbr/></p> 6168 </td> 6169 </tr> 6170 6171 <tr class="entries_header"> 6172 <th class="th_details" colspan="5">HAL Implementation Details</th> 6173 </tr> 6174 <tr class="entry_cont"> 6175 <td class="entry_details" colspan="5"> 6176 <p>The HAL level representation of MeteringRectangle[] is a 6177 int[5 * area_<wbr/>count].<wbr/> 6178 Every five elements represent a metering region of 6179 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 6180 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 6181 exclusive on xmax and ymax.<wbr/></p> 6182 </td> 6183 </tr> 6184 6185 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6186 <!-- end of entry --> 6187 6188 6189 <tr class="entry" id="dynamic_android.control.afTrigger"> 6190 <td class="entry_name 6191 " rowspan="3"> 6192 android.<wbr/>control.<wbr/>af<wbr/>Trigger 6193 </td> 6194 <td class="entry_type"> 6195 <span class="entry_type_name entry_type_name_enum">byte</span> 6196 6197 <span class="entry_type_visibility"> [public]</span> 6198 6199 6200 <span class="entry_type_hwlevel">[legacy] </span> 6201 6202 6203 6204 <ul class="entry_type_enum"> 6205 <li> 6206 <span class="entry_type_enum_name">IDLE</span> 6207 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 6208 </li> 6209 <li> 6210 <span class="entry_type_enum_name">START</span> 6211 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 6212 </li> 6213 <li> 6214 <span class="entry_type_enum_name">CANCEL</span> 6215 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 6216 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 6217 </li> 6218 </ul> 6219 6220 </td> <!-- entry_type --> 6221 6222 <td class="entry_description"> 6223 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 6224 </td> 6225 6226 <td class="entry_units"> 6227 </td> 6228 6229 <td class="entry_range"> 6230 </td> 6231 6232 <td class="entry_tags"> 6233 <ul class="entry_tags"> 6234 <li><a href="#tag_BC">BC</a></li> 6235 </ul> 6236 </td> 6237 6238 </tr> 6239 <tr class="entries_header"> 6240 <th class="th_details" colspan="5">Details</th> 6241 </tr> 6242 <tr class="entry_cont"> 6243 <td class="entry_details" colspan="5"> 6244 <p>This entry is normally set to IDLE,<wbr/> or is not 6245 included at all in the request settings.<wbr/></p> 6246 <p>When included and set to START,<wbr/> the camera device will trigger the 6247 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 6248 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 6249 and return to its initial AF state.<wbr/></p> 6250 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 6251 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 6252 START for multiple captures in a row means restarting the AF operation over 6253 and over again.<wbr/></p> 6254 <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> 6255 </td> 6256 </tr> 6257 6258 6259 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6260 <!-- end of entry --> 6261 6262 6263 <tr class="entry" id="dynamic_android.control.afState"> 6264 <td class="entry_name 6265 " rowspan="3"> 6266 android.<wbr/>control.<wbr/>af<wbr/>State 6267 </td> 6268 <td class="entry_type"> 6269 <span class="entry_type_name entry_type_name_enum">byte</span> 6270 6271 <span class="entry_type_visibility"> [public]</span> 6272 6273 6274 <span class="entry_type_hwlevel">[legacy] </span> 6275 6276 6277 6278 <ul class="entry_type_enum"> 6279 <li> 6280 <span class="entry_type_enum_name">INACTIVE</span> 6281 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked 6282 to scan.<wbr/></p> 6283 <p>When a camera device is opened,<wbr/> it starts in this 6284 state.<wbr/> This is a transient state,<wbr/> the camera device may 6285 skip reporting this state in capture 6286 result.<wbr/></p></span> 6287 </li> 6288 <li> 6289 <span class="entry_type_enum_name">PASSIVE_SCAN</span> 6290 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the 6291 camera device in a continuous autofocus mode.<wbr/></p> 6292 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 6293 state,<wbr/> the camera device may skip reporting this state in 6294 capture result.<wbr/></p></span> 6295 </li> 6296 <li> 6297 <span class="entry_type_enum_name">PASSIVE_FOCUSED</span> 6298 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may 6299 restart scanning at any time.<wbr/></p> 6300 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 6301 state,<wbr/> the camera device may skip reporting this state in 6302 capture result.<wbr/></p></span> 6303 </li> 6304 <li> 6305 <span class="entry_type_enum_name">ACTIVE_SCAN</span> 6306 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was 6307 triggered by AF trigger.<wbr/></p> 6308 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient 6309 state,<wbr/> the camera device may skip reporting this state in 6310 capture result.<wbr/></p></span> 6311 </li> 6312 <li> 6313 <span class="entry_type_enum_name">FOCUSED_LOCKED</span> 6314 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked 6315 focus.<wbr/></p> 6316 <p>This state is reached only after an explicit START AF trigger has been 6317 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p> 6318 <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 6319 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> 6320 </li> 6321 <li> 6322 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span> 6323 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked 6324 focus.<wbr/></p> 6325 <p>This state is reached only after an explicit START AF trigger has been 6326 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p> 6327 <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 6328 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> 6329 </li> 6330 <li> 6331 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span> 6332 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/> 6333 and may restart scanning at any time.<wbr/></p> 6334 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera 6335 device may skip reporting this state in capture result.<wbr/></p> 6336 <p>LEGACY camera devices do not support this state.<wbr/> When a passive 6337 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span> 6338 </li> 6339 </ul> 6340 6341 </td> <!-- entry_type --> 6342 6343 <td class="entry_description"> 6344 <p>Current state of auto-focus (AF) algorithm.<wbr/></p> 6345 </td> 6346 6347 <td class="entry_units"> 6348 </td> 6349 6350 <td class="entry_range"> 6351 </td> 6352 6353 <td class="entry_tags"> 6354 </td> 6355 6356 </tr> 6357 <tr class="entries_header"> 6358 <th class="th_details" colspan="5">Details</th> 6359 </tr> 6360 <tr class="entry_cont"> 6361 <td class="entry_details" colspan="5"> 6362 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 6363 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6364 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 6365 the algorithm states to INACTIVE.<wbr/></p> 6366 <p>The camera device can do several state transitions between two results,<wbr/> if it is 6367 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6368 seen in a result.<wbr/></p> 6369 <p>The state in the result is the state for this image (in sync with this image): if 6370 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 6371 be sharp.<wbr/></p> 6372 <p>Below are state transition tables for different AF modes.<wbr/></p> 6373 <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> 6374 <table> 6375 <thead> 6376 <tr> 6377 <th align="center">State</th> 6378 <th align="center">Transition Cause</th> 6379 <th align="center">New State</th> 6380 <th align="center">Notes</th> 6381 </tr> 6382 </thead> 6383 <tbody> 6384 <tr> 6385 <td align="center">INACTIVE</td> 6386 <td align="center"></td> 6387 <td align="center">INACTIVE</td> 6388 <td align="center">Never changes</td> 6389 </tr> 6390 </tbody> 6391 </table> 6392 <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> 6393 <table> 6394 <thead> 6395 <tr> 6396 <th align="center">State</th> 6397 <th align="center">Transition Cause</th> 6398 <th align="center">New State</th> 6399 <th align="center">Notes</th> 6400 </tr> 6401 </thead> 6402 <tbody> 6403 <tr> 6404 <td align="center">INACTIVE</td> 6405 <td align="center">AF_<wbr/>TRIGGER</td> 6406 <td align="center">ACTIVE_<wbr/>SCAN</td> 6407 <td align="center">Start AF sweep,<wbr/> Lens now moving</td> 6408 </tr> 6409 <tr> 6410 <td align="center">ACTIVE_<wbr/>SCAN</td> 6411 <td align="center">AF sweep done</td> 6412 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6413 <td align="center">Focused,<wbr/> Lens now locked</td> 6414 </tr> 6415 <tr> 6416 <td align="center">ACTIVE_<wbr/>SCAN</td> 6417 <td align="center">AF sweep done</td> 6418 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6419 <td align="center">Not focused,<wbr/> Lens now locked</td> 6420 </tr> 6421 <tr> 6422 <td align="center">ACTIVE_<wbr/>SCAN</td> 6423 <td align="center">AF_<wbr/>CANCEL</td> 6424 <td align="center">INACTIVE</td> 6425 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 6426 </tr> 6427 <tr> 6428 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6429 <td align="center">AF_<wbr/>CANCEL</td> 6430 <td align="center">INACTIVE</td> 6431 <td align="center">Cancel/<wbr/>reset AF</td> 6432 </tr> 6433 <tr> 6434 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6435 <td align="center">AF_<wbr/>TRIGGER</td> 6436 <td align="center">ACTIVE_<wbr/>SCAN</td> 6437 <td align="center">Start new sweep,<wbr/> Lens now moving</td> 6438 </tr> 6439 <tr> 6440 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6441 <td align="center">AF_<wbr/>CANCEL</td> 6442 <td align="center">INACTIVE</td> 6443 <td align="center">Cancel/<wbr/>reset AF</td> 6444 </tr> 6445 <tr> 6446 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6447 <td align="center">AF_<wbr/>TRIGGER</td> 6448 <td align="center">ACTIVE_<wbr/>SCAN</td> 6449 <td align="center">Start new sweep,<wbr/> Lens now moving</td> 6450 </tr> 6451 <tr> 6452 <td align="center">Any state</td> 6453 <td align="center">Mode change</td> 6454 <td align="center">INACTIVE</td> 6455 <td align="center"></td> 6456 </tr> 6457 </tbody> 6458 </table> 6459 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 6460 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 6461 can be skipped in that manner is called a transient state.<wbr/></p> 6462 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the 6463 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 6464 one or more transient states between two results.<wbr/> See below table for examples:</p> 6465 <table> 6466 <thead> 6467 <tr> 6468 <th align="center">State</th> 6469 <th align="center">Transition Cause</th> 6470 <th align="center">New State</th> 6471 <th align="center">Notes</th> 6472 </tr> 6473 </thead> 6474 <tbody> 6475 <tr> 6476 <td align="center">INACTIVE</td> 6477 <td align="center">AF_<wbr/>TRIGGER</td> 6478 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6479 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 6480 </tr> 6481 <tr> 6482 <td align="center">INACTIVE</td> 6483 <td align="center">AF_<wbr/>TRIGGER</td> 6484 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6485 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> 6486 </tr> 6487 <tr> 6488 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6489 <td align="center">AF_<wbr/>TRIGGER</td> 6490 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6491 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 6492 </tr> 6493 <tr> 6494 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6495 <td align="center">AF_<wbr/>TRIGGER</td> 6496 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6497 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> 6498 </tr> 6499 </tbody> 6500 </table> 6501 <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> 6502 <table> 6503 <thead> 6504 <tr> 6505 <th align="center">State</th> 6506 <th align="center">Transition Cause</th> 6507 <th align="center">New State</th> 6508 <th align="center">Notes</th> 6509 </tr> 6510 </thead> 6511 <tbody> 6512 <tr> 6513 <td align="center">INACTIVE</td> 6514 <td align="center">Camera device initiates new scan</td> 6515 <td align="center">PASSIVE_<wbr/>SCAN</td> 6516 <td align="center">Start AF scan,<wbr/> Lens now moving</td> 6517 </tr> 6518 <tr> 6519 <td align="center">INACTIVE</td> 6520 <td align="center">AF_<wbr/>TRIGGER</td> 6521 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6522 <td align="center">AF state query,<wbr/> Lens now locked</td> 6523 </tr> 6524 <tr> 6525 <td align="center">PASSIVE_<wbr/>SCAN</td> 6526 <td align="center">Camera device completes current scan</td> 6527 <td align="center">PASSIVE_<wbr/>FOCUSED</td> 6528 <td align="center">End AF scan,<wbr/> Lens now locked</td> 6529 </tr> 6530 <tr> 6531 <td align="center">PASSIVE_<wbr/>SCAN</td> 6532 <td align="center">Camera device fails current scan</td> 6533 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 6534 <td align="center">End AF scan,<wbr/> Lens now locked</td> 6535 </tr> 6536 <tr> 6537 <td align="center">PASSIVE_<wbr/>SCAN</td> 6538 <td align="center">AF_<wbr/>TRIGGER</td> 6539 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6540 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td> 6541 </tr> 6542 <tr> 6543 <td align="center">PASSIVE_<wbr/>SCAN</td> 6544 <td align="center">AF_<wbr/>TRIGGER</td> 6545 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6546 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td> 6547 </tr> 6548 <tr> 6549 <td align="center">PASSIVE_<wbr/>SCAN</td> 6550 <td align="center">AF_<wbr/>CANCEL</td> 6551 <td align="center">INACTIVE</td> 6552 <td align="center">Reset lens position,<wbr/> Lens now locked</td> 6553 </tr> 6554 <tr> 6555 <td align="center">PASSIVE_<wbr/>FOCUSED</td> 6556 <td align="center">Camera device initiates new scan</td> 6557 <td align="center">PASSIVE_<wbr/>SCAN</td> 6558 <td align="center">Start AF scan,<wbr/> Lens now moving</td> 6559 </tr> 6560 <tr> 6561 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 6562 <td align="center">Camera device initiates new scan</td> 6563 <td align="center">PASSIVE_<wbr/>SCAN</td> 6564 <td align="center">Start AF scan,<wbr/> Lens now moving</td> 6565 </tr> 6566 <tr> 6567 <td align="center">PASSIVE_<wbr/>FOCUSED</td> 6568 <td align="center">AF_<wbr/>TRIGGER</td> 6569 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6570 <td align="center">Immediate transition,<wbr/> lens now locked</td> 6571 </tr> 6572 <tr> 6573 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 6574 <td align="center">AF_<wbr/>TRIGGER</td> 6575 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6576 <td align="center">Immediate transition,<wbr/> lens now locked</td> 6577 </tr> 6578 <tr> 6579 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6580 <td align="center">AF_<wbr/>TRIGGER</td> 6581 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6582 <td align="center">No effect</td> 6583 </tr> 6584 <tr> 6585 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6586 <td align="center">AF_<wbr/>CANCEL</td> 6587 <td align="center">INACTIVE</td> 6588 <td align="center">Restart AF scan</td> 6589 </tr> 6590 <tr> 6591 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6592 <td align="center">AF_<wbr/>TRIGGER</td> 6593 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6594 <td align="center">No effect</td> 6595 </tr> 6596 <tr> 6597 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6598 <td align="center">AF_<wbr/>CANCEL</td> 6599 <td align="center">INACTIVE</td> 6600 <td align="center">Restart AF scan</td> 6601 </tr> 6602 </tbody> 6603 </table> 6604 <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> 6605 <table> 6606 <thead> 6607 <tr> 6608 <th align="center">State</th> 6609 <th align="center">Transition Cause</th> 6610 <th align="center">New State</th> 6611 <th align="center">Notes</th> 6612 </tr> 6613 </thead> 6614 <tbody> 6615 <tr> 6616 <td align="center">INACTIVE</td> 6617 <td align="center">Camera device initiates new scan</td> 6618 <td align="center">PASSIVE_<wbr/>SCAN</td> 6619 <td align="center">Start AF scan,<wbr/> Lens now moving</td> 6620 </tr> 6621 <tr> 6622 <td align="center">INACTIVE</td> 6623 <td align="center">AF_<wbr/>TRIGGER</td> 6624 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6625 <td align="center">AF state query,<wbr/> Lens now locked</td> 6626 </tr> 6627 <tr> 6628 <td align="center">PASSIVE_<wbr/>SCAN</td> 6629 <td align="center">Camera device completes current scan</td> 6630 <td align="center">PASSIVE_<wbr/>FOCUSED</td> 6631 <td align="center">End AF scan,<wbr/> Lens now locked</td> 6632 </tr> 6633 <tr> 6634 <td align="center">PASSIVE_<wbr/>SCAN</td> 6635 <td align="center">Camera device fails current scan</td> 6636 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 6637 <td align="center">End AF scan,<wbr/> Lens now locked</td> 6638 </tr> 6639 <tr> 6640 <td align="center">PASSIVE_<wbr/>SCAN</td> 6641 <td align="center">AF_<wbr/>TRIGGER</td> 6642 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6643 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td> 6644 </tr> 6645 <tr> 6646 <td align="center">PASSIVE_<wbr/>SCAN</td> 6647 <td align="center">AF_<wbr/>TRIGGER</td> 6648 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6649 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td> 6650 </tr> 6651 <tr> 6652 <td align="center">PASSIVE_<wbr/>SCAN</td> 6653 <td align="center">AF_<wbr/>CANCEL</td> 6654 <td align="center">INACTIVE</td> 6655 <td align="center">Reset lens position,<wbr/> Lens now locked</td> 6656 </tr> 6657 <tr> 6658 <td align="center">PASSIVE_<wbr/>FOCUSED</td> 6659 <td align="center">Camera device initiates new scan</td> 6660 <td align="center">PASSIVE_<wbr/>SCAN</td> 6661 <td align="center">Start AF scan,<wbr/> Lens now moving</td> 6662 </tr> 6663 <tr> 6664 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 6665 <td align="center">Camera device initiates new scan</td> 6666 <td align="center">PASSIVE_<wbr/>SCAN</td> 6667 <td align="center">Start AF scan,<wbr/> Lens now moving</td> 6668 </tr> 6669 <tr> 6670 <td align="center">PASSIVE_<wbr/>FOCUSED</td> 6671 <td align="center">AF_<wbr/>TRIGGER</td> 6672 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6673 <td align="center">Immediate trans.<wbr/> Lens now locked</td> 6674 </tr> 6675 <tr> 6676 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 6677 <td align="center">AF_<wbr/>TRIGGER</td> 6678 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6679 <td align="center">Immediate trans.<wbr/> Lens now locked</td> 6680 </tr> 6681 <tr> 6682 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6683 <td align="center">AF_<wbr/>TRIGGER</td> 6684 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6685 <td align="center">No effect</td> 6686 </tr> 6687 <tr> 6688 <td align="center">FOCUSED_<wbr/>LOCKED</td> 6689 <td align="center">AF_<wbr/>CANCEL</td> 6690 <td align="center">INACTIVE</td> 6691 <td align="center">Restart AF scan</td> 6692 </tr> 6693 <tr> 6694 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6695 <td align="center">AF_<wbr/>TRIGGER</td> 6696 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6697 <td align="center">No effect</td> 6698 </tr> 6699 <tr> 6700 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6701 <td align="center">AF_<wbr/>CANCEL</td> 6702 <td align="center">INACTIVE</td> 6703 <td align="center">Restart AF scan</td> 6704 </tr> 6705 </tbody> 6706 </table> 6707 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO 6708 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the 6709 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 6710 will be evaluated in the context of the new mode in the request.<wbr/> 6711 See below table for examples:</p> 6712 <table> 6713 <thead> 6714 <tr> 6715 <th align="center">State</th> 6716 <th align="center">Transition Cause</th> 6717 <th align="center">New State</th> 6718 <th align="center">Notes</th> 6719 </tr> 6720 </thead> 6721 <tbody> 6722 <tr> 6723 <td align="center">any state</td> 6724 <td align="center">CAF-->AUTO mode switch</td> 6725 <td align="center">INACTIVE</td> 6726 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> 6727 </tr> 6728 <tr> 6729 <td align="center">any state</td> 6730 <td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> 6731 <td align="center">trigger-reachable states from INACTIVE</td> 6732 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> 6733 </tr> 6734 <tr> 6735 <td align="center">any state</td> 6736 <td align="center">AUTO-->CAF mode switch</td> 6737 <td align="center">passively reachable states from INACTIVE</td> 6738 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td> 6739 </tr> 6740 </tbody> 6741 </table> 6742 </td> 6743 </tr> 6744 6745 6746 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6747 <!-- end of entry --> 6748 6749 6750 <tr class="entry" id="dynamic_android.control.afTriggerId"> 6751 <td class="entry_name 6752 entry_name_deprecated 6753 " rowspan="3"> 6754 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 6755 </td> 6756 <td class="entry_type"> 6757 <span class="entry_type_name">int32</span> 6758 6759 <span class="entry_type_visibility"> [system]</span> 6760 6761 6762 6763 <span class="entry_type_deprecated">[deprecated] </span> 6764 6765 6766 6767 </td> <!-- entry_type --> 6768 6769 <td class="entry_description"> 6770 <p>The ID sent with the latest 6771 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 6772 </td> 6773 6774 <td class="entry_units"> 6775 </td> 6776 6777 <td class="entry_range"> 6778 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 6779 </td> 6780 6781 <td class="entry_tags"> 6782 </td> 6783 6784 </tr> 6785 <tr class="entries_header"> 6786 <th class="th_details" colspan="5">Details</th> 6787 </tr> 6788 <tr class="entry_cont"> 6789 <td class="entry_details" colspan="5"> 6790 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 6791 received yet by HAL.<wbr/> Always updated even if AF algorithm 6792 ignores the trigger</p> 6793 </td> 6794 </tr> 6795 6796 6797 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6798 <!-- end of entry --> 6799 6800 6801 <tr class="entry" id="dynamic_android.control.awbLock"> 6802 <td class="entry_name 6803 " rowspan="3"> 6804 android.<wbr/>control.<wbr/>awb<wbr/>Lock 6805 </td> 6806 <td class="entry_type"> 6807 <span class="entry_type_name entry_type_name_enum">byte</span> 6808 6809 <span class="entry_type_visibility"> [public as boolean]</span> 6810 6811 6812 <span class="entry_type_hwlevel">[legacy] </span> 6813 6814 6815 6816 <ul class="entry_type_enum"> 6817 <li> 6818 <span class="entry_type_enum_name">OFF</span> 6819 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 6820 algorithm is free to update its parameters if in AUTO 6821 mode.<wbr/></p></span> 6822 </li> 6823 <li> 6824 <span class="entry_type_enum_name">ON</span> 6825 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 6826 algorithm will not update its parameters while the lock 6827 is active.<wbr/></p></span> 6828 </li> 6829 </ul> 6830 6831 </td> <!-- entry_type --> 6832 6833 <td class="entry_description"> 6834 <p>Whether auto-white balance (AWB) is currently locked to its 6835 latest calculated values.<wbr/></p> 6836 </td> 6837 6838 <td class="entry_units"> 6839 </td> 6840 6841 <td class="entry_range"> 6842 </td> 6843 6844 <td class="entry_tags"> 6845 <ul class="entry_tags"> 6846 <li><a href="#tag_BC">BC</a></li> 6847 </ul> 6848 </td> 6849 6850 </tr> 6851 <tr class="entries_header"> 6852 <th class="th_details" colspan="5">Details</th> 6853 </tr> 6854 <tr class="entry_cont"> 6855 <td class="entry_details" colspan="5"> 6856 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 6857 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 6858 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 6859 get locked do not necessarily correspond to the settings that were present in the 6860 latest capture result received from the camera device,<wbr/> since additional captures 6861 and AWB updates may have occurred even before the result was sent out.<wbr/> If an 6862 application is switching between automatic and manual control and wishes to eliminate 6863 any flicker during the switch,<wbr/> the following procedure is recommended:</p> 6864 <ol> 6865 <li>Starting in auto-AWB mode:</li> 6866 <li>Lock AWB</li> 6867 <li>Wait for the first result to be output that has the AWB locked</li> 6868 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 6869 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 6870 </ol> 6871 <p>Note that AWB lock is only meaningful when 6872 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 6873 AWB is already fixed to a specific setting.<wbr/></p> 6874 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 6875 </td> 6876 </tr> 6877 6878 6879 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6880 <!-- end of entry --> 6881 6882 6883 <tr class="entry" id="dynamic_android.control.awbMode"> 6884 <td class="entry_name 6885 " rowspan="3"> 6886 android.<wbr/>control.<wbr/>awb<wbr/>Mode 6887 </td> 6888 <td class="entry_type"> 6889 <span class="entry_type_name entry_type_name_enum">byte</span> 6890 6891 <span class="entry_type_visibility"> [public]</span> 6892 6893 6894 <span class="entry_type_hwlevel">[legacy] </span> 6895 6896 6897 6898 <ul class="entry_type_enum"> 6899 <li> 6900 <span class="entry_type_enum_name">OFF</span> 6901 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 6902 <p>The application-selected color transform matrix 6903 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 6904 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 6905 device for manual white balance control.<wbr/></p></span> 6906 </li> 6907 <li> 6908 <span class="entry_type_enum_name">AUTO</span> 6909 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 6910 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 6911 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 6912 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 6913 values used by the camera device for the transform and gains 6914 will be available in the capture result for this request.<wbr/></p></span> 6915 </li> 6916 <li> 6917 <span class="entry_type_enum_name">INCANDESCENT</span> 6918 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 6919 the camera device uses incandescent light as the assumed scene 6920 illumination for white balance.<wbr/></p> 6921 <p>While the exact white balance transforms are up to the 6922 camera device,<wbr/> they will approximately match the CIE 6923 standard illuminant A.<wbr/></p> 6924 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 6925 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 6926 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 6927 values used by the camera device for the transform and gains 6928 will be available in the capture result for this request.<wbr/></p></span> 6929 </li> 6930 <li> 6931 <span class="entry_type_enum_name">FLUORESCENT</span> 6932 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 6933 the camera device uses fluorescent light as the assumed scene 6934 illumination for white balance.<wbr/></p> 6935 <p>While the exact white balance transforms are up to the 6936 camera device,<wbr/> they will approximately match the CIE 6937 standard illuminant F2.<wbr/></p> 6938 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 6939 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 6940 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 6941 values used by the camera device for the transform and gains 6942 will be available in the capture result for this request.<wbr/></p></span> 6943 </li> 6944 <li> 6945 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 6946 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 6947 the camera device uses warm fluorescent light as the assumed scene 6948 illumination for white balance.<wbr/></p> 6949 <p>While the exact white balance transforms are up to the 6950 camera device,<wbr/> they will approximately match the CIE 6951 standard illuminant F4.<wbr/></p> 6952 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 6953 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 6954 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 6955 values used by the camera device for the transform and gains 6956 will be available in the capture result for this request.<wbr/></p></span> 6957 </li> 6958 <li> 6959 <span class="entry_type_enum_name">DAYLIGHT</span> 6960 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 6961 the camera device uses daylight light as the assumed scene 6962 illumination for white balance.<wbr/></p> 6963 <p>While the exact white balance transforms are up to the 6964 camera device,<wbr/> they will approximately match the CIE 6965 standard illuminant D65.<wbr/></p> 6966 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 6967 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 6968 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 6969 values used by the camera device for the transform and gains 6970 will be available in the capture result for this request.<wbr/></p></span> 6971 </li> 6972 <li> 6973 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 6974 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 6975 the camera device uses cloudy daylight light as the assumed scene 6976 illumination for white balance.<wbr/></p> 6977 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 6978 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 6979 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 6980 values used by the camera device for the transform and gains 6981 will be available in the capture result for this request.<wbr/></p></span> 6982 </li> 6983 <li> 6984 <span class="entry_type_enum_name">TWILIGHT</span> 6985 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 6986 the camera device uses twilight light as the assumed scene 6987 illumination for white balance.<wbr/></p> 6988 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 6989 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 6990 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 6991 values used by the camera device for the transform and gains 6992 will be available in the capture result for this request.<wbr/></p></span> 6993 </li> 6994 <li> 6995 <span class="entry_type_enum_name">SHADE</span> 6996 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 6997 the camera device uses shade light as the assumed scene 6998 illumination for white balance.<wbr/></p> 6999 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7000 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7001 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7002 values used by the camera device for the transform and gains 7003 will be available in the capture result for this request.<wbr/></p></span> 7004 </li> 7005 </ul> 7006 7007 </td> <!-- entry_type --> 7008 7009 <td class="entry_description"> 7010 <p>Whether auto-white balance (AWB) is currently setting the color 7011 transform fields,<wbr/> and what its illumination target 7012 is.<wbr/></p> 7013 </td> 7014 7015 <td class="entry_units"> 7016 </td> 7017 7018 <td class="entry_range"> 7019 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 7020 </td> 7021 7022 <td class="entry_tags"> 7023 <ul class="entry_tags"> 7024 <li><a href="#tag_BC">BC</a></li> 7025 </ul> 7026 </td> 7027 7028 </tr> 7029 <tr class="entries_header"> 7030 <th class="th_details" colspan="5">Details</th> 7031 </tr> 7032 <tr class="entry_cont"> 7033 <td class="entry_details" colspan="5"> 7034 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 7035 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance 7036 routine is enabled,<wbr/> overriding the application's selected 7037 <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 7038 <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> 7039 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 7040 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 7041 setting AE mode to OFF.<wbr/></p> 7042 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 7043 routine is disabled.<wbr/> The application manually controls the white 7044 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> 7045 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 7046 <p>When set to any other modes,<wbr/> the camera device's auto-white 7047 balance routine is disabled.<wbr/> The camera device uses each 7048 particular illumination target for white balance 7049 adjustment.<wbr/> The application's values for 7050 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 7051 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 7052 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 7053 </td> 7054 </tr> 7055 7056 7057 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7058 <!-- end of entry --> 7059 7060 7061 <tr class="entry" id="dynamic_android.control.awbRegions"> 7062 <td class="entry_name 7063 " rowspan="5"> 7064 android.<wbr/>control.<wbr/>awb<wbr/>Regions 7065 </td> 7066 <td class="entry_type"> 7067 <span class="entry_type_name">int32</span> 7068 <span class="entry_type_container">x</span> 7069 7070 <span class="entry_type_array"> 7071 5 x area_count 7072 </span> 7073 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 7074 7075 7076 7077 7078 7079 7080 </td> <!-- entry_type --> 7081 7082 <td class="entry_description"> 7083 <p>List of metering areas to use for auto-white-balance illuminant 7084 estimation.<wbr/></p> 7085 </td> 7086 7087 <td class="entry_units"> 7088 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 7089 </td> 7090 7091 <td class="entry_range"> 7092 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 7093 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 7094 </td> 7095 7096 <td class="entry_tags"> 7097 <ul class="entry_tags"> 7098 <li><a href="#tag_BC">BC</a></li> 7099 </ul> 7100 </td> 7101 7102 </tr> 7103 <tr class="entries_header"> 7104 <th class="th_details" colspan="5">Details</th> 7105 </tr> 7106 <tr class="entry_cont"> 7107 <td class="entry_details" colspan="5"> 7108 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 7109 Otherwise will always be present.<wbr/></p> 7110 <p>The maximum number of regions supported by the device is determined by the value 7111 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 7112 <p>The coordinate system is based on the active pixel array,<wbr/> 7113 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 7114 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 7115 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 7116 bottom-right pixel in the active pixel array.<wbr/></p> 7117 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight 7118 for every pixel in the area.<wbr/> This means that a large metering area 7119 with the same weight as a smaller area will have more effect in 7120 the metering result.<wbr/> Metering areas can partially overlap and the 7121 camera device will add the weights in the overlap region.<wbr/></p> 7122 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 7123 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 7124 0 weight is ignored.<wbr/></p> 7125 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 7126 camera device.<wbr/></p> 7127 <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 7128 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 7129 region and output only the intersection rectangle as the metering region in the result 7130 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 7131 not reported in the result metadata.<wbr/></p> 7132 </td> 7133 </tr> 7134 7135 <tr class="entries_header"> 7136 <th class="th_details" colspan="5">HAL Implementation Details</th> 7137 </tr> 7138 <tr class="entry_cont"> 7139 <td class="entry_details" colspan="5"> 7140 <p>The HAL level representation of MeteringRectangle[] is a 7141 int[5 * area_<wbr/>count].<wbr/> 7142 Every five elements represent a metering region of 7143 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 7144 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 7145 exclusive on xmax and ymax.<wbr/></p> 7146 </td> 7147 </tr> 7148 7149 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7150 <!-- end of entry --> 7151 7152 7153 <tr class="entry" id="dynamic_android.control.captureIntent"> 7154 <td class="entry_name 7155 " rowspan="3"> 7156 android.<wbr/>control.<wbr/>capture<wbr/>Intent 7157 </td> 7158 <td class="entry_type"> 7159 <span class="entry_type_name entry_type_name_enum">byte</span> 7160 7161 <span class="entry_type_visibility"> [public]</span> 7162 7163 7164 <span class="entry_type_hwlevel">[legacy] </span> 7165 7166 7167 7168 <ul class="entry_type_enum"> 7169 <li> 7170 <span class="entry_type_enum_name">CUSTOM</span> 7171 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 7172 categories.<wbr/> The camera device will default to preview-like 7173 behavior.<wbr/></p></span> 7174 </li> 7175 <li> 7176 <span class="entry_type_enum_name">PREVIEW</span> 7177 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 7178 <p>The precapture trigger may be used to start off a metering 7179 w/<wbr/>flash sequence.<wbr/></p></span> 7180 </li> 7181 <li> 7182 <span class="entry_type_enum_name">STILL_CAPTURE</span> 7183 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 7184 use case.<wbr/></p> 7185 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 7186 </li> 7187 <li> 7188 <span class="entry_type_enum_name">VIDEO_RECORD</span> 7189 <span class="entry_type_enum_notes"><p>This request is for a video recording 7190 use case.<wbr/></p></span> 7191 </li> 7192 <li> 7193 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 7194 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 7195 image while recording video) use case.<wbr/></p> 7196 <p>The camera device should take the highest-quality image 7197 possible (given the other settings) without disrupting the 7198 frame rate of video recording.<wbr/> </p></span> 7199 </li> 7200 <li> 7201 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 7202 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 7203 application will stream full-resolution images and 7204 reprocess one or several later for a final 7205 capture.<wbr/></p></span> 7206 </li> 7207 <li> 7208 <span class="entry_type_enum_name">MANUAL</span> 7209 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 7210 the applications want to directly control the capture parameters.<wbr/></p> 7211 <p>For example,<wbr/> the application may wish to manually control 7212 <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> 7213 </li> 7214 </ul> 7215 7216 </td> <!-- entry_type --> 7217 7218 <td class="entry_description"> 7219 <p>Information to the camera device 3A (auto-exposure,<wbr/> 7220 auto-focus,<wbr/> auto-white balance) routines about the purpose 7221 of this capture,<wbr/> to help the camera device to decide optimal 3A 7222 strategy.<wbr/></p> 7223 </td> 7224 7225 <td class="entry_units"> 7226 </td> 7227 7228 <td class="entry_range"> 7229 </td> 7230 7231 <td class="entry_tags"> 7232 <ul class="entry_tags"> 7233 <li><a href="#tag_BC">BC</a></li> 7234 </ul> 7235 </td> 7236 7237 </tr> 7238 <tr class="entries_header"> 7239 <th class="th_details" colspan="5">Details</th> 7240 </tr> 7241 <tr class="entry_cont"> 7242 <td class="entry_details" colspan="5"> 7243 <p>This control (except for MANUAL) is only effective if 7244 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 7245 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 7246 contains ZSL.<wbr/> MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 7247 contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are always supported.<wbr/></p> 7248 </td> 7249 </tr> 7250 7251 7252 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7253 <!-- end of entry --> 7254 7255 7256 <tr class="entry" id="dynamic_android.control.awbState"> 7257 <td class="entry_name 7258 " rowspan="3"> 7259 android.<wbr/>control.<wbr/>awb<wbr/>State 7260 </td> 7261 <td class="entry_type"> 7262 <span class="entry_type_name entry_type_name_enum">byte</span> 7263 7264 <span class="entry_type_visibility"> [public]</span> 7265 7266 7267 <span class="entry_type_hwlevel">[limited] </span> 7268 7269 7270 7271 <ul class="entry_type_enum"> 7272 <li> 7273 <span class="entry_type_enum_name">INACTIVE</span> 7274 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p> 7275 <p>When a camera device is opened,<wbr/> it starts in this 7276 state.<wbr/> This is a transient state,<wbr/> the camera device may 7277 skip reporting this state in capture 7278 result.<wbr/></p></span> 7279 </li> 7280 <li> 7281 <span class="entry_type_enum_name">SEARCHING</span> 7282 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 7283 values for the current scene.<wbr/></p> 7284 <p>This is a transient state,<wbr/> the camera device 7285 may skip reporting this state in capture result.<wbr/></p></span> 7286 </li> 7287 <li> 7288 <span class="entry_type_enum_name">CONVERGED</span> 7289 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 7290 current scene.<wbr/></p></span> 7291 </li> 7292 <li> 7293 <span class="entry_type_enum_name">LOCKED</span> 7294 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 7295 </li> 7296 </ul> 7297 7298 </td> <!-- entry_type --> 7299 7300 <td class="entry_description"> 7301 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p> 7302 </td> 7303 7304 <td class="entry_units"> 7305 </td> 7306 7307 <td class="entry_range"> 7308 </td> 7309 7310 <td class="entry_tags"> 7311 </td> 7312 7313 </tr> 7314 <tr class="entries_header"> 7315 <th class="th_details" colspan="5">Details</th> 7316 </tr> 7317 <tr class="entry_cont"> 7318 <td class="entry_details" colspan="5"> 7319 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 7320 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 7321 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 7322 the algorithm states to INACTIVE.<wbr/></p> 7323 <p>The camera device can do several state transitions between two results,<wbr/> if it is 7324 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 7325 a result.<wbr/></p> 7326 <p>The state in the result is the state for this image (in sync with this image): if 7327 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 7328 be good to use.<wbr/></p> 7329 <p>Below are state transition tables for different AWB modes.<wbr/></p> 7330 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 7331 <table> 7332 <thead> 7333 <tr> 7334 <th align="center">State</th> 7335 <th align="center">Transition Cause</th> 7336 <th align="center">New State</th> 7337 <th align="center">Notes</th> 7338 </tr> 7339 </thead> 7340 <tbody> 7341 <tr> 7342 <td align="center">INACTIVE</td> 7343 <td align="center"></td> 7344 <td align="center">INACTIVE</td> 7345 <td align="center">Camera device auto white balance algorithm is disabled</td> 7346 </tr> 7347 </tbody> 7348 </table> 7349 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 7350 <table> 7351 <thead> 7352 <tr> 7353 <th align="center">State</th> 7354 <th align="center">Transition Cause</th> 7355 <th align="center">New State</th> 7356 <th align="center">Notes</th> 7357 </tr> 7358 </thead> 7359 <tbody> 7360 <tr> 7361 <td align="center">INACTIVE</td> 7362 <td align="center">Camera device initiates AWB scan</td> 7363 <td align="center">SEARCHING</td> 7364 <td align="center">Values changing</td> 7365 </tr> 7366 <tr> 7367 <td align="center">INACTIVE</td> 7368 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7369 <td align="center">LOCKED</td> 7370 <td align="center">Values locked</td> 7371 </tr> 7372 <tr> 7373 <td align="center">SEARCHING</td> 7374 <td align="center">Camera device finishes AWB scan</td> 7375 <td align="center">CONVERGED</td> 7376 <td align="center">Good values,<wbr/> not changing</td> 7377 </tr> 7378 <tr> 7379 <td align="center">SEARCHING</td> 7380 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7381 <td align="center">LOCKED</td> 7382 <td align="center">Values locked</td> 7383 </tr> 7384 <tr> 7385 <td align="center">CONVERGED</td> 7386 <td align="center">Camera device initiates AWB scan</td> 7387 <td align="center">SEARCHING</td> 7388 <td align="center">Values changing</td> 7389 </tr> 7390 <tr> 7391 <td align="center">CONVERGED</td> 7392 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7393 <td align="center">LOCKED</td> 7394 <td align="center">Values locked</td> 7395 </tr> 7396 <tr> 7397 <td align="center">LOCKED</td> 7398 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 7399 <td align="center">SEARCHING</td> 7400 <td align="center">Values not good after unlock</td> 7401 </tr> 7402 </tbody> 7403 </table> 7404 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7405 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7406 can be skipped in that manner is called a transient state.<wbr/></p> 7407 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions 7408 listed in above table,<wbr/> it is also legal for the camera device to skip one or more 7409 transient states between two results.<wbr/> See below table for examples:</p> 7410 <table> 7411 <thead> 7412 <tr> 7413 <th align="center">State</th> 7414 <th align="center">Transition Cause</th> 7415 <th align="center">New State</th> 7416 <th align="center">Notes</th> 7417 </tr> 7418 </thead> 7419 <tbody> 7420 <tr> 7421 <td align="center">INACTIVE</td> 7422 <td align="center">Camera device finished AWB scan</td> 7423 <td align="center">CONVERGED</td> 7424 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 7425 </tr> 7426 <tr> 7427 <td align="center">LOCKED</td> 7428 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 7429 <td align="center">CONVERGED</td> 7430 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> 7431 </tr> 7432 </tbody> 7433 </table> 7434 </td> 7435 </tr> 7436 7437 7438 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7439 <!-- end of entry --> 7440 7441 7442 <tr class="entry" id="dynamic_android.control.effectMode"> 7443 <td class="entry_name 7444 " rowspan="3"> 7445 android.<wbr/>control.<wbr/>effect<wbr/>Mode 7446 </td> 7447 <td class="entry_type"> 7448 <span class="entry_type_name entry_type_name_enum">byte</span> 7449 7450 <span class="entry_type_visibility"> [public]</span> 7451 7452 7453 <span class="entry_type_hwlevel">[legacy] </span> 7454 7455 7456 7457 <ul class="entry_type_enum"> 7458 <li> 7459 <span class="entry_type_enum_name">OFF</span> 7460 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 7461 </li> 7462 <li> 7463 <span class="entry_type_enum_name">MONO</span> 7464 <span class="entry_type_enum_optional">[optional]</span> 7465 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 7466 a single color.<wbr/></p> 7467 <p>This will typically be grayscale.<wbr/></p></span> 7468 </li> 7469 <li> 7470 <span class="entry_type_enum_name">NEGATIVE</span> 7471 <span class="entry_type_enum_optional">[optional]</span> 7472 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 7473 are inverted.<wbr/></p></span> 7474 </li> 7475 <li> 7476 <span class="entry_type_enum_name">SOLARIZE</span> 7477 <span class="entry_type_enum_optional">[optional]</span> 7478 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 7479 image is wholly or partially reversed in 7480 tone.<wbr/></p></span> 7481 </li> 7482 <li> 7483 <span class="entry_type_enum_name">SEPIA</span> 7484 <span class="entry_type_enum_optional">[optional]</span> 7485 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 7486 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 7487 </li> 7488 <li> 7489 <span class="entry_type_enum_name">POSTERIZE</span> 7490 <span class="entry_type_enum_optional">[optional]</span> 7491 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 7492 discrete regions of tone rather than a continuous 7493 gradient of tones.<wbr/></p></span> 7494 </li> 7495 <li> 7496 <span class="entry_type_enum_name">WHITEBOARD</span> 7497 <span class="entry_type_enum_optional">[optional]</span> 7498 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 7499 as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 7500 </li> 7501 <li> 7502 <span class="entry_type_enum_name">BLACKBOARD</span> 7503 <span class="entry_type_enum_optional">[optional]</span> 7504 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 7505 as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 7506 </li> 7507 <li> 7508 <span class="entry_type_enum_name">AQUA</span> 7509 <span class="entry_type_enum_optional">[optional]</span> 7510 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 7511 </li> 7512 </ul> 7513 7514 </td> <!-- entry_type --> 7515 7516 <td class="entry_description"> 7517 <p>A special color effect to apply.<wbr/></p> 7518 </td> 7519 7520 <td class="entry_units"> 7521 </td> 7522 7523 <td class="entry_range"> 7524 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 7525 </td> 7526 7527 <td class="entry_tags"> 7528 <ul class="entry_tags"> 7529 <li><a href="#tag_BC">BC</a></li> 7530 </ul> 7531 </td> 7532 7533 </tr> 7534 <tr class="entries_header"> 7535 <th class="th_details" colspan="5">Details</th> 7536 </tr> 7537 <tr class="entry_cont"> 7538 <td class="entry_details" colspan="5"> 7539 <p>When this mode is set,<wbr/> a color effect will be applied 7540 to images produced by the camera device.<wbr/> The interpretation 7541 and implementation of these color effects is left to the 7542 implementor of the camera device,<wbr/> and should not be 7543 depended on to be consistent (or present) across all 7544 devices.<wbr/></p> 7545 </td> 7546 </tr> 7547 7548 7549 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7550 <!-- end of entry --> 7551 7552 7553 <tr class="entry" id="dynamic_android.control.mode"> 7554 <td class="entry_name 7555 " rowspan="3"> 7556 android.<wbr/>control.<wbr/>mode 7557 </td> 7558 <td class="entry_type"> 7559 <span class="entry_type_name entry_type_name_enum">byte</span> 7560 7561 <span class="entry_type_visibility"> [public]</span> 7562 7563 7564 <span class="entry_type_hwlevel">[legacy] </span> 7565 7566 7567 7568 <ul class="entry_type_enum"> 7569 <li> 7570 <span class="entry_type_enum_name">OFF</span> 7571 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 7572 <p>All control by the device's metering and focusing (3A) 7573 routines is disabled,<wbr/> and no other settings in 7574 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 7575 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 7576 device to select post-processing values for processing 7577 blocks that do not allow for manual control,<wbr/> or are not 7578 exposed by the camera API.<wbr/></p> 7579 <p>However,<wbr/> the camera device's 3A routines may continue to 7580 collect statistics and update their internal state so that 7581 when control is switched to AUTO mode,<wbr/> good control values 7582 can be immediately applied.<wbr/></p></span> 7583 </li> 7584 <li> 7585 <span class="entry_type_enum_name">AUTO</span> 7586 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 7587 <p>Manual control of capture parameters is disabled.<wbr/> All 7588 controls in android.<wbr/>control.<wbr/>* besides sceneMode take 7589 effect.<wbr/></p></span> 7590 </li> 7591 <li> 7592 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 7593 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 7594 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 7595 control.<wbr/>afMode controls; the camera device will ignore 7596 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 7597 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still 7598 active.<wbr/> This setting can only be used if scene mode is 7599 supported (i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 7600 contain some modes other than DISABLED).<wbr/></p></span> 7601 </li> 7602 <li> 7603 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 7604 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 7605 used by camera device background auto-exposure,<wbr/> auto-white balance and 7606 auto-focus algorithms (3A) to update their statistics.<wbr/></p> 7607 <p>Specifically,<wbr/> the 3A routines are locked to the last 7608 values set from a request with AUTO,<wbr/> OFF,<wbr/> or 7609 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 7610 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 7611 discarded by the camera device.<wbr/></p></span> 7612 </li> 7613 </ul> 7614 7615 </td> <!-- entry_type --> 7616 7617 <td class="entry_description"> 7618 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 7619 routines.<wbr/></p> 7620 </td> 7621 7622 <td class="entry_units"> 7623 </td> 7624 7625 <td class="entry_range"> 7626 </td> 7627 7628 <td class="entry_tags"> 7629 <ul class="entry_tags"> 7630 <li><a href="#tag_BC">BC</a></li> 7631 </ul> 7632 </td> 7633 7634 </tr> 7635 <tr class="entries_header"> 7636 <th class="th_details" colspan="5">Details</th> 7637 </tr> 7638 <tr class="entry_cont"> 7639 <td class="entry_details" colspan="5"> 7640 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 7641 by the camera device is disabled.<wbr/> The application must set the fields for 7642 capture parameters itself.<wbr/></p> 7643 <p>When set to AUTO,<wbr/> the individual algorithm controls in 7644 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> 7645 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 7646 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 7647 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 7648 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 7649 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 7650 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 7651 is that this frame will not be used by camera device background 3A statistics 7652 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 7653 where the application doesn't want a 3A manual control capture to affect 7654 the subsequent auto 3A capture results.<wbr/></p> 7655 <p>LEGACY mode devices will only support AUTO and USE_<wbr/>SCENE_<wbr/>MODE modes.<wbr/> 7656 LIMITED mode devices will only support OFF and OFF_<wbr/>KEEP_<wbr/>STATE if they 7657 support the MANUAL_<wbr/>SENSOR and MANUAL_<wbr/>POST_<wbr/>PROCSESING capabilities.<wbr/> 7658 FULL mode devices will always support OFF and OFF_<wbr/>KEEP_<wbr/>STATE.<wbr/></p> 7659 </td> 7660 </tr> 7661 7662 7663 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7664 <!-- end of entry --> 7665 7666 7667 <tr class="entry" id="dynamic_android.control.sceneMode"> 7668 <td class="entry_name 7669 " rowspan="5"> 7670 android.<wbr/>control.<wbr/>scene<wbr/>Mode 7671 </td> 7672 <td class="entry_type"> 7673 <span class="entry_type_name entry_type_name_enum">byte</span> 7674 7675 <span class="entry_type_visibility"> [public]</span> 7676 7677 7678 <span class="entry_type_hwlevel">[legacy] </span> 7679 7680 7681 7682 <ul class="entry_type_enum"> 7683 <li> 7684 <span class="entry_type_enum_name">DISABLED</span> 7685 <span class="entry_type_enum_value">0</span> 7686 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 7687 </li> 7688 <li> 7689 <span class="entry_type_enum_name">FACE_PRIORITY</span> 7690 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 7691 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 7692 auto-exposure routines.<wbr/></p> 7693 <p>If face detection statistics are disabled 7694 (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/> 7695 this should still operate correctly (but will not return 7696 face detection statistics to the framework).<wbr/></p> 7697 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 7698 <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> 7699 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 7700 </li> 7701 <li> 7702 <span class="entry_type_enum_name">ACTION</span> 7703 <span class="entry_type_enum_optional">[optional]</span> 7704 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 7705 <p>Similar to SPORTS.<wbr/></p></span> 7706 </li> 7707 <li> 7708 <span class="entry_type_enum_name">PORTRAIT</span> 7709 <span class="entry_type_enum_optional">[optional]</span> 7710 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 7711 </li> 7712 <li> 7713 <span class="entry_type_enum_name">LANDSCAPE</span> 7714 <span class="entry_type_enum_optional">[optional]</span> 7715 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 7716 </li> 7717 <li> 7718 <span class="entry_type_enum_name">NIGHT</span> 7719 <span class="entry_type_enum_optional">[optional]</span> 7720 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 7721 </li> 7722 <li> 7723 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 7724 <span class="entry_type_enum_optional">[optional]</span> 7725 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 7726 settings.<wbr/></p></span> 7727 </li> 7728 <li> 7729 <span class="entry_type_enum_name">THEATRE</span> 7730 <span class="entry_type_enum_optional">[optional]</span> 7731 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 7732 remain off.<wbr/></p></span> 7733 </li> 7734 <li> 7735 <span class="entry_type_enum_name">BEACH</span> 7736 <span class="entry_type_enum_optional">[optional]</span> 7737 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 7738 </li> 7739 <li> 7740 <span class="entry_type_enum_name">SNOW</span> 7741 <span class="entry_type_enum_optional">[optional]</span> 7742 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 7743 </li> 7744 <li> 7745 <span class="entry_type_enum_name">SUNSET</span> 7746 <span class="entry_type_enum_optional">[optional]</span> 7747 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 7748 </li> 7749 <li> 7750 <span class="entry_type_enum_name">STEADYPHOTO</span> 7751 <span class="entry_type_enum_optional">[optional]</span> 7752 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 7753 device motion (for example: due to hand shake).<wbr/></p></span> 7754 </li> 7755 <li> 7756 <span class="entry_type_enum_name">FIREWORKS</span> 7757 <span class="entry_type_enum_optional">[optional]</span> 7758 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 7759 </li> 7760 <li> 7761 <span class="entry_type_enum_name">SPORTS</span> 7762 <span class="entry_type_enum_optional">[optional]</span> 7763 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 7764 <p>Similar to ACTION.<wbr/></p></span> 7765 </li> 7766 <li> 7767 <span class="entry_type_enum_name">PARTY</span> 7768 <span class="entry_type_enum_optional">[optional]</span> 7769 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 7770 people.<wbr/></p></span> 7771 </li> 7772 <li> 7773 <span class="entry_type_enum_name">CANDLELIGHT</span> 7774 <span class="entry_type_enum_optional">[optional]</span> 7775 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 7776 is a flame.<wbr/></p></span> 7777 </li> 7778 <li> 7779 <span class="entry_type_enum_name">BARCODE</span> 7780 <span class="entry_type_enum_optional">[optional]</span> 7781 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 7782 for use by camera applications that wish to read the 7783 barcode value.<wbr/></p></span> 7784 </li> 7785 <li> 7786 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> 7787 <span class="entry_type_enum_optional">[optional]</span> 7788 <span class="entry_type_enum_notes"><p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 7789 <p>The supported high speed video sizes and fps ranges are specified in 7790 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 7791 output frame rates,<wbr/> the application is only allowed to select video size 7792 and fps range combinations listed in this static metadata.<wbr/> The fps range 7793 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 7794 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 7795 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 7796 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 7797 and post-processing parameters is possible.<wbr/> All other controls operate the 7798 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 7799 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 7800 <ul> 7801 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 7802 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 7803 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 7804 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 7805 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 7806 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 7807 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 7808 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 7809 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 7810 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 7811 </ul> 7812 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 7813 <ul> 7814 <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> 7815 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 7816 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 7817 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 7818 </ul> 7819 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 7820 be lower than what camera can output,<wbr/> depending on the destination Surfaces for 7821 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 7822 the application need check if the video encoder is capable of supporting the 7823 high frame rate for a given video size,<wbr/> or it will end up with lower recording 7824 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 7825 rate will be bounded by the screen refresh rate.<wbr/></p> 7826 <p>The camera device will only support up to 2 output high speed streams 7827 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 7828 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 7829 <ul> 7830 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling 7831 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 7832 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> 7833 <li>The stream sizes are selected from the sizes reported by 7834 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 7835 <li>No processed non-stalling or raw streams are configured.<wbr/></li> 7836 </ul> 7837 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 7838 <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/> 7839 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 7840 and the returned capture result metadata will give the fps range choosen 7841 by the camera device.<wbr/></p> 7842 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 7843 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 7844 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 7845 </li> 7846 <li> 7847 <span class="entry_type_enum_name">HDR</span> 7848 <span class="entry_type_enum_optional">[optional]</span> 7849 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 7850 <p>In this scene mode,<wbr/> the camera device captures images 7851 that keep a larger range of scene illumination levels 7852 visible in the final image.<wbr/> For example,<wbr/> when taking a 7853 picture of a object in front of a bright window,<wbr/> both 7854 the object and the scene through the window may be 7855 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 7856 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 7857 HDR mode generally takes much longer to capture a single 7858 image,<wbr/> has no user control,<wbr/> and may have other artifacts 7859 depending on the HDR method used.<wbr/></p> 7860 <p>Therefore,<wbr/> HDR captures operate at a much slower rate 7861 than regular captures.<wbr/></p> 7862 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 7863 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 7864 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 7865 using a high dynamic range capture technique.<wbr/> On LEGACY 7866 devices,<wbr/> captures that target a JPEG-format output will 7867 be captured with HDR,<wbr/> and the capture intent is not 7868 relevant.<wbr/></p> 7869 <p>The HDR capture may involve the device capturing a burst 7870 of images internally and combining them into one,<wbr/> or it 7871 may involve the device using specialized high dynamic 7872 range capture hardware.<wbr/> In all cases,<wbr/> a single image is 7873 produced in response to a capture request submitted 7874 while in HDR mode.<wbr/></p> 7875 <p>Since substantial post-processing is generally needed to 7876 produce an HDR image,<wbr/> only YUV and JPEG outputs are 7877 supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only 7878 JPEG outputs are supported for LEGACY HDR 7879 captures.<wbr/> Using a RAW output for HDR capture is not 7880 supported.<wbr/></p></span> 7881 </li> 7882 </ul> 7883 7884 </td> <!-- entry_type --> 7885 7886 <td class="entry_description"> 7887 <p>Control for which scene mode is currently active.<wbr/></p> 7888 </td> 7889 7890 <td class="entry_units"> 7891 </td> 7892 7893 <td class="entry_range"> 7894 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 7895 </td> 7896 7897 <td class="entry_tags"> 7898 <ul class="entry_tags"> 7899 <li><a href="#tag_BC">BC</a></li> 7900 </ul> 7901 </td> 7902 7903 </tr> 7904 <tr class="entries_header"> 7905 <th class="th_details" colspan="5">Details</th> 7906 </tr> 7907 <tr class="entry_cont"> 7908 <td class="entry_details" colspan="5"> 7909 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 7910 capture settings.<wbr/></p> 7911 <p>This is the mode that that is active when 7912 <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/> 7913 these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 7914 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> while in use.<wbr/></p> 7915 <p>The interpretation and implementation of these scene modes is left 7916 to the implementor of the camera device.<wbr/> Their behavior will not be 7917 consistent across all devices,<wbr/> and any given device may only implement 7918 a subset of these modes.<wbr/></p> 7919 </td> 7920 </tr> 7921 7922 <tr class="entries_header"> 7923 <th class="th_details" colspan="5">HAL Implementation Details</th> 7924 </tr> 7925 <tr class="entry_cont"> 7926 <td class="entry_details" colspan="5"> 7927 <p>HAL implementations that include scene modes are expected to provide 7928 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 7929 <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 7930 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 7931 <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/> 7932 the HAL must list supported video size and fps range in 7933 <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/> 7934 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming 7935 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture 7936 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/></p> 7937 </td> 7938 </tr> 7939 7940 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7941 <!-- end of entry --> 7942 7943 7944 <tr class="entry" id="dynamic_android.control.videoStabilizationMode"> 7945 <td class="entry_name 7946 " rowspan="3"> 7947 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 7948 </td> 7949 <td class="entry_type"> 7950 <span class="entry_type_name entry_type_name_enum">byte</span> 7951 7952 <span class="entry_type_visibility"> [public]</span> 7953 7954 7955 <span class="entry_type_hwlevel">[legacy] </span> 7956 7957 7958 7959 <ul class="entry_type_enum"> 7960 <li> 7961 <span class="entry_type_enum_name">OFF</span> 7962 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 7963 </li> 7964 <li> 7965 <span class="entry_type_enum_name">ON</span> 7966 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 7967 </li> 7968 </ul> 7969 7970 </td> <!-- entry_type --> 7971 7972 <td class="entry_description"> 7973 <p>Whether video stabilization is 7974 active.<wbr/></p> 7975 </td> 7976 7977 <td class="entry_units"> 7978 </td> 7979 7980 <td class="entry_range"> 7981 </td> 7982 7983 <td class="entry_tags"> 7984 <ul class="entry_tags"> 7985 <li><a href="#tag_BC">BC</a></li> 7986 </ul> 7987 </td> 7988 7989 </tr> 7990 <tr class="entries_header"> 7991 <th class="th_details" colspan="5">Details</th> 7992 </tr> 7993 <tr class="entry_cont"> 7994 <td class="entry_details" colspan="5"> 7995 <p>Video stabilization automatically translates and scales images from 7996 the camera in order to stabilize motion between consecutive frames.<wbr/></p> 7997 <p>If enabled,<wbr/> video stabilization can modify the 7998 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 7999 <p>Switching between different video stabilization modes may take several 8000 frames to initialize,<wbr/> the camera device will report the current mode 8001 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 8002 the video stabilization modes in the first several capture results may 8003 still be "OFF",<wbr/> and it will become "ON" when the initialization is 8004 done.<wbr/></p> 8005 <p>If a camera device supports both this mode and OIS 8006 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 8007 produce undesirable interaction,<wbr/> so it is recommended not to enable 8008 both at the same time.<wbr/></p> 8009 </td> 8010 </tr> 8011 8012 8013 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8014 <!-- end of entry --> 8015 8016 8017 8018 <!-- end of kind --> 8019 </tbody> 8020 8021 <!-- end of section --> 8022 <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr> 8023 8024 8025 <tr><td colspan="6" class="kind">controls</td></tr> 8026 8027 <thead class="entries_header"> 8028 <tr> 8029 <th class="th_name">Property Name</th> 8030 <th class="th_type">Type</th> 8031 <th class="th_description">Description</th> 8032 <th class="th_units">Units</th> 8033 <th class="th_range">Range</th> 8034 <th class="th_tags">Tags</th> 8035 </tr> 8036 </thead> 8037 8038 <tbody> 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 <tr class="entry" id="controls_android.demosaic.mode"> 8050 <td class="entry_name 8051 " rowspan="1"> 8052 android.<wbr/>demosaic.<wbr/>mode 8053 </td> 8054 <td class="entry_type"> 8055 <span class="entry_type_name entry_type_name_enum">byte</span> 8056 8057 <span class="entry_type_visibility"> [system]</span> 8058 8059 8060 8061 8062 8063 <ul class="entry_type_enum"> 8064 <li> 8065 <span class="entry_type_enum_name">FAST</span> 8066 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 8067 Bayer RAW output.<wbr/></p></span> 8068 </li> 8069 <li> 8070 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8071 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate is slowed down 8072 relative to raw output.<wbr/></p></span> 8073 </li> 8074 </ul> 8075 8076 </td> <!-- entry_type --> 8077 8078 <td class="entry_description"> 8079 <p>Controls the quality of the demosaicing 8080 processing.<wbr/></p> 8081 </td> 8082 8083 <td class="entry_units"> 8084 </td> 8085 8086 <td class="entry_range"> 8087 </td> 8088 8089 <td class="entry_tags"> 8090 <ul class="entry_tags"> 8091 <li><a href="#tag_FUTURE">FUTURE</a></li> 8092 </ul> 8093 </td> 8094 8095 </tr> 8096 8097 8098 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8099 <!-- end of entry --> 8100 8101 8102 8103 <!-- end of kind --> 8104 </tbody> 8105 8106 <!-- end of section --> 8107 <tr><td colspan="6" id="section_edge" class="section">edge</td></tr> 8108 8109 8110 <tr><td colspan="6" class="kind">controls</td></tr> 8111 8112 <thead class="entries_header"> 8113 <tr> 8114 <th class="th_name">Property Name</th> 8115 <th class="th_type">Type</th> 8116 <th class="th_description">Description</th> 8117 <th class="th_units">Units</th> 8118 <th class="th_range">Range</th> 8119 <th class="th_tags">Tags</th> 8120 </tr> 8121 </thead> 8122 8123 <tbody> 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 <tr class="entry" id="controls_android.edge.mode"> 8135 <td class="entry_name 8136 " rowspan="3"> 8137 android.<wbr/>edge.<wbr/>mode 8138 </td> 8139 <td class="entry_type"> 8140 <span class="entry_type_name entry_type_name_enum">byte</span> 8141 8142 <span class="entry_type_visibility"> [public]</span> 8143 8144 8145 <span class="entry_type_hwlevel">[full] </span> 8146 8147 8148 8149 <ul class="entry_type_enum"> 8150 <li> 8151 <span class="entry_type_enum_name">OFF</span> 8152 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 8153 </li> 8154 <li> 8155 <span class="entry_type_enum_name">FAST</span> 8156 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate relative to sensor 8157 output</p></span> 8158 </li> 8159 <li> 8160 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8161 <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of reducing output frame rate.<wbr/></p></span> 8162 </li> 8163 </ul> 8164 8165 </td> <!-- entry_type --> 8166 8167 <td class="entry_description"> 8168 <p>Operation mode for edge 8169 enhancement.<wbr/></p> 8170 </td> 8171 8172 <td class="entry_units"> 8173 </td> 8174 8175 <td class="entry_range"> 8176 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 8177 </td> 8178 8179 <td class="entry_tags"> 8180 <ul class="entry_tags"> 8181 <li><a href="#tag_V1">V1</a></li> 8182 </ul> 8183 </td> 8184 8185 </tr> 8186 <tr class="entries_header"> 8187 <th class="th_details" colspan="5">Details</th> 8188 </tr> 8189 <tr class="entry_cont"> 8190 <td class="entry_details" colspan="5"> 8191 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 8192 no enhancement will be applied by the camera device.<wbr/></p> 8193 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 8194 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 8195 camera device will use the highest-quality enhancement algorithms,<wbr/> 8196 even if it slows down capture rate.<wbr/> FAST means the camera device will 8197 not slow down capture rate when applying edge enhancement.<wbr/></p> 8198 </td> 8199 </tr> 8200 8201 8202 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8203 <!-- end of entry --> 8204 8205 8206 <tr class="entry" id="controls_android.edge.strength"> 8207 <td class="entry_name 8208 " rowspan="1"> 8209 android.<wbr/>edge.<wbr/>strength 8210 </td> 8211 <td class="entry_type"> 8212 <span class="entry_type_name">byte</span> 8213 8214 <span class="entry_type_visibility"> [system]</span> 8215 8216 8217 8218 8219 8220 8221 </td> <!-- entry_type --> 8222 8223 <td class="entry_description"> 8224 <p>Control the amount of edge enhancement 8225 applied to the images</p> 8226 </td> 8227 8228 <td class="entry_units"> 8229 1-10; 10 is maximum sharpening 8230 </td> 8231 8232 <td class="entry_range"> 8233 </td> 8234 8235 <td class="entry_tags"> 8236 <ul class="entry_tags"> 8237 <li><a href="#tag_FUTURE">FUTURE</a></li> 8238 </ul> 8239 </td> 8240 8241 </tr> 8242 8243 8244 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8245 <!-- end of entry --> 8246 8247 8248 8249 <!-- end of kind --> 8250 </tbody> 8251 <tr><td colspan="6" class="kind">static</td></tr> 8252 8253 <thead class="entries_header"> 8254 <tr> 8255 <th class="th_name">Property Name</th> 8256 <th class="th_type">Type</th> 8257 <th class="th_description">Description</th> 8258 <th class="th_units">Units</th> 8259 <th class="th_range">Range</th> 8260 <th class="th_tags">Tags</th> 8261 </tr> 8262 </thead> 8263 8264 <tbody> 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 <tr class="entry" id="static_android.edge.availableEdgeModes"> 8276 <td class="entry_name 8277 " rowspan="3"> 8278 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes 8279 </td> 8280 <td class="entry_type"> 8281 <span class="entry_type_name">byte</span> 8282 <span class="entry_type_container">x</span> 8283 8284 <span class="entry_type_array"> 8285 n 8286 </span> 8287 <span class="entry_type_visibility"> [public as enumList]</span> 8288 8289 8290 <span class="entry_type_hwlevel">[full] </span> 8291 8292 8293 <div class="entry_type_notes">list of enums</div> 8294 8295 8296 </td> <!-- entry_type --> 8297 8298 <td class="entry_description"> 8299 <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 8300 device.<wbr/></p> 8301 </td> 8302 8303 <td class="entry_units"> 8304 </td> 8305 8306 <td class="entry_range"> 8307 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p> 8308 </td> 8309 8310 <td class="entry_tags"> 8311 <ul class="entry_tags"> 8312 <li><a href="#tag_V1">V1</a></li> 8313 </ul> 8314 </td> 8315 8316 </tr> 8317 <tr class="entries_header"> 8318 <th class="th_details" colspan="5">Details</th> 8319 </tr> 8320 <tr class="entry_cont"> 8321 <td class="entry_details" colspan="5"> 8322 <p>Full-capability camera devices must always support OFF; all devices will list FAST.<wbr/></p> 8323 </td> 8324 </tr> 8325 8326 8327 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8328 <!-- end of entry --> 8329 8330 8331 8332 <!-- end of kind --> 8333 </tbody> 8334 <tr><td colspan="6" class="kind">dynamic</td></tr> 8335 8336 <thead class="entries_header"> 8337 <tr> 8338 <th class="th_name">Property Name</th> 8339 <th class="th_type">Type</th> 8340 <th class="th_description">Description</th> 8341 <th class="th_units">Units</th> 8342 <th class="th_range">Range</th> 8343 <th class="th_tags">Tags</th> 8344 </tr> 8345 </thead> 8346 8347 <tbody> 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 <tr class="entry" id="dynamic_android.edge.mode"> 8359 <td class="entry_name 8360 " rowspan="3"> 8361 android.<wbr/>edge.<wbr/>mode 8362 </td> 8363 <td class="entry_type"> 8364 <span class="entry_type_name entry_type_name_enum">byte</span> 8365 8366 <span class="entry_type_visibility"> [public]</span> 8367 8368 8369 <span class="entry_type_hwlevel">[full] </span> 8370 8371 8372 8373 <ul class="entry_type_enum"> 8374 <li> 8375 <span class="entry_type_enum_name">OFF</span> 8376 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 8377 </li> 8378 <li> 8379 <span class="entry_type_enum_name">FAST</span> 8380 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate relative to sensor 8381 output</p></span> 8382 </li> 8383 <li> 8384 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8385 <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of reducing output frame rate.<wbr/></p></span> 8386 </li> 8387 </ul> 8388 8389 </td> <!-- entry_type --> 8390 8391 <td class="entry_description"> 8392 <p>Operation mode for edge 8393 enhancement.<wbr/></p> 8394 </td> 8395 8396 <td class="entry_units"> 8397 </td> 8398 8399 <td class="entry_range"> 8400 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 8401 </td> 8402 8403 <td class="entry_tags"> 8404 <ul class="entry_tags"> 8405 <li><a href="#tag_V1">V1</a></li> 8406 </ul> 8407 </td> 8408 8409 </tr> 8410 <tr class="entries_header"> 8411 <th class="th_details" colspan="5">Details</th> 8412 </tr> 8413 <tr class="entry_cont"> 8414 <td class="entry_details" colspan="5"> 8415 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 8416 no enhancement will be applied by the camera device.<wbr/></p> 8417 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 8418 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 8419 camera device will use the highest-quality enhancement algorithms,<wbr/> 8420 even if it slows down capture rate.<wbr/> FAST means the camera device will 8421 not slow down capture rate when applying edge enhancement.<wbr/></p> 8422 </td> 8423 </tr> 8424 8425 8426 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8427 <!-- end of entry --> 8428 8429 8430 8431 <!-- end of kind --> 8432 </tbody> 8433 8434 <!-- end of section --> 8435 <tr><td colspan="6" id="section_flash" class="section">flash</td></tr> 8436 8437 8438 <tr><td colspan="6" class="kind">controls</td></tr> 8439 8440 <thead class="entries_header"> 8441 <tr> 8442 <th class="th_name">Property Name</th> 8443 <th class="th_type">Type</th> 8444 <th class="th_description">Description</th> 8445 <th class="th_units">Units</th> 8446 <th class="th_range">Range</th> 8447 <th class="th_tags">Tags</th> 8448 </tr> 8449 </thead> 8450 8451 <tbody> 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 <tr class="entry" id="controls_android.flash.firingPower"> 8463 <td class="entry_name 8464 " rowspan="3"> 8465 android.<wbr/>flash.<wbr/>firing<wbr/>Power 8466 </td> 8467 <td class="entry_type"> 8468 <span class="entry_type_name">byte</span> 8469 8470 <span class="entry_type_visibility"> [system]</span> 8471 8472 8473 8474 8475 8476 8477 </td> <!-- entry_type --> 8478 8479 <td class="entry_description"> 8480 <p>Power for flash firing/<wbr/>torch</p> 8481 </td> 8482 8483 <td class="entry_units"> 8484 10 is max power; 0 is no flash.<wbr/> Linear 8485 </td> 8486 8487 <td class="entry_range"> 8488 <p>0 - 10</p> 8489 </td> 8490 8491 <td class="entry_tags"> 8492 <ul class="entry_tags"> 8493 <li><a href="#tag_FUTURE">FUTURE</a></li> 8494 </ul> 8495 </td> 8496 8497 </tr> 8498 <tr class="entries_header"> 8499 <th class="th_details" colspan="5">Details</th> 8500 </tr> 8501 <tr class="entry_cont"> 8502 <td class="entry_details" colspan="5"> 8503 <p>Power for snapshot may use a different scale than 8504 for torch mode.<wbr/> Only one entry for torch mode will be 8505 used</p> 8506 </td> 8507 </tr> 8508 8509 8510 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8511 <!-- end of entry --> 8512 8513 8514 <tr class="entry" id="controls_android.flash.firingTime"> 8515 <td class="entry_name 8516 " rowspan="3"> 8517 android.<wbr/>flash.<wbr/>firing<wbr/>Time 8518 </td> 8519 <td class="entry_type"> 8520 <span class="entry_type_name">int64</span> 8521 8522 <span class="entry_type_visibility"> [system]</span> 8523 8524 8525 8526 8527 8528 8529 </td> <!-- entry_type --> 8530 8531 <td class="entry_description"> 8532 <p>Firing time of flash relative to start of 8533 exposure</p> 8534 </td> 8535 8536 <td class="entry_units"> 8537 nanoseconds 8538 </td> 8539 8540 <td class="entry_range"> 8541 <p>0-(exposure time-flash duration)</p> 8542 </td> 8543 8544 <td class="entry_tags"> 8545 <ul class="entry_tags"> 8546 <li><a href="#tag_FUTURE">FUTURE</a></li> 8547 </ul> 8548 </td> 8549 8550 </tr> 8551 <tr class="entries_header"> 8552 <th class="th_details" colspan="5">Details</th> 8553 </tr> 8554 <tr class="entry_cont"> 8555 <td class="entry_details" colspan="5"> 8556 <p>Clamped to (0,<wbr/> exposure time - flash 8557 duration).<wbr/></p> 8558 </td> 8559 </tr> 8560 8561 8562 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8563 <!-- end of entry --> 8564 8565 8566 <tr class="entry" id="controls_android.flash.mode"> 8567 <td class="entry_name 8568 " rowspan="3"> 8569 android.<wbr/>flash.<wbr/>mode 8570 </td> 8571 <td class="entry_type"> 8572 <span class="entry_type_name entry_type_name_enum">byte</span> 8573 8574 <span class="entry_type_visibility"> [public]</span> 8575 8576 8577 <span class="entry_type_hwlevel">[legacy] </span> 8578 8579 8580 8581 <ul class="entry_type_enum"> 8582 <li> 8583 <span class="entry_type_enum_name">OFF</span> 8584 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 8585 </li> 8586 <li> 8587 <span class="entry_type_enum_name">SINGLE</span> 8588 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 8589 for this capture.<wbr/></p></span> 8590 </li> 8591 <li> 8592 <span class="entry_type_enum_name">TORCH</span> 8593 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 8594 </li> 8595 </ul> 8596 8597 </td> <!-- entry_type --> 8598 8599 <td class="entry_description"> 8600 <p>The desired mode for for the camera device's flash control.<wbr/></p> 8601 </td> 8602 8603 <td class="entry_units"> 8604 </td> 8605 8606 <td class="entry_range"> 8607 </td> 8608 8609 <td class="entry_tags"> 8610 <ul class="entry_tags"> 8611 <li><a href="#tag_BC">BC</a></li> 8612 </ul> 8613 </td> 8614 8615 </tr> 8616 <tr class="entries_header"> 8617 <th class="th_details" colspan="5">Details</th> 8618 </tr> 8619 <tr class="entry_cont"> 8620 <td class="entry_details" colspan="5"> 8621 <p>This control is only effective when flash unit is available 8622 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 8623 <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/> 8624 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 8625 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 8626 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 8627 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 8628 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 8629 control should be used along with auto-exposure (AE) precapture metering sequence 8630 (<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> 8631 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 8632 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 8633 <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> 8634 </td> 8635 </tr> 8636 8637 8638 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8639 <!-- end of entry --> 8640 8641 8642 8643 <!-- end of kind --> 8644 </tbody> 8645 <tr><td colspan="6" class="kind">static</td></tr> 8646 8647 <thead class="entries_header"> 8648 <tr> 8649 <th class="th_name">Property Name</th> 8650 <th class="th_type">Type</th> 8651 <th class="th_description">Description</th> 8652 <th class="th_units">Units</th> 8653 <th class="th_range">Range</th> 8654 <th class="th_tags">Tags</th> 8655 </tr> 8656 </thead> 8657 8658 <tbody> 8659 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 <tr class="entry" id="static_android.flash.info.available"> 8672 <td class="entry_name 8673 " rowspan="3"> 8674 android.<wbr/>flash.<wbr/>info.<wbr/>available 8675 </td> 8676 <td class="entry_type"> 8677 <span class="entry_type_name entry_type_name_enum">byte</span> 8678 8679 <span class="entry_type_visibility"> [public as boolean]</span> 8680 8681 8682 <span class="entry_type_hwlevel">[legacy] </span> 8683 8684 8685 8686 <ul class="entry_type_enum"> 8687 <li> 8688 <span class="entry_type_enum_name">FALSE</span> 8689 </li> 8690 <li> 8691 <span class="entry_type_enum_name">TRUE</span> 8692 </li> 8693 </ul> 8694 8695 </td> <!-- entry_type --> 8696 8697 <td class="entry_description"> 8698 <p>Whether this camera device has a 8699 flash unit.<wbr/></p> 8700 </td> 8701 8702 <td class="entry_units"> 8703 </td> 8704 8705 <td class="entry_range"> 8706 </td> 8707 8708 <td class="entry_tags"> 8709 <ul class="entry_tags"> 8710 <li><a href="#tag_BC">BC</a></li> 8711 </ul> 8712 </td> 8713 8714 </tr> 8715 <tr class="entries_header"> 8716 <th class="th_details" colspan="5">Details</th> 8717 </tr> 8718 <tr class="entry_cont"> 8719 <td class="entry_details" colspan="5"> 8720 <p>Will be <code>false</code> if no flash is available.<wbr/></p> 8721 <p>If there is no flash unit,<wbr/> none of the flash controls do 8722 anything.<wbr/></p> 8723 </td> 8724 </tr> 8725 8726 8727 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8728 <!-- end of entry --> 8729 8730 8731 <tr class="entry" id="static_android.flash.info.chargeDuration"> 8732 <td class="entry_name 8733 " rowspan="3"> 8734 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 8735 </td> 8736 <td class="entry_type"> 8737 <span class="entry_type_name">int64</span> 8738 8739 <span class="entry_type_visibility"> [system]</span> 8740 8741 8742 8743 8744 8745 8746 </td> <!-- entry_type --> 8747 8748 <td class="entry_description"> 8749 <p>Time taken before flash can fire 8750 again</p> 8751 </td> 8752 8753 <td class="entry_units"> 8754 nanoseconds 8755 </td> 8756 8757 <td class="entry_range"> 8758 <p>0-1e9</p> 8759 </td> 8760 8761 <td class="entry_tags"> 8762 <ul class="entry_tags"> 8763 <li><a href="#tag_FUTURE">FUTURE</a></li> 8764 </ul> 8765 </td> 8766 8767 </tr> 8768 <tr class="entries_header"> 8769 <th class="th_details" colspan="5">Details</th> 8770 </tr> 8771 <tr class="entry_cont"> 8772 <td class="entry_details" colspan="5"> 8773 <p>1 second too long/<wbr/>too short for recharge? Should 8774 this be power-dependent?</p> 8775 </td> 8776 </tr> 8777 8778 8779 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8780 <!-- end of entry --> 8781 8782 8783 8784 8785 8786 <tr class="entry" id="static_android.flash.colorTemperature"> 8787 <td class="entry_name 8788 " rowspan="1"> 8789 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 8790 </td> 8791 <td class="entry_type"> 8792 <span class="entry_type_name">byte</span> 8793 8794 <span class="entry_type_visibility"> [system]</span> 8795 8796 8797 8798 8799 8800 8801 </td> <!-- entry_type --> 8802 8803 <td class="entry_description"> 8804 <p>The x,<wbr/>y whitepoint of the 8805 flash</p> 8806 </td> 8807 8808 <td class="entry_units"> 8809 pair of floats 8810 </td> 8811 8812 <td class="entry_range"> 8813 <p>0-1 for both</p> 8814 </td> 8815 8816 <td class="entry_tags"> 8817 <ul class="entry_tags"> 8818 <li><a href="#tag_FUTURE">FUTURE</a></li> 8819 </ul> 8820 </td> 8821 8822 </tr> 8823 8824 8825 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8826 <!-- end of entry --> 8827 8828 8829 <tr class="entry" id="static_android.flash.maxEnergy"> 8830 <td class="entry_name 8831 " rowspan="1"> 8832 android.<wbr/>flash.<wbr/>max<wbr/>Energy 8833 </td> 8834 <td class="entry_type"> 8835 <span class="entry_type_name">byte</span> 8836 8837 <span class="entry_type_visibility"> [system]</span> 8838 8839 8840 8841 8842 8843 8844 </td> <!-- entry_type --> 8845 8846 <td class="entry_description"> 8847 <p>Max energy output of the flash for a full 8848 power single flash</p> 8849 </td> 8850 8851 <td class="entry_units"> 8852 lumen-seconds 8853 </td> 8854 8855 <td class="entry_range"> 8856 <p>>= 0</p> 8857 </td> 8858 8859 <td class="entry_tags"> 8860 <ul class="entry_tags"> 8861 <li><a href="#tag_FUTURE">FUTURE</a></li> 8862 </ul> 8863 </td> 8864 8865 </tr> 8866 8867 8868 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8869 <!-- end of entry --> 8870 8871 8872 8873 <!-- end of kind --> 8874 </tbody> 8875 <tr><td colspan="6" class="kind">dynamic</td></tr> 8876 8877 <thead class="entries_header"> 8878 <tr> 8879 <th class="th_name">Property Name</th> 8880 <th class="th_type">Type</th> 8881 <th class="th_description">Description</th> 8882 <th class="th_units">Units</th> 8883 <th class="th_range">Range</th> 8884 <th class="th_tags">Tags</th> 8885 </tr> 8886 </thead> 8887 8888 <tbody> 8889 8890 8891 8892 8893 8894 8895 8896 8897 8898 8899 <tr class="entry" id="dynamic_android.flash.firingPower"> 8900 <td class="entry_name 8901 " rowspan="3"> 8902 android.<wbr/>flash.<wbr/>firing<wbr/>Power 8903 </td> 8904 <td class="entry_type"> 8905 <span class="entry_type_name">byte</span> 8906 8907 <span class="entry_type_visibility"> [system]</span> 8908 8909 8910 8911 8912 8913 8914 </td> <!-- entry_type --> 8915 8916 <td class="entry_description"> 8917 <p>Power for flash firing/<wbr/>torch</p> 8918 </td> 8919 8920 <td class="entry_units"> 8921 10 is max power; 0 is no flash.<wbr/> Linear 8922 </td> 8923 8924 <td class="entry_range"> 8925 <p>0 - 10</p> 8926 </td> 8927 8928 <td class="entry_tags"> 8929 <ul class="entry_tags"> 8930 <li><a href="#tag_FUTURE">FUTURE</a></li> 8931 </ul> 8932 </td> 8933 8934 </tr> 8935 <tr class="entries_header"> 8936 <th class="th_details" colspan="5">Details</th> 8937 </tr> 8938 <tr class="entry_cont"> 8939 <td class="entry_details" colspan="5"> 8940 <p>Power for snapshot may use a different scale than 8941 for torch mode.<wbr/> Only one entry for torch mode will be 8942 used</p> 8943 </td> 8944 </tr> 8945 8946 8947 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8948 <!-- end of entry --> 8949 8950 8951 <tr class="entry" id="dynamic_android.flash.firingTime"> 8952 <td class="entry_name 8953 " rowspan="3"> 8954 android.<wbr/>flash.<wbr/>firing<wbr/>Time 8955 </td> 8956 <td class="entry_type"> 8957 <span class="entry_type_name">int64</span> 8958 8959 <span class="entry_type_visibility"> [system]</span> 8960 8961 8962 8963 8964 8965 8966 </td> <!-- entry_type --> 8967 8968 <td class="entry_description"> 8969 <p>Firing time of flash relative to start of 8970 exposure</p> 8971 </td> 8972 8973 <td class="entry_units"> 8974 nanoseconds 8975 </td> 8976 8977 <td class="entry_range"> 8978 <p>0-(exposure time-flash duration)</p> 8979 </td> 8980 8981 <td class="entry_tags"> 8982 <ul class="entry_tags"> 8983 <li><a href="#tag_FUTURE">FUTURE</a></li> 8984 </ul> 8985 </td> 8986 8987 </tr> 8988 <tr class="entries_header"> 8989 <th class="th_details" colspan="5">Details</th> 8990 </tr> 8991 <tr class="entry_cont"> 8992 <td class="entry_details" colspan="5"> 8993 <p>Clamped to (0,<wbr/> exposure time - flash 8994 duration).<wbr/></p> 8995 </td> 8996 </tr> 8997 8998 8999 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9000 <!-- end of entry --> 9001 9002 9003 <tr class="entry" id="dynamic_android.flash.mode"> 9004 <td class="entry_name 9005 " rowspan="3"> 9006 android.<wbr/>flash.<wbr/>mode 9007 </td> 9008 <td class="entry_type"> 9009 <span class="entry_type_name entry_type_name_enum">byte</span> 9010 9011 <span class="entry_type_visibility"> [public]</span> 9012 9013 9014 <span class="entry_type_hwlevel">[legacy] </span> 9015 9016 9017 9018 <ul class="entry_type_enum"> 9019 <li> 9020 <span class="entry_type_enum_name">OFF</span> 9021 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 9022 </li> 9023 <li> 9024 <span class="entry_type_enum_name">SINGLE</span> 9025 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 9026 for this capture.<wbr/></p></span> 9027 </li> 9028 <li> 9029 <span class="entry_type_enum_name">TORCH</span> 9030 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 9031 </li> 9032 </ul> 9033 9034 </td> <!-- entry_type --> 9035 9036 <td class="entry_description"> 9037 <p>The desired mode for for the camera device's flash control.<wbr/></p> 9038 </td> 9039 9040 <td class="entry_units"> 9041 </td> 9042 9043 <td class="entry_range"> 9044 </td> 9045 9046 <td class="entry_tags"> 9047 <ul class="entry_tags"> 9048 <li><a href="#tag_BC">BC</a></li> 9049 </ul> 9050 </td> 9051 9052 </tr> 9053 <tr class="entries_header"> 9054 <th class="th_details" colspan="5">Details</th> 9055 </tr> 9056 <tr class="entry_cont"> 9057 <td class="entry_details" colspan="5"> 9058 <p>This control is only effective when flash unit is available 9059 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 9060 <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/> 9061 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 9062 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 9063 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 9064 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 9065 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 9066 control should be used along with auto-exposure (AE) precapture metering sequence 9067 (<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> 9068 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 9069 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 9070 <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> 9071 </td> 9072 </tr> 9073 9074 9075 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9076 <!-- end of entry --> 9077 9078 9079 <tr class="entry" id="dynamic_android.flash.state"> 9080 <td class="entry_name 9081 " rowspan="3"> 9082 android.<wbr/>flash.<wbr/>state 9083 </td> 9084 <td class="entry_type"> 9085 <span class="entry_type_name entry_type_name_enum">byte</span> 9086 9087 <span class="entry_type_visibility"> [public]</span> 9088 9089 9090 <span class="entry_type_hwlevel">[limited] </span> 9091 9092 9093 9094 <ul class="entry_type_enum"> 9095 <li> 9096 <span class="entry_type_enum_name">UNAVAILABLE</span> 9097 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> 9098 </li> 9099 <li> 9100 <span class="entry_type_enum_name">CHARGING</span> 9101 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> 9102 </li> 9103 <li> 9104 <span class="entry_type_enum_name">READY</span> 9105 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> 9106 </li> 9107 <li> 9108 <span class="entry_type_enum_name">FIRED</span> 9109 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> 9110 </li> 9111 <li> 9112 <span class="entry_type_enum_name">PARTIAL</span> 9113 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p> 9114 <p>This is usually due to the next or previous frame having 9115 the flash fire,<wbr/> and the flash spilling into this capture 9116 due to hardware limitations.<wbr/></p></span> 9117 </li> 9118 </ul> 9119 9120 </td> <!-- entry_type --> 9121 9122 <td class="entry_description"> 9123 <p>Current state of the flash 9124 unit.<wbr/></p> 9125 </td> 9126 9127 <td class="entry_units"> 9128 </td> 9129 9130 <td class="entry_range"> 9131 </td> 9132 9133 <td class="entry_tags"> 9134 </td> 9135 9136 </tr> 9137 <tr class="entries_header"> 9138 <th class="th_details" colspan="5">Details</th> 9139 </tr> 9140 <tr class="entry_cont"> 9141 <td class="entry_details" colspan="5"> 9142 <p>When the camera device doesn't have flash unit 9143 (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/> 9144 Other states indicate the current flash status.<wbr/></p> 9145 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p> 9146 <ul> 9147 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li> 9148 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH 9149 will always return FIRED.<wbr/></li> 9150 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH 9151 will always return FIRED.<wbr/></li> 9152 </ul> 9153 <p>In all other conditions the state will not be available on 9154 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p> 9155 </td> 9156 </tr> 9157 9158 9159 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9160 <!-- end of entry --> 9161 9162 9163 9164 <!-- end of kind --> 9165 </tbody> 9166 9167 <!-- end of section --> 9168 <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr> 9169 9170 9171 <tr><td colspan="6" class="kind">controls</td></tr> 9172 9173 <thead class="entries_header"> 9174 <tr> 9175 <th class="th_name">Property Name</th> 9176 <th class="th_type">Type</th> 9177 <th class="th_description">Description</th> 9178 <th class="th_units">Units</th> 9179 <th class="th_range">Range</th> 9180 <th class="th_tags">Tags</th> 9181 </tr> 9182 </thead> 9183 9184 <tbody> 9185 9186 9187 9188 9189 9190 9191 9192 9193 9194 9195 <tr class="entry" id="controls_android.hotPixel.mode"> 9196 <td class="entry_name 9197 " rowspan="3"> 9198 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 9199 </td> 9200 <td class="entry_type"> 9201 <span class="entry_type_name entry_type_name_enum">byte</span> 9202 9203 <span class="entry_type_visibility"> [public]</span> 9204 9205 9206 9207 9208 9209 <ul class="entry_type_enum"> 9210 <li> 9211 <span class="entry_type_enum_name">OFF</span> 9212 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 9213 <p>The frame rate must not be reduced relative to sensor raw output 9214 for this option.<wbr/></p> 9215 <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> 9216 </li> 9217 <li> 9218 <span class="entry_type_enum_name">FAST</span> 9219 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 9220 rate relative to sensor raw output.<wbr/></p> 9221 <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> 9222 </li> 9223 <li> 9224 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9225 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 9226 of reducing frame rate relative to sensor raw output.<wbr/></p> 9227 <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> 9228 </li> 9229 </ul> 9230 9231 </td> <!-- entry_type --> 9232 9233 <td class="entry_description"> 9234 <p>Operational mode for hot pixel correction.<wbr/></p> 9235 </td> 9236 9237 <td class="entry_units"> 9238 </td> 9239 9240 <td class="entry_range"> 9241 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 9242 </td> 9243 9244 <td class="entry_tags"> 9245 <ul class="entry_tags"> 9246 <li><a href="#tag_V1">V1</a></li> 9247 <li><a href="#tag_RAW">RAW</a></li> 9248 </ul> 9249 </td> 9250 9251 </tr> 9252 <tr class="entries_header"> 9253 <th class="th_details" colspan="5">Details</th> 9254 </tr> 9255 <tr class="entry_cont"> 9256 <td class="entry_details" colspan="5"> 9257 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 9258 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 9259 are stuck at an arbitrary value or are oversensitive).<wbr/></p> 9260 </td> 9261 </tr> 9262 9263 9264 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9265 <!-- end of entry --> 9266 9267 9268 9269 <!-- end of kind --> 9270 </tbody> 9271 <tr><td colspan="6" class="kind">static</td></tr> 9272 9273 <thead class="entries_header"> 9274 <tr> 9275 <th class="th_name">Property Name</th> 9276 <th class="th_type">Type</th> 9277 <th class="th_description">Description</th> 9278 <th class="th_units">Units</th> 9279 <th class="th_range">Range</th> 9280 <th class="th_tags">Tags</th> 9281 </tr> 9282 </thead> 9283 9284 <tbody> 9285 9286 9287 9288 9289 9290 9291 9292 9293 9294 9295 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> 9296 <td class="entry_name 9297 " rowspan="5"> 9298 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes 9299 </td> 9300 <td class="entry_type"> 9301 <span class="entry_type_name">byte</span> 9302 <span class="entry_type_container">x</span> 9303 9304 <span class="entry_type_array"> 9305 n 9306 </span> 9307 <span class="entry_type_visibility"> [public as enumList]</span> 9308 9309 9310 9311 9312 <div class="entry_type_notes">list of enums</div> 9313 9314 9315 </td> <!-- entry_type --> 9316 9317 <td class="entry_description"> 9318 <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 9319 camera device.<wbr/></p> 9320 </td> 9321 9322 <td class="entry_units"> 9323 </td> 9324 9325 <td class="entry_range"> 9326 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p> 9327 </td> 9328 9329 <td class="entry_tags"> 9330 <ul class="entry_tags"> 9331 <li><a href="#tag_V1">V1</a></li> 9332 <li><a href="#tag_RAW">RAW</a></li> 9333 </ul> 9334 </td> 9335 9336 </tr> 9337 <tr class="entries_header"> 9338 <th class="th_details" colspan="5">Details</th> 9339 </tr> 9340 <tr class="entry_cont"> 9341 <td class="entry_details" colspan="5"> 9342 <p>FULL mode camera devices will always support FAST.<wbr/></p> 9343 </td> 9344 </tr> 9345 9346 <tr class="entries_header"> 9347 <th class="th_details" colspan="5">HAL Implementation Details</th> 9348 </tr> 9349 <tr class="entry_cont"> 9350 <td class="entry_details" colspan="5"> 9351 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot 9352 pixels than actual pixels on the camera sensor.<wbr/></p> 9353 </td> 9354 </tr> 9355 9356 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9357 <!-- end of entry --> 9358 9359 9360 9361 <!-- end of kind --> 9362 </tbody> 9363 <tr><td colspan="6" class="kind">dynamic</td></tr> 9364 9365 <thead class="entries_header"> 9366 <tr> 9367 <th class="th_name">Property Name</th> 9368 <th class="th_type">Type</th> 9369 <th class="th_description">Description</th> 9370 <th class="th_units">Units</th> 9371 <th class="th_range">Range</th> 9372 <th class="th_tags">Tags</th> 9373 </tr> 9374 </thead> 9375 9376 <tbody> 9377 9378 9379 9380 9381 9382 9383 9384 9385 9386 9387 <tr class="entry" id="dynamic_android.hotPixel.mode"> 9388 <td class="entry_name 9389 " rowspan="3"> 9390 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 9391 </td> 9392 <td class="entry_type"> 9393 <span class="entry_type_name entry_type_name_enum">byte</span> 9394 9395 <span class="entry_type_visibility"> [public]</span> 9396 9397 9398 9399 9400 9401 <ul class="entry_type_enum"> 9402 <li> 9403 <span class="entry_type_enum_name">OFF</span> 9404 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 9405 <p>The frame rate must not be reduced relative to sensor raw output 9406 for this option.<wbr/></p> 9407 <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> 9408 </li> 9409 <li> 9410 <span class="entry_type_enum_name">FAST</span> 9411 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 9412 rate relative to sensor raw output.<wbr/></p> 9413 <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> 9414 </li> 9415 <li> 9416 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9417 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 9418 of reducing frame rate relative to sensor raw output.<wbr/></p> 9419 <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> 9420 </li> 9421 </ul> 9422 9423 </td> <!-- entry_type --> 9424 9425 <td class="entry_description"> 9426 <p>Operational mode for hot pixel correction.<wbr/></p> 9427 </td> 9428 9429 <td class="entry_units"> 9430 </td> 9431 9432 <td class="entry_range"> 9433 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 9434 </td> 9435 9436 <td class="entry_tags"> 9437 <ul class="entry_tags"> 9438 <li><a href="#tag_V1">V1</a></li> 9439 <li><a href="#tag_RAW">RAW</a></li> 9440 </ul> 9441 </td> 9442 9443 </tr> 9444 <tr class="entries_header"> 9445 <th class="th_details" colspan="5">Details</th> 9446 </tr> 9447 <tr class="entry_cont"> 9448 <td class="entry_details" colspan="5"> 9449 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 9450 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 9451 are stuck at an arbitrary value or are oversensitive).<wbr/></p> 9452 </td> 9453 </tr> 9454 9455 9456 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9457 <!-- end of entry --> 9458 9459 9460 9461 <!-- end of kind --> 9462 </tbody> 9463 9464 <!-- end of section --> 9465 <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr> 9466 9467 9468 <tr><td colspan="6" class="kind">controls</td></tr> 9469 9470 <thead class="entries_header"> 9471 <tr> 9472 <th class="th_name">Property Name</th> 9473 <th class="th_type">Type</th> 9474 <th class="th_description">Description</th> 9475 <th class="th_units">Units</th> 9476 <th class="th_range">Range</th> 9477 <th class="th_tags">Tags</th> 9478 </tr> 9479 </thead> 9480 9481 <tbody> 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 <tr class="entry" id="controls_android.jpeg.gpsLocation"> 9493 <td class="entry_name 9494 " rowspan="3"> 9495 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 9496 </td> 9497 <td class="entry_type"> 9498 <span class="entry_type_name">byte</span> 9499 9500 <span class="entry_type_visibility"> [public as location]</span> 9501 9502 <span class="entry_type_synthetic">[synthetic] </span> 9503 9504 <span class="entry_type_hwlevel">[legacy] </span> 9505 9506 9507 9508 9509 </td> <!-- entry_type --> 9510 9511 <td class="entry_description"> 9512 <p>A location object to use when generating image GPS metadata.<wbr/></p> 9513 </td> 9514 9515 <td class="entry_units"> 9516 </td> 9517 9518 <td class="entry_range"> 9519 </td> 9520 9521 <td class="entry_tags"> 9522 </td> 9523 9524 </tr> 9525 <tr class="entries_header"> 9526 <th class="th_details" colspan="5">Details</th> 9527 </tr> 9528 <tr class="entry_cont"> 9529 <td class="entry_details" colspan="5"> 9530 <p>Setting a location object in a request will include the GPS coordinates of the location 9531 into any JPEG images captured based on the request.<wbr/> These coordinates can then be 9532 viewed by anyone who receives the JPEG image.<wbr/></p> 9533 </td> 9534 </tr> 9535 9536 9537 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9538 <!-- end of entry --> 9539 9540 9541 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 9542 <td class="entry_name 9543 " rowspan="1"> 9544 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 9545 </td> 9546 <td class="entry_type"> 9547 <span class="entry_type_name">double</span> 9548 <span class="entry_type_container">x</span> 9549 9550 <span class="entry_type_array"> 9551 3 9552 </span> 9553 <span class="entry_type_visibility"> [hidden]</span> 9554 9555 9556 <span class="entry_type_hwlevel">[legacy] </span> 9557 9558 9559 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 9560 9561 9562 </td> <!-- entry_type --> 9563 9564 <td class="entry_description"> 9565 <p>GPS coordinates to include in output JPEG 9566 EXIF.<wbr/></p> 9567 </td> 9568 9569 <td class="entry_units"> 9570 </td> 9571 9572 <td class="entry_range"> 9573 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 9574 </td> 9575 9576 <td class="entry_tags"> 9577 <ul class="entry_tags"> 9578 <li><a href="#tag_BC">BC</a></li> 9579 </ul> 9580 </td> 9581 9582 </tr> 9583 9584 9585 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9586 <!-- end of entry --> 9587 9588 9589 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 9590 <td class="entry_name 9591 " rowspan="1"> 9592 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 9593 </td> 9594 <td class="entry_type"> 9595 <span class="entry_type_name">byte</span> 9596 9597 <span class="entry_type_visibility"> [hidden as string]</span> 9598 9599 9600 <span class="entry_type_hwlevel">[legacy] </span> 9601 9602 9603 9604 9605 </td> <!-- entry_type --> 9606 9607 <td class="entry_description"> 9608 <p>32 characters describing GPS algorithm to 9609 include in EXIF.<wbr/></p> 9610 </td> 9611 9612 <td class="entry_units"> 9613 UTF-8 null-terminated string 9614 </td> 9615 9616 <td class="entry_range"> 9617 </td> 9618 9619 <td class="entry_tags"> 9620 <ul class="entry_tags"> 9621 <li><a href="#tag_BC">BC</a></li> 9622 </ul> 9623 </td> 9624 9625 </tr> 9626 9627 9628 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9629 <!-- end of entry --> 9630 9631 9632 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 9633 <td class="entry_name 9634 " rowspan="1"> 9635 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 9636 </td> 9637 <td class="entry_type"> 9638 <span class="entry_type_name">int64</span> 9639 9640 <span class="entry_type_visibility"> [hidden]</span> 9641 9642 9643 <span class="entry_type_hwlevel">[legacy] </span> 9644 9645 9646 9647 9648 </td> <!-- entry_type --> 9649 9650 <td class="entry_description"> 9651 <p>Time GPS fix was made to include in 9652 EXIF.<wbr/></p> 9653 </td> 9654 9655 <td class="entry_units"> 9656 UTC in seconds since January 1,<wbr/> 1970 9657 </td> 9658 9659 <td class="entry_range"> 9660 </td> 9661 9662 <td class="entry_tags"> 9663 <ul class="entry_tags"> 9664 <li><a href="#tag_BC">BC</a></li> 9665 </ul> 9666 </td> 9667 9668 </tr> 9669 9670 9671 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9672 <!-- end of entry --> 9673 9674 9675 <tr class="entry" id="controls_android.jpeg.orientation"> 9676 <td class="entry_name 9677 " rowspan="3"> 9678 android.<wbr/>jpeg.<wbr/>orientation 9679 </td> 9680 <td class="entry_type"> 9681 <span class="entry_type_name">int32</span> 9682 9683 <span class="entry_type_visibility"> [public]</span> 9684 9685 9686 <span class="entry_type_hwlevel">[legacy] </span> 9687 9688 9689 9690 9691 </td> <!-- entry_type --> 9692 9693 <td class="entry_description"> 9694 <p>The orientation for a JPEG image.<wbr/></p> 9695 </td> 9696 9697 <td class="entry_units"> 9698 Degrees in multiples of 90 9699 </td> 9700 9701 <td class="entry_range"> 9702 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 9703 </td> 9704 9705 <td class="entry_tags"> 9706 <ul class="entry_tags"> 9707 <li><a href="#tag_BC">BC</a></li> 9708 </ul> 9709 </td> 9710 9711 </tr> 9712 <tr class="entries_header"> 9713 <th class="th_details" colspan="5">Details</th> 9714 </tr> 9715 <tr class="entry_cont"> 9716 <td class="entry_details" colspan="5"> 9717 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 9718 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 9719 upright.<wbr/></p> 9720 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 9721 rotate the image data to match this orientation.<wbr/></p> 9722 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 9723 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 9724 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 9725 sample code may be used:</p> 9726 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 9727 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 9728 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 9729 9730 //<wbr/> Round device orientation to a multiple of 90 9731 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 9732 9733 //<wbr/> Reverse device orientation for front-facing cameras 9734 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 9735 if (facingFront) deviceOrientation = -deviceOrientation; 9736 9737 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 9738 //<wbr/> the image upright relative to the device orientation 9739 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 9740 9741 return jpegOrientation; 9742 } 9743 </code></pre> 9744 </td> 9745 </tr> 9746 9747 9748 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9749 <!-- end of entry --> 9750 9751 9752 <tr class="entry" id="controls_android.jpeg.quality"> 9753 <td class="entry_name 9754 " rowspan="3"> 9755 android.<wbr/>jpeg.<wbr/>quality 9756 </td> 9757 <td class="entry_type"> 9758 <span class="entry_type_name">byte</span> 9759 9760 <span class="entry_type_visibility"> [public]</span> 9761 9762 9763 <span class="entry_type_hwlevel">[legacy] </span> 9764 9765 9766 9767 9768 </td> <!-- entry_type --> 9769 9770 <td class="entry_description"> 9771 <p>Compression quality of the final JPEG 9772 image.<wbr/></p> 9773 </td> 9774 9775 <td class="entry_units"> 9776 </td> 9777 9778 <td class="entry_range"> 9779 <p>1-100; larger is higher quality</p> 9780 </td> 9781 9782 <td class="entry_tags"> 9783 <ul class="entry_tags"> 9784 <li><a href="#tag_BC">BC</a></li> 9785 </ul> 9786 </td> 9787 9788 </tr> 9789 <tr class="entries_header"> 9790 <th class="th_details" colspan="5">Details</th> 9791 </tr> 9792 <tr class="entry_cont"> 9793 <td class="entry_details" colspan="5"> 9794 <p>85-95 is typical usage range.<wbr/></p> 9795 </td> 9796 </tr> 9797 9798 9799 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9800 <!-- end of entry --> 9801 9802 9803 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 9804 <td class="entry_name 9805 " rowspan="1"> 9806 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 9807 </td> 9808 <td class="entry_type"> 9809 <span class="entry_type_name">byte</span> 9810 9811 <span class="entry_type_visibility"> [public]</span> 9812 9813 9814 <span class="entry_type_hwlevel">[legacy] </span> 9815 9816 9817 9818 9819 </td> <!-- entry_type --> 9820 9821 <td class="entry_description"> 9822 <p>Compression quality of JPEG 9823 thumbnail.<wbr/></p> 9824 </td> 9825 9826 <td class="entry_units"> 9827 </td> 9828 9829 <td class="entry_range"> 9830 <p>1-100; larger is higher quality</p> 9831 </td> 9832 9833 <td class="entry_tags"> 9834 <ul class="entry_tags"> 9835 <li><a href="#tag_BC">BC</a></li> 9836 </ul> 9837 </td> 9838 9839 </tr> 9840 9841 9842 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9843 <!-- end of entry --> 9844 9845 9846 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 9847 <td class="entry_name 9848 " rowspan="5"> 9849 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 9850 </td> 9851 <td class="entry_type"> 9852 <span class="entry_type_name">int32</span> 9853 <span class="entry_type_container">x</span> 9854 9855 <span class="entry_type_array"> 9856 2 9857 </span> 9858 <span class="entry_type_visibility"> [public as size]</span> 9859 9860 9861 <span class="entry_type_hwlevel">[legacy] </span> 9862 9863 9864 9865 9866 </td> <!-- entry_type --> 9867 9868 <td class="entry_description"> 9869 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 9870 </td> 9871 9872 <td class="entry_units"> 9873 </td> 9874 9875 <td class="entry_range"> 9876 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 9877 </td> 9878 9879 <td class="entry_tags"> 9880 <ul class="entry_tags"> 9881 <li><a href="#tag_BC">BC</a></li> 9882 </ul> 9883 </td> 9884 9885 </tr> 9886 <tr class="entries_header"> 9887 <th class="th_details" colspan="5">Details</th> 9888 </tr> 9889 <tr class="entry_cont"> 9890 <td class="entry_details" colspan="5"> 9891 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 9892 but the captured JPEG will still be a valid image.<wbr/></p> 9893 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 9894 should have the same aspect ratio as the main JPEG output.<wbr/></p> 9895 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 9896 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 9897 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 9898 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 9899 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 9900 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 9901 </td> 9902 </tr> 9903 9904 <tr class="entries_header"> 9905 <th class="th_details" colspan="5">HAL Implementation Details</th> 9906 </tr> 9907 <tr class="entry_cont"> 9908 <td class="entry_details" colspan="5"> 9909 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 9910 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 9911 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 9912 thumbnail image cropping.<wbr/></p> 9913 </td> 9914 </tr> 9915 9916 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9917 <!-- end of entry --> 9918 9919 9920 9921 <!-- end of kind --> 9922 </tbody> 9923 <tr><td colspan="6" class="kind">static</td></tr> 9924 9925 <thead class="entries_header"> 9926 <tr> 9927 <th class="th_name">Property Name</th> 9928 <th class="th_type">Type</th> 9929 <th class="th_description">Description</th> 9930 <th class="th_units">Units</th> 9931 <th class="th_range">Range</th> 9932 <th class="th_tags">Tags</th> 9933 </tr> 9934 </thead> 9935 9936 <tbody> 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 9948 <td class="entry_name 9949 " rowspan="3"> 9950 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 9951 </td> 9952 <td class="entry_type"> 9953 <span class="entry_type_name">int32</span> 9954 <span class="entry_type_container">x</span> 9955 9956 <span class="entry_type_array"> 9957 2 x n 9958 </span> 9959 <span class="entry_type_visibility"> [public as size]</span> 9960 9961 9962 <span class="entry_type_hwlevel">[legacy] </span> 9963 9964 9965 9966 9967 </td> <!-- entry_type --> 9968 9969 <td class="entry_description"> 9970 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this 9971 camera device.<wbr/></p> 9972 </td> 9973 9974 <td class="entry_units"> 9975 </td> 9976 9977 <td class="entry_range"> 9978 </td> 9979 9980 <td class="entry_tags"> 9981 <ul class="entry_tags"> 9982 <li><a href="#tag_BC">BC</a></li> 9983 </ul> 9984 </td> 9985 9986 </tr> 9987 <tr class="entries_header"> 9988 <th class="th_details" colspan="5">Details</th> 9989 </tr> 9990 <tr class="entry_cont"> 9991 <td class="entry_details" colspan="5"> 9992 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no 9993 thumbnail should be generated.<wbr/></p> 9994 <p>Below condiditions will be satisfied for this size list:</p> 9995 <ul> 9996 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 9997 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 9998 <li>The aspect ratio of the largest thumbnail size will be same as the 9999 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/> 10000 The largest size is defined as the size that has the largest pixel area 10001 in a given size list.<wbr/></li> 10002 <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 10003 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 10004 and vice versa.<wbr/></li> 10005 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li> 10006 </ul> 10007 </td> 10008 </tr> 10009 10010 10011 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10012 <!-- end of entry --> 10013 10014 10015 <tr class="entry" id="static_android.jpeg.maxSize"> 10016 <td class="entry_name 10017 " rowspan="3"> 10018 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 10019 </td> 10020 <td class="entry_type"> 10021 <span class="entry_type_name">int32</span> 10022 10023 <span class="entry_type_visibility"> [system]</span> 10024 10025 10026 10027 10028 10029 10030 </td> <!-- entry_type --> 10031 10032 <td class="entry_description"> 10033 <p>Maximum size in bytes for the compressed 10034 JPEG buffer</p> 10035 </td> 10036 10037 <td class="entry_units"> 10038 </td> 10039 10040 <td class="entry_range"> 10041 <p>Must be large enough to fit any JPEG produced by 10042 the camera</p> 10043 </td> 10044 10045 <td class="entry_tags"> 10046 </td> 10047 10048 </tr> 10049 <tr class="entries_header"> 10050 <th class="th_details" colspan="5">Details</th> 10051 </tr> 10052 <tr class="entry_cont"> 10053 <td class="entry_details" colspan="5"> 10054 <p>This is used for sizing the gralloc buffers for 10055 JPEG</p> 10056 </td> 10057 </tr> 10058 10059 10060 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10061 <!-- end of entry --> 10062 10063 10064 10065 <!-- end of kind --> 10066 </tbody> 10067 <tr><td colspan="6" class="kind">dynamic</td></tr> 10068 10069 <thead class="entries_header"> 10070 <tr> 10071 <th class="th_name">Property Name</th> 10072 <th class="th_type">Type</th> 10073 <th class="th_description">Description</th> 10074 <th class="th_units">Units</th> 10075 <th class="th_range">Range</th> 10076 <th class="th_tags">Tags</th> 10077 </tr> 10078 </thead> 10079 10080 <tbody> 10081 10082 10083 10084 10085 10086 10087 10088 10089 10090 10091 <tr class="entry" id="dynamic_android.jpeg.gpsLocation"> 10092 <td class="entry_name 10093 " rowspan="3"> 10094 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 10095 </td> 10096 <td class="entry_type"> 10097 <span class="entry_type_name">byte</span> 10098 10099 <span class="entry_type_visibility"> [public as location]</span> 10100 10101 <span class="entry_type_synthetic">[synthetic] </span> 10102 10103 <span class="entry_type_hwlevel">[legacy] </span> 10104 10105 10106 10107 10108 </td> <!-- entry_type --> 10109 10110 <td class="entry_description"> 10111 <p>A location object to use when generating image GPS metadata.<wbr/></p> 10112 </td> 10113 10114 <td class="entry_units"> 10115 </td> 10116 10117 <td class="entry_range"> 10118 </td> 10119 10120 <td class="entry_tags"> 10121 </td> 10122 10123 </tr> 10124 <tr class="entries_header"> 10125 <th class="th_details" colspan="5">Details</th> 10126 </tr> 10127 <tr class="entry_cont"> 10128 <td class="entry_details" colspan="5"> 10129 <p>Setting a location object in a request will include the GPS coordinates of the location 10130 into any JPEG images captured based on the request.<wbr/> These coordinates can then be 10131 viewed by anyone who receives the JPEG image.<wbr/></p> 10132 </td> 10133 </tr> 10134 10135 10136 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10137 <!-- end of entry --> 10138 10139 10140 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 10141 <td class="entry_name 10142 " rowspan="1"> 10143 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 10144 </td> 10145 <td class="entry_type"> 10146 <span class="entry_type_name">double</span> 10147 <span class="entry_type_container">x</span> 10148 10149 <span class="entry_type_array"> 10150 3 10151 </span> 10152 <span class="entry_type_visibility"> [hidden]</span> 10153 10154 10155 <span class="entry_type_hwlevel">[legacy] </span> 10156 10157 10158 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 10159 10160 10161 </td> <!-- entry_type --> 10162 10163 <td class="entry_description"> 10164 <p>GPS coordinates to include in output JPEG 10165 EXIF.<wbr/></p> 10166 </td> 10167 10168 <td class="entry_units"> 10169 </td> 10170 10171 <td class="entry_range"> 10172 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 10173 </td> 10174 10175 <td class="entry_tags"> 10176 <ul class="entry_tags"> 10177 <li><a href="#tag_BC">BC</a></li> 10178 </ul> 10179 </td> 10180 10181 </tr> 10182 10183 10184 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10185 <!-- end of entry --> 10186 10187 10188 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 10189 <td class="entry_name 10190 " rowspan="1"> 10191 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 10192 </td> 10193 <td class="entry_type"> 10194 <span class="entry_type_name">byte</span> 10195 10196 <span class="entry_type_visibility"> [hidden as string]</span> 10197 10198 10199 <span class="entry_type_hwlevel">[legacy] </span> 10200 10201 10202 10203 10204 </td> <!-- entry_type --> 10205 10206 <td class="entry_description"> 10207 <p>32 characters describing GPS algorithm to 10208 include in EXIF.<wbr/></p> 10209 </td> 10210 10211 <td class="entry_units"> 10212 UTF-8 null-terminated string 10213 </td> 10214 10215 <td class="entry_range"> 10216 </td> 10217 10218 <td class="entry_tags"> 10219 <ul class="entry_tags"> 10220 <li><a href="#tag_BC">BC</a></li> 10221 </ul> 10222 </td> 10223 10224 </tr> 10225 10226 10227 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10228 <!-- end of entry --> 10229 10230 10231 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 10232 <td class="entry_name 10233 " rowspan="1"> 10234 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 10235 </td> 10236 <td class="entry_type"> 10237 <span class="entry_type_name">int64</span> 10238 10239 <span class="entry_type_visibility"> [hidden]</span> 10240 10241 10242 <span class="entry_type_hwlevel">[legacy] </span> 10243 10244 10245 10246 10247 </td> <!-- entry_type --> 10248 10249 <td class="entry_description"> 10250 <p>Time GPS fix was made to include in 10251 EXIF.<wbr/></p> 10252 </td> 10253 10254 <td class="entry_units"> 10255 UTC in seconds since January 1,<wbr/> 1970 10256 </td> 10257 10258 <td class="entry_range"> 10259 </td> 10260 10261 <td class="entry_tags"> 10262 <ul class="entry_tags"> 10263 <li><a href="#tag_BC">BC</a></li> 10264 </ul> 10265 </td> 10266 10267 </tr> 10268 10269 10270 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10271 <!-- end of entry --> 10272 10273 10274 <tr class="entry" id="dynamic_android.jpeg.orientation"> 10275 <td class="entry_name 10276 " rowspan="3"> 10277 android.<wbr/>jpeg.<wbr/>orientation 10278 </td> 10279 <td class="entry_type"> 10280 <span class="entry_type_name">int32</span> 10281 10282 <span class="entry_type_visibility"> [public]</span> 10283 10284 10285 <span class="entry_type_hwlevel">[legacy] </span> 10286 10287 10288 10289 10290 </td> <!-- entry_type --> 10291 10292 <td class="entry_description"> 10293 <p>The orientation for a JPEG image.<wbr/></p> 10294 </td> 10295 10296 <td class="entry_units"> 10297 Degrees in multiples of 90 10298 </td> 10299 10300 <td class="entry_range"> 10301 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 10302 </td> 10303 10304 <td class="entry_tags"> 10305 <ul class="entry_tags"> 10306 <li><a href="#tag_BC">BC</a></li> 10307 </ul> 10308 </td> 10309 10310 </tr> 10311 <tr class="entries_header"> 10312 <th class="th_details" colspan="5">Details</th> 10313 </tr> 10314 <tr class="entry_cont"> 10315 <td class="entry_details" colspan="5"> 10316 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 10317 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 10318 upright.<wbr/></p> 10319 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 10320 rotate the image data to match this orientation.<wbr/></p> 10321 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 10322 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 10323 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 10324 sample code may be used:</p> 10325 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 10326 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 10327 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 10328 10329 //<wbr/> Round device orientation to a multiple of 90 10330 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 10331 10332 //<wbr/> Reverse device orientation for front-facing cameras 10333 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 10334 if (facingFront) deviceOrientation = -deviceOrientation; 10335 10336 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 10337 //<wbr/> the image upright relative to the device orientation 10338 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 10339 10340 return jpegOrientation; 10341 } 10342 </code></pre> 10343 </td> 10344 </tr> 10345 10346 10347 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10348 <!-- end of entry --> 10349 10350 10351 <tr class="entry" id="dynamic_android.jpeg.quality"> 10352 <td class="entry_name 10353 " rowspan="3"> 10354 android.<wbr/>jpeg.<wbr/>quality 10355 </td> 10356 <td class="entry_type"> 10357 <span class="entry_type_name">byte</span> 10358 10359 <span class="entry_type_visibility"> [public]</span> 10360 10361 10362 <span class="entry_type_hwlevel">[legacy] </span> 10363 10364 10365 10366 10367 </td> <!-- entry_type --> 10368 10369 <td class="entry_description"> 10370 <p>Compression quality of the final JPEG 10371 image.<wbr/></p> 10372 </td> 10373 10374 <td class="entry_units"> 10375 </td> 10376 10377 <td class="entry_range"> 10378 <p>1-100; larger is higher quality</p> 10379 </td> 10380 10381 <td class="entry_tags"> 10382 <ul class="entry_tags"> 10383 <li><a href="#tag_BC">BC</a></li> 10384 </ul> 10385 </td> 10386 10387 </tr> 10388 <tr class="entries_header"> 10389 <th class="th_details" colspan="5">Details</th> 10390 </tr> 10391 <tr class="entry_cont"> 10392 <td class="entry_details" colspan="5"> 10393 <p>85-95 is typical usage range.<wbr/></p> 10394 </td> 10395 </tr> 10396 10397 10398 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10399 <!-- end of entry --> 10400 10401 10402 <tr class="entry" id="dynamic_android.jpeg.size"> 10403 <td class="entry_name 10404 " rowspan="3"> 10405 android.<wbr/>jpeg.<wbr/>size 10406 </td> 10407 <td class="entry_type"> 10408 <span class="entry_type_name">int32</span> 10409 10410 <span class="entry_type_visibility"> [system]</span> 10411 10412 10413 10414 10415 10416 10417 </td> <!-- entry_type --> 10418 10419 <td class="entry_description"> 10420 <p>The size of the compressed JPEG image,<wbr/> in 10421 bytes</p> 10422 </td> 10423 10424 <td class="entry_units"> 10425 </td> 10426 10427 <td class="entry_range"> 10428 <p>>= 0</p> 10429 </td> 10430 10431 <td class="entry_tags"> 10432 <ul class="entry_tags"> 10433 <li><a href="#tag_FUTURE">FUTURE</a></li> 10434 </ul> 10435 </td> 10436 10437 </tr> 10438 <tr class="entries_header"> 10439 <th class="th_details" colspan="5">Details</th> 10440 </tr> 10441 <tr class="entry_cont"> 10442 <td class="entry_details" colspan="5"> 10443 <p>If no JPEG output is produced for the request,<wbr/> 10444 this must be 0.<wbr/></p> 10445 <p>Otherwise,<wbr/> this describes the real size of the compressed 10446 JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 10447 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 10448 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 10449 the JPEG stream will be 1000000 bytes,<wbr/> of which the first 10450 500000 make up the real data.<wbr/></p> 10451 </td> 10452 </tr> 10453 10454 10455 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10456 <!-- end of entry --> 10457 10458 10459 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 10460 <td class="entry_name 10461 " rowspan="1"> 10462 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 10463 </td> 10464 <td class="entry_type"> 10465 <span class="entry_type_name">byte</span> 10466 10467 <span class="entry_type_visibility"> [public]</span> 10468 10469 10470 <span class="entry_type_hwlevel">[legacy] </span> 10471 10472 10473 10474 10475 </td> <!-- entry_type --> 10476 10477 <td class="entry_description"> 10478 <p>Compression quality of JPEG 10479 thumbnail.<wbr/></p> 10480 </td> 10481 10482 <td class="entry_units"> 10483 </td> 10484 10485 <td class="entry_range"> 10486 <p>1-100; larger is higher quality</p> 10487 </td> 10488 10489 <td class="entry_tags"> 10490 <ul class="entry_tags"> 10491 <li><a href="#tag_BC">BC</a></li> 10492 </ul> 10493 </td> 10494 10495 </tr> 10496 10497 10498 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10499 <!-- end of entry --> 10500 10501 10502 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 10503 <td class="entry_name 10504 " rowspan="5"> 10505 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 10506 </td> 10507 <td class="entry_type"> 10508 <span class="entry_type_name">int32</span> 10509 <span class="entry_type_container">x</span> 10510 10511 <span class="entry_type_array"> 10512 2 10513 </span> 10514 <span class="entry_type_visibility"> [public as size]</span> 10515 10516 10517 <span class="entry_type_hwlevel">[legacy] </span> 10518 10519 10520 10521 10522 </td> <!-- entry_type --> 10523 10524 <td class="entry_description"> 10525 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 10526 </td> 10527 10528 <td class="entry_units"> 10529 </td> 10530 10531 <td class="entry_range"> 10532 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 10533 </td> 10534 10535 <td class="entry_tags"> 10536 <ul class="entry_tags"> 10537 <li><a href="#tag_BC">BC</a></li> 10538 </ul> 10539 </td> 10540 10541 </tr> 10542 <tr class="entries_header"> 10543 <th class="th_details" colspan="5">Details</th> 10544 </tr> 10545 <tr class="entry_cont"> 10546 <td class="entry_details" colspan="5"> 10547 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 10548 but the captured JPEG will still be a valid image.<wbr/></p> 10549 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 10550 should have the same aspect ratio as the main JPEG output.<wbr/></p> 10551 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 10552 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 10553 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 10554 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 10555 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 10556 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 10557 </td> 10558 </tr> 10559 10560 <tr class="entries_header"> 10561 <th class="th_details" colspan="5">HAL Implementation Details</th> 10562 </tr> 10563 <tr class="entry_cont"> 10564 <td class="entry_details" colspan="5"> 10565 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 10566 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 10567 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 10568 thumbnail image cropping.<wbr/></p> 10569 </td> 10570 </tr> 10571 10572 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10573 <!-- end of entry --> 10574 10575 10576 10577 <!-- end of kind --> 10578 </tbody> 10579 10580 <!-- end of section --> 10581 <tr><td colspan="6" id="section_lens" class="section">lens</td></tr> 10582 10583 10584 <tr><td colspan="6" class="kind">controls</td></tr> 10585 10586 <thead class="entries_header"> 10587 <tr> 10588 <th class="th_name">Property Name</th> 10589 <th class="th_type">Type</th> 10590 <th class="th_description">Description</th> 10591 <th class="th_units">Units</th> 10592 <th class="th_range">Range</th> 10593 <th class="th_tags">Tags</th> 10594 </tr> 10595 </thead> 10596 10597 <tbody> 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 <tr class="entry" id="controls_android.lens.aperture"> 10609 <td class="entry_name 10610 " rowspan="3"> 10611 android.<wbr/>lens.<wbr/>aperture 10612 </td> 10613 <td class="entry_type"> 10614 <span class="entry_type_name">float</span> 10615 10616 <span class="entry_type_visibility"> [public]</span> 10617 10618 10619 <span class="entry_type_hwlevel">[full] </span> 10620 10621 10622 10623 10624 </td> <!-- entry_type --> 10625 10626 <td class="entry_description"> 10627 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 10628 effective aperture diameter.<wbr/></p> 10629 </td> 10630 10631 <td class="entry_units"> 10632 The f-number (f/<wbr/>N) 10633 </td> 10634 10635 <td class="entry_range"> 10636 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 10637 </td> 10638 10639 <td class="entry_tags"> 10640 <ul class="entry_tags"> 10641 <li><a href="#tag_V1">V1</a></li> 10642 </ul> 10643 </td> 10644 10645 </tr> 10646 <tr class="entries_header"> 10647 <th class="th_details" colspan="5">Details</th> 10648 </tr> 10649 <tr class="entry_cont"> 10650 <td class="entry_details" colspan="5"> 10651 <p>Setting this value is only supported on the camera devices that have a variable 10652 aperture lens.<wbr/></p> 10653 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 10654 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 10655 <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> 10656 to achieve manual exposure control.<wbr/></p> 10657 <p>The requested aperture value may take several frames to reach the 10658 requested value; the camera device will report the current (intermediate) 10659 aperture size in capture result metadata while the aperture is changing.<wbr/> 10660 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> 10661 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 10662 the ON modes,<wbr/> this will be overridden by the camera device 10663 auto-exposure algorithm,<wbr/> the overridden values are then provided 10664 back to the user in the corresponding result.<wbr/></p> 10665 </td> 10666 </tr> 10667 10668 10669 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10670 <!-- end of entry --> 10671 10672 10673 <tr class="entry" id="controls_android.lens.filterDensity"> 10674 <td class="entry_name 10675 " rowspan="3"> 10676 android.<wbr/>lens.<wbr/>filter<wbr/>Density 10677 </td> 10678 <td class="entry_type"> 10679 <span class="entry_type_name">float</span> 10680 10681 <span class="entry_type_visibility"> [public]</span> 10682 10683 10684 <span class="entry_type_hwlevel">[full] </span> 10685 10686 10687 10688 10689 </td> <!-- entry_type --> 10690 10691 <td class="entry_description"> 10692 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 10693 </td> 10694 10695 <td class="entry_units"> 10696 Exposure Value (EV) 10697 </td> 10698 10699 <td class="entry_range"> 10700 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 10701 </td> 10702 10703 <td class="entry_tags"> 10704 <ul class="entry_tags"> 10705 <li><a href="#tag_V1">V1</a></li> 10706 </ul> 10707 </td> 10708 10709 </tr> 10710 <tr class="entries_header"> 10711 <th class="th_details" colspan="5">Details</th> 10712 </tr> 10713 <tr class="entry_cont"> 10714 <td class="entry_details" colspan="5"> 10715 <p>This control will not be supported on most camera devices.<wbr/></p> 10716 <p>Lens filters are typically used to lower the amount of light the 10717 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 10718 step is the standard logarithmic representation,<wbr/> which are 10719 non-negative,<wbr/> and inversely proportional to the amount of light 10720 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 10721 in no reduction of the incoming light,<wbr/> and setting this to 2 would 10722 mean that the filter is set to reduce incoming light by two stops 10723 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 10724 <p>It may take several frames before the lens filter density changes 10725 to the requested value.<wbr/> While the filter density is still changing,<wbr/> 10726 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 10727 </td> 10728 </tr> 10729 10730 10731 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10732 <!-- end of entry --> 10733 10734 10735 <tr class="entry" id="controls_android.lens.focalLength"> 10736 <td class="entry_name 10737 " rowspan="3"> 10738 android.<wbr/>lens.<wbr/>focal<wbr/>Length 10739 </td> 10740 <td class="entry_type"> 10741 <span class="entry_type_name">float</span> 10742 10743 <span class="entry_type_visibility"> [public]</span> 10744 10745 10746 <span class="entry_type_hwlevel">[legacy] </span> 10747 10748 10749 10750 10751 </td> <!-- entry_type --> 10752 10753 <td class="entry_description"> 10754 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 10755 </td> 10756 10757 <td class="entry_units"> 10758 Millimeters 10759 </td> 10760 10761 <td class="entry_range"> 10762 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 10763 </td> 10764 10765 <td class="entry_tags"> 10766 <ul class="entry_tags"> 10767 <li><a href="#tag_V1">V1</a></li> 10768 </ul> 10769 </td> 10770 10771 </tr> 10772 <tr class="entries_header"> 10773 <th class="th_details" colspan="5">Details</th> 10774 </tr> 10775 <tr class="entry_cont"> 10776 <td class="entry_details" colspan="5"> 10777 <p>This setting controls the physical focal length of the camera 10778 device's lens.<wbr/> Changing the focal length changes the field of 10779 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 10780 <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 10781 setting won't be applied instantaneously,<wbr/> and it may take several 10782 frames before the lens can change to the requested focal length.<wbr/> 10783 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 10784 be set to MOVING.<wbr/></p> 10785 <p>Optical zoom will not be supported on most devices.<wbr/></p> 10786 </td> 10787 </tr> 10788 10789 10790 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10791 <!-- end of entry --> 10792 10793 10794 <tr class="entry" id="controls_android.lens.focusDistance"> 10795 <td class="entry_name 10796 " rowspan="3"> 10797 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 10798 </td> 10799 <td class="entry_type"> 10800 <span class="entry_type_name">float</span> 10801 10802 <span class="entry_type_visibility"> [public]</span> 10803 10804 10805 <span class="entry_type_hwlevel">[full] </span> 10806 10807 10808 10809 10810 </td> <!-- entry_type --> 10811 10812 <td class="entry_description"> 10813 <p>Desired distance to plane of sharpest focus,<wbr/> 10814 measured from frontmost surface of the lens.<wbr/></p> 10815 </td> 10816 10817 <td class="entry_units"> 10818 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 10819 </td> 10820 10821 <td class="entry_range"> 10822 <p>>= 0</p> 10823 </td> 10824 10825 <td class="entry_tags"> 10826 <ul class="entry_tags"> 10827 <li><a href="#tag_BC">BC</a></li> 10828 <li><a href="#tag_V1">V1</a></li> 10829 </ul> 10830 </td> 10831 10832 </tr> 10833 <tr class="entries_header"> 10834 <th class="th_details" colspan="5">Details</th> 10835 </tr> 10836 <tr class="entry_cont"> 10837 <td class="entry_details" colspan="5"> 10838 <p>This control can be used for setting manual focus,<wbr/> on devices that support 10839 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see 10840 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p> 10841 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to 10842 <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> 10843 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 10844 instantaneously,<wbr/> and it may take several frames before the lens 10845 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 10846 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 10847 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code> 10848 for infinity focus.<wbr/></p> 10849 </td> 10850 </tr> 10851 10852 10853 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10854 <!-- end of entry --> 10855 10856 10857 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 10858 <td class="entry_name 10859 " rowspan="3"> 10860 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 10861 </td> 10862 <td class="entry_type"> 10863 <span class="entry_type_name entry_type_name_enum">byte</span> 10864 10865 <span class="entry_type_visibility"> [public]</span> 10866 10867 10868 <span class="entry_type_hwlevel">[limited] </span> 10869 10870 10871 10872 <ul class="entry_type_enum"> 10873 <li> 10874 <span class="entry_type_enum_name">OFF</span> 10875 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 10876 </li> 10877 <li> 10878 <span class="entry_type_enum_name">ON</span> 10879 <span class="entry_type_enum_optional">[optional]</span> 10880 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 10881 </li> 10882 </ul> 10883 10884 </td> <!-- entry_type --> 10885 10886 <td class="entry_description"> 10887 <p>Sets whether the camera device uses optical image stabilization (OIS) 10888 when capturing images.<wbr/></p> 10889 </td> 10890 10891 <td class="entry_units"> 10892 </td> 10893 10894 <td class="entry_range"> 10895 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 10896 </td> 10897 10898 <td class="entry_tags"> 10899 <ul class="entry_tags"> 10900 <li><a href="#tag_V1">V1</a></li> 10901 </ul> 10902 </td> 10903 10904 </tr> 10905 <tr class="entries_header"> 10906 <th class="th_details" colspan="5">Details</th> 10907 </tr> 10908 <tr class="entry_cont"> 10909 <td class="entry_details" colspan="5"> 10910 <p>OIS is used to compensate for motion blur due to small 10911 movements of the camera during capture.<wbr/> Unlike digital image 10912 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 10913 makes use of mechanical elements to stabilize the camera 10914 sensor,<wbr/> and thus allows for longer exposure times before 10915 camera shake becomes apparent.<wbr/></p> 10916 <p>Switching between different optical stabilization modes may take several 10917 frames to initialize,<wbr/> the camera device will report the current mode in 10918 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 10919 optical stabilization modes in the first several capture results may still 10920 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 10921 <p>If a camera device supports both OIS and digital image stabilization 10922 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 10923 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 10924 <p>Not all devices will support OIS; see 10925 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 10926 available controls.<wbr/></p> 10927 </td> 10928 </tr> 10929 10930 10931 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10932 <!-- end of entry --> 10933 10934 10935 10936 <!-- end of kind --> 10937 </tbody> 10938 <tr><td colspan="6" class="kind">static</td></tr> 10939 10940 <thead class="entries_header"> 10941 <tr> 10942 <th class="th_name">Property Name</th> 10943 <th class="th_type">Type</th> 10944 <th class="th_description">Description</th> 10945 <th class="th_units">Units</th> 10946 <th class="th_range">Range</th> 10947 <th class="th_tags">Tags</th> 10948 </tr> 10949 </thead> 10950 10951 <tbody> 10952 10953 10954 10955 10956 10957 10958 10959 10960 10961 10962 10963 10964 <tr class="entry" id="static_android.lens.info.availableApertures"> 10965 <td class="entry_name 10966 " rowspan="3"> 10967 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 10968 </td> 10969 <td class="entry_type"> 10970 <span class="entry_type_name">float</span> 10971 <span class="entry_type_container">x</span> 10972 10973 <span class="entry_type_array"> 10974 n 10975 </span> 10976 <span class="entry_type_visibility"> [public]</span> 10977 10978 10979 <span class="entry_type_hwlevel">[full] </span> 10980 10981 10982 10983 10984 </td> <!-- entry_type --> 10985 10986 <td class="entry_description"> 10987 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are 10988 supported by this camera device.<wbr/></p> 10989 </td> 10990 10991 <td class="entry_units"> 10992 The aperture f-number 10993 </td> 10994 10995 <td class="entry_range"> 10996 </td> 10997 10998 <td class="entry_tags"> 10999 <ul class="entry_tags"> 11000 <li><a href="#tag_V1">V1</a></li> 11001 </ul> 11002 </td> 11003 11004 </tr> 11005 <tr class="entries_header"> 11006 <th class="th_details" colspan="5">Details</th> 11007 </tr> 11008 <tr class="entry_cont"> 11009 <td class="entry_details" colspan="5"> 11010 <p>If the camera device doesn't support a variable lens aperture,<wbr/> 11011 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p> 11012 <p>If the camera device supports a variable aperture,<wbr/> the aperture values 11013 in this list will be sorted in ascending order.<wbr/></p> 11014 </td> 11015 </tr> 11016 11017 11018 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11019 <!-- end of entry --> 11020 11021 11022 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 11023 <td class="entry_name 11024 " rowspan="3"> 11025 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 11026 </td> 11027 <td class="entry_type"> 11028 <span class="entry_type_name">float</span> 11029 <span class="entry_type_container">x</span> 11030 11031 <span class="entry_type_array"> 11032 n 11033 </span> 11034 <span class="entry_type_visibility"> [public]</span> 11035 11036 11037 <span class="entry_type_hwlevel">[full] </span> 11038 11039 11040 11041 11042 </td> <!-- entry_type --> 11043 11044 <td class="entry_description"> 11045 <p>List of neutral density filter values for 11046 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p> 11047 </td> 11048 11049 <td class="entry_units"> 11050 Exposure value (EV) 11051 </td> 11052 11053 <td class="entry_range"> 11054 <p>Values are >= 0</p> 11055 </td> 11056 11057 <td class="entry_tags"> 11058 <ul class="entry_tags"> 11059 <li><a href="#tag_V1">V1</a></li> 11060 </ul> 11061 </td> 11062 11063 </tr> 11064 <tr class="entries_header"> 11065 <th class="th_details" colspan="5">Details</th> 11066 </tr> 11067 <tr class="entry_cont"> 11068 <td class="entry_details" colspan="5"> 11069 <p>If a neutral density filter is not supported by this camera device,<wbr/> 11070 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every 11071 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p> 11072 </td> 11073 </tr> 11074 11075 11076 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11077 <!-- end of entry --> 11078 11079 11080 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 11081 <td class="entry_name 11082 " rowspan="3"> 11083 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 11084 </td> 11085 <td class="entry_type"> 11086 <span class="entry_type_name">float</span> 11087 <span class="entry_type_container">x</span> 11088 11089 <span class="entry_type_array"> 11090 n 11091 </span> 11092 <span class="entry_type_visibility"> [public]</span> 11093 11094 11095 <span class="entry_type_hwlevel">[legacy] </span> 11096 11097 11098 <div class="entry_type_notes">The list of available focal lengths</div> 11099 11100 11101 </td> <!-- entry_type --> 11102 11103 <td class="entry_description"> 11104 <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 11105 device.<wbr/></p> 11106 </td> 11107 11108 <td class="entry_units"> 11109 Millimeters 11110 </td> 11111 11112 <td class="entry_range"> 11113 <p>Values are > 0</p> 11114 </td> 11115 11116 <td class="entry_tags"> 11117 <ul class="entry_tags"> 11118 <li><a href="#tag_BC">BC</a></li> 11119 <li><a href="#tag_V1">V1</a></li> 11120 </ul> 11121 </td> 11122 11123 </tr> 11124 <tr class="entries_header"> 11125 <th class="th_details" colspan="5">Details</th> 11126 </tr> 11127 <tr class="entry_cont"> 11128 <td class="entry_details" colspan="5"> 11129 <p>If optical zoom is not supported,<wbr/> this list will only contain 11130 a single value corresponding to the fixed focal length of the 11131 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported 11132 by the camera device,<wbr/> in ascending order.<wbr/></p> 11133 </td> 11134 </tr> 11135 11136 11137 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11138 <!-- end of entry --> 11139 11140 11141 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> 11142 <td class="entry_name 11143 " rowspan="3"> 11144 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 11145 </td> 11146 <td class="entry_type"> 11147 <span class="entry_type_name">byte</span> 11148 <span class="entry_type_container">x</span> 11149 11150 <span class="entry_type_array"> 11151 n 11152 </span> 11153 <span class="entry_type_visibility"> [public as enumList]</span> 11154 11155 11156 <span class="entry_type_hwlevel">[limited] </span> 11157 11158 11159 <div class="entry_type_notes">list of enums</div> 11160 11161 11162 </td> <!-- entry_type --> 11163 11164 <td class="entry_description"> 11165 <p>List of optical image stabilization (OIS) modes for 11166 <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> 11167 </td> 11168 11169 <td class="entry_units"> 11170 </td> 11171 11172 <td class="entry_range"> 11173 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p> 11174 </td> 11175 11176 <td class="entry_tags"> 11177 <ul class="entry_tags"> 11178 <li><a href="#tag_V1">V1</a></li> 11179 </ul> 11180 </td> 11181 11182 </tr> 11183 <tr class="entries_header"> 11184 <th class="th_details" colspan="5">Details</th> 11185 </tr> 11186 <tr class="entry_cont"> 11187 <td class="entry_details" colspan="5"> 11188 <p>If OIS is not supported by a given camera device,<wbr/> this list will 11189 contain only OFF.<wbr/></p> 11190 </td> 11191 </tr> 11192 11193 11194 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11195 <!-- end of entry --> 11196 11197 11198 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 11199 <td class="entry_name 11200 " rowspan="3"> 11201 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 11202 </td> 11203 <td class="entry_type"> 11204 <span class="entry_type_name">float</span> 11205 11206 <span class="entry_type_visibility"> [public]</span> 11207 11208 11209 <span class="entry_type_hwlevel">[limited] </span> 11210 11211 11212 11213 11214 </td> <!-- entry_type --> 11215 11216 <td class="entry_description"> 11217 <p>Hyperfocal distance for this lens.<wbr/></p> 11218 </td> 11219 11220 <td class="entry_units"> 11221 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11222 </td> 11223 11224 <td class="entry_range"> 11225 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is 11226 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> 11227 </td> 11228 11229 <td class="entry_tags"> 11230 </td> 11231 11232 </tr> 11233 <tr class="entries_header"> 11234 <th class="th_details" colspan="5">Details</th> 11235 </tr> 11236 <tr class="entry_cont"> 11237 <td class="entry_details" colspan="5"> 11238 <p>If the lens is not fixed focus,<wbr/> the camera device will report this 11239 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> 11240 </td> 11241 </tr> 11242 11243 11244 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11245 <!-- end of entry --> 11246 11247 11248 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 11249 <td class="entry_name 11250 " rowspan="5"> 11251 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 11252 </td> 11253 <td class="entry_type"> 11254 <span class="entry_type_name">float</span> 11255 11256 <span class="entry_type_visibility"> [public]</span> 11257 11258 11259 <span class="entry_type_hwlevel">[limited] </span> 11260 11261 11262 11263 11264 </td> <!-- entry_type --> 11265 11266 <td class="entry_description"> 11267 <p>Shortest distance from frontmost surface 11268 of the lens that can be brought into sharp focus.<wbr/></p> 11269 </td> 11270 11271 <td class="entry_units"> 11272 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11273 </td> 11274 11275 <td class="entry_range"> 11276 <p>>= 0</p> 11277 </td> 11278 11279 <td class="entry_tags"> 11280 <ul class="entry_tags"> 11281 <li><a href="#tag_V1">V1</a></li> 11282 </ul> 11283 </td> 11284 11285 </tr> 11286 <tr class="entries_header"> 11287 <th class="th_details" colspan="5">Details</th> 11288 </tr> 11289 <tr class="entry_cont"> 11290 <td class="entry_details" colspan="5"> 11291 <p>If the lens is fixed-focus,<wbr/> this will be 11292 0.<wbr/></p> 11293 </td> 11294 </tr> 11295 11296 <tr class="entries_header"> 11297 <th class="th_details" colspan="5">HAL Implementation Details</th> 11298 </tr> 11299 <tr class="entry_cont"> 11300 <td class="entry_details" colspan="5"> 11301 <p>Mandatory for FULL devices; LIMITED devices 11302 must always set this value to 0 for fixed-focus; and may omit 11303 the minimum focus distance otherwise.<wbr/></p> 11304 <p>This field is also mandatory for all devices advertising 11305 the MANUAL_<wbr/>SENSOR capability.<wbr/></p> 11306 </td> 11307 </tr> 11308 11309 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11310 <!-- end of entry --> 11311 11312 11313 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 11314 <td class="entry_name 11315 " rowspan="3"> 11316 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 11317 </td> 11318 <td class="entry_type"> 11319 <span class="entry_type_name">int32</span> 11320 <span class="entry_type_container">x</span> 11321 11322 <span class="entry_type_array"> 11323 2 11324 </span> 11325 <span class="entry_type_visibility"> [hidden as size]</span> 11326 11327 11328 <span class="entry_type_hwlevel">[full] </span> 11329 11330 11331 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> 11332 11333 11334 </td> <!-- entry_type --> 11335 11336 <td class="entry_description"> 11337 <p>Dimensions of lens shading map.<wbr/></p> 11338 </td> 11339 11340 <td class="entry_units"> 11341 </td> 11342 11343 <td class="entry_range"> 11344 <p>Both values >= 1</p> 11345 </td> 11346 11347 <td class="entry_tags"> 11348 <ul class="entry_tags"> 11349 <li><a href="#tag_V1">V1</a></li> 11350 </ul> 11351 </td> 11352 11353 </tr> 11354 <tr class="entries_header"> 11355 <th class="th_details" colspan="5">Details</th> 11356 </tr> 11357 <tr class="entry_cont"> 11358 <td class="entry_details" colspan="5"> 11359 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 11360 must be smaller than 64x64.<wbr/></p> 11361 </td> 11362 </tr> 11363 11364 11365 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11366 <!-- end of entry --> 11367 11368 11369 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 11370 <td class="entry_name 11371 " rowspan="5"> 11372 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 11373 </td> 11374 <td class="entry_type"> 11375 <span class="entry_type_name entry_type_name_enum">byte</span> 11376 11377 <span class="entry_type_visibility"> [public]</span> 11378 11379 11380 <span class="entry_type_hwlevel">[limited] </span> 11381 11382 11383 11384 <ul class="entry_type_enum"> 11385 <li> 11386 <span class="entry_type_enum_name">UNCALIBRATED</span> 11387 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 11388 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p> 11389 <p>Setting the lens to the same focus distance on separate occasions may 11390 result in a different real focus distance,<wbr/> depending on factors such 11391 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 11392 and the device temperature.<wbr/> The focus distance value will still be 11393 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 11394 represents the farthest focus.<wbr/></p></span> 11395 </li> 11396 <li> 11397 <span class="entry_type_enum_name">APPROXIMATE</span> 11398 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p> 11399 <p>However,<wbr/> setting the lens to the same focus distance 11400 on separate occasions may result in a different real 11401 focus distance,<wbr/> depending on factors such as the 11402 orientation of the device,<wbr/> the age of the focusing 11403 mechanism,<wbr/> and the device temperature.<wbr/></p></span> 11404 </li> 11405 <li> 11406 <span class="entry_type_enum_name">CALIBRATED</span> 11407 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and 11408 is calibrated.<wbr/></p> 11409 <p>The lens mechanism is calibrated so that setting the 11410 same focus distance is repeatable on multiple 11411 occasions with good accuracy,<wbr/> and the focus distance 11412 corresponds to the real physical distance to the plane 11413 of best focus.<wbr/></p></span> 11414 </li> 11415 </ul> 11416 11417 </td> <!-- entry_type --> 11418 11419 <td class="entry_description"> 11420 <p>The lens focus distance calibration quality.<wbr/></p> 11421 </td> 11422 11423 <td class="entry_units"> 11424 </td> 11425 11426 <td class="entry_range"> 11427 </td> 11428 11429 <td class="entry_tags"> 11430 <ul class="entry_tags"> 11431 <li><a href="#tag_V1">V1</a></li> 11432 </ul> 11433 </td> 11434 11435 </tr> 11436 <tr class="entries_header"> 11437 <th class="th_details" colspan="5">Details</th> 11438 </tr> 11439 <tr class="entry_cont"> 11440 <td class="entry_details" colspan="5"> 11441 <p>The lens focus distance calibration quality determines the reliability of 11442 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 11443 <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 11444 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 11445 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in 11446 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/> 11447 and increasing positive numbers represent focusing closer and closer 11448 to the camera device.<wbr/> The focus distance control also uses diopters 11449 on these devices.<wbr/></p> 11450 <p>UNCALIBRATED devices do not use units that are directly comparable 11451 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest 11452 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the 11453 nearest focus the device can achieve.<wbr/></p> 11454 </td> 11455 </tr> 11456 11457 <tr class="entries_header"> 11458 <th class="th_details" colspan="5">HAL Implementation Details</th> 11459 </tr> 11460 <tr class="entry_cont"> 11461 <td class="entry_details" colspan="5"> 11462 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity 11463 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF) 11464 and the lens focus distance is set to 0 diopters 11465 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity 11466 and is stably focused at infinity even if the device tilts.<wbr/> It may take the 11467 lens some time to move; during the move the lens state should be MOVING and 11468 the output diopter value should be changing toward 0.<wbr/></p> 11469 </td> 11470 </tr> 11471 11472 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11473 <!-- end of entry --> 11474 11475 11476 11477 11478 11479 <tr class="entry" id="static_android.lens.facing"> 11480 <td class="entry_name 11481 " rowspan="1"> 11482 android.<wbr/>lens.<wbr/>facing 11483 </td> 11484 <td class="entry_type"> 11485 <span class="entry_type_name entry_type_name_enum">byte</span> 11486 11487 <span class="entry_type_visibility"> [public]</span> 11488 11489 11490 <span class="entry_type_hwlevel">[legacy] </span> 11491 11492 11493 11494 <ul class="entry_type_enum"> 11495 <li> 11496 <span class="entry_type_enum_name">FRONT</span> 11497 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span> 11498 </li> 11499 <li> 11500 <span class="entry_type_enum_name">BACK</span> 11501 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span> 11502 </li> 11503 </ul> 11504 11505 </td> <!-- entry_type --> 11506 11507 <td class="entry_description"> 11508 <p>Direction the camera faces relative to 11509 device screen.<wbr/></p> 11510 </td> 11511 11512 <td class="entry_units"> 11513 </td> 11514 11515 <td class="entry_range"> 11516 </td> 11517 11518 <td class="entry_tags"> 11519 </td> 11520 11521 </tr> 11522 11523 11524 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11525 <!-- end of entry --> 11526 11527 11528 <tr class="entry" id="static_android.lens.opticalAxisAngle"> 11529 <td class="entry_name 11530 " rowspan="3"> 11531 android.<wbr/>lens.<wbr/>optical<wbr/>Axis<wbr/>Angle 11532 </td> 11533 <td class="entry_type"> 11534 <span class="entry_type_name">float</span> 11535 <span class="entry_type_container">x</span> 11536 11537 <span class="entry_type_array"> 11538 2 11539 </span> 11540 <span class="entry_type_visibility"> [system]</span> 11541 11542 11543 11544 11545 <div class="entry_type_notes">degrees.<wbr/> First defines the angle of separation between the perpendicular to the screen and the camera optical axis.<wbr/> The second then defines the clockwise rotation of the optical axis from native device up.<wbr/></div> 11546 11547 11548 </td> <!-- entry_type --> 11549 11550 <td class="entry_description"> 11551 <p>Relative angle of camera optical axis to the 11552 perpendicular axis from the display</p> 11553 </td> 11554 11555 <td class="entry_units"> 11556 </td> 11557 11558 <td class="entry_range"> 11559 <p>[0-90) for first angle,<wbr/> [0-360) for second</p> 11560 </td> 11561 11562 <td class="entry_tags"> 11563 <ul class="entry_tags"> 11564 <li><a href="#tag_FUTURE">FUTURE</a></li> 11565 </ul> 11566 </td> 11567 11568 </tr> 11569 <tr class="entries_header"> 11570 <th class="th_details" colspan="5">Details</th> 11571 </tr> 11572 <tr class="entry_cont"> 11573 <td class="entry_details" colspan="5"> 11574 <p>Examples:</p> 11575 <p>(0,<wbr/>0) means that the camera optical axis 11576 is perpendicular to the display surface;</p> 11577 <p>(45,<wbr/>0) means that the camera points 45 degrees up when 11578 device is held upright;</p> 11579 <p>(45,<wbr/>90) means the camera points 45 degrees to the right when 11580 the device is held upright.<wbr/></p> 11581 <p>Use FACING field to determine perpendicular outgoing 11582 direction</p> 11583 </td> 11584 </tr> 11585 11586 11587 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11588 <!-- end of entry --> 11589 11590 11591 <tr class="entry" id="static_android.lens.position"> 11592 <td class="entry_name 11593 " rowspan="1"> 11594 android.<wbr/>lens.<wbr/>position 11595 </td> 11596 <td class="entry_type"> 11597 <span class="entry_type_name">float</span> 11598 <span class="entry_type_container">x</span> 11599 11600 <span class="entry_type_array"> 11601 3, location in mm, in the sensor coordinate 11602 system 11603 </span> 11604 <span class="entry_type_visibility"> [system]</span> 11605 11606 11607 11608 11609 11610 11611 </td> <!-- entry_type --> 11612 11613 <td class="entry_description"> 11614 <p>Coordinates of camera optical axis on 11615 device</p> 11616 </td> 11617 11618 <td class="entry_units"> 11619 </td> 11620 11621 <td class="entry_range"> 11622 </td> 11623 11624 <td class="entry_tags"> 11625 <ul class="entry_tags"> 11626 <li><a href="#tag_FUTURE">FUTURE</a></li> 11627 </ul> 11628 </td> 11629 11630 </tr> 11631 11632 11633 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11634 <!-- end of entry --> 11635 11636 11637 11638 <!-- end of kind --> 11639 </tbody> 11640 <tr><td colspan="6" class="kind">dynamic</td></tr> 11641 11642 <thead class="entries_header"> 11643 <tr> 11644 <th class="th_name">Property Name</th> 11645 <th class="th_type">Type</th> 11646 <th class="th_description">Description</th> 11647 <th class="th_units">Units</th> 11648 <th class="th_range">Range</th> 11649 <th class="th_tags">Tags</th> 11650 </tr> 11651 </thead> 11652 11653 <tbody> 11654 11655 11656 11657 11658 11659 11660 11661 11662 11663 11664 <tr class="entry" id="dynamic_android.lens.aperture"> 11665 <td class="entry_name 11666 " rowspan="3"> 11667 android.<wbr/>lens.<wbr/>aperture 11668 </td> 11669 <td class="entry_type"> 11670 <span class="entry_type_name">float</span> 11671 11672 <span class="entry_type_visibility"> [public]</span> 11673 11674 11675 <span class="entry_type_hwlevel">[full] </span> 11676 11677 11678 11679 11680 </td> <!-- entry_type --> 11681 11682 <td class="entry_description"> 11683 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 11684 effective aperture diameter.<wbr/></p> 11685 </td> 11686 11687 <td class="entry_units"> 11688 The f-number (f/<wbr/>N) 11689 </td> 11690 11691 <td class="entry_range"> 11692 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 11693 </td> 11694 11695 <td class="entry_tags"> 11696 <ul class="entry_tags"> 11697 <li><a href="#tag_V1">V1</a></li> 11698 </ul> 11699 </td> 11700 11701 </tr> 11702 <tr class="entries_header"> 11703 <th class="th_details" colspan="5">Details</th> 11704 </tr> 11705 <tr class="entry_cont"> 11706 <td class="entry_details" colspan="5"> 11707 <p>Setting this value is only supported on the camera devices that have a variable 11708 aperture lens.<wbr/></p> 11709 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 11710 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 11711 <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> 11712 to achieve manual exposure control.<wbr/></p> 11713 <p>The requested aperture value may take several frames to reach the 11714 requested value; the camera device will report the current (intermediate) 11715 aperture size in capture result metadata while the aperture is changing.<wbr/> 11716 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> 11717 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 11718 the ON modes,<wbr/> this will be overridden by the camera device 11719 auto-exposure algorithm,<wbr/> the overridden values are then provided 11720 back to the user in the corresponding result.<wbr/></p> 11721 </td> 11722 </tr> 11723 11724 11725 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11726 <!-- end of entry --> 11727 11728 11729 <tr class="entry" id="dynamic_android.lens.filterDensity"> 11730 <td class="entry_name 11731 " rowspan="3"> 11732 android.<wbr/>lens.<wbr/>filter<wbr/>Density 11733 </td> 11734 <td class="entry_type"> 11735 <span class="entry_type_name">float</span> 11736 11737 <span class="entry_type_visibility"> [public]</span> 11738 11739 11740 <span class="entry_type_hwlevel">[full] </span> 11741 11742 11743 11744 11745 </td> <!-- entry_type --> 11746 11747 <td class="entry_description"> 11748 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 11749 </td> 11750 11751 <td class="entry_units"> 11752 Exposure Value (EV) 11753 </td> 11754 11755 <td class="entry_range"> 11756 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 11757 </td> 11758 11759 <td class="entry_tags"> 11760 <ul class="entry_tags"> 11761 <li><a href="#tag_V1">V1</a></li> 11762 </ul> 11763 </td> 11764 11765 </tr> 11766 <tr class="entries_header"> 11767 <th class="th_details" colspan="5">Details</th> 11768 </tr> 11769 <tr class="entry_cont"> 11770 <td class="entry_details" colspan="5"> 11771 <p>This control will not be supported on most camera devices.<wbr/></p> 11772 <p>Lens filters are typically used to lower the amount of light the 11773 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 11774 step is the standard logarithmic representation,<wbr/> which are 11775 non-negative,<wbr/> and inversely proportional to the amount of light 11776 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 11777 in no reduction of the incoming light,<wbr/> and setting this to 2 would 11778 mean that the filter is set to reduce incoming light by two stops 11779 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 11780 <p>It may take several frames before the lens filter density changes 11781 to the requested value.<wbr/> While the filter density is still changing,<wbr/> 11782 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11783 </td> 11784 </tr> 11785 11786 11787 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11788 <!-- end of entry --> 11789 11790 11791 <tr class="entry" id="dynamic_android.lens.focalLength"> 11792 <td class="entry_name 11793 " rowspan="3"> 11794 android.<wbr/>lens.<wbr/>focal<wbr/>Length 11795 </td> 11796 <td class="entry_type"> 11797 <span class="entry_type_name">float</span> 11798 11799 <span class="entry_type_visibility"> [public]</span> 11800 11801 11802 <span class="entry_type_hwlevel">[legacy] </span> 11803 11804 11805 11806 11807 </td> <!-- entry_type --> 11808 11809 <td class="entry_description"> 11810 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 11811 </td> 11812 11813 <td class="entry_units"> 11814 Millimeters 11815 </td> 11816 11817 <td class="entry_range"> 11818 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 11819 </td> 11820 11821 <td class="entry_tags"> 11822 <ul class="entry_tags"> 11823 <li><a href="#tag_BC">BC</a></li> 11824 </ul> 11825 </td> 11826 11827 </tr> 11828 <tr class="entries_header"> 11829 <th class="th_details" colspan="5">Details</th> 11830 </tr> 11831 <tr class="entry_cont"> 11832 <td class="entry_details" colspan="5"> 11833 <p>This setting controls the physical focal length of the camera 11834 device's lens.<wbr/> Changing the focal length changes the field of 11835 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 11836 <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 11837 setting won't be applied instantaneously,<wbr/> and it may take several 11838 frames before the lens can change to the requested focal length.<wbr/> 11839 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 11840 be set to MOVING.<wbr/></p> 11841 <p>Optical zoom will not be supported on most devices.<wbr/></p> 11842 </td> 11843 </tr> 11844 11845 11846 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11847 <!-- end of entry --> 11848 11849 11850 <tr class="entry" id="dynamic_android.lens.focusDistance"> 11851 <td class="entry_name 11852 " rowspan="3"> 11853 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 11854 </td> 11855 <td class="entry_type"> 11856 <span class="entry_type_name">float</span> 11857 11858 <span class="entry_type_visibility"> [public]</span> 11859 11860 11861 <span class="entry_type_hwlevel">[full] </span> 11862 11863 11864 11865 11866 </td> <!-- entry_type --> 11867 11868 <td class="entry_description"> 11869 <p>Desired distance to plane of sharpest focus,<wbr/> 11870 measured from frontmost surface of the lens.<wbr/></p> 11871 </td> 11872 11873 <td class="entry_units"> 11874 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11875 </td> 11876 11877 <td class="entry_range"> 11878 <p>>= 0</p> 11879 </td> 11880 11881 <td class="entry_tags"> 11882 <ul class="entry_tags"> 11883 <li><a href="#tag_BC">BC</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>Should be zero for fixed-focus cameras</p> 11894 </td> 11895 </tr> 11896 11897 11898 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11899 <!-- end of entry --> 11900 11901 11902 <tr class="entry" id="dynamic_android.lens.focusRange"> 11903 <td class="entry_name 11904 " rowspan="3"> 11905 android.<wbr/>lens.<wbr/>focus<wbr/>Range 11906 </td> 11907 <td class="entry_type"> 11908 <span class="entry_type_name">float</span> 11909 <span class="entry_type_container">x</span> 11910 11911 <span class="entry_type_array"> 11912 2 11913 </span> 11914 <span class="entry_type_visibility"> [public as pairFloatFloat]</span> 11915 11916 11917 <span class="entry_type_hwlevel">[limited] </span> 11918 11919 11920 <div class="entry_type_notes">Range of scene distances that are in focus</div> 11921 11922 11923 </td> <!-- entry_type --> 11924 11925 <td class="entry_description"> 11926 <p>The range of scene distances that are in 11927 sharp focus (depth of field).<wbr/></p> 11928 </td> 11929 11930 <td class="entry_units"> 11931 A pair of focus distances in diopters: (near,<wbr/> 11932 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 11933 </td> 11934 11935 <td class="entry_range"> 11936 <p>>=0</p> 11937 </td> 11938 11939 <td class="entry_tags"> 11940 <ul class="entry_tags"> 11941 <li><a href="#tag_BC">BC</a></li> 11942 </ul> 11943 </td> 11944 11945 </tr> 11946 <tr class="entries_header"> 11947 <th class="th_details" colspan="5">Details</th> 11948 </tr> 11949 <tr class="entry_cont"> 11950 <td class="entry_details" colspan="5"> 11951 <p>If variable focus not supported,<wbr/> can still report 11952 fixed depth of field range</p> 11953 </td> 11954 </tr> 11955 11956 11957 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11958 <!-- end of entry --> 11959 11960 11961 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 11962 <td class="entry_name 11963 " rowspan="3"> 11964 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 11965 </td> 11966 <td class="entry_type"> 11967 <span class="entry_type_name entry_type_name_enum">byte</span> 11968 11969 <span class="entry_type_visibility"> [public]</span> 11970 11971 11972 <span class="entry_type_hwlevel">[limited] </span> 11973 11974 11975 11976 <ul class="entry_type_enum"> 11977 <li> 11978 <span class="entry_type_enum_name">OFF</span> 11979 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 11980 </li> 11981 <li> 11982 <span class="entry_type_enum_name">ON</span> 11983 <span class="entry_type_enum_optional">[optional]</span> 11984 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 11985 </li> 11986 </ul> 11987 11988 </td> <!-- entry_type --> 11989 11990 <td class="entry_description"> 11991 <p>Sets whether the camera device uses optical image stabilization (OIS) 11992 when capturing images.<wbr/></p> 11993 </td> 11994 11995 <td class="entry_units"> 11996 </td> 11997 11998 <td class="entry_range"> 11999 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 12000 </td> 12001 12002 <td class="entry_tags"> 12003 <ul class="entry_tags"> 12004 <li><a href="#tag_V1">V1</a></li> 12005 </ul> 12006 </td> 12007 12008 </tr> 12009 <tr class="entries_header"> 12010 <th class="th_details" colspan="5">Details</th> 12011 </tr> 12012 <tr class="entry_cont"> 12013 <td class="entry_details" colspan="5"> 12014 <p>OIS is used to compensate for motion blur due to small 12015 movements of the camera during capture.<wbr/> Unlike digital image 12016 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 12017 makes use of mechanical elements to stabilize the camera 12018 sensor,<wbr/> and thus allows for longer exposure times before 12019 camera shake becomes apparent.<wbr/></p> 12020 <p>Switching between different optical stabilization modes may take several 12021 frames to initialize,<wbr/> the camera device will report the current mode in 12022 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 12023 optical stabilization modes in the first several capture results may still 12024 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 12025 <p>If a camera device supports both OIS and digital image stabilization 12026 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 12027 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 12028 <p>Not all devices will support OIS; see 12029 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 12030 available controls.<wbr/></p> 12031 </td> 12032 </tr> 12033 12034 12035 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12036 <!-- end of entry --> 12037 12038 12039 <tr class="entry" id="dynamic_android.lens.state"> 12040 <td class="entry_name 12041 " rowspan="3"> 12042 android.<wbr/>lens.<wbr/>state 12043 </td> 12044 <td class="entry_type"> 12045 <span class="entry_type_name entry_type_name_enum">byte</span> 12046 12047 <span class="entry_type_visibility"> [public]</span> 12048 12049 12050 <span class="entry_type_hwlevel">[limited] </span> 12051 12052 12053 12054 <ul class="entry_type_enum"> 12055 <li> 12056 <span class="entry_type_enum_name">STATIONARY</span> 12057 <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/> 12058 <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> 12059 </li> 12060 <li> 12061 <span class="entry_type_enum_name">MOVING</span> 12062 <span class="entry_type_enum_notes"><p>One or several of the lens parameters 12063 (<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/> 12064 <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 12065 currently changing.<wbr/></p></span> 12066 </li> 12067 </ul> 12068 12069 </td> <!-- entry_type --> 12070 12071 <td class="entry_description"> 12072 <p>Current lens status.<wbr/></p> 12073 </td> 12074 12075 <td class="entry_units"> 12076 </td> 12077 12078 <td class="entry_range"> 12079 </td> 12080 12081 <td class="entry_tags"> 12082 <ul class="entry_tags"> 12083 <li><a href="#tag_V1">V1</a></li> 12084 </ul> 12085 </td> 12086 12087 </tr> 12088 <tr class="entries_header"> 12089 <th class="th_details" colspan="5">Details</th> 12090 </tr> 12091 <tr class="entry_cont"> 12092 <td class="entry_details" colspan="5"> 12093 <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/> 12094 <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/> 12095 they may take several frames to reach the requested values.<wbr/> This state indicates 12096 the current status of the lens parameters.<wbr/></p> 12097 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 12098 either because the parameters are all fixed,<wbr/> or because the lens has had enough 12099 time to reach the most recently-requested values.<wbr/> 12100 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> 12101 <ul> 12102 <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 12103 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 12104 <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/> 12105 which means the optical zoom is not supported.<wbr/></li> 12106 <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> 12107 <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> 12108 </ul> 12109 <p>Then this state will always be STATIONARY.<wbr/></p> 12110 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 12111 is changing.<wbr/></p> 12112 </td> 12113 </tr> 12114 12115 12116 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12117 <!-- end of entry --> 12118 12119 12120 12121 <!-- end of kind --> 12122 </tbody> 12123 12124 <!-- end of section --> 12125 <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr> 12126 12127 12128 <tr><td colspan="6" class="kind">controls</td></tr> 12129 12130 <thead class="entries_header"> 12131 <tr> 12132 <th class="th_name">Property Name</th> 12133 <th class="th_type">Type</th> 12134 <th class="th_description">Description</th> 12135 <th class="th_units">Units</th> 12136 <th class="th_range">Range</th> 12137 <th class="th_tags">Tags</th> 12138 </tr> 12139 </thead> 12140 12141 <tbody> 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 12152 <tr class="entry" id="controls_android.noiseReduction.mode"> 12153 <td class="entry_name 12154 " rowspan="3"> 12155 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 12156 </td> 12157 <td class="entry_type"> 12158 <span class="entry_type_name entry_type_name_enum">byte</span> 12159 12160 <span class="entry_type_visibility"> [public]</span> 12161 12162 12163 <span class="entry_type_hwlevel">[full] </span> 12164 12165 12166 12167 <ul class="entry_type_enum"> 12168 <li> 12169 <span class="entry_type_enum_name">OFF</span> 12170 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 12171 </li> 12172 <li> 12173 <span class="entry_type_enum_name">FAST</span> 12174 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 12175 output.<wbr/></p></span> 12176 </li> 12177 <li> 12178 <span class="entry_type_enum_name">HIGH_QUALITY</span> 12179 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of reducing frame rate 12180 relative to sensor output.<wbr/></p></span> 12181 </li> 12182 </ul> 12183 12184 </td> <!-- entry_type --> 12185 12186 <td class="entry_description"> 12187 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 12188 </td> 12189 12190 <td class="entry_units"> 12191 </td> 12192 12193 <td class="entry_range"> 12194 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 12195 </td> 12196 12197 <td class="entry_tags"> 12198 <ul class="entry_tags"> 12199 <li><a href="#tag_V1">V1</a></li> 12200 </ul> 12201 </td> 12202 12203 </tr> 12204 <tr class="entries_header"> 12205 <th class="th_details" colspan="5">Details</th> 12206 </tr> 12207 <tr class="entry_cont"> 12208 <td class="entry_details" colspan="5"> 12209 <p>The noise reduction algorithm attempts to improve image quality by removing 12210 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/> 12211 OFF means no noise reduction will be applied by the camera device.<wbr/></p> 12212 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 12213 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 12214 will use the highest-quality noise filtering algorithms,<wbr/> 12215 even if it slows down capture rate.<wbr/> FAST means the camera device will not 12216 slow down capture rate when applying noise filtering.<wbr/></p> 12217 </td> 12218 </tr> 12219 12220 12221 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12222 <!-- end of entry --> 12223 12224 12225 <tr class="entry" id="controls_android.noiseReduction.strength"> 12226 <td class="entry_name 12227 " rowspan="1"> 12228 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 12229 </td> 12230 <td class="entry_type"> 12231 <span class="entry_type_name">byte</span> 12232 12233 <span class="entry_type_visibility"> [system]</span> 12234 12235 12236 12237 12238 12239 12240 </td> <!-- entry_type --> 12241 12242 <td class="entry_description"> 12243 <p>Control the amount of noise reduction 12244 applied to the images</p> 12245 </td> 12246 12247 <td class="entry_units"> 12248 1-10; 10 is max noise reduction 12249 </td> 12250 12251 <td class="entry_range"> 12252 <p>1 - 10</p> 12253 </td> 12254 12255 <td class="entry_tags"> 12256 <ul class="entry_tags"> 12257 <li><a href="#tag_FUTURE">FUTURE</a></li> 12258 </ul> 12259 </td> 12260 12261 </tr> 12262 12263 12264 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12265 <!-- end of entry --> 12266 12267 12268 12269 <!-- end of kind --> 12270 </tbody> 12271 <tr><td colspan="6" class="kind">static</td></tr> 12272 12273 <thead class="entries_header"> 12274 <tr> 12275 <th class="th_name">Property Name</th> 12276 <th class="th_type">Type</th> 12277 <th class="th_description">Description</th> 12278 <th class="th_units">Units</th> 12279 <th class="th_range">Range</th> 12280 <th class="th_tags">Tags</th> 12281 </tr> 12282 </thead> 12283 12284 <tbody> 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> 12296 <td class="entry_name 12297 " rowspan="3"> 12298 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes 12299 </td> 12300 <td class="entry_type"> 12301 <span class="entry_type_name">byte</span> 12302 <span class="entry_type_container">x</span> 12303 12304 <span class="entry_type_array"> 12305 n 12306 </span> 12307 <span class="entry_type_visibility"> [public as enumList]</span> 12308 12309 12310 <span class="entry_type_hwlevel">[limited] </span> 12311 12312 12313 <div class="entry_type_notes">list of enums</div> 12314 12315 12316 </td> <!-- entry_type --> 12317 12318 <td class="entry_description"> 12319 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported 12320 by this camera device.<wbr/></p> 12321 </td> 12322 12323 <td class="entry_units"> 12324 </td> 12325 12326 <td class="entry_range"> 12327 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p> 12328 </td> 12329 12330 <td class="entry_tags"> 12331 <ul class="entry_tags"> 12332 <li><a href="#tag_V1">V1</a></li> 12333 </ul> 12334 </td> 12335 12336 </tr> 12337 <tr class="entries_header"> 12338 <th class="th_details" colspan="5">Details</th> 12339 </tr> 12340 <tr class="entry_cont"> 12341 <td class="entry_details" colspan="5"> 12342 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p> 12343 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p> 12344 </td> 12345 </tr> 12346 12347 12348 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12349 <!-- end of entry --> 12350 12351 12352 12353 <!-- end of kind --> 12354 </tbody> 12355 <tr><td colspan="6" class="kind">dynamic</td></tr> 12356 12357 <thead class="entries_header"> 12358 <tr> 12359 <th class="th_name">Property Name</th> 12360 <th class="th_type">Type</th> 12361 <th class="th_description">Description</th> 12362 <th class="th_units">Units</th> 12363 <th class="th_range">Range</th> 12364 <th class="th_tags">Tags</th> 12365 </tr> 12366 </thead> 12367 12368 <tbody> 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 12380 <td class="entry_name 12381 " rowspan="3"> 12382 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 12383 </td> 12384 <td class="entry_type"> 12385 <span class="entry_type_name entry_type_name_enum">byte</span> 12386 12387 <span class="entry_type_visibility"> [public]</span> 12388 12389 12390 <span class="entry_type_hwlevel">[full] </span> 12391 12392 12393 12394 <ul class="entry_type_enum"> 12395 <li> 12396 <span class="entry_type_enum_name">OFF</span> 12397 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 12398 </li> 12399 <li> 12400 <span class="entry_type_enum_name">FAST</span> 12401 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 12402 output.<wbr/></p></span> 12403 </li> 12404 <li> 12405 <span class="entry_type_enum_name">HIGH_QUALITY</span> 12406 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of reducing frame rate 12407 relative to sensor output.<wbr/></p></span> 12408 </li> 12409 </ul> 12410 12411 </td> <!-- entry_type --> 12412 12413 <td class="entry_description"> 12414 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 12415 </td> 12416 12417 <td class="entry_units"> 12418 </td> 12419 12420 <td class="entry_range"> 12421 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 12422 </td> 12423 12424 <td class="entry_tags"> 12425 <ul class="entry_tags"> 12426 <li><a href="#tag_V1">V1</a></li> 12427 </ul> 12428 </td> 12429 12430 </tr> 12431 <tr class="entries_header"> 12432 <th class="th_details" colspan="5">Details</th> 12433 </tr> 12434 <tr class="entry_cont"> 12435 <td class="entry_details" colspan="5"> 12436 <p>The noise reduction algorithm attempts to improve image quality by removing 12437 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/> 12438 OFF means no noise reduction will be applied by the camera device.<wbr/></p> 12439 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 12440 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 12441 will use the highest-quality noise filtering algorithms,<wbr/> 12442 even if it slows down capture rate.<wbr/> FAST means the camera device will not 12443 slow down capture rate when applying noise filtering.<wbr/></p> 12444 </td> 12445 </tr> 12446 12447 12448 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12449 <!-- end of entry --> 12450 12451 12452 12453 <!-- end of kind --> 12454 </tbody> 12455 12456 <!-- end of section --> 12457 <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr> 12458 12459 12460 <tr><td colspan="6" class="kind">static</td></tr> 12461 12462 <thead class="entries_header"> 12463 <tr> 12464 <th class="th_name">Property Name</th> 12465 <th class="th_type">Type</th> 12466 <th class="th_description">Description</th> 12467 <th class="th_units">Units</th> 12468 <th class="th_range">Range</th> 12469 <th class="th_tags">Tags</th> 12470 </tr> 12471 </thead> 12472 12473 <tbody> 12474 12475 12476 12477 12478 12479 12480 12481 12482 12483 12484 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 12485 <td class="entry_name 12486 entry_name_deprecated 12487 " rowspan="3"> 12488 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 12489 </td> 12490 <td class="entry_type"> 12491 <span class="entry_type_name">byte</span> 12492 12493 <span class="entry_type_visibility"> [system]</span> 12494 12495 12496 12497 <span class="entry_type_deprecated">[deprecated] </span> 12498 12499 12500 12501 </td> <!-- entry_type --> 12502 12503 <td class="entry_description"> 12504 <p>If set to 1,<wbr/> the camera service does not 12505 scale 'normalized' coordinates with respect to the crop 12506 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 12507 and output (face rectangles).<wbr/></p> 12508 </td> 12509 12510 <td class="entry_units"> 12511 </td> 12512 12513 <td class="entry_range"> 12514 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 12515 </td> 12516 12517 <td class="entry_tags"> 12518 </td> 12519 12520 </tr> 12521 <tr class="entries_header"> 12522 <th class="th_details" colspan="5">Details</th> 12523 </tr> 12524 <tr class="entry_cont"> 12525 <td class="entry_details" colspan="5"> 12526 <p>Normalized coordinates refer to those in the 12527 (-1000,<wbr/>1000) range mentioned in the 12528 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 12529 <p>HAL implementations should instead always use and emit 12530 sensor array-relative coordinates for all region data.<wbr/> Does 12531 not need to be listed in static metadata.<wbr/> Support will be 12532 removed in future versions of camera service.<wbr/></p> 12533 </td> 12534 </tr> 12535 12536 12537 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12538 <!-- end of entry --> 12539 12540 12541 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 12542 <td class="entry_name 12543 entry_name_deprecated 12544 " rowspan="3"> 12545 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 12546 </td> 12547 <td class="entry_type"> 12548 <span class="entry_type_name">byte</span> 12549 12550 <span class="entry_type_visibility"> [system]</span> 12551 12552 12553 12554 <span class="entry_type_deprecated">[deprecated] </span> 12555 12556 12557 12558 </td> <!-- entry_type --> 12559 12560 <td class="entry_description"> 12561 <p>If set to 1,<wbr/> then the camera service always 12562 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 12563 trigger.<wbr/></p> 12564 </td> 12565 12566 <td class="entry_units"> 12567 </td> 12568 12569 <td class="entry_range"> 12570 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 12571 </td> 12572 12573 <td class="entry_tags"> 12574 </td> 12575 12576 </tr> 12577 <tr class="entries_header"> 12578 <th class="th_details" colspan="5">Details</th> 12579 </tr> 12580 <tr class="entry_cont"> 12581 <td class="entry_details" colspan="5"> 12582 <p>HAL implementations should implement AF trigger 12583 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 12584 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 12585 not need to be listed in static metadata.<wbr/> Support will be 12586 removed in future versions of camera service</p> 12587 </td> 12588 </tr> 12589 12590 12591 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12592 <!-- end of entry --> 12593 12594 12595 <tr class="entry" id="static_android.quirks.useZslFormat"> 12596 <td class="entry_name 12597 entry_name_deprecated 12598 " rowspan="3"> 12599 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 12600 </td> 12601 <td class="entry_type"> 12602 <span class="entry_type_name">byte</span> 12603 12604 <span class="entry_type_visibility"> [system]</span> 12605 12606 12607 12608 <span class="entry_type_deprecated">[deprecated] </span> 12609 12610 12611 12612 </td> <!-- entry_type --> 12613 12614 <td class="entry_description"> 12615 <p>If set to 1,<wbr/> the camera service uses 12616 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 12617 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 12618 shutter lag stream</p> 12619 </td> 12620 12621 <td class="entry_units"> 12622 </td> 12623 12624 <td class="entry_range"> 12625 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 12626 </td> 12627 12628 <td class="entry_tags"> 12629 </td> 12630 12631 </tr> 12632 <tr class="entries_header"> 12633 <th class="th_details" colspan="5">Details</th> 12634 </tr> 12635 <tr class="entry_cont"> 12636 <td class="entry_details" colspan="5"> 12637 <p>HAL implementations should use gralloc usage flags 12638 to determine that a stream will be used for 12639 zero-shutter-lag,<wbr/> instead of relying on an explicit 12640 format setting.<wbr/> Does not need to be listed in static 12641 metadata.<wbr/> Support will be removed in future versions of 12642 camera service.<wbr/></p> 12643 </td> 12644 </tr> 12645 12646 12647 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12648 <!-- end of entry --> 12649 12650 12651 <tr class="entry" id="static_android.quirks.usePartialResult"> 12652 <td class="entry_name 12653 entry_name_deprecated 12654 " rowspan="5"> 12655 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 12656 </td> 12657 <td class="entry_type"> 12658 <span class="entry_type_name">byte</span> 12659 12660 <span class="entry_type_visibility"> [hidden]</span> 12661 12662 12663 12664 <span class="entry_type_deprecated">[deprecated] </span> 12665 12666 12667 12668 </td> <!-- entry_type --> 12669 12670 <td class="entry_description"> 12671 <p>If set to 1,<wbr/> the HAL will always split result 12672 metadata for a single capture into multiple buffers,<wbr/> 12673 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 12674 </td> 12675 12676 <td class="entry_units"> 12677 </td> 12678 12679 <td class="entry_range"> 12680 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 12681 </td> 12682 12683 <td class="entry_tags"> 12684 </td> 12685 12686 </tr> 12687 <tr class="entries_header"> 12688 <th class="th_details" colspan="5">Details</th> 12689 </tr> 12690 <tr class="entry_cont"> 12691 <td class="entry_details" colspan="5"> 12692 <p>Does not need to be listed in static 12693 metadata.<wbr/> Support for partial results will be reworked in 12694 future versions of camera service.<wbr/> This quirk will stop 12695 working at that point; DO NOT USE without careful 12696 consideration of future support.<wbr/></p> 12697 </td> 12698 </tr> 12699 12700 <tr class="entries_header"> 12701 <th class="th_details" colspan="5">HAL Implementation Details</th> 12702 </tr> 12703 <tr class="entry_cont"> 12704 <td class="entry_details" colspan="5"> 12705 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 12706 for information on how to implement partial results.<wbr/></p> 12707 </td> 12708 </tr> 12709 12710 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12711 <!-- end of entry --> 12712 12713 12714 12715 <!-- end of kind --> 12716 </tbody> 12717 <tr><td colspan="6" class="kind">dynamic</td></tr> 12718 12719 <thead class="entries_header"> 12720 <tr> 12721 <th class="th_name">Property Name</th> 12722 <th class="th_type">Type</th> 12723 <th class="th_description">Description</th> 12724 <th class="th_units">Units</th> 12725 <th class="th_range">Range</th> 12726 <th class="th_tags">Tags</th> 12727 </tr> 12728 </thead> 12729 12730 <tbody> 12731 12732 12733 12734 12735 12736 12737 12738 12739 12740 12741 <tr class="entry" id="dynamic_android.quirks.partialResult"> 12742 <td class="entry_name 12743 entry_name_deprecated 12744 " rowspan="5"> 12745 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 12746 </td> 12747 <td class="entry_type"> 12748 <span class="entry_type_name entry_type_name_enum">byte</span> 12749 12750 <span class="entry_type_visibility"> [hidden as boolean]</span> 12751 12752 12753 12754 <span class="entry_type_deprecated">[deprecated] </span> 12755 12756 12757 <ul class="entry_type_enum"> 12758 <li> 12759 <span class="entry_type_enum_name">FINAL</span> 12760 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 12761 for this capture.<wbr/></p></span> 12762 </li> 12763 <li> 12764 <span class="entry_type_enum_name">PARTIAL</span> 12765 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 12766 capture.<wbr/> More result buffers for this capture will be sent 12767 by the camera device,<wbr/> the last of which will be marked 12768 FINAL.<wbr/></p></span> 12769 </li> 12770 </ul> 12771 12772 </td> <!-- entry_type --> 12773 12774 <td class="entry_description"> 12775 <p>Whether a result given to the framework is the 12776 final one for the capture,<wbr/> or only a partial that contains a 12777 subset of the full set of dynamic metadata 12778 values.<wbr/></p> 12779 </td> 12780 12781 <td class="entry_units"> 12782 </td> 12783 12784 <td class="entry_range"> 12785 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 12786 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p> 12787 </td> 12788 12789 <td class="entry_tags"> 12790 </td> 12791 12792 </tr> 12793 <tr class="entries_header"> 12794 <th class="th_details" colspan="5">Details</th> 12795 </tr> 12796 <tr class="entry_cont"> 12797 <td class="entry_details" colspan="5"> 12798 <p>The entries in the result metadata buffers for a 12799 single capture may not overlap,<wbr/> except for this entry.<wbr/> The 12800 FINAL buffers must retain FIFO ordering relative to the 12801 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 12802 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 12803 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 12804 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 12805 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 12806 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 12807 </td> 12808 </tr> 12809 12810 <tr class="entries_header"> 12811 <th class="th_details" colspan="5">HAL Implementation Details</th> 12812 </tr> 12813 <tr class="entry_cont"> 12814 <td class="entry_details" colspan="5"> 12815 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 12816 for information on how to implement partial results.<wbr/></p> 12817 </td> 12818 </tr> 12819 12820 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12821 <!-- end of entry --> 12822 12823 12824 12825 <!-- end of kind --> 12826 </tbody> 12827 12828 <!-- end of section --> 12829 <tr><td colspan="6" id="section_request" class="section">request</td></tr> 12830 12831 12832 <tr><td colspan="6" class="kind">controls</td></tr> 12833 12834 <thead class="entries_header"> 12835 <tr> 12836 <th class="th_name">Property Name</th> 12837 <th class="th_type">Type</th> 12838 <th class="th_description">Description</th> 12839 <th class="th_units">Units</th> 12840 <th class="th_range">Range</th> 12841 <th class="th_tags">Tags</th> 12842 </tr> 12843 </thead> 12844 12845 <tbody> 12846 12847 12848 12849 12850 12851 12852 12853 12854 12855 12856 <tr class="entry" id="controls_android.request.frameCount"> 12857 <td class="entry_name 12858 entry_name_deprecated 12859 " rowspan="1"> 12860 android.<wbr/>request.<wbr/>frame<wbr/>Count 12861 </td> 12862 <td class="entry_type"> 12863 <span class="entry_type_name">int32</span> 12864 12865 <span class="entry_type_visibility"> [system]</span> 12866 12867 12868 12869 <span class="entry_type_deprecated">[deprecated] </span> 12870 12871 12872 12873 </td> <!-- entry_type --> 12874 12875 <td class="entry_description"> 12876 <p>A frame counter set by the framework.<wbr/> Must 12877 be maintained unchanged in output frame.<wbr/> This value monotonically 12878 increases with every new result (that is,<wbr/> each new result has a unique 12879 frameCount value).<wbr/></p> 12880 </td> 12881 12882 <td class="entry_units"> 12883 incrementing integer 12884 </td> 12885 12886 <td class="entry_range"> 12887 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 12888 <p>Any int.<wbr/></p> 12889 </td> 12890 12891 <td class="entry_tags"> 12892 </td> 12893 12894 </tr> 12895 12896 12897 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12898 <!-- end of entry --> 12899 12900 12901 <tr class="entry" id="controls_android.request.id"> 12902 <td class="entry_name 12903 " rowspan="1"> 12904 android.<wbr/>request.<wbr/>id 12905 </td> 12906 <td class="entry_type"> 12907 <span class="entry_type_name">int32</span> 12908 12909 <span class="entry_type_visibility"> [hidden]</span> 12910 12911 12912 12913 12914 12915 12916 </td> <!-- entry_type --> 12917 12918 <td class="entry_description"> 12919 <p>An application-specified ID for the current 12920 request.<wbr/> Must be maintained unchanged in output 12921 frame</p> 12922 </td> 12923 12924 <td class="entry_units"> 12925 arbitrary integer assigned by application 12926 </td> 12927 12928 <td class="entry_range"> 12929 <p>Any int</p> 12930 </td> 12931 12932 <td class="entry_tags"> 12933 <ul class="entry_tags"> 12934 <li><a href="#tag_V1">V1</a></li> 12935 </ul> 12936 </td> 12937 12938 </tr> 12939 12940 12941 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12942 <!-- end of entry --> 12943 12944 12945 <tr class="entry" id="controls_android.request.inputStreams"> 12946 <td class="entry_name 12947 entry_name_deprecated 12948 " rowspan="3"> 12949 android.<wbr/>request.<wbr/>input<wbr/>Streams 12950 </td> 12951 <td class="entry_type"> 12952 <span class="entry_type_name">int32</span> 12953 <span class="entry_type_container">x</span> 12954 12955 <span class="entry_type_array"> 12956 n 12957 </span> 12958 <span class="entry_type_visibility"> [system]</span> 12959 12960 12961 12962 <span class="entry_type_deprecated">[deprecated] </span> 12963 12964 12965 12966 </td> <!-- entry_type --> 12967 12968 <td class="entry_description"> 12969 <p>List which camera reprocess stream is used 12970 for the source of reprocessing data.<wbr/></p> 12971 </td> 12972 12973 <td class="entry_units"> 12974 List of camera reprocess stream IDs 12975 </td> 12976 12977 <td class="entry_range"> 12978 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 12979 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 12980 </td> 12981 12982 <td class="entry_tags"> 12983 <ul class="entry_tags"> 12984 <li><a href="#tag_HAL2">HAL2</a></li> 12985 </ul> 12986 </td> 12987 12988 </tr> 12989 <tr class="entries_header"> 12990 <th class="th_details" colspan="5">Details</th> 12991 </tr> 12992 <tr class="entry_cont"> 12993 <td class="entry_details" colspan="5"> 12994 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 12995 REPROCESS.<wbr/> Ignored otherwise</p> 12996 </td> 12997 </tr> 12998 12999 13000 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13001 <!-- end of entry --> 13002 13003 13004 <tr class="entry" id="controls_android.request.metadataMode"> 13005 <td class="entry_name 13006 " rowspan="1"> 13007 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 13008 </td> 13009 <td class="entry_type"> 13010 <span class="entry_type_name entry_type_name_enum">byte</span> 13011 13012 <span class="entry_type_visibility"> [system]</span> 13013 13014 13015 13016 13017 13018 <ul class="entry_type_enum"> 13019 <li> 13020 <span class="entry_type_enum_name">NONE</span> 13021 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 13022 for application-bound buffer data.<wbr/> If no 13023 application-bound streams exist,<wbr/> no frame should be 13024 placed in the output frame queue.<wbr/> If such streams 13025 exist,<wbr/> a frame should be placed on the output queue 13026 with null metadata but with the necessary output buffer 13027 information.<wbr/> Timestamp information should still be 13028 included with any output stream buffers</p></span> 13029 </li> 13030 <li> 13031 <span class="entry_type_enum_name">FULL</span> 13032 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 13033 only be produced if they are separately 13034 enabled</p></span> 13035 </li> 13036 </ul> 13037 13038 </td> <!-- entry_type --> 13039 13040 <td class="entry_description"> 13041 <p>How much metadata to produce on 13042 output</p> 13043 </td> 13044 13045 <td class="entry_units"> 13046 </td> 13047 13048 <td class="entry_range"> 13049 </td> 13050 13051 <td class="entry_tags"> 13052 <ul class="entry_tags"> 13053 <li><a href="#tag_FUTURE">FUTURE</a></li> 13054 </ul> 13055 </td> 13056 13057 </tr> 13058 13059 13060 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13061 <!-- end of entry --> 13062 13063 13064 <tr class="entry" id="controls_android.request.outputStreams"> 13065 <td class="entry_name 13066 entry_name_deprecated 13067 " rowspan="3"> 13068 android.<wbr/>request.<wbr/>output<wbr/>Streams 13069 </td> 13070 <td class="entry_type"> 13071 <span class="entry_type_name">int32</span> 13072 <span class="entry_type_container">x</span> 13073 13074 <span class="entry_type_array"> 13075 n 13076 </span> 13077 <span class="entry_type_visibility"> [system]</span> 13078 13079 13080 13081 <span class="entry_type_deprecated">[deprecated] </span> 13082 13083 13084 13085 </td> <!-- entry_type --> 13086 13087 <td class="entry_description"> 13088 <p>Lists which camera output streams image data 13089 from this capture must be sent to</p> 13090 </td> 13091 13092 <td class="entry_units"> 13093 List of camera stream IDs 13094 </td> 13095 13096 <td class="entry_range"> 13097 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13098 <p>List must only include streams that have been 13099 created</p> 13100 </td> 13101 13102 <td class="entry_tags"> 13103 <ul class="entry_tags"> 13104 <li><a href="#tag_HAL2">HAL2</a></li> 13105 </ul> 13106 </td> 13107 13108 </tr> 13109 <tr class="entries_header"> 13110 <th class="th_details" colspan="5">Details</th> 13111 </tr> 13112 <tr class="entry_cont"> 13113 <td class="entry_details" colspan="5"> 13114 <p>If no output streams are listed,<wbr/> then the image 13115 data should simply be discarded.<wbr/> The image data must 13116 still be captured for metadata and statistics production,<wbr/> 13117 and the lens and flash must operate as requested.<wbr/></p> 13118 </td> 13119 </tr> 13120 13121 13122 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13123 <!-- end of entry --> 13124 13125 13126 <tr class="entry" id="controls_android.request.type"> 13127 <td class="entry_name 13128 entry_name_deprecated 13129 " rowspan="1"> 13130 android.<wbr/>request.<wbr/>type 13131 </td> 13132 <td class="entry_type"> 13133 <span class="entry_type_name entry_type_name_enum">byte</span> 13134 13135 <span class="entry_type_visibility"> [system]</span> 13136 13137 13138 13139 <span class="entry_type_deprecated">[deprecated] </span> 13140 13141 13142 <ul class="entry_type_enum"> 13143 <li> 13144 <span class="entry_type_enum_name">CAPTURE</span> 13145 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 13146 and process it according to the 13147 settings</p></span> 13148 </li> 13149 <li> 13150 <span class="entry_type_enum_name">REPROCESS</span> 13151 <span class="entry_type_enum_notes"><p>Process previously captured data; the 13152 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the 13153 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 13154 needed for reprocessing with [RP]</p></span> 13155 </li> 13156 </ul> 13157 13158 </td> <!-- entry_type --> 13159 13160 <td class="entry_description"> 13161 <p>The type of the request; either CAPTURE or 13162 REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p> 13163 </td> 13164 13165 <td class="entry_units"> 13166 </td> 13167 13168 <td class="entry_range"> 13169 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13170 </td> 13171 13172 <td class="entry_tags"> 13173 <ul class="entry_tags"> 13174 <li><a href="#tag_HAL2">HAL2</a></li> 13175 </ul> 13176 </td> 13177 13178 </tr> 13179 13180 13181 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13182 <!-- end of entry --> 13183 13184 13185 13186 <!-- end of kind --> 13187 </tbody> 13188 <tr><td colspan="6" class="kind">static</td></tr> 13189 13190 <thead class="entries_header"> 13191 <tr> 13192 <th class="th_name">Property Name</th> 13193 <th class="th_type">Type</th> 13194 <th class="th_description">Description</th> 13195 <th class="th_units">Units</th> 13196 <th class="th_range">Range</th> 13197 <th class="th_tags">Tags</th> 13198 </tr> 13199 </thead> 13200 13201 <tbody> 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 13213 <td class="entry_name 13214 " rowspan="3"> 13215 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 13216 </td> 13217 <td class="entry_type"> 13218 <span class="entry_type_name">int32</span> 13219 <span class="entry_type_container">x</span> 13220 13221 <span class="entry_type_array"> 13222 3 13223 </span> 13224 <span class="entry_type_visibility"> [hidden]</span> 13225 13226 13227 <span class="entry_type_hwlevel">[legacy] </span> 13228 13229 13230 13231 13232 </td> <!-- entry_type --> 13233 13234 <td class="entry_description"> 13235 <p>The maximum numbers of different types of output streams 13236 that can be configured and used simultaneously by a camera device.<wbr/></p> 13237 </td> 13238 13239 <td class="entry_units"> 13240 </td> 13241 13242 <td class="entry_range"> 13243 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p> 13244 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p> 13245 <p>For processed (but not stalling) format streams,<wbr/> >= 3 13246 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 13247 >= 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> 13248 </td> 13249 13250 <td class="entry_tags"> 13251 <ul class="entry_tags"> 13252 <li><a href="#tag_BC">BC</a></li> 13253 </ul> 13254 </td> 13255 13256 </tr> 13257 <tr class="entries_header"> 13258 <th class="th_details" colspan="5">Details</th> 13259 </tr> 13260 <tr class="entry_cont"> 13261 <td class="entry_details" colspan="5"> 13262 <p>This is a 3 element tuple that contains the max number of output simultaneous 13263 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) 13264 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and 13265 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 13266 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> 13267 <p>This lists the upper bound of the number of output streams supported by 13268 the camera device.<wbr/> Using more streams simultaneously may require more hardware and 13269 CPU resources that will consume more power.<wbr/> The image format for an output stream can 13270 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 13271 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized 13272 into the 3 stream types as below:</p> 13273 <ul> 13274 <li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/> 13275 Typically JPEG format (ImageFormat#JPEG).<wbr/></li> 13276 <li>Raw formats: ImageFormat#RAW_<wbr/>SENSOR,<wbr/> ImageFormat#RAW10 and ImageFormat#RAW_<wbr/>OPAQUE.<wbr/></li> 13277 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> 13278 Typically Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888,<wbr/> ImageFormat#NV21,<wbr/> ImageFormat#YV12.<wbr/></li> 13279 </ul> 13280 </td> 13281 </tr> 13282 13283 13284 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13285 <!-- end of entry --> 13286 13287 13288 <tr class="entry" id="static_android.request.maxNumOutputRaw"> 13289 <td class="entry_name 13290 " rowspan="3"> 13291 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw 13292 </td> 13293 <td class="entry_type"> 13294 <span class="entry_type_name">int32</span> 13295 13296 <span class="entry_type_visibility"> [public]</span> 13297 13298 <span class="entry_type_synthetic">[synthetic] </span> 13299 13300 <span class="entry_type_hwlevel">[legacy] </span> 13301 13302 13303 13304 13305 </td> <!-- entry_type --> 13306 13307 <td class="entry_description"> 13308 <p>The maximum numbers of different types of output streams 13309 that can be configured and used simultaneously by a camera device 13310 for any <code>RAW</code> formats.<wbr/></p> 13311 </td> 13312 13313 <td class="entry_units"> 13314 </td> 13315 13316 <td class="entry_range"> 13317 <p>>= 0</p> 13318 </td> 13319 13320 <td class="entry_tags"> 13321 </td> 13322 13323 </tr> 13324 <tr class="entries_header"> 13325 <th class="th_details" colspan="5">Details</th> 13326 </tr> 13327 <tr class="entry_cont"> 13328 <td class="entry_details" colspan="5"> 13329 <p>This value contains the max number of output simultaneous 13330 streams from the raw sensor.<wbr/></p> 13331 <p>This lists the upper bound of the number of output streams supported by 13332 the camera device.<wbr/> Using more streams simultaneously may require more hardware and 13333 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 13334 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> 13335 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p> 13336 <ul> 13337 <li>ImageFormat#RAW_<wbr/>SENSOR</li> 13338 <li>ImageFormat#RAW10</li> 13339 <li>Opaque <code>RAW</code></li> 13340 </ul> 13341 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY) 13342 never support raw streams.<wbr/></p> 13343 </td> 13344 </tr> 13345 13346 13347 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13348 <!-- end of entry --> 13349 13350 13351 <tr class="entry" id="static_android.request.maxNumOutputProc"> 13352 <td class="entry_name 13353 " rowspan="3"> 13354 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc 13355 </td> 13356 <td class="entry_type"> 13357 <span class="entry_type_name">int32</span> 13358 13359 <span class="entry_type_visibility"> [public]</span> 13360 13361 <span class="entry_type_synthetic">[synthetic] </span> 13362 13363 <span class="entry_type_hwlevel">[legacy] </span> 13364 13365 13366 13367 13368 </td> <!-- entry_type --> 13369 13370 <td class="entry_description"> 13371 <p>The maximum numbers of different types of output streams 13372 that can be configured and used simultaneously by a camera device 13373 for any processed (but not-stalling) formats.<wbr/></p> 13374 </td> 13375 13376 <td class="entry_units"> 13377 </td> 13378 13379 <td class="entry_range"> 13380 <p>>= 3 13381 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 13382 >= 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> 13383 </td> 13384 13385 <td class="entry_tags"> 13386 </td> 13387 13388 </tr> 13389 <tr class="entries_header"> 13390 <th class="th_details" colspan="5">Details</th> 13391 </tr> 13392 <tr class="entry_cont"> 13393 <td class="entry_details" colspan="5"> 13394 <p>This value contains the max number of output simultaneous 13395 streams for any processed (but not-stalling) formats.<wbr/></p> 13396 <p>This lists the upper bound of the number of output streams supported by 13397 the camera device.<wbr/> Using more streams simultaneously may require more hardware and 13398 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 13399 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> 13400 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/> 13401 Typically:</p> 13402 <ul> 13403 <li>Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</li> 13404 <li>ImageFormat#NV21</li> 13405 <li>ImageFormat#YV12</li> 13406 <li>Implementation-defined formats,<wbr/> i.<wbr/>e.<wbr/> StreamConfiguration#isOutputSupportedFor(Class)</li> 13407 </ul> 13408 <p>For full guarantees,<wbr/> query StreamConfigurationMap#getOutputStallDuration with 13409 a processed format -- it will return 0 for a non-stalling stream.<wbr/></p> 13410 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p> 13411 </td> 13412 </tr> 13413 13414 13415 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13416 <!-- end of entry --> 13417 13418 13419 <tr class="entry" id="static_android.request.maxNumOutputProcStalling"> 13420 <td class="entry_name 13421 " rowspan="3"> 13422 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling 13423 </td> 13424 <td class="entry_type"> 13425 <span class="entry_type_name">int32</span> 13426 13427 <span class="entry_type_visibility"> [public]</span> 13428 13429 <span class="entry_type_synthetic">[synthetic] </span> 13430 13431 <span class="entry_type_hwlevel">[legacy] </span> 13432 13433 13434 13435 13436 </td> <!-- entry_type --> 13437 13438 <td class="entry_description"> 13439 <p>The maximum numbers of different types of output streams 13440 that can be configured and used simultaneously by a camera device 13441 for any processed (and stalling) formats.<wbr/></p> 13442 </td> 13443 13444 <td class="entry_units"> 13445 </td> 13446 13447 <td class="entry_range"> 13448 <p>>= 1</p> 13449 </td> 13450 13451 <td class="entry_tags"> 13452 </td> 13453 13454 </tr> 13455 <tr class="entries_header"> 13456 <th class="th_details" colspan="5">Details</th> 13457 </tr> 13458 <tr class="entry_cont"> 13459 <td class="entry_details" colspan="5"> 13460 <p>This value contains the max number of output simultaneous 13461 streams for any processed (but not-stalling) formats.<wbr/></p> 13462 <p>This lists the upper bound of the number of output streams supported by 13463 the camera device.<wbr/> Using more streams simultaneously may require more hardware and 13464 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 13465 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> 13466 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations > 0.<wbr/> 13467 Typically only the <code>JPEG</code> format (ImageFormat#JPEG) is a stalling format.<wbr/></p> 13468 <p>For full guarantees,<wbr/> query StreamConfigurationMap#getOutputStallDuration with 13469 a processed format -- it will return a non-0 value for a stalling stream.<wbr/></p> 13470 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p> 13471 </td> 13472 </tr> 13473 13474 13475 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13476 <!-- end of entry --> 13477 13478 13479 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 13480 <td class="entry_name 13481 entry_name_deprecated 13482 " rowspan="3"> 13483 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 13484 </td> 13485 <td class="entry_type"> 13486 <span class="entry_type_name">int32</span> 13487 <span class="entry_type_container">x</span> 13488 13489 <span class="entry_type_array"> 13490 1 13491 </span> 13492 <span class="entry_type_visibility"> [system]</span> 13493 13494 13495 13496 <span class="entry_type_deprecated">[deprecated] </span> 13497 13498 13499 13500 </td> <!-- entry_type --> 13501 13502 <td class="entry_description"> 13503 <p>How many reprocessing streams of any type 13504 can be allocated at the same time.<wbr/></p> 13505 </td> 13506 13507 <td class="entry_units"> 13508 </td> 13509 13510 <td class="entry_range"> 13511 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13512 <p>>= 0</p> 13513 </td> 13514 13515 <td class="entry_tags"> 13516 <ul class="entry_tags"> 13517 <li><a href="#tag_HAL2">HAL2</a></li> 13518 </ul> 13519 </td> 13520 13521 </tr> 13522 <tr class="entries_header"> 13523 <th class="th_details" colspan="5">Details</th> 13524 </tr> 13525 <tr class="entry_cont"> 13526 <td class="entry_details" colspan="5"> 13527 <p>Only used by HAL2.<wbr/>x.<wbr/></p> 13528 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 13529 </td> 13530 </tr> 13531 13532 13533 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13534 <!-- end of entry --> 13535 13536 13537 <tr class="entry" id="static_android.request.maxNumInputStreams"> 13538 <td class="entry_name 13539 " rowspan="3"> 13540 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 13541 </td> 13542 <td class="entry_type"> 13543 <span class="entry_type_name">int32</span> 13544 13545 <span class="entry_type_visibility"> [hidden]</span> 13546 13547 13548 <span class="entry_type_hwlevel">[full] </span> 13549 13550 13551 13552 13553 </td> <!-- entry_type --> 13554 13555 <td class="entry_description"> 13556 <p>The maximum numbers of any type of input streams 13557 that can be configured and used simultaneously by a camera device.<wbr/></p> 13558 </td> 13559 13560 <td class="entry_units"> 13561 </td> 13562 13563 <td class="entry_range"> 13564 <p>0 or 1.<wbr/></p> 13565 </td> 13566 13567 <td class="entry_tags"> 13568 </td> 13569 13570 </tr> 13571 <tr class="entries_header"> 13572 <th class="th_details" colspan="5">Details</th> 13573 </tr> 13574 <tr class="entry_cont"> 13575 <td class="entry_details" colspan="5"> 13576 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 13577 <p>The image format for a input stream can be any supported 13578 format provided by 13579 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/> When using an 13580 input stream,<wbr/> there must be at least one output stream 13581 configured to to receive the reprocessed images.<wbr/></p> 13582 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 13583 stream image format will be RAW_<wbr/>OPAQUE,<wbr/> the associated output stream image format 13584 should be JPEG.<wbr/></p> 13585 </td> 13586 </tr> 13587 13588 13589 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13590 <!-- end of entry --> 13591 13592 13593 <tr class="entry" id="static_android.request.pipelineMaxDepth"> 13594 <td class="entry_name 13595 " rowspan="5"> 13596 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 13597 </td> 13598 <td class="entry_type"> 13599 <span class="entry_type_name">byte</span> 13600 13601 <span class="entry_type_visibility"> [public]</span> 13602 13603 13604 <span class="entry_type_hwlevel">[legacy] </span> 13605 13606 13607 13608 13609 </td> <!-- entry_type --> 13610 13611 <td class="entry_description"> 13612 <p>Specifies the number of maximum pipeline stages a frame 13613 has to go through from when it's exposed to when it's available 13614 to the framework.<wbr/></p> 13615 </td> 13616 13617 <td class="entry_units"> 13618 </td> 13619 13620 <td class="entry_range"> 13621 </td> 13622 13623 <td class="entry_tags"> 13624 </td> 13625 13626 </tr> 13627 <tr class="entries_header"> 13628 <th class="th_details" colspan="5">Details</th> 13629 </tr> 13630 <tr class="entry_cont"> 13631 <td class="entry_details" colspan="5"> 13632 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 13633 one stage to readout) from the sensor.<wbr/> The ISP then usually adds 13634 its own stages to do custom HW processing.<wbr/> Further stages may be 13635 added by SW processing.<wbr/></p> 13636 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 13637 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 13638 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 13639 the max pipeline depth.<wbr/></p> 13640 <p>A pipeline depth of X stages is equivalent to a pipeline latency of 13641 X frame intervals.<wbr/></p> 13642 <p>This value will be 8 or less.<wbr/></p> 13643 </td> 13644 </tr> 13645 13646 <tr class="entries_header"> 13647 <th class="th_details" colspan="5">HAL Implementation Details</th> 13648 </tr> 13649 <tr class="entry_cont"> 13650 <td class="entry_details" colspan="5"> 13651 <p>This value should be 4 or less.<wbr/></p> 13652 </td> 13653 </tr> 13654 13655 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13656 <!-- end of entry --> 13657 13658 13659 <tr class="entry" id="static_android.request.partialResultCount"> 13660 <td class="entry_name 13661 " rowspan="3"> 13662 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 13663 </td> 13664 <td class="entry_type"> 13665 <span class="entry_type_name">int32</span> 13666 13667 <span class="entry_type_visibility"> [public]</span> 13668 13669 13670 13671 13672 13673 13674 </td> <!-- entry_type --> 13675 13676 <td class="entry_description"> 13677 <p>Defines how many sub-components 13678 a result will be composed of.<wbr/></p> 13679 </td> 13680 13681 <td class="entry_units"> 13682 </td> 13683 13684 <td class="entry_range"> 13685 <p>>= 1</p> 13686 </td> 13687 13688 <td class="entry_tags"> 13689 </td> 13690 13691 </tr> 13692 <tr class="entries_header"> 13693 <th class="th_details" colspan="5">Details</th> 13694 </tr> 13695 <tr class="entry_cont"> 13696 <td class="entry_details" colspan="5"> 13697 <p>In order to combat the pipeline latency,<wbr/> partial results 13698 may be delivered to the application layer from the camera device as 13699 soon as they are available.<wbr/></p> 13700 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial 13701 results are not supported,<wbr/> and only the final TotalCaptureResult will 13702 be produced by the camera device.<wbr/></p> 13703 <p>A typical use case for this might be: after requesting an 13704 auto-focus (AF) lock the new AF state might be available 50% 13705 of the way through the pipeline.<wbr/> The camera device could 13706 then immediately dispatch this state via a partial result to 13707 the application,<wbr/> and the rest of the metadata via later 13708 partial results.<wbr/></p> 13709 </td> 13710 </tr> 13711 13712 13713 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13714 <!-- end of entry --> 13715 13716 13717 <tr class="entry" id="static_android.request.availableCapabilities"> 13718 <td class="entry_name 13719 " rowspan="5"> 13720 android.<wbr/>request.<wbr/>available<wbr/>Capabilities 13721 </td> 13722 <td class="entry_type"> 13723 <span class="entry_type_name entry_type_name_enum">byte</span> 13724 <span class="entry_type_container">x</span> 13725 13726 <span class="entry_type_array"> 13727 n 13728 </span> 13729 <span class="entry_type_visibility"> [public]</span> 13730 13731 13732 <span class="entry_type_hwlevel">[legacy] </span> 13733 13734 13735 13736 <ul class="entry_type_enum"> 13737 <li> 13738 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span> 13739 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera 13740 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 13741 supports.<wbr/></p> 13742 <p>This capability is listed by all devices,<wbr/> and 13743 indicates that the camera device has a feature set 13744 that's comparable to the baseline requirements for the 13745 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p></span> 13746 </li> 13747 <li> 13748 <span class="entry_type_enum_name">MANUAL_SENSOR</span> 13749 <span class="entry_type_enum_optional">[optional]</span> 13750 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such 13751 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/> 13752 The camera device supports basic manual control of the sensor image 13753 acquisition related stages.<wbr/> This means the following controls are 13754 guaranteed to be supported:</p> 13755 <ul> 13756 <li>Manual frame duration control<ul> 13757 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li> 13758 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 13759 </ul> 13760 </li> 13761 <li>Manual exposure control<ul> 13762 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 13763 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 13764 </ul> 13765 </li> 13766 <li>Manual sensitivity control<ul> 13767 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 13768 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 13769 </ul> 13770 </li> 13771 <li>Manual lens control (if the lens is adjustable)<ul> 13772 <li>android.<wbr/>lens.<wbr/>*</li> 13773 </ul> 13774 </li> 13775 <li>Manual flash control (if a flash unit is present)<ul> 13776 <li>android.<wbr/>flash.<wbr/>*</li> 13777 </ul> 13778 </li> 13779 <li>Manual black level locking<ul> 13780 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> 13781 </ul> 13782 </li> 13783 </ul> 13784 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera 13785 device will accurately report the values applied by 3A in the 13786 result.<wbr/></p> 13787 <p>A given camera device may also support additional manual sensor controls,<wbr/> 13788 but this capability only covers the above list of controls.<wbr/></p> 13789 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will 13790 additionally return a min frame duration that is greater than 13791 zero for each supported size-format combination.<wbr/></p></span> 13792 </li> 13793 <li> 13794 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span> 13795 <span class="entry_type_enum_optional">[optional]</span> 13796 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/> 13797 The camera device supports basic manual control of the image post-processing 13798 stages.<wbr/> This means the following controls are guaranteed to be supported:</p> 13799 <ul> 13800 <li>Manual tonemap control<ul> 13801 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li> 13802 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> 13803 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> 13804 </ul> 13805 </li> 13806 <li>Manual white balance control<ul> 13807 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> 13808 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> 13809 </ul> 13810 </li> 13811 <li>Manual lens shading map control<ul> 13812 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li> 13813 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li> 13814 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> 13815 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> 13816 </ul> 13817 </li> 13818 <li>Manual aberration correction control (if aberration correction is supported)<ul> 13819 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li> 13820 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li> 13821 </ul> 13822 </li> 13823 </ul> 13824 <p>If auto white balance is enabled,<wbr/> then the camera device 13825 will accurately report the values applied by AWB in the result.<wbr/></p> 13826 <p>A given camera device may also support additional post-processing 13827 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span> 13828 </li> 13829 <li> 13830 <span class="entry_type_enum_name">RAW</span> 13831 <span class="entry_type_enum_optional">[optional]</span> 13832 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and 13833 metadata for interpreting them.<wbr/></p> 13834 <p>Devices supporting the RAW capability allow both for 13835 saving DNG files,<wbr/> and for direct application processing of 13836 raw sensor images.<wbr/></p> 13837 <ul> 13838 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li> 13839 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams 13840 will match either the value in 13841 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or 13842 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 13843 <li>All DNG-related optional metadata entries are provided 13844 by the camera device.<wbr/></li> 13845 </ul></span> 13846 </li> 13847 <li> 13848 <span class="entry_type_enum_name">ZSL</span> 13849 <span class="entry_type_enum_optional">[optional]</span> 13850 <span class="entry_type_enum_optional">[hidden]</span> 13851 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag use case.<wbr/></p> 13852 <ul> 13853 <li>At least one input stream can be used.<wbr/></li> 13854 <li>RAW_<wbr/>OPAQUE is supported as an output/<wbr/>input format</li> 13855 <li>Using RAW_<wbr/>OPAQUE does not cause a frame rate drop 13856 relative to the sensor's maximum capture rate (at that 13857 resolution).<wbr/></li> 13858 <li>RAW_<wbr/>OPAQUE will be reprocessable into both YUV_<wbr/>420_<wbr/>888 13859 and JPEG formats.<wbr/></li> 13860 <li>The maximum available resolution for RAW_<wbr/>OPAQUE streams 13861 (both input/<wbr/>output) will match the maximum available 13862 resolution of JPEG streams.<wbr/></li> 13863 </ul></span> 13864 </li> 13865 <li> 13866 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span> 13867 <span class="entry_type_enum_optional">[optional]</span> 13868 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of 13869 the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows 13870 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p> 13871 <p>The values reported for the following controls are guaranteed to be available 13872 in the CaptureResult,<wbr/> including when 3A is enabled:</p> 13873 <ul> 13874 <li>Exposure control<ul> 13875 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 13876 </ul> 13877 </li> 13878 <li>Sensitivity control<ul> 13879 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 13880 </ul> 13881 </li> 13882 <li>Lens controls (if the lens is adjustable)<ul> 13883 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li> 13884 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li> 13885 </ul> 13886 </li> 13887 </ul> 13888 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will 13889 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span> 13890 </li> 13891 <li> 13892 <span class="entry_type_enum_name">BURST_CAPTURE</span> 13893 <span class="entry_type_enum_optional">[optional]</span> 13894 <span class="entry_type_enum_notes"><p>The camera device supports capturing maximum-resolution 13895 images at >= 20 frames per second,<wbr/> in at least the 13896 uncompressed YUV format,<wbr/> when post-processing settings 13897 are set to FAST.<wbr/></p> 13898 <p>More specifically,<wbr/> this means that a size matching the 13899 camera device's active array size is listed as a 13900 supported size for the YUV_<wbr/>420_<wbr/>888 format in 13901 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>,<wbr/> the minimum frame 13902 duration for that format and size is <= 1/<wbr/>20 s,<wbr/> and 13903 the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry 13904 lists at least one FPS range where the minimum FPS is</p> 13905 <blockquote> 13906 <p>= 1 /<wbr/> minimumFrameDuration for the maximum-size 13907 YUV_<wbr/>420_<wbr/>888 format.<wbr/></p> 13908 </blockquote> 13909 <p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is 13910 guaranted to have a value between 0 and 4,<wbr/> inclusive.<wbr/></p></span> 13911 </li> 13912 </ul> 13913 13914 </td> <!-- entry_type --> 13915 13916 <td class="entry_description"> 13917 <p>List of capabilities that this camera device 13918 advertises as fully supporting.<wbr/></p> 13919 </td> 13920 13921 <td class="entry_units"> 13922 </td> 13923 13924 <td class="entry_range"> 13925 </td> 13926 13927 <td class="entry_tags"> 13928 </td> 13929 13930 </tr> 13931 <tr class="entries_header"> 13932 <th class="th_details" colspan="5">Details</th> 13933 </tr> 13934 <tr class="entry_cont"> 13935 <td class="entry_details" colspan="5"> 13936 <p>A capability is a contract that the camera device makes in order 13937 to be able to satisfy one or more use cases.<wbr/></p> 13938 <p>Listing a capability guarantees that the whole set of features 13939 required to support a common use will all be available.<wbr/></p> 13940 <p>Using a subset of the functionality provided by an unsupported 13941 capability may be possible on a specific camera device implementation; 13942 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> 13943 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> 13944 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> 13945 <p>The following capabilities are guaranteed to be available on 13946 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> 13947 <ul> 13948 <li>MANUAL_<wbr/>SENSOR</li> 13949 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li> 13950 </ul> 13951 <p>Other capabilities may be available on either FULL or LIMITED 13952 devices,<wbr/> but the application should query this key to be sure.<wbr/></p> 13953 </td> 13954 </tr> 13955 13956 <tr class="entries_header"> 13957 <th class="th_details" colspan="5">HAL Implementation Details</th> 13958 </tr> 13959 <tr class="entry_cont"> 13960 <td class="entry_details" colspan="5"> 13961 <p>Additional constraint details per-capability will be available 13962 in the Compatibility Test Suite.<wbr/></p> 13963 <p>Minimum baseline requirements required for the 13964 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/> 13965 Instead refer to "BC" tags and the camera CTS tests in the 13966 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p> 13967 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> 13968 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the 13969 request and the result in order to be considered to be 13970 capability-compliant.<wbr/></p> 13971 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 13972 then exposure time must be configurable via the request <em>and</em> 13973 the actual exposure applied must be available via 13974 the result.<wbr/></p> 13975 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the 13976 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p> 13977 </td> 13978 </tr> 13979 13980 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13981 <!-- end of entry --> 13982 13983 13984 <tr class="entry" id="static_android.request.availableRequestKeys"> 13985 <td class="entry_name 13986 " rowspan="5"> 13987 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys 13988 </td> 13989 <td class="entry_type"> 13990 <span class="entry_type_name">int32</span> 13991 <span class="entry_type_container">x</span> 13992 13993 <span class="entry_type_array"> 13994 n 13995 </span> 13996 <span class="entry_type_visibility"> [hidden]</span> 13997 13998 13999 <span class="entry_type_hwlevel">[legacy] </span> 14000 14001 14002 14003 14004 </td> <!-- entry_type --> 14005 14006 <td class="entry_description"> 14007 <p>A list of all keys that the camera device has available 14008 to use with CaptureRequest.<wbr/></p> 14009 </td> 14010 14011 <td class="entry_units"> 14012 </td> 14013 14014 <td class="entry_range"> 14015 </td> 14016 14017 <td class="entry_tags"> 14018 </td> 14019 14020 </tr> 14021 <tr class="entries_header"> 14022 <th class="th_details" colspan="5">Details</th> 14023 </tr> 14024 <tr class="entry_cont"> 14025 <td class="entry_details" colspan="5"> 14026 <p>Attempting to set a key into a CaptureRequest that is not 14027 listed here will result in an invalid request and will be rejected 14028 by the camera device.<wbr/></p> 14029 <p>This field can be used to query the feature set of a camera device 14030 at a more granular level than capabilities.<wbr/> This is especially 14031 important for optional keys that are not listed under any capability 14032 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 14033 </td> 14034 </tr> 14035 14036 <tr class="entries_header"> 14037 <th class="th_details" colspan="5">HAL Implementation Details</th> 14038 </tr> 14039 <tr class="entry_cont"> 14040 <td class="entry_details" colspan="5"> 14041 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 14042 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 14043 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata 14044 vendor extensions API and not against this field.<wbr/></p> 14045 <p>The HAL must not consume any request tags that are not listed either 14046 here or in the vendor tag list.<wbr/></p> 14047 <p>The public camera2 API will always make the vendor tags visible 14048 via CameraCharacteristics#getAvailableCaptureRequestKeys.<wbr/></p> 14049 </td> 14050 </tr> 14051 14052 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14053 <!-- end of entry --> 14054 14055 14056 <tr class="entry" id="static_android.request.availableResultKeys"> 14057 <td class="entry_name 14058 " rowspan="5"> 14059 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys 14060 </td> 14061 <td class="entry_type"> 14062 <span class="entry_type_name">int32</span> 14063 <span class="entry_type_container">x</span> 14064 14065 <span class="entry_type_array"> 14066 n 14067 </span> 14068 <span class="entry_type_visibility"> [hidden]</span> 14069 14070 14071 <span class="entry_type_hwlevel">[legacy] </span> 14072 14073 14074 14075 14076 </td> <!-- entry_type --> 14077 14078 <td class="entry_description"> 14079 <p>A list of all keys that the camera device has available 14080 to use with CaptureResult.<wbr/></p> 14081 </td> 14082 14083 <td class="entry_units"> 14084 </td> 14085 14086 <td class="entry_range"> 14087 </td> 14088 14089 <td class="entry_tags"> 14090 </td> 14091 14092 </tr> 14093 <tr class="entries_header"> 14094 <th class="th_details" colspan="5">Details</th> 14095 </tr> 14096 <tr class="entry_cont"> 14097 <td class="entry_details" colspan="5"> 14098 <p>Attempting to get a key from a CaptureResult that is not 14099 listed here will always return a <code>null</code> value.<wbr/> Getting a key from 14100 a CaptureResult that is listed here will generally never return a <code>null</code> 14101 value.<wbr/></p> 14102 <p>The following keys may return <code>null</code> unless they are enabled:</p> 14103 <ul> 14104 <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> 14105 </ul> 14106 <p>(Those sometimes-null keys will nevertheless be listed here 14107 if they are available.<wbr/>)</p> 14108 <p>This field can be used to query the feature set of a camera device 14109 at a more granular level than capabilities.<wbr/> This is especially 14110 important for optional keys that are not listed under any capability 14111 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<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>Tags listed here must always have an entry in the result metadata,<wbr/> 14121 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 14122 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 14123 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 14124 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 14125 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata 14126 vendor extensions API and not against this field.<wbr/></p> 14127 <p>The HAL must not produce any result tags that are not listed either 14128 here or in the vendor tag list.<wbr/></p> 14129 <p>The public camera2 API will always make the vendor tags visible 14130 via CameraCharacteristics#getAvailableCaptureResultKeys.<wbr/></p> 14131 </td> 14132 </tr> 14133 14134 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14135 <!-- end of entry --> 14136 14137 14138 <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> 14139 <td class="entry_name 14140 " rowspan="5"> 14141 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys 14142 </td> 14143 <td class="entry_type"> 14144 <span class="entry_type_name">int32</span> 14145 <span class="entry_type_container">x</span> 14146 14147 <span class="entry_type_array"> 14148 n 14149 </span> 14150 <span class="entry_type_visibility"> [hidden]</span> 14151 14152 14153 <span class="entry_type_hwlevel">[legacy] </span> 14154 14155 14156 14157 14158 </td> <!-- entry_type --> 14159 14160 <td class="entry_description"> 14161 <p>A list of all keys that the camera device has available 14162 to use with CameraCharacteristics.<wbr/></p> 14163 </td> 14164 14165 <td class="entry_units"> 14166 </td> 14167 14168 <td class="entry_range"> 14169 </td> 14170 14171 <td class="entry_tags"> 14172 </td> 14173 14174 </tr> 14175 <tr class="entries_header"> 14176 <th class="th_details" colspan="5">Details</th> 14177 </tr> 14178 <tr class="entry_cont"> 14179 <td class="entry_details" colspan="5"> 14180 <p>This entry follows the same rules as 14181 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for 14182 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 14183 details.<wbr/></p> 14184 </td> 14185 </tr> 14186 14187 <tr class="entries_header"> 14188 <th class="th_details" colspan="5">HAL Implementation Details</th> 14189 </tr> 14190 <tr class="entry_cont"> 14191 <td class="entry_details" colspan="5"> 14192 <p>Keys listed here must always have an entry in the static info metadata,<wbr/> 14193 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 14194 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 14195 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 14196 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 14197 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata 14198 vendor extensions API and not against this field.<wbr/></p> 14199 <p>The HAL must not have any tags in its static info that are not listed 14200 either here or in the vendor tag list.<wbr/></p> 14201 <p>The public camera2 API will always make the vendor tags visible 14202 via CameraCharacteristics#getKeys.<wbr/></p> 14203 </td> 14204 </tr> 14205 14206 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14207 <!-- end of entry --> 14208 14209 14210 14211 <!-- end of kind --> 14212 </tbody> 14213 <tr><td colspan="6" class="kind">dynamic</td></tr> 14214 14215 <thead class="entries_header"> 14216 <tr> 14217 <th class="th_name">Property Name</th> 14218 <th class="th_type">Type</th> 14219 <th class="th_description">Description</th> 14220 <th class="th_units">Units</th> 14221 <th class="th_range">Range</th> 14222 <th class="th_tags">Tags</th> 14223 </tr> 14224 </thead> 14225 14226 <tbody> 14227 14228 14229 14230 14231 14232 14233 14234 14235 14236 14237 <tr class="entry" id="dynamic_android.request.frameCount"> 14238 <td class="entry_name 14239 entry_name_deprecated 14240 " rowspan="3"> 14241 android.<wbr/>request.<wbr/>frame<wbr/>Count 14242 </td> 14243 <td class="entry_type"> 14244 <span class="entry_type_name">int32</span> 14245 14246 <span class="entry_type_visibility"> [hidden]</span> 14247 14248 14249 14250 <span class="entry_type_deprecated">[deprecated] </span> 14251 14252 14253 14254 </td> <!-- entry_type --> 14255 14256 <td class="entry_description"> 14257 <p>A frame counter set by the framework.<wbr/> This value monotonically 14258 increases with every new result (that is,<wbr/> each new result has a unique 14259 frameCount value).<wbr/></p> 14260 </td> 14261 14262 <td class="entry_units"> 14263 count of frames 14264 </td> 14265 14266 <td class="entry_range"> 14267 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14268 <p>> 0</p> 14269 </td> 14270 14271 <td class="entry_tags"> 14272 </td> 14273 14274 </tr> 14275 <tr class="entries_header"> 14276 <th class="th_details" colspan="5">Details</th> 14277 </tr> 14278 <tr class="entry_cont"> 14279 <td class="entry_details" colspan="5"> 14280 <p>Reset on release()</p> 14281 </td> 14282 </tr> 14283 14284 14285 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14286 <!-- end of entry --> 14287 14288 14289 <tr class="entry" id="dynamic_android.request.id"> 14290 <td class="entry_name 14291 " rowspan="1"> 14292 android.<wbr/>request.<wbr/>id 14293 </td> 14294 <td class="entry_type"> 14295 <span class="entry_type_name">int32</span> 14296 14297 <span class="entry_type_visibility"> [hidden]</span> 14298 14299 14300 14301 14302 14303 14304 </td> <!-- entry_type --> 14305 14306 <td class="entry_description"> 14307 <p>An application-specified ID for the current 14308 request.<wbr/> Must be maintained unchanged in output 14309 frame</p> 14310 </td> 14311 14312 <td class="entry_units"> 14313 arbitrary integer assigned by application 14314 </td> 14315 14316 <td class="entry_range"> 14317 <p>Any int</p> 14318 </td> 14319 14320 <td class="entry_tags"> 14321 <ul class="entry_tags"> 14322 <li><a href="#tag_V1">V1</a></li> 14323 </ul> 14324 </td> 14325 14326 </tr> 14327 14328 14329 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14330 <!-- end of entry --> 14331 14332 14333 <tr class="entry" id="dynamic_android.request.metadataMode"> 14334 <td class="entry_name 14335 " rowspan="1"> 14336 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 14337 </td> 14338 <td class="entry_type"> 14339 <span class="entry_type_name entry_type_name_enum">byte</span> 14340 14341 <span class="entry_type_visibility"> [system]</span> 14342 14343 14344 14345 14346 14347 <ul class="entry_type_enum"> 14348 <li> 14349 <span class="entry_type_enum_name">NONE</span> 14350 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 14351 for application-bound buffer data.<wbr/> If no 14352 application-bound streams exist,<wbr/> no frame should be 14353 placed in the output frame queue.<wbr/> If such streams 14354 exist,<wbr/> a frame should be placed on the output queue 14355 with null metadata but with the necessary output buffer 14356 information.<wbr/> Timestamp information should still be 14357 included with any output stream buffers</p></span> 14358 </li> 14359 <li> 14360 <span class="entry_type_enum_name">FULL</span> 14361 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 14362 only be produced if they are separately 14363 enabled</p></span> 14364 </li> 14365 </ul> 14366 14367 </td> <!-- entry_type --> 14368 14369 <td class="entry_description"> 14370 <p>How much metadata to produce on 14371 output</p> 14372 </td> 14373 14374 <td class="entry_units"> 14375 </td> 14376 14377 <td class="entry_range"> 14378 </td> 14379 14380 <td class="entry_tags"> 14381 <ul class="entry_tags"> 14382 <li><a href="#tag_FUTURE">FUTURE</a></li> 14383 </ul> 14384 </td> 14385 14386 </tr> 14387 14388 14389 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14390 <!-- end of entry --> 14391 14392 14393 <tr class="entry" id="dynamic_android.request.outputStreams"> 14394 <td class="entry_name 14395 entry_name_deprecated 14396 " rowspan="3"> 14397 android.<wbr/>request.<wbr/>output<wbr/>Streams 14398 </td> 14399 <td class="entry_type"> 14400 <span class="entry_type_name">int32</span> 14401 <span class="entry_type_container">x</span> 14402 14403 <span class="entry_type_array"> 14404 n 14405 </span> 14406 <span class="entry_type_visibility"> [system]</span> 14407 14408 14409 14410 <span class="entry_type_deprecated">[deprecated] </span> 14411 14412 14413 14414 </td> <!-- entry_type --> 14415 14416 <td class="entry_description"> 14417 <p>Lists which camera output streams image data 14418 from this capture must be sent to</p> 14419 </td> 14420 14421 <td class="entry_units"> 14422 List of camera stream IDs 14423 </td> 14424 14425 <td class="entry_range"> 14426 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14427 <p>List must only include streams that have been 14428 created</p> 14429 </td> 14430 14431 <td class="entry_tags"> 14432 <ul class="entry_tags"> 14433 <li><a href="#tag_HAL2">HAL2</a></li> 14434 </ul> 14435 </td> 14436 14437 </tr> 14438 <tr class="entries_header"> 14439 <th class="th_details" colspan="5">Details</th> 14440 </tr> 14441 <tr class="entry_cont"> 14442 <td class="entry_details" colspan="5"> 14443 <p>If no output streams are listed,<wbr/> then the image 14444 data should simply be discarded.<wbr/> The image data must 14445 still be captured for metadata and statistics production,<wbr/> 14446 and the lens and flash must operate as requested.<wbr/></p> 14447 </td> 14448 </tr> 14449 14450 14451 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14452 <!-- end of entry --> 14453 14454 14455 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 14456 <td class="entry_name 14457 " rowspan="5"> 14458 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 14459 </td> 14460 <td class="entry_type"> 14461 <span class="entry_type_name">byte</span> 14462 14463 <span class="entry_type_visibility"> [public]</span> 14464 14465 14466 <span class="entry_type_hwlevel">[legacy] </span> 14467 14468 14469 14470 14471 </td> <!-- entry_type --> 14472 14473 <td class="entry_description"> 14474 <p>Specifies the number of pipeline stages the frame went 14475 through from when it was exposed to when the final completed result 14476 was available to the framework.<wbr/></p> 14477 </td> 14478 14479 <td class="entry_units"> 14480 </td> 14481 14482 <td class="entry_range"> 14483 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 14484 </td> 14485 14486 <td class="entry_tags"> 14487 </td> 14488 14489 </tr> 14490 <tr class="entries_header"> 14491 <th class="th_details" colspan="5">Details</th> 14492 </tr> 14493 <tr class="entry_cont"> 14494 <td class="entry_details" colspan="5"> 14495 <p>Depending on what settings are used in the request,<wbr/> and 14496 what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 14497 and some pipeline stages skipped.<wbr/></p> 14498 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 14499 </td> 14500 </tr> 14501 14502 <tr class="entries_header"> 14503 <th class="th_details" colspan="5">HAL Implementation Details</th> 14504 </tr> 14505 <tr class="entry_cont"> 14506 <td class="entry_details" colspan="5"> 14507 <p>This value must always represent the accurate count of how many 14508 pipeline stages were actually used.<wbr/></p> 14509 </td> 14510 </tr> 14511 14512 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14513 <!-- end of entry --> 14514 14515 14516 14517 <!-- end of kind --> 14518 </tbody> 14519 14520 <!-- end of section --> 14521 <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr> 14522 14523 14524 <tr><td colspan="6" class="kind">controls</td></tr> 14525 14526 <thead class="entries_header"> 14527 <tr> 14528 <th class="th_name">Property Name</th> 14529 <th class="th_type">Type</th> 14530 <th class="th_description">Description</th> 14531 <th class="th_units">Units</th> 14532 <th class="th_range">Range</th> 14533 <th class="th_tags">Tags</th> 14534 </tr> 14535 </thead> 14536 14537 <tbody> 14538 14539 14540 14541 14542 14543 14544 14545 14546 14547 14548 <tr class="entry" id="controls_android.scaler.cropRegion"> 14549 <td class="entry_name 14550 " rowspan="5"> 14551 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 14552 </td> 14553 <td class="entry_type"> 14554 <span class="entry_type_name">int32</span> 14555 <span class="entry_type_container">x</span> 14556 14557 <span class="entry_type_array"> 14558 4 14559 </span> 14560 <span class="entry_type_visibility"> [public as rectangle]</span> 14561 14562 14563 <span class="entry_type_hwlevel">[legacy] </span> 14564 14565 14566 14567 14568 </td> <!-- entry_type --> 14569 14570 <td class="entry_description"> 14571 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 14572 </td> 14573 14574 <td class="entry_units"> 14575 Pixel coordinates relative to 14576 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 14577 </td> 14578 14579 <td class="entry_range"> 14580 </td> 14581 14582 <td class="entry_tags"> 14583 <ul class="entry_tags"> 14584 <li><a href="#tag_BC">BC</a></li> 14585 </ul> 14586 </td> 14587 14588 </tr> 14589 <tr class="entries_header"> 14590 <th class="th_details" colspan="5">Details</th> 14591 </tr> 14592 <tr class="entry_cont"> 14593 <td class="entry_details" colspan="5"> 14594 <p>This control can be used to implement digital zoom.<wbr/></p> 14595 <p>The crop region coordinate system is based off 14596 <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 14597 top-left corner of the sensor active array.<wbr/></p> 14598 <p>Output streams use this rectangle to produce their output,<wbr/> 14599 cropping to a smaller region if necessary to maintain the 14600 stream's aspect ratio,<wbr/> then scaling the sensor input to 14601 match the output's configured resolution.<wbr/></p> 14602 <p>The crop region is applied after the RAW to other color 14603 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 14604 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 14605 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 14606 <p>For non-raw streams,<wbr/> any additional per-stream cropping will 14607 be done to maximize the final pixel area of the stream.<wbr/></p> 14608 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect 14609 ratio,<wbr/> then 4:3 streams will use the exact crop 14610 region.<wbr/> 16:9 streams will further crop vertically 14611 (letterbox).<wbr/></p> 14612 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 14613 outputs will crop horizontally (pillarbox),<wbr/> and 16:9 14614 streams will match exactly.<wbr/> These additional crops will 14615 be centered within the crop region.<wbr/></p> 14616 <p>The width and height of the crop region cannot 14617 be set to be smaller than 14618 <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 14619 <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> 14620 <p>The camera device may adjust the crop region to account 14621 for rounding and other hardware requirements; the final 14622 crop region used will be included in the output capture 14623 result.<wbr/></p> 14624 </td> 14625 </tr> 14626 14627 <tr class="entries_header"> 14628 <th class="th_details" colspan="5">HAL Implementation Details</th> 14629 </tr> 14630 <tr class="entry_cont"> 14631 <td class="entry_details" colspan="5"> 14632 <p>The output streams must maintain square pixels at all 14633 times,<wbr/> no matter what the relative aspect ratios of the 14634 crop region and the stream are.<wbr/> Negative values for 14635 corner are allowed for raw output if full pixel array is 14636 larger than active pixel array.<wbr/> Width and height may be 14637 rounded to nearest larger supportable width,<wbr/> especially 14638 for raw output,<wbr/> where only a few fixed scales may be 14639 possible.<wbr/></p> 14640 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 14641 </td> 14642 </tr> 14643 14644 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14645 <!-- end of entry --> 14646 14647 14648 14649 <!-- end of kind --> 14650 </tbody> 14651 <tr><td colspan="6" class="kind">static</td></tr> 14652 14653 <thead class="entries_header"> 14654 <tr> 14655 <th class="th_name">Property Name</th> 14656 <th class="th_type">Type</th> 14657 <th class="th_description">Description</th> 14658 <th class="th_units">Units</th> 14659 <th class="th_range">Range</th> 14660 <th class="th_tags">Tags</th> 14661 </tr> 14662 </thead> 14663 14664 <tbody> 14665 14666 14667 14668 14669 14670 14671 14672 14673 14674 14675 <tr class="entry" id="static_android.scaler.availableFormats"> 14676 <td class="entry_name 14677 entry_name_deprecated 14678 " rowspan="5"> 14679 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 14680 </td> 14681 <td class="entry_type"> 14682 <span class="entry_type_name entry_type_name_enum">int32</span> 14683 <span class="entry_type_container">x</span> 14684 14685 <span class="entry_type_array"> 14686 n 14687 </span> 14688 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 14689 14690 14691 14692 <span class="entry_type_deprecated">[deprecated] </span> 14693 14694 14695 <ul class="entry_type_enum"> 14696 <li> 14697 <span class="entry_type_enum_name">RAW16</span> 14698 <span class="entry_type_enum_optional">[optional]</span> 14699 <span class="entry_type_enum_value">0x20</span> 14700 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image 14701 buffers with 16-bit pixels.<wbr/></p> 14702 <p>Buffers of this format are typically expected to have a 14703 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in 14704 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with 14705 CFAs that are not representable by a format in 14706 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not 14707 use this format.<wbr/></p> 14708 <p>Buffers of this format will also follow the constraints given for 14709 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> 14710 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for 14711 the full set of performance guarantees.<wbr/></p></span> 14712 </li> 14713 <li> 14714 <span class="entry_type_enum_name">RAW_OPAQUE</span> 14715 <span class="entry_type_enum_optional">[optional]</span> 14716 <span class="entry_type_enum_value">0x24</span> 14717 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an 14718 image sensor.<wbr/></p> 14719 <p>The actual structure of buffers of this format is 14720 platform-specific,<wbr/> but must follow several constraints:</p> 14721 <ol> 14722 <li>No image post-processing operations may have been applied to 14723 buffers of this type.<wbr/> These buffers contain raw image data coming 14724 directly from the image sensor.<wbr/></li> 14725 <li>If a buffer of this format is passed to the camera device for 14726 reprocessing,<wbr/> the resulting images will be identical to the images 14727 produced if the buffer had come directly from the sensor and was 14728 processed with the same settings.<wbr/></li> 14729 </ol> 14730 <p>The intended use for this format is to allow access to the native 14731 raw format buffers coming directly from the camera sensor without 14732 any additional conversions or decrease in framerate.<wbr/></p> 14733 <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 14734 performance guarantees.<wbr/></p></span> 14735 </li> 14736 <li> 14737 <span class="entry_type_enum_name">YV12</span> 14738 <span class="entry_type_enum_optional">[optional]</span> 14739 <span class="entry_type_enum_value">0x32315659</span> 14740 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 14741 </li> 14742 <li> 14743 <span class="entry_type_enum_name">YCrCb_420_SP</span> 14744 <span class="entry_type_enum_optional">[optional]</span> 14745 <span class="entry_type_enum_value">0x11</span> 14746 <span class="entry_type_enum_notes"><p>NV21</p></span> 14747 </li> 14748 <li> 14749 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span> 14750 <span class="entry_type_enum_value">0x22</span> 14751 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 14752 </li> 14753 <li> 14754 <span class="entry_type_enum_name">YCbCr_420_888</span> 14755 <span class="entry_type_enum_value">0x23</span> 14756 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 14757 </li> 14758 <li> 14759 <span class="entry_type_enum_name">BLOB</span> 14760 <span class="entry_type_enum_value">0x21</span> 14761 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 14762 </li> 14763 </ul> 14764 14765 </td> <!-- entry_type --> 14766 14767 <td class="entry_description"> 14768 <p>The list of image formats that are supported by this 14769 camera device for output streams.<wbr/></p> 14770 </td> 14771 14772 <td class="entry_units"> 14773 </td> 14774 14775 <td class="entry_range"> 14776 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14777 </td> 14778 14779 <td class="entry_tags"> 14780 <ul class="entry_tags"> 14781 <li><a href="#tag_BC">BC</a></li> 14782 </ul> 14783 </td> 14784 14785 </tr> 14786 <tr class="entries_header"> 14787 <th class="th_details" colspan="5">Details</th> 14788 </tr> 14789 <tr class="entry_cont"> 14790 <td class="entry_details" colspan="5"> 14791 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 14792 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 14793 </td> 14794 </tr> 14795 14796 <tr class="entries_header"> 14797 <th class="th_details" colspan="5">HAL Implementation Details</th> 14798 </tr> 14799 <tr class="entry_cont"> 14800 <td class="entry_details" colspan="5"> 14801 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 14802 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 14803 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 14804 gralloc module will select a format based on the usage flags provided 14805 by the camera HAL device and the other endpoint of the stream.<wbr/> It is 14806 usually used by preview and recording streams,<wbr/> where the application doesn't 14807 need access the image data.<wbr/></p> 14808 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 14809 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p> 14810 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 14811 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly 14812 recommended that any information used by the camera device when 14813 processing images is fully expressed by the result metadata 14814 for that image buffer.<wbr/></p> 14815 </td> 14816 </tr> 14817 14818 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14819 <!-- end of entry --> 14820 14821 14822 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 14823 <td class="entry_name 14824 entry_name_deprecated 14825 " rowspan="3"> 14826 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 14827 </td> 14828 <td class="entry_type"> 14829 <span class="entry_type_name">int64</span> 14830 <span class="entry_type_container">x</span> 14831 14832 <span class="entry_type_array"> 14833 n 14834 </span> 14835 <span class="entry_type_visibility"> [hidden]</span> 14836 14837 14838 14839 <span class="entry_type_deprecated">[deprecated] </span> 14840 14841 14842 14843 </td> <!-- entry_type --> 14844 14845 <td class="entry_description"> 14846 <p>The minimum frame duration that is supported 14847 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 14848 </td> 14849 14850 <td class="entry_units"> 14851 Nanoseconds 14852 </td> 14853 14854 <td class="entry_range"> 14855 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14856 <p>TODO: Remove property.<wbr/></p> 14857 </td> 14858 14859 <td class="entry_tags"> 14860 <ul class="entry_tags"> 14861 <li><a href="#tag_BC">BC</a></li> 14862 </ul> 14863 </td> 14864 14865 </tr> 14866 <tr class="entries_header"> 14867 <th class="th_details" colspan="5">Details</th> 14868 </tr> 14869 <tr class="entry_cont"> 14870 <td class="entry_details" colspan="5"> 14871 <p>This corresponds to the minimum steady-state frame duration when only 14872 that JPEG stream is active and captured in a burst,<wbr/> with all 14873 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 14874 <p>When multiple streams are configured,<wbr/> the minimum 14875 frame duration will be >= max(individual stream min 14876 durations)</p> 14877 </td> 14878 </tr> 14879 14880 14881 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14882 <!-- end of entry --> 14883 14884 14885 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 14886 <td class="entry_name 14887 entry_name_deprecated 14888 " rowspan="5"> 14889 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 14890 </td> 14891 <td class="entry_type"> 14892 <span class="entry_type_name">int32</span> 14893 <span class="entry_type_container">x</span> 14894 14895 <span class="entry_type_array"> 14896 n x 2 14897 </span> 14898 <span class="entry_type_visibility"> [hidden as size]</span> 14899 14900 14901 14902 <span class="entry_type_deprecated">[deprecated] </span> 14903 14904 14905 14906 </td> <!-- entry_type --> 14907 14908 <td class="entry_description"> 14909 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 14910 </td> 14911 14912 <td class="entry_units"> 14913 </td> 14914 14915 <td class="entry_range"> 14916 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14917 <p>TODO: Remove property.<wbr/></p> 14918 </td> 14919 14920 <td class="entry_tags"> 14921 <ul class="entry_tags"> 14922 <li><a href="#tag_BC">BC</a></li> 14923 </ul> 14924 </td> 14925 14926 </tr> 14927 <tr class="entries_header"> 14928 <th class="th_details" colspan="5">Details</th> 14929 </tr> 14930 <tr class="entry_cont"> 14931 <td class="entry_details" colspan="5"> 14932 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 14933 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> 14934 </td> 14935 </tr> 14936 14937 <tr class="entries_header"> 14938 <th class="th_details" colspan="5">HAL Implementation Details</th> 14939 </tr> 14940 <tr class="entry_cont"> 14941 <td class="entry_details" colspan="5"> 14942 <p>The HAL must include sensor maximum resolution 14943 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 14944 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 14945 </td> 14946 </tr> 14947 14948 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14949 <!-- end of entry --> 14950 14951 14952 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 14953 <td class="entry_name 14954 " rowspan="3"> 14955 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 14956 </td> 14957 <td class="entry_type"> 14958 <span class="entry_type_name">float</span> 14959 14960 <span class="entry_type_visibility"> [public]</span> 14961 14962 14963 <span class="entry_type_hwlevel">[legacy] </span> 14964 14965 14966 14967 14968 </td> <!-- entry_type --> 14969 14970 <td class="entry_description"> 14971 <p>The maximum ratio between both active area width 14972 and crop region width,<wbr/> and active area height and 14973 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 14974 </td> 14975 14976 <td class="entry_units"> 14977 Zoom scale factor 14978 </td> 14979 14980 <td class="entry_range"> 14981 <p>>=1</p> 14982 </td> 14983 14984 <td class="entry_tags"> 14985 <ul class="entry_tags"> 14986 <li><a href="#tag_BC">BC</a></li> 14987 </ul> 14988 </td> 14989 14990 </tr> 14991 <tr class="entries_header"> 14992 <th class="th_details" colspan="5">Details</th> 14993 </tr> 14994 <tr class="entry_cont"> 14995 <td class="entry_details" colspan="5"> 14996 <p>This represents the maximum amount of zooming possible by 14997 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping 14998 window size.<wbr/></p> 14999 <p>Crop regions that have a width or height that is smaller 15000 than this ratio allows will be rounded up to the minimum 15001 allowed size by the camera device.<wbr/></p> 15002 </td> 15003 </tr> 15004 15005 15006 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15007 <!-- end of entry --> 15008 15009 15010 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 15011 <td class="entry_name 15012 entry_name_deprecated 15013 " rowspan="3"> 15014 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 15015 </td> 15016 <td class="entry_type"> 15017 <span class="entry_type_name">int64</span> 15018 <span class="entry_type_container">x</span> 15019 15020 <span class="entry_type_array"> 15021 n 15022 </span> 15023 <span class="entry_type_visibility"> [hidden]</span> 15024 15025 15026 15027 <span class="entry_type_deprecated">[deprecated] </span> 15028 15029 15030 15031 </td> <!-- entry_type --> 15032 15033 <td class="entry_description"> 15034 <p>For each available processed output size (defined in 15035 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 15036 minimum supportable frame duration for that size.<wbr/></p> 15037 </td> 15038 15039 <td class="entry_units"> 15040 Nanoseconds 15041 </td> 15042 15043 <td class="entry_range"> 15044 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15045 </td> 15046 15047 <td class="entry_tags"> 15048 <ul class="entry_tags"> 15049 <li><a href="#tag_BC">BC</a></li> 15050 </ul> 15051 </td> 15052 15053 </tr> 15054 <tr class="entries_header"> 15055 <th class="th_details" colspan="5">Details</th> 15056 </tr> 15057 <tr class="entry_cont"> 15058 <td class="entry_details" colspan="5"> 15059 <p>This should correspond to the frame duration when only that processed 15060 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 15061 set to FAST.<wbr/></p> 15062 <p>When multiple streams are configured,<wbr/> the minimum frame duration will 15063 be >= max(individual stream min durations).<wbr/></p> 15064 </td> 15065 </tr> 15066 15067 15068 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15069 <!-- end of entry --> 15070 15071 15072 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 15073 <td class="entry_name 15074 entry_name_deprecated 15075 " rowspan="5"> 15076 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 15077 </td> 15078 <td class="entry_type"> 15079 <span class="entry_type_name">int32</span> 15080 <span class="entry_type_container">x</span> 15081 15082 <span class="entry_type_array"> 15083 n x 2 15084 </span> 15085 <span class="entry_type_visibility"> [hidden as size]</span> 15086 15087 15088 15089 <span class="entry_type_deprecated">[deprecated] </span> 15090 15091 15092 15093 </td> <!-- entry_type --> 15094 15095 <td class="entry_description"> 15096 <p>The resolutions available for use with 15097 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 15098 platform opaque YUV/<wbr/>RGB streams to the GPU or video 15099 encoders.<wbr/></p> 15100 </td> 15101 15102 <td class="entry_units"> 15103 </td> 15104 15105 <td class="entry_range"> 15106 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15107 </td> 15108 15109 <td class="entry_tags"> 15110 <ul class="entry_tags"> 15111 <li><a href="#tag_BC">BC</a></li> 15112 </ul> 15113 </td> 15114 15115 </tr> 15116 <tr class="entries_header"> 15117 <th class="th_details" colspan="5">Details</th> 15118 </tr> 15119 <tr class="entry_cont"> 15120 <td class="entry_details" colspan="5"> 15121 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 15122 <p>For a given use case,<wbr/> the actual maximum supported resolution 15123 may be lower than what is listed here,<wbr/> depending on the destination 15124 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 15125 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 15126 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 15127 can provide.<wbr/></p> 15128 <p>Please reference the documentation for the image data destination to 15129 check if it limits the maximum size for image data.<wbr/></p> 15130 </td> 15131 </tr> 15132 15133 <tr class="entries_header"> 15134 <th class="th_details" colspan="5">HAL Implementation Details</th> 15135 </tr> 15136 <tr class="entry_cont"> 15137 <td class="entry_details" colspan="5"> 15138 <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/> 15139 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> 15140 and each below resolution if it is smaller than or equal to the sensor 15141 maximum resolution (if they are not listed in JPEG sizes already):</p> 15142 <ul> 15143 <li>240p (320 x 240)</li> 15144 <li>480p (640 x 480)</li> 15145 <li>720p (1280 x 720)</li> 15146 <li>1080p (1920 x 1080)</li> 15147 </ul> 15148 <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/> 15149 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 15150 </td> 15151 </tr> 15152 15153 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15154 <!-- end of entry --> 15155 15156 15157 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 15158 <td class="entry_name 15159 entry_name_deprecated 15160 " rowspan="3"> 15161 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 15162 </td> 15163 <td class="entry_type"> 15164 <span class="entry_type_name">int64</span> 15165 <span class="entry_type_container">x</span> 15166 15167 <span class="entry_type_array"> 15168 n 15169 </span> 15170 <span class="entry_type_visibility"> [system]</span> 15171 15172 15173 15174 <span class="entry_type_deprecated">[deprecated] </span> 15175 15176 15177 15178 </td> <!-- entry_type --> 15179 15180 <td class="entry_description"> 15181 <p>For each available raw output size (defined in 15182 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 15183 supportable frame duration for that size.<wbr/></p> 15184 </td> 15185 15186 <td class="entry_units"> 15187 Nanoseconds 15188 </td> 15189 15190 <td class="entry_range"> 15191 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15192 </td> 15193 15194 <td class="entry_tags"> 15195 <ul class="entry_tags"> 15196 <li><a href="#tag_BC">BC</a></li> 15197 </ul> 15198 </td> 15199 15200 </tr> 15201 <tr class="entries_header"> 15202 <th class="th_details" colspan="5">Details</th> 15203 </tr> 15204 <tr class="entry_cont"> 15205 <td class="entry_details" colspan="5"> 15206 <p>Should correspond to the frame duration when only the raw stream is 15207 active.<wbr/></p> 15208 <p>When multiple streams are configured,<wbr/> the minimum 15209 frame duration will be >= max(individual stream min 15210 durations)</p> 15211 </td> 15212 </tr> 15213 15214 15215 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15216 <!-- end of entry --> 15217 15218 15219 <tr class="entry" id="static_android.scaler.availableRawSizes"> 15220 <td class="entry_name 15221 entry_name_deprecated 15222 " rowspan="1"> 15223 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 15224 </td> 15225 <td class="entry_type"> 15226 <span class="entry_type_name">int32</span> 15227 <span class="entry_type_container">x</span> 15228 15229 <span class="entry_type_array"> 15230 n x 2 15231 </span> 15232 <span class="entry_type_visibility"> [system as size]</span> 15233 15234 15235 15236 <span class="entry_type_deprecated">[deprecated] </span> 15237 15238 15239 15240 </td> <!-- entry_type --> 15241 15242 <td class="entry_description"> 15243 <p>The resolutions available for use with raw 15244 sensor output streams,<wbr/> listed as width,<wbr/> 15245 height</p> 15246 </td> 15247 15248 <td class="entry_units"> 15249 </td> 15250 15251 <td class="entry_range"> 15252 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15253 </td> 15254 15255 <td class="entry_tags"> 15256 </td> 15257 15258 </tr> 15259 15260 15261 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15262 <!-- end of entry --> 15263 15264 15265 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> 15266 <td class="entry_name 15267 " rowspan="5"> 15268 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 15269 </td> 15270 <td class="entry_type"> 15271 <span class="entry_type_name">int32</span> 15272 <span class="entry_type_container">x</span> 15273 15274 <span class="entry_type_array"> 15275 n 15276 </span> 15277 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 15278 15279 15280 <span class="entry_type_hwlevel">[full] </span> 15281 15282 15283 15284 15285 </td> <!-- entry_type --> 15286 15287 <td class="entry_description"> 15288 <p>The mapping of image formats that are supported by this 15289 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 15290 </td> 15291 15292 <td class="entry_units"> 15293 </td> 15294 15295 <td class="entry_range"> 15296 </td> 15297 15298 <td class="entry_tags"> 15299 </td> 15300 15301 </tr> 15302 <tr class="entries_header"> 15303 <th class="th_details" colspan="5">Details</th> 15304 </tr> 15305 <tr class="entry_cont"> 15306 <td class="entry_details" colspan="5"> 15307 <p>All camera devices with at least 1 15308 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one 15309 available input format.<wbr/></p> 15310 <p>The camera device will support the following map of formats,<wbr/> 15311 if its dependent capability is supported:</p> 15312 <table> 15313 <thead> 15314 <tr> 15315 <th align="left">Input Format</th> 15316 <th align="left">Output Format</th> 15317 <th align="left">Capability</th> 15318 </tr> 15319 </thead> 15320 <tbody> 15321 <tr> 15322 <td align="left">RAW_<wbr/>OPAQUE</td> 15323 <td align="left">JPEG</td> 15324 <td align="left">ZSL</td> 15325 </tr> 15326 <tr> 15327 <td align="left">RAW_<wbr/>OPAQUE</td> 15328 <td align="left">YUV_<wbr/>420_<wbr/>888</td> 15329 <td align="left">ZSL</td> 15330 </tr> 15331 <tr> 15332 <td align="left">RAW_<wbr/>OPAQUE</td> 15333 <td align="left">RAW16</td> 15334 <td align="left">RAW</td> 15335 </tr> 15336 <tr> 15337 <td align="left">RAW16</td> 15338 <td align="left">YUV_<wbr/>420_<wbr/>888</td> 15339 <td align="left">RAW</td> 15340 </tr> 15341 <tr> 15342 <td align="left">RAW16</td> 15343 <td align="left">JPEG</td> 15344 <td align="left">RAW</td> 15345 </tr> 15346 </tbody> 15347 </table> 15348 <p>For ZSL-capable camera devices,<wbr/> using the RAW_<wbr/>OPAQUE format 15349 as either input or output will never hurt maximum frame rate (i.<wbr/>e.<wbr/> 15350 Stream<wbr/>Configuration<wbr/>Map#get<wbr/>Output<wbr/>Stall<wbr/>Duration(int,<wbr/>Size) 15351 for a <code>format =</code> RAW_<wbr/>OPAQUE is always 0).<wbr/></p> 15352 <p>Attempting to configure an input stream with output streams not 15353 listed as available in this map is not valid.<wbr/></p> 15354 <p>TODO: typedef to ReprocessFormatMap</p> 15355 </td> 15356 </tr> 15357 15358 <tr class="entries_header"> 15359 <th class="th_details" colspan="5">HAL Implementation Details</th> 15360 </tr> 15361 <tr class="entry_cont"> 15362 <td class="entry_details" colspan="5"> 15363 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition 15364 of the image format enumerations.<wbr/></p> 15365 <p>This value is encoded as a variable-size array-of-arrays.<wbr/> 15366 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where 15367 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another 15368 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> 15369 <p>A code sample to read/<wbr/>write this encoding (with a device that 15370 supports reprocessing RAW_<wbr/>OPAQUE to RAW16,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 15371 and reprocessing RAW16 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 15372 <pre><code>//<wbr/> reading 15373 int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 15374 for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { 15375 int32_<wbr/>t format = contents[i++]; 15376 int32_<wbr/>t length = contents[i++]; 15377 int32_<wbr/>t output_<wbr/>formats[length]; 15378 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> 15379 length * sizeof(int32_<wbr/>t)); 15380 i += length; 15381 } 15382 15383 //<wbr/> writing (static example,<wbr/> RAW+ZSL) 15384 int32_<wbr/>t[] contents = { 15385 RAW_<wbr/>OPAQUE,<wbr/> 3,<wbr/> RAW16,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 15386 RAW16,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 15387 }; 15388 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> 15389 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); 15390 </code></pre> 15391 <p>If the HAL claims to support any of the capabilities listed in the 15392 above details,<wbr/> then it must also support all the input-output 15393 combinations listed for that capability.<wbr/> It can optionally support 15394 additional formats if it so chooses.<wbr/></p> 15395 <p>Refer to <a href="#static_android.scaler.availableFormats">android.<wbr/>scaler.<wbr/>available<wbr/>Formats</a> for the enum values 15396 which correspond to HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 15397 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 15398 </td> 15399 </tr> 15400 15401 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15402 <!-- end of entry --> 15403 15404 15405 <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> 15406 <td class="entry_name 15407 " rowspan="5"> 15408 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations 15409 </td> 15410 <td class="entry_type"> 15411 <span class="entry_type_name entry_type_name_enum">int32</span> 15412 <span class="entry_type_container">x</span> 15413 15414 <span class="entry_type_array"> 15415 n x 4 15416 </span> 15417 <span class="entry_type_visibility"> [hidden as streamConfiguration]</span> 15418 15419 15420 <span class="entry_type_hwlevel">[legacy] </span> 15421 15422 15423 15424 <ul class="entry_type_enum"> 15425 <li> 15426 <span class="entry_type_enum_name">OUTPUT</span> 15427 </li> 15428 <li> 15429 <span class="entry_type_enum_name">INPUT</span> 15430 </li> 15431 </ul> 15432 15433 </td> <!-- entry_type --> 15434 15435 <td class="entry_description"> 15436 <p>The available stream configurations that this 15437 camera device supports 15438 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 15439 </td> 15440 15441 <td class="entry_units"> 15442 </td> 15443 15444 <td class="entry_range"> 15445 </td> 15446 15447 <td class="entry_tags"> 15448 </td> 15449 15450 </tr> 15451 <tr class="entries_header"> 15452 <th class="th_details" colspan="5">Details</th> 15453 </tr> 15454 <tr class="entry_cont"> 15455 <td class="entry_details" colspan="5"> 15456 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> 15457 tuples.<wbr/></p> 15458 <p>For a given use case,<wbr/> the actual maximum supported resolution 15459 may be lower than what is listed here,<wbr/> depending on the destination 15460 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 15461 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 15462 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 15463 can provide.<wbr/></p> 15464 <p>Please reference the documentation for the image data destination to 15465 check if it limits the maximum size for image data.<wbr/></p> 15466 <p>Not all output formats may be supported in a configuration with 15467 an input stream of a particular format.<wbr/> For more details,<wbr/> see 15468 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 15469 <p>The following table describes the minimum required output stream 15470 configurations based on the hardware level 15471 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 15472 <table> 15473 <thead> 15474 <tr> 15475 <th align="center">Format</th> 15476 <th align="center">Size</th> 15477 <th align="center">Hardware Level</th> 15478 <th align="center">Notes</th> 15479 </tr> 15480 </thead> 15481 <tbody> 15482 <tr> 15483 <td align="center">JPEG</td> 15484 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 15485 <td align="center">Any</td> 15486 <td align="center"></td> 15487 </tr> 15488 <tr> 15489 <td align="center">JPEG</td> 15490 <td align="center">1920x1080 (1080p)</td> 15491 <td align="center">Any</td> 15492 <td align="center">if 1080p <= activeArraySize</td> 15493 </tr> 15494 <tr> 15495 <td align="center">JPEG</td> 15496 <td align="center">1280x720 (720)</td> 15497 <td align="center">Any</td> 15498 <td align="center">if 720p <= activeArraySize</td> 15499 </tr> 15500 <tr> 15501 <td align="center">JPEG</td> 15502 <td align="center">640x480 (480p)</td> 15503 <td align="center">Any</td> 15504 <td align="center">if 480p <= activeArraySize</td> 15505 </tr> 15506 <tr> 15507 <td align="center">JPEG</td> 15508 <td align="center">320x240 (240p)</td> 15509 <td align="center">Any</td> 15510 <td align="center">if 240p <= activeArraySize</td> 15511 </tr> 15512 <tr> 15513 <td align="center">YUV_<wbr/>420_<wbr/>888</td> 15514 <td align="center">all output sizes available for JPEG</td> 15515 <td align="center">FULL</td> 15516 <td align="center"></td> 15517 </tr> 15518 <tr> 15519 <td align="center">YUV_<wbr/>420_<wbr/>888</td> 15520 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 15521 <td align="center">LIMITED</td> 15522 <td align="center"></td> 15523 </tr> 15524 <tr> 15525 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 15526 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 15527 <td align="center">Any</td> 15528 <td align="center"></td> 15529 </tr> 15530 </tbody> 15531 </table> 15532 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 15533 mandatory stream configurations on a per-capability basis.<wbr/></p> 15534 </td> 15535 </tr> 15536 15537 <tr class="entries_header"> 15538 <th class="th_details" colspan="5">HAL Implementation Details</th> 15539 </tr> 15540 <tr class="entry_cont"> 15541 <td class="entry_details" colspan="5"> 15542 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 15543 of sensor maximum resolution for JPEG formats (regardless of hardware 15544 level).<wbr/></p> 15545 <p>(The following is a rewording of the above required table):</p> 15546 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 15547 <ul> 15548 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 15549 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 15550 (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/> 15551 it does not have to be included in the supported JPEG sizes.<wbr/></li> 15552 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 15553 the dimensions being a multiple of 16.<wbr/></li> 15554 </ul> 15555 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 15556 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum 15557 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 15558 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 15559 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 15560 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 15561 3264x2448.<wbr/></p> 15562 <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/> 15563 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 15564 here as output streams.<wbr/></p> 15565 <p>It must also include each below resolution if it is smaller than or 15566 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 15567 formats),<wbr/> as output streams:</p> 15568 <ul> 15569 <li>240p (320 x 240)</li> 15570 <li>480p (640 x 480)</li> 15571 <li>720p (1280 x 720)</li> 15572 <li>1080p (1920 x 1080)</li> 15573 </ul> 15574 <p>For LIMITED capability devices 15575 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 15576 the HAL only has to list up to the maximum video size 15577 supported by the device.<wbr/></p> 15578 <p>Regardless of hardware level,<wbr/> every output resolution available for 15579 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 15580 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 15581 <ul> 15582 <li>availableFormats</li> 15583 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 15584 </ul> 15585 </td> 15586 </tr> 15587 15588 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15589 <!-- end of entry --> 15590 15591 15592 <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> 15593 <td class="entry_name 15594 " rowspan="3"> 15595 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations 15596 </td> 15597 <td class="entry_type"> 15598 <span class="entry_type_name">int64</span> 15599 <span class="entry_type_container">x</span> 15600 15601 <span class="entry_type_array"> 15602 4 x n 15603 </span> 15604 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 15605 15606 15607 <span class="entry_type_hwlevel">[legacy] </span> 15608 15609 15610 15611 15612 </td> <!-- entry_type --> 15613 15614 <td class="entry_description"> 15615 <p>This lists the minimum frame duration for each 15616 format/<wbr/>size combination.<wbr/></p> 15617 </td> 15618 15619 <td class="entry_units"> 15620 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 15621 </td> 15622 15623 <td class="entry_range"> 15624 </td> 15625 15626 <td class="entry_tags"> 15627 <ul class="entry_tags"> 15628 <li><a href="#tag_V1">V1</a></li> 15629 </ul> 15630 </td> 15631 15632 </tr> 15633 <tr class="entries_header"> 15634 <th class="th_details" colspan="5">Details</th> 15635 </tr> 15636 <tr class="entry_cont"> 15637 <td class="entry_details" colspan="5"> 15638 <p>This should correspond to the frame duration when only that 15639 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 15640 set to either OFF or FAST.<wbr/></p> 15641 <p>When multiple streams are used in a request,<wbr/> the minimum frame 15642 duration will be max(individual stream min durations).<wbr/></p> 15643 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 15644 is the same regardless of whether the stream is input or output.<wbr/></p> 15645 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 15646 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 15647 calculating the max frame rate.<wbr/></p> 15648 <p>(Keep in sync with 15649 StreamConfigurationMap#getOutputMinFrameDuration)</p> 15650 </td> 15651 </tr> 15652 15653 15654 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15655 <!-- end of entry --> 15656 15657 15658 <tr class="entry" id="static_android.scaler.availableStallDurations"> 15659 <td class="entry_name 15660 " rowspan="5"> 15661 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations 15662 </td> 15663 <td class="entry_type"> 15664 <span class="entry_type_name">int64</span> 15665 <span class="entry_type_container">x</span> 15666 15667 <span class="entry_type_array"> 15668 4 x n 15669 </span> 15670 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 15671 15672 15673 <span class="entry_type_hwlevel">[legacy] </span> 15674 15675 15676 15677 15678 </td> <!-- entry_type --> 15679 15680 <td class="entry_description"> 15681 <p>This lists the maximum stall duration for each 15682 format/<wbr/>size combination.<wbr/></p> 15683 </td> 15684 15685 <td class="entry_units"> 15686 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 15687 </td> 15688 15689 <td class="entry_range"> 15690 </td> 15691 15692 <td class="entry_tags"> 15693 <ul class="entry_tags"> 15694 <li><a href="#tag_V1">V1</a></li> 15695 </ul> 15696 </td> 15697 15698 </tr> 15699 <tr class="entries_header"> 15700 <th class="th_details" colspan="5">Details</th> 15701 </tr> 15702 <tr class="entry_cont"> 15703 <td class="entry_details" colspan="5"> 15704 <p>A stall duration is how much extra time would get added 15705 to the normal minimum frame duration for a repeating request 15706 that has streams with non-zero stall.<wbr/></p> 15707 <p>For example,<wbr/> consider JPEG captures which have the following 15708 characteristics:</p> 15709 <ul> 15710 <li>JPEG streams act like processed YUV streams in requests for which 15711 they are not included; in requests in which they are directly 15712 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 15713 JPEG stream requires the underlying YUV data to always be ready for 15714 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 15715 frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 15716 <li>The JPEG processor can run concurrently to the rest of the camera 15717 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 15718 </ul> 15719 <p>In other words,<wbr/> using a repeating YUV request would result 15720 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 15721 JPEG request is submitted periodically,<wbr/> the frame rate will stay 15722 at 30 FPS (as long as we wait for the previous JPEG to return each 15723 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 15724 the frame rate will drop from 30 FPS.<wbr/></p> 15725 <p>In general,<wbr/> submitting a new request with a non-0 stall time 15726 stream will <em>not</em> cause a frame rate drop unless there are still 15727 outstanding buffers for that stream from previous requests.<wbr/></p> 15728 <p>Submitting a repeating request with streams (call this <code>S</code>) 15729 is the same as setting the minimum frame duration from 15730 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 15731 the maximum stall duration for <code>S</code>.<wbr/></p> 15732 <p>If interleaving requests with and without a stall duration,<wbr/> 15733 a request will stall by the maximum of the remaining times 15734 for each can-stall stream with outstanding buffers.<wbr/></p> 15735 <p>This means that a stalling request will not have an exposure start 15736 until the stall has completed.<wbr/></p> 15737 <p>This should correspond to the stall duration when only that stream is 15738 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 15739 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 15740 effectively results in an indeterminate stall duration for all 15741 streams in a request (the regular stall calculation rules are 15742 ignored).<wbr/></p> 15743 <p>The following formats may always have a stall duration:</p> 15744 <ul> 15745 <li>ImageFormat#JPEG</li> 15746 <li>ImageFormat#RAW_<wbr/>SENSOR</li> 15747 </ul> 15748 <p>The following formats will never have a stall duration:</p> 15749 <ul> 15750 <li>Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</li> 15751 </ul> 15752 <p>All other formats may or may not have an allowed stall duration on 15753 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 15754 for more details.<wbr/></p> 15755 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about 15756 calculating the max frame rate (absent stalls).<wbr/></p> 15757 <p>(Keep up to date with 15758 StreamConfigurationMap#getOutputStallDuration(int,<wbr/> Size) )</p> 15759 </td> 15760 </tr> 15761 15762 <tr class="entries_header"> 15763 <th class="th_details" colspan="5">HAL Implementation Details</th> 15764 </tr> 15765 <tr class="entry_cont"> 15766 <td class="entry_details" colspan="5"> 15767 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 15768 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW_<wbr/>OPAQUE and 15769 IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> 15770 </td> 15771 </tr> 15772 15773 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15774 <!-- end of entry --> 15775 15776 15777 <tr class="entry" id="static_android.scaler.streamConfigurationMap"> 15778 <td class="entry_name 15779 " rowspan="5"> 15780 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map 15781 </td> 15782 <td class="entry_type"> 15783 <span class="entry_type_name">int32</span> 15784 15785 <span class="entry_type_visibility"> [public as streamConfigurationMap]</span> 15786 15787 <span class="entry_type_synthetic">[synthetic] </span> 15788 15789 <span class="entry_type_hwlevel">[legacy] </span> 15790 15791 15792 15793 15794 </td> <!-- entry_type --> 15795 15796 <td class="entry_description"> 15797 <p>The available stream configurations that this 15798 camera device supports; also includes the minimum frame durations 15799 and the stall durations for each format/<wbr/>size combination.<wbr/></p> 15800 </td> 15801 15802 <td class="entry_units"> 15803 </td> 15804 15805 <td class="entry_range"> 15806 </td> 15807 15808 <td class="entry_tags"> 15809 </td> 15810 15811 </tr> 15812 <tr class="entries_header"> 15813 <th class="th_details" colspan="5">Details</th> 15814 </tr> 15815 <tr class="entry_cont"> 15816 <td class="entry_details" colspan="5"> 15817 <p>All camera devices will support sensor maximum resolution (defined by 15818 <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> 15819 <p>For a given use case,<wbr/> the actual maximum supported resolution 15820 may be lower than what is listed here,<wbr/> depending on the destination 15821 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 15822 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 15823 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 15824 can provide.<wbr/></p> 15825 <p>Please reference the documentation for the image data destination to 15826 check if it limits the maximum size for image data.<wbr/></p> 15827 <p>The following table describes the minimum required output stream 15828 configurations based on the hardware level 15829 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 15830 <table> 15831 <thead> 15832 <tr> 15833 <th align="center">Format</th> 15834 <th align="center">Size</th> 15835 <th align="center">Hardware Level</th> 15836 <th align="center">Notes</th> 15837 </tr> 15838 </thead> 15839 <tbody> 15840 <tr> 15841 <td align="center">JPEG</td> 15842 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 15843 <td align="center">Any</td> 15844 <td align="center"></td> 15845 </tr> 15846 <tr> 15847 <td align="center">JPEG</td> 15848 <td align="center">1920x1080 (1080p)</td> 15849 <td align="center">Any</td> 15850 <td align="center">if 1080p <= activeArraySize</td> 15851 </tr> 15852 <tr> 15853 <td align="center">JPEG</td> 15854 <td align="center">1280x720 (720)</td> 15855 <td align="center">Any</td> 15856 <td align="center">if 720p <= activeArraySize</td> 15857 </tr> 15858 <tr> 15859 <td align="center">JPEG</td> 15860 <td align="center">640x480 (480p)</td> 15861 <td align="center">Any</td> 15862 <td align="center">if 480p <= activeArraySize</td> 15863 </tr> 15864 <tr> 15865 <td align="center">JPEG</td> 15866 <td align="center">320x240 (240p)</td> 15867 <td align="center">Any</td> 15868 <td align="center">if 240p <= activeArraySize</td> 15869 </tr> 15870 <tr> 15871 <td align="center">YUV_<wbr/>420_<wbr/>888</td> 15872 <td align="center">all output sizes available for JPEG</td> 15873 <td align="center">FULL</td> 15874 <td align="center"></td> 15875 </tr> 15876 <tr> 15877 <td align="center">YUV_<wbr/>420_<wbr/>888</td> 15878 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 15879 <td align="center">LIMITED</td> 15880 <td align="center"></td> 15881 </tr> 15882 <tr> 15883 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 15884 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 15885 <td align="center">Any</td> 15886 <td align="center"></td> 15887 </tr> 15888 </tbody> 15889 </table> 15890 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 15891 mandatory stream configurations on a per-capability basis.<wbr/></p> 15892 </td> 15893 </tr> 15894 15895 <tr class="entries_header"> 15896 <th class="th_details" colspan="5">HAL Implementation Details</th> 15897 </tr> 15898 <tr class="entry_cont"> 15899 <td class="entry_details" colspan="5"> 15900 <p>Do not set this property directly 15901 (it is synthetic and will not be available at the HAL layer); 15902 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p> 15903 <p>Not all output formats may be supported in a configuration with 15904 an input stream of a particular format.<wbr/> For more details,<wbr/> see 15905 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 15906 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 15907 of sensor maximum resolution for JPEG formats (regardless of hardware 15908 level).<wbr/></p> 15909 <p>(The following is a rewording of the above required table):</p> 15910 <p>The HAL must include sensor maximum resolution (defined by 15911 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 15912 <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/> 15913 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 15914 here as output streams.<wbr/></p> 15915 <p>It must also include each below resolution if it is smaller than or 15916 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 15917 formats),<wbr/> as output streams:</p> 15918 <ul> 15919 <li>240p (320 x 240)</li> 15920 <li>480p (640 x 480)</li> 15921 <li>720p (1280 x 720)</li> 15922 <li>1080p (1920 x 1080)</li> 15923 </ul> 15924 <p>For LIMITED capability devices 15925 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 15926 the HAL only has to list up to the maximum video size 15927 supported by the device.<wbr/></p> 15928 <p>Regardless of hardware level,<wbr/> every output resolution available for 15929 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 15930 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 15931 <ul> 15932 <li>availableFormats</li> 15933 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 15934 </ul> 15935 </td> 15936 </tr> 15937 15938 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15939 <!-- end of entry --> 15940 15941 15942 <tr class="entry" id="static_android.scaler.croppingType"> 15943 <td class="entry_name 15944 " rowspan="3"> 15945 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type 15946 </td> 15947 <td class="entry_type"> 15948 <span class="entry_type_name entry_type_name_enum">byte</span> 15949 15950 <span class="entry_type_visibility"> [public]</span> 15951 15952 15953 <span class="entry_type_hwlevel">[legacy] </span> 15954 15955 15956 15957 <ul class="entry_type_enum"> 15958 <li> 15959 <span class="entry_type_enum_name">CENTER_ONLY</span> 15960 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span> 15961 </li> 15962 <li> 15963 <span class="entry_type_enum_name">FREEFORM</span> 15964 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span> 15965 </li> 15966 </ul> 15967 15968 </td> <!-- entry_type --> 15969 15970 <td class="entry_description"> 15971 <p>The crop type that this camera device supports.<wbr/></p> 15972 </td> 15973 15974 <td class="entry_units"> 15975 </td> 15976 15977 <td class="entry_range"> 15978 </td> 15979 15980 <td class="entry_tags"> 15981 </td> 15982 15983 </tr> 15984 <tr class="entries_header"> 15985 <th class="th_details" colspan="5">Details</th> 15986 </tr> 15987 <tr class="entry_cont"> 15988 <td class="entry_details" colspan="5"> 15989 <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 15990 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the 15991 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>) 15992 and keep the crop region width and height unchanged.<wbr/> The camera device will return the 15993 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 15994 <p>Camera devices that support FREEFORM cropping will support any crop region that 15995 is inside of the active array.<wbr/> The camera device will apply the same crop region and 15996 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> 15997 <p>FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL) will support 15998 FREEFORM cropping.<wbr/> LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p> 15999 </td> 16000 </tr> 16001 16002 16003 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16004 <!-- end of entry --> 16005 16006 16007 16008 <!-- end of kind --> 16009 </tbody> 16010 <tr><td colspan="6" class="kind">dynamic</td></tr> 16011 16012 <thead class="entries_header"> 16013 <tr> 16014 <th class="th_name">Property Name</th> 16015 <th class="th_type">Type</th> 16016 <th class="th_description">Description</th> 16017 <th class="th_units">Units</th> 16018 <th class="th_range">Range</th> 16019 <th class="th_tags">Tags</th> 16020 </tr> 16021 </thead> 16022 16023 <tbody> 16024 16025 16026 16027 16028 16029 16030 16031 16032 16033 16034 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 16035 <td class="entry_name 16036 " rowspan="5"> 16037 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 16038 </td> 16039 <td class="entry_type"> 16040 <span class="entry_type_name">int32</span> 16041 <span class="entry_type_container">x</span> 16042 16043 <span class="entry_type_array"> 16044 4 16045 </span> 16046 <span class="entry_type_visibility"> [public as rectangle]</span> 16047 16048 16049 <span class="entry_type_hwlevel">[legacy] </span> 16050 16051 16052 16053 16054 </td> <!-- entry_type --> 16055 16056 <td class="entry_description"> 16057 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 16058 </td> 16059 16060 <td class="entry_units"> 16061 Pixel coordinates relative to 16062 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 16063 </td> 16064 16065 <td class="entry_range"> 16066 </td> 16067 16068 <td class="entry_tags"> 16069 <ul class="entry_tags"> 16070 <li><a href="#tag_BC">BC</a></li> 16071 </ul> 16072 </td> 16073 16074 </tr> 16075 <tr class="entries_header"> 16076 <th class="th_details" colspan="5">Details</th> 16077 </tr> 16078 <tr class="entry_cont"> 16079 <td class="entry_details" colspan="5"> 16080 <p>This control can be used to implement digital zoom.<wbr/></p> 16081 <p>The crop region coordinate system is based off 16082 <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 16083 top-left corner of the sensor active array.<wbr/></p> 16084 <p>Output streams use this rectangle to produce their output,<wbr/> 16085 cropping to a smaller region if necessary to maintain the 16086 stream's aspect ratio,<wbr/> then scaling the sensor input to 16087 match the output's configured resolution.<wbr/></p> 16088 <p>The crop region is applied after the RAW to other color 16089 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 16090 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 16091 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 16092 <p>For non-raw streams,<wbr/> any additional per-stream cropping will 16093 be done to maximize the final pixel area of the stream.<wbr/></p> 16094 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect 16095 ratio,<wbr/> then 4:3 streams will use the exact crop 16096 region.<wbr/> 16:9 streams will further crop vertically 16097 (letterbox).<wbr/></p> 16098 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 16099 outputs will crop horizontally (pillarbox),<wbr/> and 16:9 16100 streams will match exactly.<wbr/> These additional crops will 16101 be centered within the crop region.<wbr/></p> 16102 <p>The width and height of the crop region cannot 16103 be set to be smaller than 16104 <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 16105 <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> 16106 <p>The camera device may adjust the crop region to account 16107 for rounding and other hardware requirements; the final 16108 crop region used will be included in the output capture 16109 result.<wbr/></p> 16110 </td> 16111 </tr> 16112 16113 <tr class="entries_header"> 16114 <th class="th_details" colspan="5">HAL Implementation Details</th> 16115 </tr> 16116 <tr class="entry_cont"> 16117 <td class="entry_details" colspan="5"> 16118 <p>The output streams must maintain square pixels at all 16119 times,<wbr/> no matter what the relative aspect ratios of the 16120 crop region and the stream are.<wbr/> Negative values for 16121 corner are allowed for raw output if full pixel array is 16122 larger than active pixel array.<wbr/> Width and height may be 16123 rounded to nearest larger supportable width,<wbr/> especially 16124 for raw output,<wbr/> where only a few fixed scales may be 16125 possible.<wbr/></p> 16126 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 16127 </td> 16128 </tr> 16129 16130 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16131 <!-- end of entry --> 16132 16133 16134 16135 <!-- end of kind --> 16136 </tbody> 16137 16138 <!-- end of section --> 16139 <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr> 16140 16141 16142 <tr><td colspan="6" class="kind">controls</td></tr> 16143 16144 <thead class="entries_header"> 16145 <tr> 16146 <th class="th_name">Property Name</th> 16147 <th class="th_type">Type</th> 16148 <th class="th_description">Description</th> 16149 <th class="th_units">Units</th> 16150 <th class="th_range">Range</th> 16151 <th class="th_tags">Tags</th> 16152 </tr> 16153 </thead> 16154 16155 <tbody> 16156 16157 16158 16159 16160 16161 16162 16163 16164 16165 16166 <tr class="entry" id="controls_android.sensor.exposureTime"> 16167 <td class="entry_name 16168 " rowspan="3"> 16169 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 16170 </td> 16171 <td class="entry_type"> 16172 <span class="entry_type_name">int64</span> 16173 16174 <span class="entry_type_visibility"> [public]</span> 16175 16176 16177 <span class="entry_type_hwlevel">[full] </span> 16178 16179 16180 16181 16182 </td> <!-- entry_type --> 16183 16184 <td class="entry_description"> 16185 <p>Duration each pixel is exposed to 16186 light.<wbr/></p> 16187 </td> 16188 16189 <td class="entry_units"> 16190 Nanoseconds 16191 </td> 16192 16193 <td class="entry_range"> 16194 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 16195 </td> 16196 16197 <td class="entry_tags"> 16198 <ul class="entry_tags"> 16199 <li><a href="#tag_V1">V1</a></li> 16200 </ul> 16201 </td> 16202 16203 </tr> 16204 <tr class="entries_header"> 16205 <th class="th_details" colspan="5">Details</th> 16206 </tr> 16207 <tr class="entry_cont"> 16208 <td class="entry_details" colspan="5"> 16209 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 16210 duration exposed to the nearest possible value (rather than expose longer).<wbr/> 16211 The final exposure time used will be available in the output capture result.<wbr/></p> 16212 <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 16213 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 16214 </td> 16215 </tr> 16216 16217 16218 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16219 <!-- end of entry --> 16220 16221 16222 <tr class="entry" id="controls_android.sensor.frameDuration"> 16223 <td class="entry_name 16224 " rowspan="5"> 16225 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 16226 </td> 16227 <td class="entry_type"> 16228 <span class="entry_type_name">int64</span> 16229 16230 <span class="entry_type_visibility"> [public]</span> 16231 16232 16233 <span class="entry_type_hwlevel">[full] </span> 16234 16235 16236 16237 16238 </td> <!-- entry_type --> 16239 16240 <td class="entry_description"> 16241 <p>Duration from start of frame exposure to 16242 start of next frame exposure.<wbr/></p> 16243 </td> 16244 16245 <td class="entry_units"> 16246 Nanoseconds 16247 </td> 16248 16249 <td class="entry_range"> 16250 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 16251 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 16252 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 16253 </td> 16254 16255 <td class="entry_tags"> 16256 <ul class="entry_tags"> 16257 <li><a href="#tag_V1">V1</a></li> 16258 </ul> 16259 </td> 16260 16261 </tr> 16262 <tr class="entries_header"> 16263 <th class="th_details" colspan="5">Details</th> 16264 </tr> 16265 <tr class="entry_cont"> 16266 <td class="entry_details" colspan="5"> 16267 <p>The maximum frame rate that can be supported by a camera subsystem is 16268 a function of many factors:</p> 16269 <ul> 16270 <li>Requested resolutions of output image streams</li> 16271 <li>Availability of binning /<wbr/> skipping modes on the imager</li> 16272 <li>The bandwidth of the imager interface</li> 16273 <li>The bandwidth of the various ISP processing blocks</li> 16274 </ul> 16275 <p>Since these factors can vary greatly between different ISPs and 16276 sensors,<wbr/> the camera abstraction tries to represent the bandwidth 16277 restrictions with as simple a model as possible.<wbr/></p> 16278 <p>The model presented has the following characteristics:</p> 16279 <ul> 16280 <li>The image sensor is always configured to output the smallest 16281 resolution possible given the application's requested output stream 16282 sizes.<wbr/> The smallest resolution is defined as being at least as large 16283 as the largest requested output stream size; the camera pipeline must 16284 never digitally upsample sensor data when the crop region covers the 16285 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 16286 resolutions are configured,<wbr/> the sensor can provide a higher frame 16287 rate.<wbr/></li> 16288 <li>Since any request may use any or all the currently configured 16289 output streams,<wbr/> the sensor and ISP must be configured to support 16290 scaling a single capture to all the streams at the same time.<wbr/> This 16291 means the camera pipeline must be ready to produce the largest 16292 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 16293 frame rate of a given configured stream set is governed only by the 16294 largest requested stream resolution.<wbr/></li> 16295 <li>Using more than one output stream in a request does not affect the 16296 frame duration.<wbr/></li> 16297 <li>Certain format-streams may need to do additional background processing 16298 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 16299 can run concurrently to the rest of the camera pipeline,<wbr/> but 16300 cannot process more than 1 capture at a time.<wbr/></li> 16301 </ul> 16302 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> 16303 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field 16304 using StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/> 16305 These are used to determine the maximum frame rate /<wbr/> minimum frame 16306 duration that is possible for a given stream configuration.<wbr/></p> 16307 <p>Specifically,<wbr/> the application can use the following rules to 16308 determine the minimum frame duration it can request from the camera 16309 device:</p> 16310 <ol> 16311 <li>Let the set of currently configured input/<wbr/>output streams 16312 be called <code>S</code>.<wbr/></li> 16313 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by 16314 looking it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using 16315 StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size) (with 16316 its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called 16317 <code>F</code>.<wbr/></li> 16318 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 16319 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 16320 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 16321 </ol> 16322 <p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in 16323 StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size) using its 16324 respective size/<wbr/>format),<wbr/> then the frame duration in 16325 <code>F</code> determines the steady state frame rate that the application will 16326 get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind 16327 of request be called <code>Rsimple</code>.<wbr/></p> 16328 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 16329 by a single capture of a new request <code>Rstall</code> (which has at least 16330 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 16331 same minimum frame duration this will not cause a frame rate loss 16332 if all buffers from the previous <code>Rstall</code> have already been 16333 delivered.<wbr/></p> 16334 <p>For more details about stalling,<wbr/> see 16335 StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size).<wbr/></p> 16336 <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 16337 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 16338 </td> 16339 </tr> 16340 16341 <tr class="entries_header"> 16342 <th class="th_details" colspan="5">HAL Implementation Details</th> 16343 </tr> 16344 <tr class="entry_cont"> 16345 <td class="entry_details" colspan="5"> 16346 <p>For more details about stalling,<wbr/> see 16347 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 16348 </td> 16349 </tr> 16350 16351 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16352 <!-- end of entry --> 16353 16354 16355 <tr class="entry" id="controls_android.sensor.sensitivity"> 16356 <td class="entry_name 16357 " rowspan="5"> 16358 android.<wbr/>sensor.<wbr/>sensitivity 16359 </td> 16360 <td class="entry_type"> 16361 <span class="entry_type_name">int32</span> 16362 16363 <span class="entry_type_visibility"> [public]</span> 16364 16365 16366 <span class="entry_type_hwlevel">[full] </span> 16367 16368 16369 16370 16371 </td> <!-- entry_type --> 16372 16373 <td class="entry_description"> 16374 <p>The amount of gain applied to sensor data 16375 before processing.<wbr/></p> 16376 </td> 16377 16378 <td class="entry_units"> 16379 ISO arithmetic units 16380 </td> 16381 16382 <td class="entry_range"> 16383 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 16384 </td> 16385 16386 <td class="entry_tags"> 16387 <ul class="entry_tags"> 16388 <li><a href="#tag_V1">V1</a></li> 16389 </ul> 16390 </td> 16391 16392 </tr> 16393 <tr class="entries_header"> 16394 <th class="th_details" colspan="5">Details</th> 16395 </tr> 16396 <tr class="entry_cont"> 16397 <td class="entry_details" colspan="5"> 16398 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 16399 as defined in ISO 12232:2006.<wbr/></p> 16400 <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 16401 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 16402 is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 16403 <p>If the camera device cannot apply the exact sensitivity 16404 requested,<wbr/> it will reduce the gain to the nearest supported 16405 value.<wbr/> The final sensitivity used will be available in the 16406 output capture result.<wbr/></p> 16407 </td> 16408 </tr> 16409 16410 <tr class="entries_header"> 16411 <th class="th_details" colspan="5">HAL Implementation Details</th> 16412 </tr> 16413 <tr class="entry_cont"> 16414 <td class="entry_details" colspan="5"> 16415 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 16416 </td> 16417 </tr> 16418 16419 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16420 <!-- end of entry --> 16421 16422 16423 <tr class="entry" id="controls_android.sensor.testPatternData"> 16424 <td class="entry_name 16425 " rowspan="5"> 16426 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 16427 </td> 16428 <td class="entry_type"> 16429 <span class="entry_type_name">int32</span> 16430 <span class="entry_type_container">x</span> 16431 16432 <span class="entry_type_array"> 16433 4 16434 </span> 16435 <span class="entry_type_visibility"> [public]</span> 16436 16437 16438 16439 16440 16441 16442 </td> <!-- entry_type --> 16443 16444 <td class="entry_description"> 16445 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 16446 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 16447 </td> 16448 16449 <td class="entry_units"> 16450 </td> 16451 16452 <td class="entry_range"> 16453 </td> 16454 16455 <td class="entry_tags"> 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>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 16465 The camera device then uses the most significant X bits 16466 that correspond to how many bits are in its Bayer raw sensor 16467 output.<wbr/></p> 16468 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 16469 10 most significant bits from each color channel.<wbr/></p> 16470 </td> 16471 </tr> 16472 16473 <tr class="entries_header"> 16474 <th class="th_details" colspan="5">HAL Implementation Details</th> 16475 </tr> 16476 <tr class="entry_cont"> 16477 <td class="entry_details" colspan="5"> 16478 16479 </td> 16480 </tr> 16481 16482 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16483 <!-- end of entry --> 16484 16485 16486 <tr class="entry" id="controls_android.sensor.testPatternMode"> 16487 <td class="entry_name 16488 " rowspan="5"> 16489 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 16490 </td> 16491 <td class="entry_type"> 16492 <span class="entry_type_name entry_type_name_enum">int32</span> 16493 16494 <span class="entry_type_visibility"> [public]</span> 16495 16496 16497 16498 16499 16500 <ul class="entry_type_enum"> 16501 <li> 16502 <span class="entry_type_enum_name">OFF</span> 16503 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 16504 device returns captures from the image sensor.<wbr/></p> 16505 <p>This is the default if the key is not set.<wbr/></p></span> 16506 </li> 16507 <li> 16508 <span class="entry_type_enum_name">SOLID_COLOR</span> 16509 <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 16510 respective color channel provided in 16511 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 16512 <p>For example:</p> 16513 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 16514 </code></pre> 16515 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 16516 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 16517 </code></pre> 16518 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels 16519 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 16520 </li> 16521 <li> 16522 <span class="entry_type_enum_name">COLOR_BARS</span> 16523 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 16524 <p>The vertical bars (left-to-right) are as follows:</p> 16525 <ul> 16526 <li>100% white</li> 16527 <li>yellow</li> 16528 <li>cyan</li> 16529 <li>green</li> 16530 <li>magenta</li> 16531 <li>red</li> 16532 <li>blue</li> 16533 <li>black</li> 16534 </ul> 16535 <p>In general the image would look like the following:</p> 16536 <pre><code>W Y C G M R B K 16537 W Y C G M R B K 16538 W Y C G M R B K 16539 W Y C G M R B K 16540 W Y C G M R B K 16541 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 16542 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 16543 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 16544 16545 (B = Blue,<wbr/> K = Black) 16546 </code></pre> 16547 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 16548 When this is not possible,<wbr/> the bar size should be rounded 16549 down to the nearest integer and the pattern can repeat 16550 on the right side.<wbr/></p> 16551 <p>Each bar's height must always take up the full sensor 16552 pixel array height.<wbr/></p> 16553 <p>Each pixel in this test pattern must be set to either 16554 0% intensity or 100% intensity.<wbr/></p></span> 16555 </li> 16556 <li> 16557 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 16558 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 16559 each bar should start at its specified color at the top,<wbr/> 16560 and fade to gray at the bottom.<wbr/></p> 16561 <p>Furthermore each bar is further subdivided into a left and 16562 right half.<wbr/> The left half should have a smooth gradient,<wbr/> 16563 and the right half should have a quantized gradient.<wbr/></p> 16564 <p>In particular,<wbr/> the right half's should consist of blocks of the 16565 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 16566 <p>The least significant bits in the quantized gradient should 16567 be copied from the most significant bits of the smooth gradient.<wbr/></p> 16568 <p>The height of each bar should always be a multiple of 128.<wbr/> 16569 When this is not the case,<wbr/> the pattern should repeat at the bottom 16570 of the image.<wbr/></p></span> 16571 </li> 16572 <li> 16573 <span class="entry_type_enum_name">PN9</span> 16574 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 16575 generated from a PN9 512-bit sequence (typically implemented 16576 in hardware with a linear feedback shift register).<wbr/></p> 16577 <p>The generator should be reset at the beginning of each frame,<wbr/> 16578 and thus each subsequent raw frame with this test pattern should 16579 be exactly the same as the last.<wbr/></p></span> 16580 </li> 16581 <li> 16582 <span class="entry_type_enum_name">CUSTOM1</span> 16583 <span class="entry_type_enum_value">256</span> 16584 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 16585 available only on this camera device are at least this numeric 16586 value.<wbr/></p> 16587 <p>All of the custom test patterns will be static 16588 (that is the raw image must not vary from frame to frame).<wbr/></p></span> 16589 </li> 16590 </ul> 16591 16592 </td> <!-- entry_type --> 16593 16594 <td class="entry_description"> 16595 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 16596 doing a real exposure from the camera.<wbr/></p> 16597 </td> 16598 16599 <td class="entry_units"> 16600 </td> 16601 16602 <td class="entry_range"> 16603 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 16604 </td> 16605 16606 <td class="entry_tags"> 16607 </td> 16608 16609 </tr> 16610 <tr class="entries_header"> 16611 <th class="th_details" colspan="5">Details</th> 16612 </tr> 16613 <tr class="entry_cont"> 16614 <td class="entry_details" colspan="5"> 16615 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 16616 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 16617 work as normal.<wbr/></p> 16618 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 16619 occur (and that the test pattern remain unmodified,<wbr/> since the flash 16620 would not actually affect it).<wbr/></p> 16621 <p>Defaults to OFF.<wbr/></p> 16622 </td> 16623 </tr> 16624 16625 <tr class="entries_header"> 16626 <th class="th_details" colspan="5">HAL Implementation Details</th> 16627 </tr> 16628 <tr class="entry_cont"> 16629 <td class="entry_details" colspan="5"> 16630 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 16631 <p>The HAL may choose to substitute test patterns from the sensor 16632 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 16633 indistinguishable to the ISP whether the data came from the 16634 sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 16635 </td> 16636 </tr> 16637 16638 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16639 <!-- end of entry --> 16640 16641 16642 16643 <!-- end of kind --> 16644 </tbody> 16645 <tr><td colspan="6" class="kind">static</td></tr> 16646 16647 <thead class="entries_header"> 16648 <tr> 16649 <th class="th_name">Property Name</th> 16650 <th class="th_type">Type</th> 16651 <th class="th_description">Description</th> 16652 <th class="th_units">Units</th> 16653 <th class="th_range">Range</th> 16654 <th class="th_tags">Tags</th> 16655 </tr> 16656 </thead> 16657 16658 <tbody> 16659 16660 16661 16662 16663 16664 16665 16666 16667 16668 16669 16670 16671 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 16672 <td class="entry_name 16673 " rowspan="5"> 16674 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 16675 </td> 16676 <td class="entry_type"> 16677 <span class="entry_type_name">int32</span> 16678 <span class="entry_type_container">x</span> 16679 16680 <span class="entry_type_array"> 16681 4 16682 </span> 16683 <span class="entry_type_visibility"> [public as rectangle]</span> 16684 16685 16686 <span class="entry_type_hwlevel">[legacy] </span> 16687 16688 16689 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 16690 16691 16692 </td> <!-- entry_type --> 16693 16694 <td class="entry_description"> 16695 <p>The area of the image sensor which corresponds to 16696 active pixels.<wbr/></p> 16697 </td> 16698 16699 <td class="entry_units"> 16700 Pixel coordinates on the image sensor 16701 </td> 16702 16703 <td class="entry_range"> 16704 16705 </td> 16706 16707 <td class="entry_tags"> 16708 <ul class="entry_tags"> 16709 <li><a href="#tag_RAW">RAW</a></li> 16710 </ul> 16711 </td> 16712 16713 </tr> 16714 <tr class="entries_header"> 16715 <th class="th_details" colspan="5">Details</th> 16716 </tr> 16717 <tr class="entry_cont"> 16718 <td class="entry_details" colspan="5"> 16719 <p>This is the region of the sensor that actually receives light from the scene.<wbr/> 16720 Therefore,<wbr/> the size of this region determines the maximum field of view and the maximum 16721 number of pixels that an image from this sensor can contain.<wbr/></p> 16722 <p>The rectangle is defined in terms of the full pixel array; (0,<wbr/>0) is the top-left of the 16723 full pixel array,<wbr/> and the size of the full pixel array is given by 16724 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 16725 <p>Most other keys listing pixel coordinates have their coordinate systems based on the 16726 active array,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of the active array rectangle.<wbr/></p> 16727 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may 16728 include black calibration pixels or other inactive regions.<wbr/></p> 16729 </td> 16730 </tr> 16731 16732 <tr class="entries_header"> 16733 <th class="th_details" colspan="5">HAL Implementation Details</th> 16734 </tr> 16735 <tr class="entry_cont"> 16736 <td class="entry_details" colspan="5"> 16737 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 16738 >= <code>(0,<wbr/>0)</code>.<wbr/> 16739 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> 16740 </td> 16741 </tr> 16742 16743 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16744 <!-- end of entry --> 16745 16746 16747 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 16748 <td class="entry_name 16749 " rowspan="3"> 16750 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 16751 </td> 16752 <td class="entry_type"> 16753 <span class="entry_type_name">int32</span> 16754 <span class="entry_type_container">x</span> 16755 16756 <span class="entry_type_array"> 16757 2 16758 </span> 16759 <span class="entry_type_visibility"> [public as rangeInt]</span> 16760 16761 16762 <span class="entry_type_hwlevel">[full] </span> 16763 16764 16765 <div class="entry_type_notes">Range of supported sensitivities</div> 16766 16767 16768 </td> <!-- entry_type --> 16769 16770 <td class="entry_description"> 16771 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this 16772 camera device.<wbr/></p> 16773 </td> 16774 16775 <td class="entry_units"> 16776 </td> 16777 16778 <td class="entry_range"> 16779 <p>Min <= 100,<wbr/> Max >= 800</p> 16780 </td> 16781 16782 <td class="entry_tags"> 16783 <ul class="entry_tags"> 16784 <li><a href="#tag_BC">BC</a></li> 16785 <li><a href="#tag_V1">V1</a></li> 16786 </ul> 16787 </td> 16788 16789 </tr> 16790 <tr class="entries_header"> 16791 <th class="th_details" colspan="5">Details</th> 16792 </tr> 16793 <tr class="entry_cont"> 16794 <td class="entry_details" colspan="5"> 16795 <p>The values are the standard ISO sensitivity values,<wbr/> 16796 as defined in ISO 12232:2006.<wbr/></p> 16797 </td> 16798 </tr> 16799 16800 16801 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16802 <!-- end of entry --> 16803 16804 16805 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 16806 <td class="entry_name 16807 " rowspan="1"> 16808 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 16809 </td> 16810 <td class="entry_type"> 16811 <span class="entry_type_name entry_type_name_enum">byte</span> 16812 16813 <span class="entry_type_visibility"> [public]</span> 16814 16815 16816 <span class="entry_type_hwlevel">[full] </span> 16817 16818 16819 16820 <ul class="entry_type_enum"> 16821 <li> 16822 <span class="entry_type_enum_name">RGGB</span> 16823 </li> 16824 <li> 16825 <span class="entry_type_enum_name">GRBG</span> 16826 </li> 16827 <li> 16828 <span class="entry_type_enum_name">GBRG</span> 16829 </li> 16830 <li> 16831 <span class="entry_type_enum_name">BGGR</span> 16832 </li> 16833 <li> 16834 <span class="entry_type_enum_name">RGB</span> 16835 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 16836 values for each pixel,<wbr/> instead of just 1 16-bit value 16837 per pixel.<wbr/></p></span> 16838 </li> 16839 </ul> 16840 16841 </td> <!-- entry_type --> 16842 16843 <td class="entry_description"> 16844 <p>The arrangement of color filters on sensor; 16845 represents the colors in the top-left 2x2 section of 16846 the sensor,<wbr/> in reading order.<wbr/></p> 16847 </td> 16848 16849 <td class="entry_units"> 16850 </td> 16851 16852 <td class="entry_range"> 16853 </td> 16854 16855 <td class="entry_tags"> 16856 <ul class="entry_tags"> 16857 <li><a href="#tag_RAW">RAW</a></li> 16858 </ul> 16859 </td> 16860 16861 </tr> 16862 16863 16864 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16865 <!-- end of entry --> 16866 16867 16868 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 16869 <td class="entry_name 16870 " rowspan="3"> 16871 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 16872 </td> 16873 <td class="entry_type"> 16874 <span class="entry_type_name">int64</span> 16875 <span class="entry_type_container">x</span> 16876 16877 <span class="entry_type_array"> 16878 2 16879 </span> 16880 <span class="entry_type_visibility"> [public as rangeLong]</span> 16881 16882 16883 <span class="entry_type_hwlevel">[full] </span> 16884 16885 16886 <div class="entry_type_notes">nanoseconds</div> 16887 16888 16889 </td> <!-- entry_type --> 16890 16891 <td class="entry_description"> 16892 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported 16893 by this camera device.<wbr/></p> 16894 </td> 16895 16896 <td class="entry_units"> 16897 Nanoseconds 16898 </td> 16899 16900 <td class="entry_range"> 16901 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL 16902 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 16903 the maximum exposure time will be greater than 100ms.<wbr/></p> 16904 </td> 16905 16906 <td class="entry_tags"> 16907 <ul class="entry_tags"> 16908 <li><a href="#tag_V1">V1</a></li> 16909 </ul> 16910 </td> 16911 16912 </tr> 16913 16914 <tr class="entries_header"> 16915 <th class="th_details" colspan="5">HAL Implementation Details</th> 16916 </tr> 16917 <tr class="entry_cont"> 16918 <td class="entry_details" colspan="5"> 16919 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 16920 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least 16921 100ms.<wbr/></p> 16922 </td> 16923 </tr> 16924 16925 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16926 <!-- end of entry --> 16927 16928 16929 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 16930 <td class="entry_name 16931 " rowspan="5"> 16932 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 16933 </td> 16934 <td class="entry_type"> 16935 <span class="entry_type_name">int64</span> 16936 16937 <span class="entry_type_visibility"> [public]</span> 16938 16939 16940 <span class="entry_type_hwlevel">[full] </span> 16941 16942 16943 16944 16945 </td> <!-- entry_type --> 16946 16947 <td class="entry_description"> 16948 <p>The maximum possible frame duration (minimum frame rate) for 16949 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p> 16950 </td> 16951 16952 <td class="entry_units"> 16953 Nanoseconds 16954 </td> 16955 16956 <td class="entry_range"> 16957 <p>For FULL capability devices 16958 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p> 16959 </td> 16960 16961 <td class="entry_tags"> 16962 <ul class="entry_tags"> 16963 <li><a href="#tag_V1">V1</a></li> 16964 </ul> 16965 </td> 16966 16967 </tr> 16968 <tr class="entries_header"> 16969 <th class="th_details" colspan="5">Details</th> 16970 </tr> 16971 <tr class="entry_cont"> 16972 <td class="entry_details" colspan="5"> 16973 <p>Attempting to use frame durations beyond the maximum will result in the frame 16974 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame 16975 durations.<wbr/></p> 16976 <p>Refer to StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/>Size) for the minimum 16977 frame duration values.<wbr/></p> 16978 </td> 16979 </tr> 16980 16981 <tr class="entries_header"> 16982 <th class="th_details" colspan="5">HAL Implementation Details</th> 16983 </tr> 16984 <tr class="entry_cont"> 16985 <td class="entry_details" colspan="5"> 16986 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 16987 The maximum of the range SHOULD be at least 16988 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> 16989 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or 16990 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 16991 value (since exposure time overrides frame duration).<wbr/></p> 16992 <p>Available minimum frame durations for JPEG must be no greater 16993 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 16994 minimum frame durations (for that respective size).<wbr/></p> 16995 <p>Since JPEG processing is considered offline and can take longer than 16996 a single uncompressed capture,<wbr/> refer to 16997 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 16998 for details about encoding this scenario.<wbr/></p> 16999 </td> 17000 </tr> 17001 17002 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17003 <!-- end of entry --> 17004 17005 17006 <tr class="entry" id="static_android.sensor.info.physicalSize"> 17007 <td class="entry_name 17008 " rowspan="5"> 17009 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 17010 </td> 17011 <td class="entry_type"> 17012 <span class="entry_type_name">float</span> 17013 <span class="entry_type_container">x</span> 17014 17015 <span class="entry_type_array"> 17016 2 17017 </span> 17018 <span class="entry_type_visibility"> [public as sizeF]</span> 17019 17020 17021 <span class="entry_type_hwlevel">[legacy] </span> 17022 17023 17024 <div class="entry_type_notes">width x height</div> 17025 17026 17027 </td> <!-- entry_type --> 17028 17029 <td class="entry_description"> 17030 <p>The physical dimensions of the full pixel 17031 array.<wbr/></p> 17032 </td> 17033 17034 <td class="entry_units"> 17035 Millimeters 17036 </td> 17037 17038 <td class="entry_range"> 17039 </td> 17040 17041 <td class="entry_tags"> 17042 <ul class="entry_tags"> 17043 <li><a href="#tag_V1">V1</a></li> 17044 <li><a href="#tag_BC">BC</a></li> 17045 </ul> 17046 </td> 17047 17048 </tr> 17049 <tr class="entries_header"> 17050 <th class="th_details" colspan="5">Details</th> 17051 </tr> 17052 <tr class="entry_cont"> 17053 <td class="entry_details" colspan="5"> 17054 <p>This is the physical size of the sensor pixel 17055 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 17056 </td> 17057 </tr> 17058 17059 <tr class="entries_header"> 17060 <th class="th_details" colspan="5">HAL Implementation Details</th> 17061 </tr> 17062 <tr class="entry_cont"> 17063 <td class="entry_details" colspan="5"> 17064 <p>Needed for FOV calculation for old API</p> 17065 </td> 17066 </tr> 17067 17068 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17069 <!-- end of entry --> 17070 17071 17072 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 17073 <td class="entry_name 17074 " rowspan="3"> 17075 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 17076 </td> 17077 <td class="entry_type"> 17078 <span class="entry_type_name">int32</span> 17079 <span class="entry_type_container">x</span> 17080 17081 <span class="entry_type_array"> 17082 2 17083 </span> 17084 <span class="entry_type_visibility"> [public as size]</span> 17085 17086 17087 <span class="entry_type_hwlevel">[legacy] </span> 17088 17089 17090 17091 17092 </td> <!-- entry_type --> 17093 17094 <td class="entry_description"> 17095 <p>Dimensions of the full pixel array,<wbr/> possibly 17096 including black calibration pixels.<wbr/></p> 17097 </td> 17098 17099 <td class="entry_units"> 17100 Pixels 17101 </td> 17102 17103 <td class="entry_range"> 17104 </td> 17105 17106 <td class="entry_tags"> 17107 <ul class="entry_tags"> 17108 <li><a href="#tag_RAW">RAW</a></li> 17109 <li><a href="#tag_BC">BC</a></li> 17110 </ul> 17111 </td> 17112 17113 </tr> 17114 <tr class="entries_header"> 17115 <th class="th_details" colspan="5">Details</th> 17116 </tr> 17117 <tr class="entry_cont"> 17118 <td class="entry_details" colspan="5"> 17119 <p>The pixel count of the full pixel array,<wbr/> 17120 which covers <a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/></p> 17121 <p>If a camera device supports raw sensor formats,<wbr/> either this 17122 or <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> is the maximum output 17123 raw size listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> 17124 If a size corresponding to pixelArraySize is listed,<wbr/> the resulting 17125 raw sensor image will include black pixels.<wbr/></p> 17126 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/> 17127 or are otherwise inactive.<wbr/> The <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> key 17128 defines the rectangle of active pixels that actually forms an image.<wbr/></p> 17129 </td> 17130 </tr> 17131 17132 17133 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17134 <!-- end of entry --> 17135 17136 17137 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 17138 <td class="entry_name 17139 " rowspan="5"> 17140 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 17141 </td> 17142 <td class="entry_type"> 17143 <span class="entry_type_name">int32</span> 17144 17145 <span class="entry_type_visibility"> [public]</span> 17146 17147 17148 17149 17150 17151 17152 </td> <!-- entry_type --> 17153 17154 <td class="entry_description"> 17155 <p>Maximum raw value output by sensor.<wbr/></p> 17156 </td> 17157 17158 <td class="entry_units"> 17159 </td> 17160 17161 <td class="entry_range"> 17162 <p>> 255 (8-bit output)</p> 17163 </td> 17164 17165 <td class="entry_tags"> 17166 <ul class="entry_tags"> 17167 <li><a href="#tag_RAW">RAW</a></li> 17168 </ul> 17169 </td> 17170 17171 </tr> 17172 <tr class="entries_header"> 17173 <th class="th_details" colspan="5">Details</th> 17174 </tr> 17175 <tr class="entry_cont"> 17176 <td class="entry_details" colspan="5"> 17177 <p>This specifies the fully-saturated encoding level for the raw 17178 sample values from the sensor.<wbr/> This is typically caused by the 17179 sensor becoming highly non-linear or clipping.<wbr/> The minimum for 17180 each channel is specified by the offset in the 17181 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p> 17182 <p>The white level is typically determined either by sensor bit depth 17183 (8-14 bits is expected),<wbr/> or by the point where the sensor response 17184 becomes too non-linear to be useful.<wbr/> The default value for this is 17185 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> 17186 </td> 17187 </tr> 17188 17189 <tr class="entries_header"> 17190 <th class="th_details" colspan="5">HAL Implementation Details</th> 17191 </tr> 17192 <tr class="entry_cont"> 17193 <td class="entry_details" colspan="5"> 17194 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 17195 so the value for linear sensors should not be significantly lower 17196 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 17197 </td> 17198 </tr> 17199 17200 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17201 <!-- end of entry --> 17202 17203 17204 <tr class="entry" id="static_android.sensor.info.timestampSource"> 17205 <td class="entry_name 17206 " rowspan="3"> 17207 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source 17208 </td> 17209 <td class="entry_type"> 17210 <span class="entry_type_name entry_type_name_enum">byte</span> 17211 17212 <span class="entry_type_visibility"> [public]</span> 17213 17214 17215 <span class="entry_type_hwlevel">[legacy] </span> 17216 17217 17218 17219 <ul class="entry_type_enum"> 17220 <li> 17221 <span class="entry_type_enum_name">UNKNOWN</span> 17222 <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/> 17223 but can not be compared to timestamps from other subsystems 17224 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different 17225 camera devices in the same system.<wbr/> Timestamps between streams and results for 17226 a single camera instance are comparable,<wbr/> and the timestamps for all buffers 17227 and the result metadata generated by a single capture are identical.<wbr/></p></span> 17228 </li> 17229 <li> 17230 <span class="entry_type_enum_name">REALTIME</span> 17231 <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 17232 android.<wbr/>os.<wbr/>System<wbr/>Clock#elapsed<wbr/>Realtime<wbr/>Nanos(),<wbr/> 17233 and they can be compared to other timestamps using that base.<wbr/></p></span> 17234 </li> 17235 </ul> 17236 17237 </td> <!-- entry_type --> 17238 17239 <td class="entry_description"> 17240 <p>The time base source for sensor capture start timestamps.<wbr/></p> 17241 </td> 17242 17243 <td class="entry_units"> 17244 </td> 17245 17246 <td class="entry_range"> 17247 </td> 17248 17249 <td class="entry_tags"> 17250 <ul class="entry_tags"> 17251 <li><a href="#tag_V1">V1</a></li> 17252 </ul> 17253 </td> 17254 17255 </tr> 17256 <tr class="entries_header"> 17257 <th class="th_details" colspan="5">Details</th> 17258 </tr> 17259 <tr class="entry_cont"> 17260 <td class="entry_details" colspan="5"> 17261 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but 17262 may not based on a time source that can be compared to other system time sources.<wbr/></p> 17263 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they 17264 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p> 17265 </td> 17266 </tr> 17267 17268 17269 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17270 <!-- end of entry --> 17271 17272 17273 17274 17275 17276 <tr class="entry" id="static_android.sensor.referenceIlluminant1"> 17277 <td class="entry_name 17278 " rowspan="5"> 17279 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 17280 </td> 17281 <td class="entry_type"> 17282 <span class="entry_type_name entry_type_name_enum">byte</span> 17283 17284 <span class="entry_type_visibility"> [public]</span> 17285 17286 17287 17288 17289 17290 <ul class="entry_type_enum"> 17291 <li> 17292 <span class="entry_type_enum_name">DAYLIGHT</span> 17293 <span class="entry_type_enum_value">1</span> 17294 </li> 17295 <li> 17296 <span class="entry_type_enum_name">FLUORESCENT</span> 17297 <span class="entry_type_enum_value">2</span> 17298 </li> 17299 <li> 17300 <span class="entry_type_enum_name">TUNGSTEN</span> 17301 <span class="entry_type_enum_value">3</span> 17302 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 17303 </li> 17304 <li> 17305 <span class="entry_type_enum_name">FLASH</span> 17306 <span class="entry_type_enum_value">4</span> 17307 </li> 17308 <li> 17309 <span class="entry_type_enum_name">FINE_WEATHER</span> 17310 <span class="entry_type_enum_value">9</span> 17311 </li> 17312 <li> 17313 <span class="entry_type_enum_name">CLOUDY_WEATHER</span> 17314 <span class="entry_type_enum_value">10</span> 17315 </li> 17316 <li> 17317 <span class="entry_type_enum_name">SHADE</span> 17318 <span class="entry_type_enum_value">11</span> 17319 </li> 17320 <li> 17321 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span> 17322 <span class="entry_type_enum_value">12</span> 17323 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 17324 </li> 17325 <li> 17326 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span> 17327 <span class="entry_type_enum_value">13</span> 17328 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 17329 </li> 17330 <li> 17331 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span> 17332 <span class="entry_type_enum_value">14</span> 17333 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 17334 </li> 17335 <li> 17336 <span class="entry_type_enum_name">WHITE_FLUORESCENT</span> 17337 <span class="entry_type_enum_value">15</span> 17338 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 17339 </li> 17340 <li> 17341 <span class="entry_type_enum_name">STANDARD_A</span> 17342 <span class="entry_type_enum_value">17</span> 17343 </li> 17344 <li> 17345 <span class="entry_type_enum_name">STANDARD_B</span> 17346 <span class="entry_type_enum_value">18</span> 17347 </li> 17348 <li> 17349 <span class="entry_type_enum_name">STANDARD_C</span> 17350 <span class="entry_type_enum_value">19</span> 17351 </li> 17352 <li> 17353 <span class="entry_type_enum_name">D55</span> 17354 <span class="entry_type_enum_value">20</span> 17355 </li> 17356 <li> 17357 <span class="entry_type_enum_name">D65</span> 17358 <span class="entry_type_enum_value">21</span> 17359 </li> 17360 <li> 17361 <span class="entry_type_enum_name">D75</span> 17362 <span class="entry_type_enum_value">22</span> 17363 </li> 17364 <li> 17365 <span class="entry_type_enum_name">D50</span> 17366 <span class="entry_type_enum_value">23</span> 17367 </li> 17368 <li> 17369 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span> 17370 <span class="entry_type_enum_value">24</span> 17371 </li> 17372 </ul> 17373 17374 </td> <!-- entry_type --> 17375 17376 <td class="entry_description"> 17377 <p>The standard reference illuminant used as the scene light source when 17378 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 17379 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 17380 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p> 17381 </td> 17382 17383 <td class="entry_units"> 17384 </td> 17385 17386 <td class="entry_range"> 17387 </td> 17388 17389 <td class="entry_tags"> 17390 <ul class="entry_tags"> 17391 <li><a href="#tag_RAW">RAW</a></li> 17392 </ul> 17393 </td> 17394 17395 </tr> 17396 <tr class="entries_header"> 17397 <th class="th_details" colspan="5">Details</th> 17398 </tr> 17399 <tr class="entry_cont"> 17400 <td class="entry_details" colspan="5"> 17401 <p>The values in this key correspond to the values defined for the 17402 EXIF LightSource tag.<wbr/> These illuminants are standard light sources 17403 that are often used calibrating camera devices.<wbr/></p> 17404 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 17405 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 17406 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p> 17407 <p>Some devices may choose to provide a second set of calibration 17408 information for improved quality,<wbr/> including 17409 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p> 17410 </td> 17411 </tr> 17412 17413 <tr class="entries_header"> 17414 <th class="th_details" colspan="5">HAL Implementation Details</th> 17415 </tr> 17416 <tr class="entry_cont"> 17417 <td class="entry_details" colspan="5"> 17418 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 17419 and corresponding matrices must be present to support the RAW capability 17420 and DNG output.<wbr/></p> 17421 <p>When producing raw images with a color profile that has only been 17422 calibrated against a single light source,<wbr/> it is valid to omit 17423 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the 17424 <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/> 17425 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 17426 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be 17427 chosen so that it is representative of typical scene lighting.<wbr/> In 17428 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p> 17429 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and 17430 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be 17431 chosen to represent the typical range of scene lighting conditions.<wbr/> 17432 In general,<wbr/> low color temperature illuminant such as Standard-A will 17433 be chosen for the first reference illuminant and a higher color 17434 temperature illuminant such as D65 will be chosen for the second 17435 reference illuminant.<wbr/></p> 17436 </td> 17437 </tr> 17438 17439 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17440 <!-- end of entry --> 17441 17442 17443 <tr class="entry" id="static_android.sensor.referenceIlluminant2"> 17444 <td class="entry_name 17445 " rowspan="3"> 17446 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 17447 </td> 17448 <td class="entry_type"> 17449 <span class="entry_type_name">byte</span> 17450 17451 <span class="entry_type_visibility"> [public]</span> 17452 17453 17454 17455 17456 17457 17458 </td> <!-- entry_type --> 17459 17460 <td class="entry_description"> 17461 <p>The standard reference illuminant used as the scene light source when 17462 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 17463 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 17464 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 17465 </td> 17466 17467 <td class="entry_units"> 17468 </td> 17469 17470 <td class="entry_range"> 17471 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p> 17472 </td> 17473 17474 <td class="entry_tags"> 17475 <ul class="entry_tags"> 17476 <li><a href="#tag_RAW">RAW</a></li> 17477 </ul> 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>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p> 17487 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 17488 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 17489 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p> 17490 </td> 17491 </tr> 17492 17493 17494 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17495 <!-- end of entry --> 17496 17497 17498 <tr class="entry" id="static_android.sensor.calibrationTransform1"> 17499 <td class="entry_name 17500 " rowspan="3"> 17501 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 17502 </td> 17503 <td class="entry_type"> 17504 <span class="entry_type_name">rational</span> 17505 <span class="entry_type_container">x</span> 17506 17507 <span class="entry_type_array"> 17508 3 x 3 17509 </span> 17510 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 17511 17512 17513 17514 17515 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 17516 17517 17518 </td> <!-- entry_type --> 17519 17520 <td class="entry_description"> 17521 <p>A per-device calibration transform matrix that maps from the 17522 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p> 17523 </td> 17524 17525 <td class="entry_units"> 17526 </td> 17527 17528 <td class="entry_range"> 17529 </td> 17530 17531 <td class="entry_tags"> 17532 <ul class="entry_tags"> 17533 <li><a href="#tag_RAW">RAW</a></li> 17534 </ul> 17535 </td> 17536 17537 </tr> 17538 <tr class="entries_header"> 17539 <th class="th_details" colspan="5">Details</th> 17540 </tr> 17541 <tr class="entry_cont"> 17542 <td class="entry_details" colspan="5"> 17543 <p>This matrix is used to correct for per-device variations in the 17544 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 17545 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 17546 contains a per-device calibration transform that maps colors 17547 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 17548 colorspace) into this camera device's native sensor color 17549 space under the first reference illuminant 17550 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 17551 </td> 17552 </tr> 17553 17554 17555 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17556 <!-- end of entry --> 17557 17558 17559 <tr class="entry" id="static_android.sensor.calibrationTransform2"> 17560 <td class="entry_name 17561 " rowspan="3"> 17562 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 17563 </td> 17564 <td class="entry_type"> 17565 <span class="entry_type_name">rational</span> 17566 <span class="entry_type_container">x</span> 17567 17568 <span class="entry_type_array"> 17569 3 x 3 17570 </span> 17571 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 17572 17573 17574 17575 17576 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 17577 17578 17579 </td> <!-- entry_type --> 17580 17581 <td class="entry_description"> 17582 <p>A per-device calibration transform matrix that maps from the 17583 reference sensor colorspace to the actual device sensor colorspace 17584 (this is the colorspace of the raw buffer data).<wbr/></p> 17585 </td> 17586 17587 <td class="entry_units"> 17588 </td> 17589 17590 <td class="entry_range"> 17591 </td> 17592 17593 <td class="entry_tags"> 17594 <ul class="entry_tags"> 17595 <li><a href="#tag_RAW">RAW</a></li> 17596 </ul> 17597 </td> 17598 17599 </tr> 17600 <tr class="entries_header"> 17601 <th class="th_details" colspan="5">Details</th> 17602 </tr> 17603 <tr class="entry_cont"> 17604 <td class="entry_details" colspan="5"> 17605 <p>This matrix is used to correct for per-device variations in the 17606 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 17607 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 17608 contains a per-device calibration transform that maps colors 17609 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 17610 colorspace) into this camera device's native sensor color 17611 space under the second reference illuminant 17612 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 17613 <p>This matrix will only be present if the second reference 17614 illuminant is present.<wbr/></p> 17615 </td> 17616 </tr> 17617 17618 17619 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17620 <!-- end of entry --> 17621 17622 17623 <tr class="entry" id="static_android.sensor.colorTransform1"> 17624 <td class="entry_name 17625 " rowspan="3"> 17626 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 17627 </td> 17628 <td class="entry_type"> 17629 <span class="entry_type_name">rational</span> 17630 <span class="entry_type_container">x</span> 17631 17632 <span class="entry_type_array"> 17633 3 x 3 17634 </span> 17635 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 17636 17637 17638 17639 17640 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 17641 17642 17643 </td> <!-- entry_type --> 17644 17645 <td class="entry_description"> 17646 <p>A matrix that transforms color values from CIE XYZ color space to 17647 reference sensor color space.<wbr/></p> 17648 </td> 17649 17650 <td class="entry_units"> 17651 </td> 17652 17653 <td class="entry_range"> 17654 </td> 17655 17656 <td class="entry_tags"> 17657 <ul class="entry_tags"> 17658 <li><a href="#tag_RAW">RAW</a></li> 17659 </ul> 17660 </td> 17661 17662 </tr> 17663 <tr class="entries_header"> 17664 <th class="th_details" colspan="5">Details</th> 17665 </tr> 17666 <tr class="entry_cont"> 17667 <td class="entry_details" colspan="5"> 17668 <p>This matrix is used to convert from the standard CIE XYZ color 17669 space to the reference sensor colorspace,<wbr/> and is used when processing 17670 raw buffer data.<wbr/></p> 17671 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 17672 contains a color transform matrix that maps colors from the CIE 17673 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 17674 "golden module" colorspace) under the first reference illuminant 17675 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 17676 <p>The white points chosen in both the reference sensor color space 17677 and the CIE XYZ colorspace when calculating this transform will 17678 match the standard white point for the first reference illuminant 17679 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 17680 </td> 17681 </tr> 17682 17683 17684 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17685 <!-- end of entry --> 17686 17687 17688 <tr class="entry" id="static_android.sensor.colorTransform2"> 17689 <td class="entry_name 17690 " rowspan="3"> 17691 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 17692 </td> 17693 <td class="entry_type"> 17694 <span class="entry_type_name">rational</span> 17695 <span class="entry_type_container">x</span> 17696 17697 <span class="entry_type_array"> 17698 3 x 3 17699 </span> 17700 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 17701 17702 17703 17704 17705 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 17706 17707 17708 </td> <!-- entry_type --> 17709 17710 <td class="entry_description"> 17711 <p>A matrix that transforms color values from CIE XYZ color space to 17712 reference sensor color space.<wbr/></p> 17713 </td> 17714 17715 <td class="entry_units"> 17716 </td> 17717 17718 <td class="entry_range"> 17719 </td> 17720 17721 <td class="entry_tags"> 17722 <ul class="entry_tags"> 17723 <li><a href="#tag_RAW">RAW</a></li> 17724 </ul> 17725 </td> 17726 17727 </tr> 17728 <tr class="entries_header"> 17729 <th class="th_details" colspan="5">Details</th> 17730 </tr> 17731 <tr class="entry_cont"> 17732 <td class="entry_details" colspan="5"> 17733 <p>This matrix is used to convert from the standard CIE XYZ color 17734 space to the reference sensor colorspace,<wbr/> and is used when processing 17735 raw buffer data.<wbr/></p> 17736 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 17737 contains a color transform matrix that maps colors from the CIE 17738 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 17739 "golden module" colorspace) under the second reference illuminant 17740 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 17741 <p>The white points chosen in both the reference sensor color space 17742 and the CIE XYZ colorspace when calculating this transform will 17743 match the standard white point for the second reference illuminant 17744 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 17745 <p>This matrix will only be present if the second reference 17746 illuminant is present.<wbr/></p> 17747 </td> 17748 </tr> 17749 17750 17751 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17752 <!-- end of entry --> 17753 17754 17755 <tr class="entry" id="static_android.sensor.forwardMatrix1"> 17756 <td class="entry_name 17757 " rowspan="3"> 17758 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 17759 </td> 17760 <td class="entry_type"> 17761 <span class="entry_type_name">rational</span> 17762 <span class="entry_type_container">x</span> 17763 17764 <span class="entry_type_array"> 17765 3 x 3 17766 </span> 17767 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 17768 17769 17770 17771 17772 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 17773 17774 17775 </td> <!-- entry_type --> 17776 17777 <td class="entry_description"> 17778 <p>A matrix that transforms white balanced camera colors from the reference 17779 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 17780 </td> 17781 17782 <td class="entry_units"> 17783 </td> 17784 17785 <td class="entry_range"> 17786 </td> 17787 17788 <td class="entry_tags"> 17789 <ul class="entry_tags"> 17790 <li><a href="#tag_RAW">RAW</a></li> 17791 </ul> 17792 </td> 17793 17794 </tr> 17795 <tr class="entries_header"> 17796 <th class="th_details" colspan="5">Details</th> 17797 </tr> 17798 <tr class="entry_cont"> 17799 <td class="entry_details" colspan="5"> 17800 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 17801 is used when processing raw buffer data.<wbr/></p> 17802 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 17803 a color transform matrix that maps white balanced colors from the 17804 reference sensor color space to the CIE XYZ color space with a D50 white 17805 point.<wbr/></p> 17806 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 17807 this matrix is chosen so that the standard white point for this reference 17808 illuminant in the reference sensor colorspace is mapped to D50 in the 17809 CIE XYZ colorspace.<wbr/></p> 17810 </td> 17811 </tr> 17812 17813 17814 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17815 <!-- end of entry --> 17816 17817 17818 <tr class="entry" id="static_android.sensor.forwardMatrix2"> 17819 <td class="entry_name 17820 " rowspan="3"> 17821 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 17822 </td> 17823 <td class="entry_type"> 17824 <span class="entry_type_name">rational</span> 17825 <span class="entry_type_container">x</span> 17826 17827 <span class="entry_type_array"> 17828 3 x 3 17829 </span> 17830 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 17831 17832 17833 17834 17835 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 17836 17837 17838 </td> <!-- entry_type --> 17839 17840 <td class="entry_description"> 17841 <p>A matrix that transforms white balanced camera colors from the reference 17842 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 17843 </td> 17844 17845 <td class="entry_units"> 17846 </td> 17847 17848 <td class="entry_range"> 17849 </td> 17850 17851 <td class="entry_tags"> 17852 <ul class="entry_tags"> 17853 <li><a href="#tag_RAW">RAW</a></li> 17854 </ul> 17855 </td> 17856 17857 </tr> 17858 <tr class="entries_header"> 17859 <th class="th_details" colspan="5">Details</th> 17860 </tr> 17861 <tr class="entry_cont"> 17862 <td class="entry_details" colspan="5"> 17863 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 17864 is used when processing raw buffer data.<wbr/></p> 17865 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 17866 a color transform matrix that maps white balanced colors from the 17867 reference sensor color space to the CIE XYZ color space with a D50 white 17868 point.<wbr/></p> 17869 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) 17870 this matrix is chosen so that the standard white point for this reference 17871 illuminant in the reference sensor colorspace is mapped to D50 in the 17872 CIE XYZ colorspace.<wbr/></p> 17873 <p>This matrix will only be present if the second reference 17874 illuminant is present.<wbr/></p> 17875 </td> 17876 </tr> 17877 17878 17879 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17880 <!-- end of entry --> 17881 17882 17883 <tr class="entry" id="static_android.sensor.baseGainFactor"> 17884 <td class="entry_name 17885 " rowspan="1"> 17886 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 17887 </td> 17888 <td class="entry_type"> 17889 <span class="entry_type_name">rational</span> 17890 17891 <span class="entry_type_visibility"> [system]</span> 17892 17893 17894 17895 17896 17897 17898 </td> <!-- entry_type --> 17899 17900 <td class="entry_description"> 17901 <p>Gain factor from electrons to raw units when 17902 ISO=100</p> 17903 </td> 17904 17905 <td class="entry_units"> 17906 </td> 17907 17908 <td class="entry_range"> 17909 </td> 17910 17911 <td class="entry_tags"> 17912 <ul class="entry_tags"> 17913 <li><a href="#tag_FUTURE">FUTURE</a></li> 17914 </ul> 17915 </td> 17916 17917 </tr> 17918 17919 17920 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17921 <!-- end of entry --> 17922 17923 17924 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 17925 <td class="entry_name 17926 " rowspan="5"> 17927 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 17928 </td> 17929 <td class="entry_type"> 17930 <span class="entry_type_name">int32</span> 17931 <span class="entry_type_container">x</span> 17932 17933 <span class="entry_type_array"> 17934 4 17935 </span> 17936 <span class="entry_type_visibility"> [public as blackLevelPattern]</span> 17937 17938 17939 17940 17941 <div class="entry_type_notes">2x2 raw count block</div> 17942 17943 17944 </td> <!-- entry_type --> 17945 17946 <td class="entry_description"> 17947 <p>A fixed black level offset for each of the color filter arrangement 17948 (CFA) mosaic channels.<wbr/></p> 17949 </td> 17950 17951 <td class="entry_units"> 17952 </td> 17953 17954 <td class="entry_range"> 17955 <p>>= 0 for each.<wbr/></p> 17956 </td> 17957 17958 <td class="entry_tags"> 17959 <ul class="entry_tags"> 17960 <li><a href="#tag_RAW">RAW</a></li> 17961 </ul> 17962 </td> 17963 17964 </tr> 17965 <tr class="entries_header"> 17966 <th class="th_details" colspan="5">Details</th> 17967 </tr> 17968 <tr class="entry_cont"> 17969 <td class="entry_details" colspan="5"> 17970 <p>This key specifies the zero light value for each of the CFA mosaic 17971 channels in the camera sensor.<wbr/> The maximal value output by the 17972 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> 17973 <p>The values are given in the same order as channels listed for the CFA 17974 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 17975 nth value given corresponds to the black level offset for the nth 17976 color channel listed in the CFA.<wbr/></p> 17977 </td> 17978 </tr> 17979 17980 <tr class="entries_header"> 17981 <th class="th_details" colspan="5">HAL Implementation Details</th> 17982 </tr> 17983 <tr class="entry_cont"> 17984 <td class="entry_details" colspan="5"> 17985 <p>The values are given in row-column scan order,<wbr/> with the first value 17986 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 17987 </td> 17988 </tr> 17989 17990 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17991 <!-- end of entry --> 17992 17993 17994 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 17995 <td class="entry_name 17996 " rowspan="3"> 17997 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 17998 </td> 17999 <td class="entry_type"> 18000 <span class="entry_type_name">int32</span> 18001 18002 <span class="entry_type_visibility"> [public]</span> 18003 18004 18005 <span class="entry_type_hwlevel">[full] </span> 18006 18007 18008 18009 18010 </td> <!-- entry_type --> 18011 18012 <td class="entry_description"> 18013 <p>Maximum sensitivity that is implemented 18014 purely through analog gain.<wbr/></p> 18015 </td> 18016 18017 <td class="entry_units"> 18018 </td> 18019 18020 <td class="entry_range"> 18021 </td> 18022 18023 <td class="entry_tags"> 18024 <ul class="entry_tags"> 18025 <li><a href="#tag_V1">V1</a></li> 18026 <li><a href="#tag_FULL">FULL</a></li> 18027 </ul> 18028 </td> 18029 18030 </tr> 18031 <tr class="entries_header"> 18032 <th class="th_details" colspan="5">Details</th> 18033 </tr> 18034 <tr class="entry_cont"> 18035 <td class="entry_details" colspan="5"> 18036 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 18037 equal to this,<wbr/> all applied gain must be analog.<wbr/> For 18038 values above this,<wbr/> the gain applied can be a mix of analog and 18039 digital.<wbr/></p> 18040 </td> 18041 </tr> 18042 18043 18044 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18045 <!-- end of entry --> 18046 18047 18048 <tr class="entry" id="static_android.sensor.orientation"> 18049 <td class="entry_name 18050 " rowspan="3"> 18051 android.<wbr/>sensor.<wbr/>orientation 18052 </td> 18053 <td class="entry_type"> 18054 <span class="entry_type_name">int32</span> 18055 18056 <span class="entry_type_visibility"> [public]</span> 18057 18058 18059 <span class="entry_type_hwlevel">[legacy] </span> 18060 18061 18062 18063 18064 </td> <!-- entry_type --> 18065 18066 <td class="entry_description"> 18067 <p>Clockwise angle through which the output image needs to be rotated to be 18068 upright on the device screen in its native orientation.<wbr/></p> 18069 </td> 18070 18071 <td class="entry_units"> 18072 Degrees of clockwise rotation; always a multiple of 18073 90 18074 </td> 18075 18076 <td class="entry_range"> 18077 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 18078 </td> 18079 18080 <td class="entry_tags"> 18081 <ul class="entry_tags"> 18082 <li><a href="#tag_BC">BC</a></li> 18083 </ul> 18084 </td> 18085 18086 </tr> 18087 <tr class="entries_header"> 18088 <th class="th_details" colspan="5">Details</th> 18089 </tr> 18090 <tr class="entry_cont"> 18091 <td class="entry_details" colspan="5"> 18092 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in 18093 the sensor's coordinate system.<wbr/></p> 18094 </td> 18095 </tr> 18096 18097 18098 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18099 <!-- end of entry --> 18100 18101 18102 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> 18103 <td class="entry_name 18104 " rowspan="3"> 18105 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions 18106 </td> 18107 <td class="entry_type"> 18108 <span class="entry_type_name">int32</span> 18109 <span class="entry_type_container">x</span> 18110 18111 <span class="entry_type_array"> 18112 3 18113 </span> 18114 <span class="entry_type_visibility"> [system]</span> 18115 18116 18117 18118 18119 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> 18120 18121 18122 </td> <!-- entry_type --> 18123 18124 <td class="entry_description"> 18125 <p>The number of input samples for each dimension of 18126 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> 18127 </td> 18128 18129 <td class="entry_units"> 18130 </td> 18131 18132 <td class="entry_range"> 18133 <p>Hue >= 1,<wbr/> 18134 Saturation >= 2,<wbr/> 18135 Value >= 1</p> 18136 </td> 18137 18138 <td class="entry_tags"> 18139 <ul class="entry_tags"> 18140 <li><a href="#tag_RAW">RAW</a></li> 18141 </ul> 18142 </td> 18143 18144 </tr> 18145 <tr class="entries_header"> 18146 <th class="th_details" colspan="5">Details</th> 18147 </tr> 18148 <tr class="entry_cont"> 18149 <td class="entry_details" colspan="5"> 18150 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value 18151 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 18152 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 18153 element.<wbr/></p> 18154 </td> 18155 </tr> 18156 18157 18158 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18159 <!-- end of entry --> 18160 18161 18162 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 18163 <td class="entry_name 18164 " rowspan="5"> 18165 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 18166 </td> 18167 <td class="entry_type"> 18168 <span class="entry_type_name">int32</span> 18169 <span class="entry_type_container">x</span> 18170 18171 <span class="entry_type_array"> 18172 n 18173 </span> 18174 <span class="entry_type_visibility"> [public]</span> 18175 18176 18177 18178 18179 <div class="entry_type_notes">list of enums</div> 18180 18181 18182 </td> <!-- entry_type --> 18183 18184 <td class="entry_description"> 18185 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> 18186 supported by this camera device.<wbr/></p> 18187 </td> 18188 18189 <td class="entry_units"> 18190 </td> 18191 18192 <td class="entry_range"> 18193 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p> 18194 </td> 18195 18196 <td class="entry_tags"> 18197 </td> 18198 18199 </tr> 18200 <tr class="entries_header"> 18201 <th class="th_details" colspan="5">Details</th> 18202 </tr> 18203 <tr class="entry_cont"> 18204 <td class="entry_details" colspan="5"> 18205 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p> 18206 </td> 18207 </tr> 18208 18209 <tr class="entries_header"> 18210 <th class="th_details" colspan="5">HAL Implementation Details</th> 18211 </tr> 18212 <tr class="entry_cont"> 18213 <td class="entry_details" colspan="5"> 18214 <p>All custom modes must be >= CUSTOM1.<wbr/></p> 18215 </td> 18216 </tr> 18217 18218 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18219 <!-- end of entry --> 18220 18221 18222 18223 <!-- end of kind --> 18224 </tbody> 18225 <tr><td colspan="6" class="kind">dynamic</td></tr> 18226 18227 <thead class="entries_header"> 18228 <tr> 18229 <th class="th_name">Property Name</th> 18230 <th class="th_type">Type</th> 18231 <th class="th_description">Description</th> 18232 <th class="th_units">Units</th> 18233 <th class="th_range">Range</th> 18234 <th class="th_tags">Tags</th> 18235 </tr> 18236 </thead> 18237 18238 <tbody> 18239 18240 18241 18242 18243 18244 18245 18246 18247 18248 18249 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 18250 <td class="entry_name 18251 " rowspan="3"> 18252 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 18253 </td> 18254 <td class="entry_type"> 18255 <span class="entry_type_name">int64</span> 18256 18257 <span class="entry_type_visibility"> [public]</span> 18258 18259 18260 <span class="entry_type_hwlevel">[full] </span> 18261 18262 18263 18264 18265 </td> <!-- entry_type --> 18266 18267 <td class="entry_description"> 18268 <p>Duration each pixel is exposed to 18269 light.<wbr/></p> 18270 </td> 18271 18272 <td class="entry_units"> 18273 Nanoseconds 18274 </td> 18275 18276 <td class="entry_range"> 18277 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 18278 </td> 18279 18280 <td class="entry_tags"> 18281 <ul class="entry_tags"> 18282 <li><a href="#tag_V1">V1</a></li> 18283 </ul> 18284 </td> 18285 18286 </tr> 18287 <tr class="entries_header"> 18288 <th class="th_details" colspan="5">Details</th> 18289 </tr> 18290 <tr class="entry_cont"> 18291 <td class="entry_details" colspan="5"> 18292 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 18293 duration exposed to the nearest possible value (rather than expose longer).<wbr/> 18294 The final exposure time used will be available in the output capture result.<wbr/></p> 18295 <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 18296 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 18297 </td> 18298 </tr> 18299 18300 18301 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18302 <!-- end of entry --> 18303 18304 18305 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 18306 <td class="entry_name 18307 " rowspan="5"> 18308 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 18309 </td> 18310 <td class="entry_type"> 18311 <span class="entry_type_name">int64</span> 18312 18313 <span class="entry_type_visibility"> [public]</span> 18314 18315 18316 <span class="entry_type_hwlevel">[full] </span> 18317 18318 18319 18320 18321 </td> <!-- entry_type --> 18322 18323 <td class="entry_description"> 18324 <p>Duration from start of frame exposure to 18325 start of next frame exposure.<wbr/></p> 18326 </td> 18327 18328 <td class="entry_units"> 18329 Nanoseconds 18330 </td> 18331 18332 <td class="entry_range"> 18333 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 18334 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 18335 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 18336 </td> 18337 18338 <td class="entry_tags"> 18339 <ul class="entry_tags"> 18340 <li><a href="#tag_V1">V1</a></li> 18341 </ul> 18342 </td> 18343 18344 </tr> 18345 <tr class="entries_header"> 18346 <th class="th_details" colspan="5">Details</th> 18347 </tr> 18348 <tr class="entry_cont"> 18349 <td class="entry_details" colspan="5"> 18350 <p>The maximum frame rate that can be supported by a camera subsystem is 18351 a function of many factors:</p> 18352 <ul> 18353 <li>Requested resolutions of output image streams</li> 18354 <li>Availability of binning /<wbr/> skipping modes on the imager</li> 18355 <li>The bandwidth of the imager interface</li> 18356 <li>The bandwidth of the various ISP processing blocks</li> 18357 </ul> 18358 <p>Since these factors can vary greatly between different ISPs and 18359 sensors,<wbr/> the camera abstraction tries to represent the bandwidth 18360 restrictions with as simple a model as possible.<wbr/></p> 18361 <p>The model presented has the following characteristics:</p> 18362 <ul> 18363 <li>The image sensor is always configured to output the smallest 18364 resolution possible given the application's requested output stream 18365 sizes.<wbr/> The smallest resolution is defined as being at least as large 18366 as the largest requested output stream size; the camera pipeline must 18367 never digitally upsample sensor data when the crop region covers the 18368 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 18369 resolutions are configured,<wbr/> the sensor can provide a higher frame 18370 rate.<wbr/></li> 18371 <li>Since any request may use any or all the currently configured 18372 output streams,<wbr/> the sensor and ISP must be configured to support 18373 scaling a single capture to all the streams at the same time.<wbr/> This 18374 means the camera pipeline must be ready to produce the largest 18375 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 18376 frame rate of a given configured stream set is governed only by the 18377 largest requested stream resolution.<wbr/></li> 18378 <li>Using more than one output stream in a request does not affect the 18379 frame duration.<wbr/></li> 18380 <li>Certain format-streams may need to do additional background processing 18381 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 18382 can run concurrently to the rest of the camera pipeline,<wbr/> but 18383 cannot process more than 1 capture at a time.<wbr/></li> 18384 </ul> 18385 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> 18386 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field 18387 using StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/> 18388 These are used to determine the maximum frame rate /<wbr/> minimum frame 18389 duration that is possible for a given stream configuration.<wbr/></p> 18390 <p>Specifically,<wbr/> the application can use the following rules to 18391 determine the minimum frame duration it can request from the camera 18392 device:</p> 18393 <ol> 18394 <li>Let the set of currently configured input/<wbr/>output streams 18395 be called <code>S</code>.<wbr/></li> 18396 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by 18397 looking it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using 18398 StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size) (with 18399 its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called 18400 <code>F</code>.<wbr/></li> 18401 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 18402 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 18403 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 18404 </ol> 18405 <p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in 18406 StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size) using its 18407 respective size/<wbr/>format),<wbr/> then the frame duration in 18408 <code>F</code> determines the steady state frame rate that the application will 18409 get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind 18410 of request be called <code>Rsimple</code>.<wbr/></p> 18411 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 18412 by a single capture of a new request <code>Rstall</code> (which has at least 18413 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 18414 same minimum frame duration this will not cause a frame rate loss 18415 if all buffers from the previous <code>Rstall</code> have already been 18416 delivered.<wbr/></p> 18417 <p>For more details about stalling,<wbr/> see 18418 StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size).<wbr/></p> 18419 <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 18420 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 18421 </td> 18422 </tr> 18423 18424 <tr class="entries_header"> 18425 <th class="th_details" colspan="5">HAL Implementation Details</th> 18426 </tr> 18427 <tr class="entry_cont"> 18428 <td class="entry_details" colspan="5"> 18429 <p>For more details about stalling,<wbr/> see 18430 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 18431 </td> 18432 </tr> 18433 18434 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18435 <!-- end of entry --> 18436 18437 18438 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 18439 <td class="entry_name 18440 " rowspan="5"> 18441 android.<wbr/>sensor.<wbr/>sensitivity 18442 </td> 18443 <td class="entry_type"> 18444 <span class="entry_type_name">int32</span> 18445 18446 <span class="entry_type_visibility"> [public]</span> 18447 18448 18449 <span class="entry_type_hwlevel">[full] </span> 18450 18451 18452 18453 18454 </td> <!-- entry_type --> 18455 18456 <td class="entry_description"> 18457 <p>The amount of gain applied to sensor data 18458 before processing.<wbr/></p> 18459 </td> 18460 18461 <td class="entry_units"> 18462 ISO arithmetic units 18463 </td> 18464 18465 <td class="entry_range"> 18466 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 18467 </td> 18468 18469 <td class="entry_tags"> 18470 <ul class="entry_tags"> 18471 <li><a href="#tag_V1">V1</a></li> 18472 </ul> 18473 </td> 18474 18475 </tr> 18476 <tr class="entries_header"> 18477 <th class="th_details" colspan="5">Details</th> 18478 </tr> 18479 <tr class="entry_cont"> 18480 <td class="entry_details" colspan="5"> 18481 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 18482 as defined in ISO 12232:2006.<wbr/></p> 18483 <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 18484 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 18485 is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 18486 <p>If the camera device cannot apply the exact sensitivity 18487 requested,<wbr/> it will reduce the gain to the nearest supported 18488 value.<wbr/> The final sensitivity used will be available in the 18489 output capture result.<wbr/></p> 18490 </td> 18491 </tr> 18492 18493 <tr class="entries_header"> 18494 <th class="th_details" colspan="5">HAL Implementation Details</th> 18495 </tr> 18496 <tr class="entry_cont"> 18497 <td class="entry_details" colspan="5"> 18498 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 18499 </td> 18500 </tr> 18501 18502 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18503 <!-- end of entry --> 18504 18505 18506 <tr class="entry" id="dynamic_android.sensor.timestamp"> 18507 <td class="entry_name 18508 " rowspan="5"> 18509 android.<wbr/>sensor.<wbr/>timestamp 18510 </td> 18511 <td class="entry_type"> 18512 <span class="entry_type_name">int64</span> 18513 18514 <span class="entry_type_visibility"> [public]</span> 18515 18516 18517 <span class="entry_type_hwlevel">[legacy] </span> 18518 18519 18520 18521 18522 </td> <!-- entry_type --> 18523 18524 <td class="entry_description"> 18525 <p>Time at start of exposure of first 18526 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p> 18527 </td> 18528 18529 <td class="entry_units"> 18530 Nanoseconds 18531 </td> 18532 18533 <td class="entry_range"> 18534 <p>> 0</p> 18535 </td> 18536 18537 <td class="entry_tags"> 18538 <ul class="entry_tags"> 18539 <li><a href="#tag_BC">BC</a></li> 18540 </ul> 18541 </td> 18542 18543 </tr> 18544 <tr class="entries_header"> 18545 <th class="th_details" colspan="5">Details</th> 18546 </tr> 18547 <tr class="entry_cont"> 18548 <td class="entry_details" colspan="5"> 18549 <p>The timestamps are also included in all image 18550 buffers produced for the same capture,<wbr/> and will be identical 18551 on all the outputs.<wbr/></p> 18552 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/> 18553 the timestamps measure time since an unspecified starting point,<wbr/> 18554 and are monotonically increasing.<wbr/> They can be compared with the 18555 timestamps for other captures from the same camera device,<wbr/> but are 18556 not guaranteed to be comparable to any other time source.<wbr/></p> 18557 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> 18558 the timestamps measure time in the same timebase as 18559 android.<wbr/>os.<wbr/>System<wbr/>Clock#elapsed<wbr/>Realtime<wbr/>Nanos(),<wbr/> and they can be 18560 compared to other timestamps from other subsystems that are using 18561 that base.<wbr/></p> 18562 </td> 18563 </tr> 18564 18565 <tr class="entries_header"> 18566 <th class="th_details" colspan="5">HAL Implementation Details</th> 18567 </tr> 18568 <tr class="entry_cont"> 18569 <td class="entry_details" colspan="5"> 18570 <p>All timestamps must be in reference to the kernel's 18571 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for 18572 time spent asleep.<wbr/> This allows for synchronization with 18573 sensors that continue to operate while the system is 18574 otherwise asleep.<wbr/></p> 18575 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> 18576 The timestamp must be synchronized with the timestamps from other 18577 sensor subsystems that are using the same timebase.<wbr/></p> 18578 </td> 18579 </tr> 18580 18581 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18582 <!-- end of entry --> 18583 18584 18585 <tr class="entry" id="dynamic_android.sensor.temperature"> 18586 <td class="entry_name 18587 " rowspan="1"> 18588 android.<wbr/>sensor.<wbr/>temperature 18589 </td> 18590 <td class="entry_type"> 18591 <span class="entry_type_name">float</span> 18592 18593 <span class="entry_type_visibility"> [system]</span> 18594 18595 18596 18597 18598 18599 18600 </td> <!-- entry_type --> 18601 18602 <td class="entry_description"> 18603 <p>The temperature of the sensor,<wbr/> sampled at the time 18604 exposure began for this frame.<wbr/></p> 18605 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 18606 somewhere close to it.<wbr/></p> 18607 </td> 18608 18609 <td class="entry_units"> 18610 Celsius 18611 </td> 18612 18613 <td class="entry_range"> 18614 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 18615 </td> 18616 18617 <td class="entry_tags"> 18618 <ul class="entry_tags"> 18619 <li><a href="#tag_FUTURE">FUTURE</a></li> 18620 </ul> 18621 </td> 18622 18623 </tr> 18624 18625 18626 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18627 <!-- end of entry --> 18628 18629 18630 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> 18631 <td class="entry_name 18632 " rowspan="3"> 18633 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point 18634 </td> 18635 <td class="entry_type"> 18636 <span class="entry_type_name">rational</span> 18637 <span class="entry_type_container">x</span> 18638 18639 <span class="entry_type_array"> 18640 3 18641 </span> 18642 <span class="entry_type_visibility"> [public]</span> 18643 18644 18645 18646 18647 18648 18649 </td> <!-- entry_type --> 18650 18651 <td class="entry_description"> 18652 <p>The estimated camera neutral color in the native sensor colorspace at 18653 the time of capture.<wbr/></p> 18654 </td> 18655 18656 <td class="entry_units"> 18657 </td> 18658 18659 <td class="entry_range"> 18660 </td> 18661 18662 <td class="entry_tags"> 18663 <ul class="entry_tags"> 18664 <li><a href="#tag_RAW">RAW</a></li> 18665 </ul> 18666 </td> 18667 18668 </tr> 18669 <tr class="entries_header"> 18670 <th class="th_details" colspan="5">Details</th> 18671 </tr> 18672 <tr class="entry_cont"> 18673 <td class="entry_details" colspan="5"> 18674 <p>This value gives the neutral color point encoded as an RGB value in the 18675 native sensor color space.<wbr/> The neutral color point indicates the 18676 currently estimated white point of the scene illumination.<wbr/> It can be 18677 used to interpolate between the provided color transforms when 18678 processing raw sensor data.<wbr/></p> 18679 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> 18680 </td> 18681 </tr> 18682 18683 18684 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18685 <!-- end of entry --> 18686 18687 18688 <tr class="entry" id="dynamic_android.sensor.noiseProfile"> 18689 <td class="entry_name 18690 " rowspan="5"> 18691 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile 18692 </td> 18693 <td class="entry_type"> 18694 <span class="entry_type_name">double</span> 18695 <span class="entry_type_container">x</span> 18696 18697 <span class="entry_type_array"> 18698 2 x CFA Channels 18699 </span> 18700 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span> 18701 18702 18703 18704 18705 <div class="entry_type_notes">Pairs of noise model coefficients</div> 18706 18707 18708 </td> <!-- entry_type --> 18709 18710 <td class="entry_description"> 18711 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p> 18712 </td> 18713 18714 <td class="entry_units"> 18715 </td> 18716 18717 <td class="entry_range"> 18718 </td> 18719 18720 <td class="entry_tags"> 18721 <ul class="entry_tags"> 18722 <li><a href="#tag_RAW">RAW</a></li> 18723 </ul> 18724 </td> 18725 18726 </tr> 18727 <tr class="entries_header"> 18728 <th class="th_details" colspan="5">Details</th> 18729 </tr> 18730 <tr class="entry_cont"> 18731 <td class="entry_details" colspan="5"> 18732 <p>This key contains two noise model coefficients for each CFA channel 18733 corresponding to the sensor amplification (S) and sensor readout 18734 noise (O).<wbr/> These are given as pairs of coefficients for each channel 18735 in the same order as channels listed for the CFA layout key 18736 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is 18737 represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where 18738 the first member of the Pair at index n is the S coefficient and the 18739 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p> 18740 <p>These coefficients are used in a two parameter noise model to describe 18741 the amount of noise present in the image for each CFA channel.<wbr/> The 18742 noise model used here is:</p> 18743 <p>N(x) = sqrt(Sx + O)</p> 18744 <p>Where x represents the recorded signal of a CFA channel normalized to 18745 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for 18746 that channel.<wbr/></p> 18747 <p>A more detailed description of the noise model can be found in the 18748 Adobe DNG specification for the NoiseProfile tag.<wbr/></p> 18749 </td> 18750 </tr> 18751 18752 <tr class="entries_header"> 18753 <th class="th_details" colspan="5">HAL Implementation Details</th> 18754 </tr> 18755 <tr class="entry_cont"> 18756 <td class="entry_details" colspan="5"> 18757 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as 18758 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients 18759 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green 18760 channel,<wbr/> etc.<wbr/></p> 18761 </td> 18762 </tr> 18763 18764 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18765 <!-- end of entry --> 18766 18767 18768 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> 18769 <td class="entry_name 18770 " rowspan="3"> 18771 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map 18772 </td> 18773 <td class="entry_type"> 18774 <span class="entry_type_name">float</span> 18775 <span class="entry_type_container">x</span> 18776 18777 <span class="entry_type_array"> 18778 hue_samples x saturation_samples x value_samples x 3 18779 </span> 18780 <span class="entry_type_visibility"> [system]</span> 18781 18782 18783 18784 18785 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> 18786 18787 18788 </td> <!-- entry_type --> 18789 18790 <td class="entry_description"> 18791 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale 18792 for each pixel.<wbr/></p> 18793 </td> 18794 18795 <td class="entry_units"> 18796 18797 The hue shift is given in degrees; saturation and value scale factors are 18798 unitless and are between 0 and 1 inclusive 18799 18800 </td> 18801 18802 <td class="entry_range"> 18803 </td> 18804 18805 <td class="entry_tags"> 18806 <ul class="entry_tags"> 18807 <li><a href="#tag_RAW">RAW</a></li> 18808 </ul> 18809 </td> 18810 18811 </tr> 18812 <tr class="entries_header"> 18813 <th class="th_details" colspan="5">Details</th> 18814 </tr> 18815 <tr class="entry_cont"> 18816 <td class="entry_details" colspan="5"> 18817 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in 18818 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> 18819 <p>Each entry of this map contains three floats corresponding to the 18820 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 18821 hue shift has the lowest index.<wbr/> The map entries are stored in the key 18822 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 18823 hue divisions in the middle loop,<wbr/> and the saturation divisions in the 18824 inner loop.<wbr/> All zero input saturation entries are required to have a 18825 value scale factor of 1.<wbr/>0.<wbr/></p> 18826 </td> 18827 </tr> 18828 18829 18830 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18831 <!-- end of entry --> 18832 18833 18834 <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> 18835 <td class="entry_name 18836 " rowspan="3"> 18837 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve 18838 </td> 18839 <td class="entry_type"> 18840 <span class="entry_type_name">float</span> 18841 <span class="entry_type_container">x</span> 18842 18843 <span class="entry_type_array"> 18844 samples x 2 18845 </span> 18846 <span class="entry_type_visibility"> [system]</span> 18847 18848 18849 18850 18851 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> 18852 18853 18854 </td> <!-- entry_type --> 18855 18856 <td class="entry_description"> 18857 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> 18858 </td> 18859 18860 <td class="entry_units"> 18861 </td> 18862 18863 <td class="entry_range"> 18864 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of 18865 <code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last 18866 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> 18867 </td> 18868 18869 <td class="entry_tags"> 18870 <ul class="entry_tags"> 18871 <li><a href="#tag_RAW">RAW</a></li> 18872 </ul> 18873 </td> 18874 18875 </tr> 18876 <tr class="entries_header"> 18877 <th class="th_details" colspan="5">Details</th> 18878 </tr> 18879 <tr class="entry_cont"> 18880 <td class="entry_details" colspan="5"> 18881 <p>This key contains a default tone curve that can be applied while 18882 processing the image as a starting point for user adjustments.<wbr/> 18883 The curve is specified as a list of value pairs in linear gamma.<wbr/> 18884 The curve is interpolated using a cubic spline.<wbr/></p> 18885 </td> 18886 </tr> 18887 18888 18889 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18890 <!-- end of entry --> 18891 18892 18893 <tr class="entry" id="dynamic_android.sensor.greenSplit"> 18894 <td class="entry_name 18895 " rowspan="5"> 18896 android.<wbr/>sensor.<wbr/>green<wbr/>Split 18897 </td> 18898 <td class="entry_type"> 18899 <span class="entry_type_name">float</span> 18900 18901 <span class="entry_type_visibility"> [public]</span> 18902 18903 18904 18905 18906 18907 18908 </td> <!-- entry_type --> 18909 18910 <td class="entry_description"> 18911 <p>The worst-case divergence between Bayer green channels.<wbr/></p> 18912 </td> 18913 18914 <td class="entry_units"> 18915 </td> 18916 18917 <td class="entry_range"> 18918 <p>>= 0</p> 18919 </td> 18920 18921 <td class="entry_tags"> 18922 <ul class="entry_tags"> 18923 <li><a href="#tag_RAW">RAW</a></li> 18924 </ul> 18925 </td> 18926 18927 </tr> 18928 <tr class="entries_header"> 18929 <th class="th_details" colspan="5">Details</th> 18930 </tr> 18931 <tr class="entry_cont"> 18932 <td class="entry_details" colspan="5"> 18933 <p>This value is an estimate of the worst case split between the 18934 Bayer green channels in the red and blue rows in the sensor color 18935 filter array.<wbr/></p> 18936 <p>The green split is calculated as follows:</p> 18937 <ol> 18938 <li>A 5x5 pixel (or larger) window W within the active sensor array is 18939 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 18940 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 18941 chosen is implementation defined,<wbr/> and should be chosen to provide a 18942 green split estimate that is both representative of the entire image 18943 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 18944 <li>The arithmetic mean of the green channels from the red 18945 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 18946 <li>The arithmetic mean of the green channels from the blue 18947 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> 18948 <li>The maximum ratio R of the two means is computed as follows: 18949 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> 18950 </ol> 18951 <p>The ratio R is the green split divergence reported for this property,<wbr/> 18952 which represents how much the green channels differ in the mosaic 18953 pattern.<wbr/> This value is typically used to determine the treatment of 18954 the green mosaic channels when demosaicing.<wbr/></p> 18955 <p>The green split value can be roughly interpreted as follows:</p> 18956 <ul> 18957 <li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> 18958 <li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software 18959 correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 18960 <li>R > 1.<wbr/>20 will require strong software correction to produce 18961 a usuable image (>20% divergence).<wbr/></li> 18962 </ul> 18963 </td> 18964 </tr> 18965 18966 <tr class="entries_header"> 18967 <th class="th_details" colspan="5">HAL Implementation Details</th> 18968 </tr> 18969 <tr class="entry_cont"> 18970 <td class="entry_details" colspan="5"> 18971 <p>The green split given may be a static value based on prior 18972 characterization of the camera sensor using the green split 18973 calculation method given here over a large,<wbr/> representative,<wbr/> sample 18974 set of images.<wbr/> Other methods of calculation that produce equivalent 18975 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> 18976 </td> 18977 </tr> 18978 18979 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18980 <!-- end of entry --> 18981 18982 18983 <tr class="entry" id="dynamic_android.sensor.testPatternData"> 18984 <td class="entry_name 18985 " rowspan="5"> 18986 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 18987 </td> 18988 <td class="entry_type"> 18989 <span class="entry_type_name">int32</span> 18990 <span class="entry_type_container">x</span> 18991 18992 <span class="entry_type_array"> 18993 4 18994 </span> 18995 <span class="entry_type_visibility"> [public]</span> 18996 18997 18998 18999 19000 19001 19002 </td> <!-- entry_type --> 19003 19004 <td class="entry_description"> 19005 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 19006 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 19007 </td> 19008 19009 <td class="entry_units"> 19010 </td> 19011 19012 <td class="entry_range"> 19013 </td> 19014 19015 <td class="entry_tags"> 19016 </td> 19017 19018 </tr> 19019 <tr class="entries_header"> 19020 <th class="th_details" colspan="5">Details</th> 19021 </tr> 19022 <tr class="entry_cont"> 19023 <td class="entry_details" colspan="5"> 19024 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 19025 The camera device then uses the most significant X bits 19026 that correspond to how many bits are in its Bayer raw sensor 19027 output.<wbr/></p> 19028 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 19029 10 most significant bits from each color channel.<wbr/></p> 19030 </td> 19031 </tr> 19032 19033 <tr class="entries_header"> 19034 <th class="th_details" colspan="5">HAL Implementation Details</th> 19035 </tr> 19036 <tr class="entry_cont"> 19037 <td class="entry_details" colspan="5"> 19038 19039 </td> 19040 </tr> 19041 19042 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19043 <!-- end of entry --> 19044 19045 19046 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 19047 <td class="entry_name 19048 " rowspan="5"> 19049 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 19050 </td> 19051 <td class="entry_type"> 19052 <span class="entry_type_name entry_type_name_enum">int32</span> 19053 19054 <span class="entry_type_visibility"> [public]</span> 19055 19056 19057 19058 19059 19060 <ul class="entry_type_enum"> 19061 <li> 19062 <span class="entry_type_enum_name">OFF</span> 19063 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 19064 device returns captures from the image sensor.<wbr/></p> 19065 <p>This is the default if the key is not set.<wbr/></p></span> 19066 </li> 19067 <li> 19068 <span class="entry_type_enum_name">SOLID_COLOR</span> 19069 <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 19070 respective color channel provided in 19071 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 19072 <p>For example:</p> 19073 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 19074 </code></pre> 19075 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 19076 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 19077 </code></pre> 19078 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels 19079 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 19080 </li> 19081 <li> 19082 <span class="entry_type_enum_name">COLOR_BARS</span> 19083 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 19084 <p>The vertical bars (left-to-right) are as follows:</p> 19085 <ul> 19086 <li>100% white</li> 19087 <li>yellow</li> 19088 <li>cyan</li> 19089 <li>green</li> 19090 <li>magenta</li> 19091 <li>red</li> 19092 <li>blue</li> 19093 <li>black</li> 19094 </ul> 19095 <p>In general the image would look like the following:</p> 19096 <pre><code>W Y C G M R B K 19097 W Y C G M R B K 19098 W Y C G M R B K 19099 W Y C G M R B K 19100 W Y C G M R B K 19101 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 19102 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 19103 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 19104 19105 (B = Blue,<wbr/> K = Black) 19106 </code></pre> 19107 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 19108 When this is not possible,<wbr/> the bar size should be rounded 19109 down to the nearest integer and the pattern can repeat 19110 on the right side.<wbr/></p> 19111 <p>Each bar's height must always take up the full sensor 19112 pixel array height.<wbr/></p> 19113 <p>Each pixel in this test pattern must be set to either 19114 0% intensity or 100% intensity.<wbr/></p></span> 19115 </li> 19116 <li> 19117 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 19118 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 19119 each bar should start at its specified color at the top,<wbr/> 19120 and fade to gray at the bottom.<wbr/></p> 19121 <p>Furthermore each bar is further subdivided into a left and 19122 right half.<wbr/> The left half should have a smooth gradient,<wbr/> 19123 and the right half should have a quantized gradient.<wbr/></p> 19124 <p>In particular,<wbr/> the right half's should consist of blocks of the 19125 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 19126 <p>The least significant bits in the quantized gradient should 19127 be copied from the most significant bits of the smooth gradient.<wbr/></p> 19128 <p>The height of each bar should always be a multiple of 128.<wbr/> 19129 When this is not the case,<wbr/> the pattern should repeat at the bottom 19130 of the image.<wbr/></p></span> 19131 </li> 19132 <li> 19133 <span class="entry_type_enum_name">PN9</span> 19134 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 19135 generated from a PN9 512-bit sequence (typically implemented 19136 in hardware with a linear feedback shift register).<wbr/></p> 19137 <p>The generator should be reset at the beginning of each frame,<wbr/> 19138 and thus each subsequent raw frame with this test pattern should 19139 be exactly the same as the last.<wbr/></p></span> 19140 </li> 19141 <li> 19142 <span class="entry_type_enum_name">CUSTOM1</span> 19143 <span class="entry_type_enum_value">256</span> 19144 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 19145 available only on this camera device are at least this numeric 19146 value.<wbr/></p> 19147 <p>All of the custom test patterns will be static 19148 (that is the raw image must not vary from frame to frame).<wbr/></p></span> 19149 </li> 19150 </ul> 19151 19152 </td> <!-- entry_type --> 19153 19154 <td class="entry_description"> 19155 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 19156 doing a real exposure from the camera.<wbr/></p> 19157 </td> 19158 19159 <td class="entry_units"> 19160 </td> 19161 19162 <td class="entry_range"> 19163 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 19164 </td> 19165 19166 <td class="entry_tags"> 19167 </td> 19168 19169 </tr> 19170 <tr class="entries_header"> 19171 <th class="th_details" colspan="5">Details</th> 19172 </tr> 19173 <tr class="entry_cont"> 19174 <td class="entry_details" colspan="5"> 19175 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 19176 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 19177 work as normal.<wbr/></p> 19178 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 19179 occur (and that the test pattern remain unmodified,<wbr/> since the flash 19180 would not actually affect it).<wbr/></p> 19181 <p>Defaults to OFF.<wbr/></p> 19182 </td> 19183 </tr> 19184 19185 <tr class="entries_header"> 19186 <th class="th_details" colspan="5">HAL Implementation Details</th> 19187 </tr> 19188 <tr class="entry_cont"> 19189 <td class="entry_details" colspan="5"> 19190 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 19191 <p>The HAL may choose to substitute test patterns from the sensor 19192 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 19193 indistinguishable to the ISP whether the data came from the 19194 sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 19195 </td> 19196 </tr> 19197 19198 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19199 <!-- end of entry --> 19200 19201 19202 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew"> 19203 <td class="entry_name 19204 " rowspan="5"> 19205 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew 19206 </td> 19207 <td class="entry_type"> 19208 <span class="entry_type_name">int64</span> 19209 19210 <span class="entry_type_visibility"> [public]</span> 19211 19212 19213 <span class="entry_type_hwlevel">[limited] </span> 19214 19215 19216 19217 19218 </td> <!-- entry_type --> 19219 19220 <td class="entry_description"> 19221 <p>Duration between the start of first row exposure 19222 and the start of last row exposure.<wbr/></p> 19223 </td> 19224 19225 <td class="entry_units"> 19226 Nanoseconds 19227 </td> 19228 19229 <td class="entry_range"> 19230 <p>>= 0 and < 19231 StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/></p> 19232 </td> 19233 19234 <td class="entry_tags"> 19235 <ul class="entry_tags"> 19236 <li><a href="#tag_V1">V1</a></li> 19237 </ul> 19238 </td> 19239 19240 </tr> 19241 <tr class="entries_header"> 19242 <th class="th_details" colspan="5">Details</th> 19243 </tr> 19244 <tr class="entry_cont"> 19245 <td class="entry_details" colspan="5"> 19246 <p>This is the exposure time skew between the first and last 19247 row exposure start times.<wbr/> The first row and the last row are 19248 the first and last rows inside of the 19249 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19250 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent 19251 to the frame readout time.<wbr/></p> 19252 </td> 19253 </tr> 19254 19255 <tr class="entries_header"> 19256 <th class="th_details" colspan="5">HAL Implementation Details</th> 19257 </tr> 19258 <tr class="entry_cont"> 19259 <td class="entry_details" colspan="5"> 19260 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin 19261 exposure at the same time.<wbr/></p> 19262 </td> 19263 </tr> 19264 19265 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19266 <!-- end of entry --> 19267 19268 19269 19270 <!-- end of kind --> 19271 </tbody> 19272 19273 <!-- end of section --> 19274 <tr><td colspan="6" id="section_shading" class="section">shading</td></tr> 19275 19276 19277 <tr><td colspan="6" class="kind">controls</td></tr> 19278 19279 <thead class="entries_header"> 19280 <tr> 19281 <th class="th_name">Property Name</th> 19282 <th class="th_type">Type</th> 19283 <th class="th_description">Description</th> 19284 <th class="th_units">Units</th> 19285 <th class="th_range">Range</th> 19286 <th class="th_tags">Tags</th> 19287 </tr> 19288 </thead> 19289 19290 <tbody> 19291 19292 19293 19294 19295 19296 19297 19298 19299 19300 19301 <tr class="entry" id="controls_android.shading.mode"> 19302 <td class="entry_name 19303 " rowspan="3"> 19304 android.<wbr/>shading.<wbr/>mode 19305 </td> 19306 <td class="entry_type"> 19307 <span class="entry_type_name entry_type_name_enum">byte</span> 19308 19309 <span class="entry_type_visibility"> [public]</span> 19310 19311 19312 <span class="entry_type_hwlevel">[full] </span> 19313 19314 19315 19316 <ul class="entry_type_enum"> 19317 <li> 19318 <span class="entry_type_enum_name">OFF</span> 19319 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 19320 </li> 19321 <li> 19322 <span class="entry_type_enum_name">FAST</span> 19323 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 19324 frame rate relative to sensor raw output</p></span> 19325 </li> 19326 <li> 19327 <span class="entry_type_enum_name">HIGH_QUALITY</span> 19328 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 19329 cost of reduced frame rate.<wbr/></p></span> 19330 </li> 19331 </ul> 19332 19333 </td> <!-- entry_type --> 19334 19335 <td class="entry_description"> 19336 <p>Quality of lens shading correction applied 19337 to the image data.<wbr/></p> 19338 </td> 19339 19340 <td class="entry_units"> 19341 </td> 19342 19343 <td class="entry_range"> 19344 </td> 19345 19346 <td class="entry_tags"> 19347 </td> 19348 19349 </tr> 19350 <tr class="entries_header"> 19351 <th class="th_details" colspan="5">Details</th> 19352 </tr> 19353 <tr class="entry_cont"> 19354 <td class="entry_details" colspan="5"> 19355 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 19356 camera device,<wbr/> and an identity lens shading map data will be provided 19357 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 19358 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 19359 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 19360 map shown below:</p> 19361 <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/> 19362 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/> 19363 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/> 19364 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/> 19365 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/> 19366 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 ] 19367 </code></pre> 19368 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 19369 device.<wbr/> Applications can request lens shading map data by setting 19370 <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 19371 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 19372 data will be the one applied by the camera device for this capture request.<wbr/></p> 19373 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 19374 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 19375 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> 19376 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 19377 to be converged before using the returned shading map data.<wbr/></p> 19378 </td> 19379 </tr> 19380 19381 19382 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19383 <!-- end of entry --> 19384 19385 19386 <tr class="entry" id="controls_android.shading.strength"> 19387 <td class="entry_name 19388 " rowspan="1"> 19389 android.<wbr/>shading.<wbr/>strength 19390 </td> 19391 <td class="entry_type"> 19392 <span class="entry_type_name">byte</span> 19393 19394 <span class="entry_type_visibility"> [system]</span> 19395 19396 19397 19398 19399 19400 19401 </td> <!-- entry_type --> 19402 19403 <td class="entry_description"> 19404 <p>Control the amount of shading correction 19405 applied to the images</p> 19406 </td> 19407 19408 <td class="entry_units"> 19409 unitless: 1-10; 10 is full shading 19410 compensation 19411 </td> 19412 19413 <td class="entry_range"> 19414 </td> 19415 19416 <td class="entry_tags"> 19417 <ul class="entry_tags"> 19418 <li><a href="#tag_FUTURE">FUTURE</a></li> 19419 </ul> 19420 </td> 19421 19422 </tr> 19423 19424 19425 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19426 <!-- end of entry --> 19427 19428 19429 19430 <!-- end of kind --> 19431 </tbody> 19432 <tr><td colspan="6" class="kind">dynamic</td></tr> 19433 19434 <thead class="entries_header"> 19435 <tr> 19436 <th class="th_name">Property Name</th> 19437 <th class="th_type">Type</th> 19438 <th class="th_description">Description</th> 19439 <th class="th_units">Units</th> 19440 <th class="th_range">Range</th> 19441 <th class="th_tags">Tags</th> 19442 </tr> 19443 </thead> 19444 19445 <tbody> 19446 19447 19448 19449 19450 19451 19452 19453 19454 19455 19456 <tr class="entry" id="dynamic_android.shading.mode"> 19457 <td class="entry_name 19458 " rowspan="3"> 19459 android.<wbr/>shading.<wbr/>mode 19460 </td> 19461 <td class="entry_type"> 19462 <span class="entry_type_name entry_type_name_enum">byte</span> 19463 19464 <span class="entry_type_visibility"> [public]</span> 19465 19466 19467 <span class="entry_type_hwlevel">[full] </span> 19468 19469 19470 19471 <ul class="entry_type_enum"> 19472 <li> 19473 <span class="entry_type_enum_name">OFF</span> 19474 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 19475 </li> 19476 <li> 19477 <span class="entry_type_enum_name">FAST</span> 19478 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 19479 frame rate relative to sensor raw output</p></span> 19480 </li> 19481 <li> 19482 <span class="entry_type_enum_name">HIGH_QUALITY</span> 19483 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 19484 cost of reduced frame rate.<wbr/></p></span> 19485 </li> 19486 </ul> 19487 19488 </td> <!-- entry_type --> 19489 19490 <td class="entry_description"> 19491 <p>Quality of lens shading correction applied 19492 to the image data.<wbr/></p> 19493 </td> 19494 19495 <td class="entry_units"> 19496 </td> 19497 19498 <td class="entry_range"> 19499 </td> 19500 19501 <td class="entry_tags"> 19502 </td> 19503 19504 </tr> 19505 <tr class="entries_header"> 19506 <th class="th_details" colspan="5">Details</th> 19507 </tr> 19508 <tr class="entry_cont"> 19509 <td class="entry_details" colspan="5"> 19510 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 19511 camera device,<wbr/> and an identity lens shading map data will be provided 19512 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 19513 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 19514 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 19515 map shown below:</p> 19516 <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/> 19517 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/> 19518 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/> 19519 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/> 19520 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/> 19521 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 ] 19522 </code></pre> 19523 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 19524 device.<wbr/> Applications can request lens shading map data by setting 19525 <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 19526 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 19527 data will be the one applied by the camera device for this capture request.<wbr/></p> 19528 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 19529 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 19530 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> 19531 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 19532 to be converged before using the returned shading map data.<wbr/></p> 19533 </td> 19534 </tr> 19535 19536 19537 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19538 <!-- end of entry --> 19539 19540 19541 19542 <!-- end of kind --> 19543 </tbody> 19544 19545 <!-- end of section --> 19546 <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr> 19547 19548 19549 <tr><td colspan="6" class="kind">controls</td></tr> 19550 19551 <thead class="entries_header"> 19552 <tr> 19553 <th class="th_name">Property Name</th> 19554 <th class="th_type">Type</th> 19555 <th class="th_description">Description</th> 19556 <th class="th_units">Units</th> 19557 <th class="th_range">Range</th> 19558 <th class="th_tags">Tags</th> 19559 </tr> 19560 </thead> 19561 19562 <tbody> 19563 19564 19565 19566 19567 19568 19569 19570 19571 19572 19573 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 19574 <td class="entry_name 19575 " rowspan="5"> 19576 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 19577 </td> 19578 <td class="entry_type"> 19579 <span class="entry_type_name entry_type_name_enum">byte</span> 19580 19581 <span class="entry_type_visibility"> [public]</span> 19582 19583 19584 <span class="entry_type_hwlevel">[legacy] </span> 19585 19586 19587 19588 <ul class="entry_type_enum"> 19589 <li> 19590 <span class="entry_type_enum_name">OFF</span> 19591 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 19592 results.<wbr/></p></span> 19593 </li> 19594 <li> 19595 <span class="entry_type_enum_name">SIMPLE</span> 19596 <span class="entry_type_enum_optional">[optional]</span> 19597 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 19598 </li> 19599 <li> 19600 <span class="entry_type_enum_name">FULL</span> 19601 <span class="entry_type_enum_optional">[optional]</span> 19602 <span class="entry_type_enum_notes"><p>Return all face 19603 metadata.<wbr/></p> 19604 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 19605 </li> 19606 </ul> 19607 19608 </td> <!-- entry_type --> 19609 19610 <td class="entry_description"> 19611 <p>Operating mode for the face detector 19612 unit.<wbr/></p> 19613 </td> 19614 19615 <td class="entry_units"> 19616 </td> 19617 19618 <td class="entry_range"> 19619 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 19620 </td> 19621 19622 <td class="entry_tags"> 19623 <ul class="entry_tags"> 19624 <li><a href="#tag_BC">BC</a></li> 19625 </ul> 19626 </td> 19627 19628 </tr> 19629 <tr class="entries_header"> 19630 <th class="th_details" colspan="5">Details</th> 19631 </tr> 19632 <tr class="entry_cont"> 19633 <td class="entry_details" colspan="5"> 19634 <p>Whether face detection is enabled,<wbr/> and whether it 19635 should output just the basic fields or the full set of 19636 fields.<wbr/></p> 19637 </td> 19638 </tr> 19639 19640 <tr class="entries_header"> 19641 <th class="th_details" colspan="5">HAL Implementation Details</th> 19642 </tr> 19643 <tr class="entry_cont"> 19644 <td class="entry_details" colspan="5"> 19645 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 19646 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 19647 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 19648 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 19649 </td> 19650 </tr> 19651 19652 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19653 <!-- end of entry --> 19654 19655 19656 <tr class="entry" id="controls_android.statistics.histogramMode"> 19657 <td class="entry_name 19658 " rowspan="1"> 19659 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 19660 </td> 19661 <td class="entry_type"> 19662 <span class="entry_type_name entry_type_name_enum">byte</span> 19663 19664 <span class="entry_type_visibility"> [system as boolean]</span> 19665 19666 19667 19668 19669 19670 <ul class="entry_type_enum"> 19671 <li> 19672 <span class="entry_type_enum_name">OFF</span> 19673 </li> 19674 <li> 19675 <span class="entry_type_enum_name">ON</span> 19676 </li> 19677 </ul> 19678 19679 </td> <!-- entry_type --> 19680 19681 <td class="entry_description"> 19682 <p>Operating mode for histogram 19683 generation</p> 19684 </td> 19685 19686 <td class="entry_units"> 19687 </td> 19688 19689 <td class="entry_range"> 19690 </td> 19691 19692 <td class="entry_tags"> 19693 <ul class="entry_tags"> 19694 <li><a href="#tag_FUTURE">FUTURE</a></li> 19695 </ul> 19696 </td> 19697 19698 </tr> 19699 19700 19701 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19702 <!-- end of entry --> 19703 19704 19705 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 19706 <td class="entry_name 19707 " rowspan="1"> 19708 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 19709 </td> 19710 <td class="entry_type"> 19711 <span class="entry_type_name entry_type_name_enum">byte</span> 19712 19713 <span class="entry_type_visibility"> [system as boolean]</span> 19714 19715 19716 19717 19718 19719 <ul class="entry_type_enum"> 19720 <li> 19721 <span class="entry_type_enum_name">OFF</span> 19722 </li> 19723 <li> 19724 <span class="entry_type_enum_name">ON</span> 19725 </li> 19726 </ul> 19727 19728 </td> <!-- entry_type --> 19729 19730 <td class="entry_description"> 19731 <p>Operating mode for sharpness map 19732 generation</p> 19733 </td> 19734 19735 <td class="entry_units"> 19736 </td> 19737 19738 <td class="entry_range"> 19739 </td> 19740 19741 <td class="entry_tags"> 19742 <ul class="entry_tags"> 19743 <li><a href="#tag_FUTURE">FUTURE</a></li> 19744 </ul> 19745 </td> 19746 19747 </tr> 19748 19749 19750 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19751 <!-- end of entry --> 19752 19753 19754 <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> 19755 <td class="entry_name 19756 " rowspan="3"> 19757 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 19758 </td> 19759 <td class="entry_type"> 19760 <span class="entry_type_name entry_type_name_enum">byte</span> 19761 19762 <span class="entry_type_visibility"> [public as boolean]</span> 19763 19764 19765 19766 19767 19768 <ul class="entry_type_enum"> 19769 <li> 19770 <span class="entry_type_enum_name">OFF</span> 19771 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 19772 </li> 19773 <li> 19774 <span class="entry_type_enum_name">ON</span> 19775 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 19776 </li> 19777 </ul> 19778 19779 </td> <!-- entry_type --> 19780 19781 <td class="entry_description"> 19782 <p>Operating mode for hot pixel map generation.<wbr/></p> 19783 </td> 19784 19785 <td class="entry_units"> 19786 </td> 19787 19788 <td class="entry_range"> 19789 <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> 19790 </td> 19791 19792 <td class="entry_tags"> 19793 <ul class="entry_tags"> 19794 <li><a href="#tag_V1">V1</a></li> 19795 <li><a href="#tag_RAW">RAW</a></li> 19796 </ul> 19797 </td> 19798 19799 </tr> 19800 <tr class="entries_header"> 19801 <th class="th_details" colspan="5">Details</th> 19802 </tr> 19803 <tr class="entry_cont"> 19804 <td class="entry_details" colspan="5"> 19805 <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/> 19806 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 19807 </td> 19808 </tr> 19809 19810 19811 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19812 <!-- end of entry --> 19813 19814 19815 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 19816 <td class="entry_name 19817 " rowspan="3"> 19818 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 19819 </td> 19820 <td class="entry_type"> 19821 <span class="entry_type_name entry_type_name_enum">byte</span> 19822 19823 <span class="entry_type_visibility"> [public]</span> 19824 19825 19826 <span class="entry_type_hwlevel">[full] </span> 19827 19828 19829 19830 <ul class="entry_type_enum"> 19831 <li> 19832 <span class="entry_type_enum_name">OFF</span> 19833 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 19834 </li> 19835 <li> 19836 <span class="entry_type_enum_name">ON</span> 19837 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 19838 </li> 19839 </ul> 19840 19841 </td> <!-- entry_type --> 19842 19843 <td class="entry_description"> 19844 <p>Whether the camera device will output the lens 19845 shading map in output result metadata.<wbr/></p> 19846 </td> 19847 19848 <td class="entry_units"> 19849 </td> 19850 19851 <td class="entry_range"> 19852 </td> 19853 19854 <td class="entry_tags"> 19855 <ul class="entry_tags"> 19856 <li><a href="#tag_RAW">RAW</a></li> 19857 </ul> 19858 </td> 19859 19860 </tr> 19861 <tr class="entries_header"> 19862 <th class="th_details" colspan="5">Details</th> 19863 </tr> 19864 <tr class="entry_cont"> 19865 <td class="entry_details" colspan="5"> 19866 <p>When set to ON,<wbr/> 19867 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 19868 the output result metadata.<wbr/></p> 19869 <p>ON is always supported on devices with the RAW capability.<wbr/></p> 19870 </td> 19871 </tr> 19872 19873 19874 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19875 <!-- end of entry --> 19876 19877 19878 19879 <!-- end of kind --> 19880 </tbody> 19881 <tr><td colspan="6" class="kind">static</td></tr> 19882 19883 <thead class="entries_header"> 19884 <tr> 19885 <th class="th_name">Property Name</th> 19886 <th class="th_type">Type</th> 19887 <th class="th_description">Description</th> 19888 <th class="th_units">Units</th> 19889 <th class="th_range">Range</th> 19890 <th class="th_tags">Tags</th> 19891 </tr> 19892 </thead> 19893 19894 <tbody> 19895 19896 19897 19898 19899 19900 19901 19902 19903 19904 19905 19906 19907 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 19908 <td class="entry_name 19909 " rowspan="3"> 19910 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 19911 </td> 19912 <td class="entry_type"> 19913 <span class="entry_type_name">byte</span> 19914 <span class="entry_type_container">x</span> 19915 19916 <span class="entry_type_array"> 19917 n 19918 </span> 19919 <span class="entry_type_visibility"> [public as enumList]</span> 19920 19921 19922 <span class="entry_type_hwlevel">[legacy] </span> 19923 19924 19925 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 19926 19927 19928 </td> <!-- entry_type --> 19929 19930 <td class="entry_description"> 19931 <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 19932 supported by this camera device.<wbr/></p> 19933 </td> 19934 19935 <td class="entry_units"> 19936 </td> 19937 19938 <td class="entry_range"> 19939 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p> 19940 </td> 19941 19942 <td class="entry_tags"> 19943 </td> 19944 19945 </tr> 19946 <tr class="entries_header"> 19947 <th class="th_details" colspan="5">Details</th> 19948 </tr> 19949 <tr class="entry_cont"> 19950 <td class="entry_details" colspan="5"> 19951 <p>OFF is always supported.<wbr/></p> 19952 </td> 19953 </tr> 19954 19955 19956 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19957 <!-- end of entry --> 19958 19959 19960 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 19961 <td class="entry_name 19962 " rowspan="1"> 19963 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 19964 </td> 19965 <td class="entry_type"> 19966 <span class="entry_type_name">int32</span> 19967 19968 <span class="entry_type_visibility"> [system]</span> 19969 19970 19971 19972 19973 19974 19975 </td> <!-- entry_type --> 19976 19977 <td class="entry_description"> 19978 <p>Number of histogram buckets 19979 supported</p> 19980 </td> 19981 19982 <td class="entry_units"> 19983 </td> 19984 19985 <td class="entry_range"> 19986 <p>>= 64</p> 19987 </td> 19988 19989 <td class="entry_tags"> 19990 <ul class="entry_tags"> 19991 <li><a href="#tag_FUTURE">FUTURE</a></li> 19992 </ul> 19993 </td> 19994 19995 </tr> 19996 19997 19998 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19999 <!-- end of entry --> 20000 20001 20002 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 20003 <td class="entry_name 20004 " rowspan="1"> 20005 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 20006 </td> 20007 <td class="entry_type"> 20008 <span class="entry_type_name">int32</span> 20009 20010 <span class="entry_type_visibility"> [public]</span> 20011 20012 20013 <span class="entry_type_hwlevel">[legacy] </span> 20014 20015 20016 20017 20018 </td> <!-- entry_type --> 20019 20020 <td class="entry_description"> 20021 <p>The maximum number of simultaneously detectable 20022 faces.<wbr/></p> 20023 </td> 20024 20025 <td class="entry_units"> 20026 </td> 20027 20028 <td class="entry_range"> 20029 <p>0 for cameras without available face detection; otherwise: 20030 <code>>=4</code> for LIMITED or FULL hwlevel devices or 20031 <code>>0</code> for LEGACY devices.<wbr/></p> 20032 </td> 20033 20034 <td class="entry_tags"> 20035 <ul class="entry_tags"> 20036 <li><a href="#tag_BC">BC</a></li> 20037 </ul> 20038 </td> 20039 20040 </tr> 20041 20042 20043 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20044 <!-- end of entry --> 20045 20046 20047 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 20048 <td class="entry_name 20049 " rowspan="1"> 20050 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 20051 </td> 20052 <td class="entry_type"> 20053 <span class="entry_type_name">int32</span> 20054 20055 <span class="entry_type_visibility"> [system]</span> 20056 20057 20058 20059 20060 20061 20062 </td> <!-- entry_type --> 20063 20064 <td class="entry_description"> 20065 <p>Maximum value possible for a histogram 20066 bucket</p> 20067 </td> 20068 20069 <td class="entry_units"> 20070 </td> 20071 20072 <td class="entry_range"> 20073 </td> 20074 20075 <td class="entry_tags"> 20076 <ul class="entry_tags"> 20077 <li><a href="#tag_FUTURE">FUTURE</a></li> 20078 </ul> 20079 </td> 20080 20081 </tr> 20082 20083 20084 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20085 <!-- end of entry --> 20086 20087 20088 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 20089 <td class="entry_name 20090 " rowspan="1"> 20091 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 20092 </td> 20093 <td class="entry_type"> 20094 <span class="entry_type_name">int32</span> 20095 20096 <span class="entry_type_visibility"> [system]</span> 20097 20098 20099 20100 20101 20102 20103 </td> <!-- entry_type --> 20104 20105 <td class="entry_description"> 20106 <p>Maximum value possible for a sharpness map 20107 region.<wbr/></p> 20108 </td> 20109 20110 <td class="entry_units"> 20111 </td> 20112 20113 <td class="entry_range"> 20114 </td> 20115 20116 <td class="entry_tags"> 20117 <ul class="entry_tags"> 20118 <li><a href="#tag_FUTURE">FUTURE</a></li> 20119 </ul> 20120 </td> 20121 20122 </tr> 20123 20124 20125 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20126 <!-- end of entry --> 20127 20128 20129 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 20130 <td class="entry_name 20131 " rowspan="1"> 20132 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 20133 </td> 20134 <td class="entry_type"> 20135 <span class="entry_type_name">int32</span> 20136 <span class="entry_type_container">x</span> 20137 20138 <span class="entry_type_array"> 20139 2 20140 </span> 20141 <span class="entry_type_visibility"> [system as size]</span> 20142 20143 20144 20145 20146 <div class="entry_type_notes">width x height</div> 20147 20148 20149 </td> <!-- entry_type --> 20150 20151 <td class="entry_description"> 20152 <p>Dimensions of the sharpness 20153 map</p> 20154 </td> 20155 20156 <td class="entry_units"> 20157 </td> 20158 20159 <td class="entry_range"> 20160 <p>Must be at least 32 x 32</p> 20161 </td> 20162 20163 <td class="entry_tags"> 20164 <ul class="entry_tags"> 20165 <li><a href="#tag_FUTURE">FUTURE</a></li> 20166 </ul> 20167 </td> 20168 20169 </tr> 20170 20171 20172 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20173 <!-- end of entry --> 20174 20175 20176 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> 20177 <td class="entry_name 20178 " rowspan="3"> 20179 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes 20180 </td> 20181 <td class="entry_type"> 20182 <span class="entry_type_name">byte</span> 20183 <span class="entry_type_container">x</span> 20184 20185 <span class="entry_type_array"> 20186 n 20187 </span> 20188 <span class="entry_type_visibility"> [public as boolean]</span> 20189 20190 20191 20192 20193 <div class="entry_type_notes">list of enums</div> 20194 20195 20196 </td> <!-- entry_type --> 20197 20198 <td class="entry_description"> 20199 <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 20200 supported by this camera device.<wbr/></p> 20201 </td> 20202 20203 <td class="entry_units"> 20204 </td> 20205 20206 <td class="entry_range"> 20207 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p> 20208 </td> 20209 20210 <td class="entry_tags"> 20211 <ul class="entry_tags"> 20212 <li><a href="#tag_V1">V1</a></li> 20213 <li><a href="#tag_RAW">RAW</a></li> 20214 </ul> 20215 </td> 20216 20217 </tr> 20218 <tr class="entries_header"> 20219 <th class="th_details" colspan="5">Details</th> 20220 </tr> 20221 <tr class="entry_cont"> 20222 <td class="entry_details" colspan="5"> 20223 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only 20224 <code>false</code>.<wbr/></p> 20225 <p>ON is always supported on devices with the RAW capability.<wbr/></p> 20226 </td> 20227 </tr> 20228 20229 20230 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20231 <!-- end of entry --> 20232 20233 20234 20235 20236 20237 20238 <!-- end of kind --> 20239 </tbody> 20240 <tr><td colspan="6" class="kind">dynamic</td></tr> 20241 20242 <thead class="entries_header"> 20243 <tr> 20244 <th class="th_name">Property Name</th> 20245 <th class="th_type">Type</th> 20246 <th class="th_description">Description</th> 20247 <th class="th_units">Units</th> 20248 <th class="th_range">Range</th> 20249 <th class="th_tags">Tags</th> 20250 </tr> 20251 </thead> 20252 20253 <tbody> 20254 20255 20256 20257 20258 20259 20260 20261 20262 20263 20264 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 20265 <td class="entry_name 20266 " rowspan="5"> 20267 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 20268 </td> 20269 <td class="entry_type"> 20270 <span class="entry_type_name entry_type_name_enum">byte</span> 20271 20272 <span class="entry_type_visibility"> [public]</span> 20273 20274 20275 <span class="entry_type_hwlevel">[legacy] </span> 20276 20277 20278 20279 <ul class="entry_type_enum"> 20280 <li> 20281 <span class="entry_type_enum_name">OFF</span> 20282 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 20283 results.<wbr/></p></span> 20284 </li> 20285 <li> 20286 <span class="entry_type_enum_name">SIMPLE</span> 20287 <span class="entry_type_enum_optional">[optional]</span> 20288 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 20289 </li> 20290 <li> 20291 <span class="entry_type_enum_name">FULL</span> 20292 <span class="entry_type_enum_optional">[optional]</span> 20293 <span class="entry_type_enum_notes"><p>Return all face 20294 metadata.<wbr/></p> 20295 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 20296 </li> 20297 </ul> 20298 20299 </td> <!-- entry_type --> 20300 20301 <td class="entry_description"> 20302 <p>Operating mode for the face detector 20303 unit.<wbr/></p> 20304 </td> 20305 20306 <td class="entry_units"> 20307 </td> 20308 20309 <td class="entry_range"> 20310 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 20311 </td> 20312 20313 <td class="entry_tags"> 20314 <ul class="entry_tags"> 20315 <li><a href="#tag_BC">BC</a></li> 20316 </ul> 20317 </td> 20318 20319 </tr> 20320 <tr class="entries_header"> 20321 <th class="th_details" colspan="5">Details</th> 20322 </tr> 20323 <tr class="entry_cont"> 20324 <td class="entry_details" colspan="5"> 20325 <p>Whether face detection is enabled,<wbr/> and whether it 20326 should output just the basic fields or the full set of 20327 fields.<wbr/></p> 20328 </td> 20329 </tr> 20330 20331 <tr class="entries_header"> 20332 <th class="th_details" colspan="5">HAL Implementation Details</th> 20333 </tr> 20334 <tr class="entry_cont"> 20335 <td class="entry_details" colspan="5"> 20336 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 20337 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 20338 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 20339 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 20340 </td> 20341 </tr> 20342 20343 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20344 <!-- end of entry --> 20345 20346 20347 <tr class="entry" id="dynamic_android.statistics.faceIds"> 20348 <td class="entry_name 20349 " rowspan="3"> 20350 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 20351 </td> 20352 <td class="entry_type"> 20353 <span class="entry_type_name">int32</span> 20354 <span class="entry_type_container">x</span> 20355 20356 <span class="entry_type_array"> 20357 n 20358 </span> 20359 <span class="entry_type_visibility"> [hidden]</span> 20360 20361 20362 <span class="entry_type_hwlevel">[legacy] </span> 20363 20364 20365 20366 20367 </td> <!-- entry_type --> 20368 20369 <td class="entry_description"> 20370 <p>List of unique IDs for detected faces.<wbr/></p> 20371 </td> 20372 20373 <td class="entry_units"> 20374 </td> 20375 20376 <td class="entry_range"> 20377 </td> 20378 20379 <td class="entry_tags"> 20380 <ul class="entry_tags"> 20381 <li><a href="#tag_BC">BC</a></li> 20382 </ul> 20383 </td> 20384 20385 </tr> 20386 <tr class="entries_header"> 20387 <th class="th_details" colspan="5">Details</th> 20388 </tr> 20389 <tr class="entry_cont"> 20390 <td class="entry_details" colspan="5"> 20391 <p>Each detected face is given a unique ID that is valid for as long as the face is visible 20392 to the camera device.<wbr/> A face that leaves the field of view and later returns may be 20393 assigned a new ID.<wbr/></p> 20394 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 20395 </td> 20396 </tr> 20397 20398 20399 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20400 <!-- end of entry --> 20401 20402 20403 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 20404 <td class="entry_name 20405 " rowspan="3"> 20406 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 20407 </td> 20408 <td class="entry_type"> 20409 <span class="entry_type_name">int32</span> 20410 <span class="entry_type_container">x</span> 20411 20412 <span class="entry_type_array"> 20413 n x 6 20414 </span> 20415 <span class="entry_type_visibility"> [hidden]</span> 20416 20417 20418 <span class="entry_type_hwlevel">[legacy] </span> 20419 20420 20421 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 20422 20423 20424 </td> <!-- entry_type --> 20425 20426 <td class="entry_description"> 20427 <p>List of landmarks for detected 20428 faces.<wbr/></p> 20429 </td> 20430 20431 <td class="entry_units"> 20432 </td> 20433 20434 <td class="entry_range"> 20435 </td> 20436 20437 <td class="entry_tags"> 20438 <ul class="entry_tags"> 20439 <li><a href="#tag_BC">BC</a></li> 20440 </ul> 20441 </td> 20442 20443 </tr> 20444 <tr class="entries_header"> 20445 <th class="th_details" colspan="5">Details</th> 20446 </tr> 20447 <tr class="entry_cont"> 20448 <td class="entry_details" colspan="5"> 20449 <p>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 20450 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 20451 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 20452 </td> 20453 </tr> 20454 20455 20456 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20457 <!-- end of entry --> 20458 20459 20460 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 20461 <td class="entry_name 20462 " rowspan="3"> 20463 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 20464 </td> 20465 <td class="entry_type"> 20466 <span class="entry_type_name">int32</span> 20467 <span class="entry_type_container">x</span> 20468 20469 <span class="entry_type_array"> 20470 n x 4 20471 </span> 20472 <span class="entry_type_visibility"> [hidden as rectangle]</span> 20473 20474 20475 <span class="entry_type_hwlevel">[legacy] </span> 20476 20477 20478 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 20479 20480 20481 </td> <!-- entry_type --> 20482 20483 <td class="entry_description"> 20484 <p>List of the bounding rectangles for detected 20485 faces.<wbr/></p> 20486 </td> 20487 20488 <td class="entry_units"> 20489 </td> 20490 20491 <td class="entry_range"> 20492 </td> 20493 20494 <td class="entry_tags"> 20495 <ul class="entry_tags"> 20496 <li><a href="#tag_BC">BC</a></li> 20497 </ul> 20498 </td> 20499 20500 </tr> 20501 <tr class="entries_header"> 20502 <th class="th_details" colspan="5">Details</th> 20503 </tr> 20504 <tr class="entry_cont"> 20505 <td class="entry_details" colspan="5"> 20506 <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 20507 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 20508 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p> 20509 </td> 20510 </tr> 20511 20512 20513 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20514 <!-- end of entry --> 20515 20516 20517 <tr class="entry" id="dynamic_android.statistics.faceScores"> 20518 <td class="entry_name 20519 " rowspan="5"> 20520 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 20521 </td> 20522 <td class="entry_type"> 20523 <span class="entry_type_name">byte</span> 20524 <span class="entry_type_container">x</span> 20525 20526 <span class="entry_type_array"> 20527 n 20528 </span> 20529 <span class="entry_type_visibility"> [hidden]</span> 20530 20531 20532 <span class="entry_type_hwlevel">[legacy] </span> 20533 20534 20535 20536 20537 </td> <!-- entry_type --> 20538 20539 <td class="entry_description"> 20540 <p>List of the face confidence scores for 20541 detected faces</p> 20542 </td> 20543 20544 <td class="entry_units"> 20545 </td> 20546 20547 <td class="entry_range"> 20548 <p>1-100</p> 20549 </td> 20550 20551 <td class="entry_tags"> 20552 <ul class="entry_tags"> 20553 <li><a href="#tag_BC">BC</a></li> 20554 </ul> 20555 </td> 20556 20557 </tr> 20558 <tr class="entries_header"> 20559 <th class="th_details" colspan="5">Details</th> 20560 </tr> 20561 <tr class="entry_cont"> 20562 <td class="entry_details" colspan="5"> 20563 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> 20564 </td> 20565 </tr> 20566 20567 <tr class="entries_header"> 20568 <th class="th_details" colspan="5">HAL Implementation Details</th> 20569 </tr> 20570 <tr class="entry_cont"> 20571 <td class="entry_details" colspan="5"> 20572 <p>The value should be meaningful (for example,<wbr/> setting 100 at 20573 all times is illegal).<wbr/></p> 20574 </td> 20575 </tr> 20576 20577 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20578 <!-- end of entry --> 20579 20580 20581 <tr class="entry" id="dynamic_android.statistics.faces"> 20582 <td class="entry_name 20583 " rowspan="3"> 20584 android.<wbr/>statistics.<wbr/>faces 20585 </td> 20586 <td class="entry_type"> 20587 <span class="entry_type_name">int32</span> 20588 <span class="entry_type_container">x</span> 20589 20590 <span class="entry_type_array"> 20591 n 20592 </span> 20593 <span class="entry_type_visibility"> [public as face]</span> 20594 20595 <span class="entry_type_synthetic">[synthetic] </span> 20596 20597 <span class="entry_type_hwlevel">[legacy] </span> 20598 20599 20600 20601 20602 </td> <!-- entry_type --> 20603 20604 <td class="entry_description"> 20605 <p>List of the faces detected through camera face detection 20606 in this capture.<wbr/></p> 20607 </td> 20608 20609 <td class="entry_units"> 20610 </td> 20611 20612 <td class="entry_range"> 20613 </td> 20614 20615 <td class="entry_tags"> 20616 </td> 20617 20618 </tr> 20619 <tr class="entries_header"> 20620 <th class="th_details" colspan="5">Details</th> 20621 </tr> 20622 <tr class="entry_cont"> 20623 <td class="entry_details" colspan="5"> 20624 <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> 20625 </td> 20626 </tr> 20627 20628 20629 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20630 <!-- end of entry --> 20631 20632 20633 <tr class="entry" id="dynamic_android.statistics.histogram"> 20634 <td class="entry_name 20635 " rowspan="3"> 20636 android.<wbr/>statistics.<wbr/>histogram 20637 </td> 20638 <td class="entry_type"> 20639 <span class="entry_type_name">int32</span> 20640 <span class="entry_type_container">x</span> 20641 20642 <span class="entry_type_array"> 20643 n x 3 20644 </span> 20645 <span class="entry_type_visibility"> [system]</span> 20646 20647 20648 20649 20650 <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> 20651 20652 20653 </td> <!-- entry_type --> 20654 20655 <td class="entry_description"> 20656 <p>A 3-channel histogram based on the raw 20657 sensor data</p> 20658 </td> 20659 20660 <td class="entry_units"> 20661 </td> 20662 20663 <td class="entry_range"> 20664 </td> 20665 20666 <td class="entry_tags"> 20667 <ul class="entry_tags"> 20668 <li><a href="#tag_FUTURE">FUTURE</a></li> 20669 </ul> 20670 </td> 20671 20672 </tr> 20673 <tr class="entries_header"> 20674 <th class="th_details" colspan="5">Details</th> 20675 </tr> 20676 <tr class="entry_cont"> 20677 <td class="entry_details" colspan="5"> 20678 <p>The k'th bucket (0-based) covers the input range 20679 (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/> 20680 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 20681 supported,<wbr/> all channels should have the same data</p> 20682 </td> 20683 </tr> 20684 20685 20686 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20687 <!-- end of entry --> 20688 20689 20690 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 20691 <td class="entry_name 20692 " rowspan="1"> 20693 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 20694 </td> 20695 <td class="entry_type"> 20696 <span class="entry_type_name entry_type_name_enum">byte</span> 20697 20698 <span class="entry_type_visibility"> [system as boolean]</span> 20699 20700 20701 20702 20703 20704 <ul class="entry_type_enum"> 20705 <li> 20706 <span class="entry_type_enum_name">OFF</span> 20707 </li> 20708 <li> 20709 <span class="entry_type_enum_name">ON</span> 20710 </li> 20711 </ul> 20712 20713 </td> <!-- entry_type --> 20714 20715 <td class="entry_description"> 20716 <p>Operating mode for histogram 20717 generation</p> 20718 </td> 20719 20720 <td class="entry_units"> 20721 </td> 20722 20723 <td class="entry_range"> 20724 </td> 20725 20726 <td class="entry_tags"> 20727 <ul class="entry_tags"> 20728 <li><a href="#tag_FUTURE">FUTURE</a></li> 20729 </ul> 20730 </td> 20731 20732 </tr> 20733 20734 20735 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20736 <!-- end of entry --> 20737 20738 20739 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 20740 <td class="entry_name 20741 " rowspan="3"> 20742 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 20743 </td> 20744 <td class="entry_type"> 20745 <span class="entry_type_name">int32</span> 20746 <span class="entry_type_container">x</span> 20747 20748 <span class="entry_type_array"> 20749 n x m x 3 20750 </span> 20751 <span class="entry_type_visibility"> [system]</span> 20752 20753 20754 20755 20756 <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> 20757 20758 20759 </td> <!-- entry_type --> 20760 20761 <td class="entry_description"> 20762 <p>A 3-channel sharpness map,<wbr/> based on the raw 20763 sensor data</p> 20764 </td> 20765 20766 <td class="entry_units"> 20767 </td> 20768 20769 <td class="entry_range"> 20770 </td> 20771 20772 <td class="entry_tags"> 20773 <ul class="entry_tags"> 20774 <li><a href="#tag_FUTURE">FUTURE</a></li> 20775 </ul> 20776 </td> 20777 20778 </tr> 20779 <tr class="entries_header"> 20780 <th class="th_details" colspan="5">Details</th> 20781 </tr> 20782 <tr class="entry_cont"> 20783 <td class="entry_details" colspan="5"> 20784 <p>If only a monochrome sharpness map is supported,<wbr/> 20785 all channels should have the same data</p> 20786 </td> 20787 </tr> 20788 20789 20790 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20791 <!-- end of entry --> 20792 20793 20794 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> 20795 <td class="entry_name 20796 " rowspan="1"> 20797 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 20798 </td> 20799 <td class="entry_type"> 20800 <span class="entry_type_name entry_type_name_enum">byte</span> 20801 20802 <span class="entry_type_visibility"> [system as boolean]</span> 20803 20804 20805 20806 20807 20808 <ul class="entry_type_enum"> 20809 <li> 20810 <span class="entry_type_enum_name">OFF</span> 20811 </li> 20812 <li> 20813 <span class="entry_type_enum_name">ON</span> 20814 </li> 20815 </ul> 20816 20817 </td> <!-- entry_type --> 20818 20819 <td class="entry_description"> 20820 <p>Operating mode for sharpness map 20821 generation</p> 20822 </td> 20823 20824 <td class="entry_units"> 20825 </td> 20826 20827 <td class="entry_range"> 20828 </td> 20829 20830 <td class="entry_tags"> 20831 <ul class="entry_tags"> 20832 <li><a href="#tag_FUTURE">FUTURE</a></li> 20833 </ul> 20834 </td> 20835 20836 </tr> 20837 20838 20839 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20840 <!-- end of entry --> 20841 20842 20843 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap"> 20844 <td class="entry_name 20845 " rowspan="3"> 20846 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map 20847 </td> 20848 <td class="entry_type"> 20849 <span class="entry_type_name">byte</span> 20850 20851 <span class="entry_type_visibility"> [public as lensShadingMap]</span> 20852 20853 20854 <span class="entry_type_hwlevel">[full] </span> 20855 20856 20857 20858 20859 </td> <!-- entry_type --> 20860 20861 <td class="entry_description"> 20862 <p>The shading map is a low-resolution floating-point map 20863 that lists the coefficients used to correct for vignetting,<wbr/> for each 20864 Bayer color channel.<wbr/></p> 20865 </td> 20866 20867 <td class="entry_units"> 20868 </td> 20869 20870 <td class="entry_range"> 20871 <p>Each gain factor is >= 1</p> 20872 </td> 20873 20874 <td class="entry_tags"> 20875 </td> 20876 20877 </tr> 20878 <tr class="entries_header"> 20879 <th class="th_details" colspan="5">Details</th> 20880 </tr> 20881 <tr class="entry_cont"> 20882 <td class="entry_details" colspan="5"> 20883 <p>The least shaded section of the image should have a gain factor 20884 of 1; all other sections should have gains above 1.<wbr/></p> 20885 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 20886 must take into account the colorCorrection settings.<wbr/></p> 20887 <p>The shading map is for the entire active pixel array,<wbr/> and is not 20888 affected by the crop region specified in the request.<wbr/> Each shading map 20889 entry is the value of the shading compensation map over a specific 20890 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 20891 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 20892 (x,<wbr/>y) (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 20893 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 20894 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 20895 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 20896 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 20897 The shading map is stored in a fully interleaved format.<wbr/></p> 20898 <p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 20899 and must be smaller than 64x64.<wbr/></p> 20900 <p>As an example,<wbr/> given a very small map defined as:</p> 20901 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ] 20902 values = 20903 [ 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/> 20904 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/> 20905 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/> 20906 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/> 20907 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/> 20908 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 ] 20909 </code></pre> 20910 <p>The low-resolution scaling map images for each channel are 20911 (displayed using nearest-neighbor interpolation):</p> 20912 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 20913 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 20914 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 20915 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 20916 <p>As a visualization only,<wbr/> inverting the full-color map to recover an 20917 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 20918 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 20919 </td> 20920 </tr> 20921 20922 20923 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20924 <!-- end of entry --> 20925 20926 20927 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 20928 <td class="entry_name 20929 " rowspan="5"> 20930 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 20931 </td> 20932 <td class="entry_type"> 20933 <span class="entry_type_name">float</span> 20934 <span class="entry_type_container">x</span> 20935 20936 <span class="entry_type_array"> 20937 4 x n x m 20938 </span> 20939 <span class="entry_type_visibility"> [hidden]</span> 20940 20941 20942 <span class="entry_type_hwlevel">[full] </span> 20943 20944 20945 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 20946 20947 20948 </td> <!-- entry_type --> 20949 20950 <td class="entry_description"> 20951 <p>The shading map is a low-resolution floating-point map 20952 that lists the coefficients used to correct for vignetting,<wbr/> for each 20953 Bayer color channel.<wbr/></p> 20954 </td> 20955 20956 <td class="entry_units"> 20957 </td> 20958 20959 <td class="entry_range"> 20960 <p>Each gain factor is >= 1</p> 20961 </td> 20962 20963 <td class="entry_tags"> 20964 </td> 20965 20966 </tr> 20967 <tr class="entries_header"> 20968 <th class="th_details" colspan="5">Details</th> 20969 </tr> 20970 <tr class="entry_cont"> 20971 <td class="entry_details" colspan="5"> 20972 <p>The least shaded section of the image should have a gain factor 20973 of 1; all other sections should have gains above 1.<wbr/></p> 20974 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 20975 must take into account the colorCorrection settings.<wbr/></p> 20976 <p>The shading map is for the entire active pixel array,<wbr/> and is not 20977 affected by the crop region specified in the request.<wbr/> Each shading map 20978 entry is the value of the shading compensation map over a specific 20979 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 20980 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 20981 (x,<wbr/>y) (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 20982 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 20983 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 20984 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 20985 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 20986 The shading map is stored in a fully interleaved format,<wbr/> and its size 20987 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> 20988 <p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 20989 and must be smaller than 64x64.<wbr/></p> 20990 <p>As an example,<wbr/> given a very small map defined as:</p> 20991 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 20992 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 20993 [ 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/> 20994 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/> 20995 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/> 20996 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/> 20997 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/> 20998 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 ] 20999 </code></pre> 21000 <p>The low-resolution scaling map images for each channel are 21001 (displayed using nearest-neighbor interpolation):</p> 21002 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 21003 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 21004 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 21005 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 21006 <p>As a visualization only,<wbr/> inverting the full-color map to recover an 21007 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 21008 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 21009 </td> 21010 </tr> 21011 21012 <tr class="entries_header"> 21013 <th class="th_details" colspan="5">HAL Implementation Details</th> 21014 </tr> 21015 <tr class="entry_cont"> 21016 <td class="entry_details" colspan="5"> 21017 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/> 21018 When AE and AWB are in AUTO modes 21019 (<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 21020 may have all the information it need to generate most accurate lens shading map.<wbr/> When 21021 AE or AWB are in manual mode 21022 (<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 21023 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid 21024 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with 21025 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p> 21026 </td> 21027 </tr> 21028 21029 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21030 <!-- end of entry --> 21031 21032 21033 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 21034 <td class="entry_name 21035 entry_name_deprecated 21036 " rowspan="3"> 21037 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 21038 </td> 21039 <td class="entry_type"> 21040 <span class="entry_type_name">float</span> 21041 <span class="entry_type_container">x</span> 21042 21043 <span class="entry_type_array"> 21044 4 21045 </span> 21046 <span class="entry_type_visibility"> [hidden]</span> 21047 21048 21049 21050 <span class="entry_type_deprecated">[deprecated] </span> 21051 21052 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 21053 21054 21055 </td> <!-- entry_type --> 21056 21057 <td class="entry_description"> 21058 <p>The best-fit color channel gains calculated 21059 by the camera device's statistics units for the current output frame.<wbr/></p> 21060 </td> 21061 21062 <td class="entry_units"> 21063 </td> 21064 21065 <td class="entry_range"> 21066 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 21067 </td> 21068 21069 <td class="entry_tags"> 21070 </td> 21071 21072 </tr> 21073 <tr class="entries_header"> 21074 <th class="th_details" colspan="5">Details</th> 21075 </tr> 21076 <tr class="entry_cont"> 21077 <td class="entry_details" colspan="5"> 21078 <p>This may be different than the gains used for this frame,<wbr/> 21079 since statistics processing on data from a new frame 21080 typically completes after the transform has already been 21081 applied to that frame.<wbr/></p> 21082 <p>The 4 channel gains are defined in Bayer domain,<wbr/> 21083 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 21084 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 21085 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 21086 </td> 21087 </tr> 21088 21089 21090 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21091 <!-- end of entry --> 21092 21093 21094 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 21095 <td class="entry_name 21096 entry_name_deprecated 21097 " rowspan="3"> 21098 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 21099 </td> 21100 <td class="entry_type"> 21101 <span class="entry_type_name">rational</span> 21102 <span class="entry_type_container">x</span> 21103 21104 <span class="entry_type_array"> 21105 3 x 3 21106 </span> 21107 <span class="entry_type_visibility"> [hidden]</span> 21108 21109 21110 21111 <span class="entry_type_deprecated">[deprecated] </span> 21112 21113 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 21114 21115 21116 </td> <!-- entry_type --> 21117 21118 <td class="entry_description"> 21119 <p>The best-fit color transform matrix estimate 21120 calculated by the camera device's statistics units for the current 21121 output frame.<wbr/></p> 21122 </td> 21123 21124 <td class="entry_units"> 21125 </td> 21126 21127 <td class="entry_range"> 21128 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 21129 </td> 21130 21131 <td class="entry_tags"> 21132 </td> 21133 21134 </tr> 21135 <tr class="entries_header"> 21136 <th class="th_details" colspan="5">Details</th> 21137 </tr> 21138 <tr class="entry_cont"> 21139 <td class="entry_details" colspan="5"> 21140 <p>The camera device will provide the estimate from its 21141 statistics unit on the white balance transforms to use 21142 for the next frame.<wbr/> These are the values the camera device believes 21143 are the best fit for the current output frame.<wbr/> This may 21144 be different than the transform used for this frame,<wbr/> since 21145 statistics processing on data from a new frame typically 21146 completes after the transform has already been applied to 21147 that frame.<wbr/></p> 21148 <p>These estimates must be provided for all frames,<wbr/> even if 21149 capture settings and color transforms are set by the application.<wbr/></p> 21150 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 21151 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 21152 </td> 21153 </tr> 21154 21155 21156 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21157 <!-- end of entry --> 21158 21159 21160 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 21161 <td class="entry_name 21162 " rowspan="3"> 21163 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 21164 </td> 21165 <td class="entry_type"> 21166 <span class="entry_type_name entry_type_name_enum">byte</span> 21167 21168 <span class="entry_type_visibility"> [public]</span> 21169 21170 21171 <span class="entry_type_hwlevel">[full] </span> 21172 21173 21174 21175 <ul class="entry_type_enum"> 21176 <li> 21177 <span class="entry_type_enum_name">NONE</span> 21178 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination 21179 in the current scene.<wbr/></p></span> 21180 </li> 21181 <li> 21182 <span class="entry_type_enum_name">50HZ</span> 21183 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz 21184 in the current scene.<wbr/></p></span> 21185 </li> 21186 <li> 21187 <span class="entry_type_enum_name">60HZ</span> 21188 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz 21189 in the current scene.<wbr/></p></span> 21190 </li> 21191 </ul> 21192 21193 </td> <!-- entry_type --> 21194 21195 <td class="entry_description"> 21196 <p>The camera device estimated scene illumination lighting 21197 frequency.<wbr/></p> 21198 </td> 21199 21200 <td class="entry_units"> 21201 </td> 21202 21203 <td class="entry_range"> 21204 </td> 21205 21206 <td class="entry_tags"> 21207 </td> 21208 21209 </tr> 21210 <tr class="entries_header"> 21211 <th class="th_details" colspan="5">Details</th> 21212 </tr> 21213 <tr class="entry_cont"> 21214 <td class="entry_details" colspan="5"> 21215 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 21216 that depends on the local utility power standards.<wbr/> This flicker must be 21217 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 21218 The camera device uses this entry to tell the application what the scene 21219 illuminant frequency is.<wbr/></p> 21220 <p>When manual exposure control is enabled 21221 (<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> == 21222 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform 21223 antibanding,<wbr/> and the application can ensure it selects 21224 exposure times that do not cause banding issues by looking 21225 into this metadata field.<wbr/> See 21226 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p> 21227 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p> 21228 </td> 21229 </tr> 21230 21231 21232 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21233 <!-- end of entry --> 21234 21235 21236 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> 21237 <td class="entry_name 21238 " rowspan="3"> 21239 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 21240 </td> 21241 <td class="entry_type"> 21242 <span class="entry_type_name entry_type_name_enum">byte</span> 21243 21244 <span class="entry_type_visibility"> [public as boolean]</span> 21245 21246 21247 21248 21249 21250 <ul class="entry_type_enum"> 21251 <li> 21252 <span class="entry_type_enum_name">OFF</span> 21253 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 21254 </li> 21255 <li> 21256 <span class="entry_type_enum_name">ON</span> 21257 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 21258 </li> 21259 </ul> 21260 21261 </td> <!-- entry_type --> 21262 21263 <td class="entry_description"> 21264 <p>Operating mode for hot pixel map generation.<wbr/></p> 21265 </td> 21266 21267 <td class="entry_units"> 21268 </td> 21269 21270 <td class="entry_range"> 21271 <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> 21272 </td> 21273 21274 <td class="entry_tags"> 21275 <ul class="entry_tags"> 21276 <li><a href="#tag_V1">V1</a></li> 21277 <li><a href="#tag_RAW">RAW</a></li> 21278 </ul> 21279 </td> 21280 21281 </tr> 21282 <tr class="entries_header"> 21283 <th class="th_details" colspan="5">Details</th> 21284 </tr> 21285 <tr class="entry_cont"> 21286 <td class="entry_details" colspan="5"> 21287 <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/> 21288 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 21289 </td> 21290 </tr> 21291 21292 21293 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21294 <!-- end of entry --> 21295 21296 21297 <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> 21298 <td class="entry_name 21299 " rowspan="5"> 21300 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map 21301 </td> 21302 <td class="entry_type"> 21303 <span class="entry_type_name">int32</span> 21304 <span class="entry_type_container">x</span> 21305 21306 <span class="entry_type_array"> 21307 2 x n 21308 </span> 21309 <span class="entry_type_visibility"> [public as point]</span> 21310 21311 21312 21313 21314 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 21315 21316 21317 </td> <!-- entry_type --> 21318 21319 <td class="entry_description"> 21320 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> 21321 </td> 21322 21323 <td class="entry_units"> 21324 </td> 21325 21326 <td class="entry_range"> 21327 <p>n <= number of pixels on the sensor.<wbr/> 21328 The <code>(x,<wbr/> y)</code> coordinates must be bounded by 21329 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 21330 </td> 21331 21332 <td class="entry_tags"> 21333 <ul class="entry_tags"> 21334 <li><a href="#tag_V1">V1</a></li> 21335 <li><a href="#tag_RAW">RAW</a></li> 21336 </ul> 21337 </td> 21338 21339 </tr> 21340 <tr class="entries_header"> 21341 <th class="th_details" colspan="5">Details</th> 21342 </tr> 21343 <tr class="entry_cont"> 21344 <td class="entry_details" colspan="5"> 21345 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and 21346 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and 21347 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 21348 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/> 21349 This may include hot pixels that lie outside of the active array 21350 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 21351 </td> 21352 </tr> 21353 21354 <tr class="entries_header"> 21355 <th class="th_details" colspan="5">HAL Implementation Details</th> 21356 </tr> 21357 <tr class="entry_cont"> 21358 <td class="entry_details" colspan="5"> 21359 <p>A hotpixel map contains the coordinates of pixels on the camera 21360 sensor that do report valid values (usually due to defects in 21361 the camera sensor).<wbr/> This includes pixels that are stuck at certain 21362 values,<wbr/> or have a response that does not accuractly encode the 21363 incoming light from the scene.<wbr/></p> 21364 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot 21365 pixels than actual pixels on the camera sensor.<wbr/></p> 21366 </td> 21367 </tr> 21368 21369 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21370 <!-- end of entry --> 21371 21372 21373 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode"> 21374 <td class="entry_name 21375 " rowspan="3"> 21376 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 21377 </td> 21378 <td class="entry_type"> 21379 <span class="entry_type_name entry_type_name_enum">byte</span> 21380 21381 <span class="entry_type_visibility"> [public]</span> 21382 21383 21384 <span class="entry_type_hwlevel">[full] </span> 21385 21386 21387 21388 <ul class="entry_type_enum"> 21389 <li> 21390 <span class="entry_type_enum_name">OFF</span> 21391 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 21392 </li> 21393 <li> 21394 <span class="entry_type_enum_name">ON</span> 21395 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 21396 </li> 21397 </ul> 21398 21399 </td> <!-- entry_type --> 21400 21401 <td class="entry_description"> 21402 <p>Whether the camera device will output the lens 21403 shading map in output result metadata.<wbr/></p> 21404 </td> 21405 21406 <td class="entry_units"> 21407 </td> 21408 21409 <td class="entry_range"> 21410 </td> 21411 21412 <td class="entry_tags"> 21413 <ul class="entry_tags"> 21414 <li><a href="#tag_RAW">RAW</a></li> 21415 </ul> 21416 </td> 21417 21418 </tr> 21419 <tr class="entries_header"> 21420 <th class="th_details" colspan="5">Details</th> 21421 </tr> 21422 <tr class="entry_cont"> 21423 <td class="entry_details" colspan="5"> 21424 <p>When set to ON,<wbr/> 21425 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 21426 the output result metadata.<wbr/></p> 21427 <p>ON is always supported on devices with the RAW capability.<wbr/></p> 21428 </td> 21429 </tr> 21430 21431 21432 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21433 <!-- end of entry --> 21434 21435 21436 21437 <!-- end of kind --> 21438 </tbody> 21439 21440 <!-- end of section --> 21441 <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr> 21442 21443 21444 <tr><td colspan="6" class="kind">controls</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="controls_android.tonemap.curveBlue"> 21469 <td class="entry_name 21470 " rowspan="3"> 21471 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 21472 </td> 21473 <td class="entry_type"> 21474 <span class="entry_type_name">float</span> 21475 <span class="entry_type_container">x</span> 21476 21477 <span class="entry_type_array"> 21478 n x 2 21479 </span> 21480 <span class="entry_type_visibility"> [hidden]</span> 21481 21482 21483 <span class="entry_type_hwlevel">[full] </span> 21484 21485 21486 <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> 21487 21488 21489 </td> <!-- entry_type --> 21490 21491 <td class="entry_description"> 21492 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 21493 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 21494 CONTRAST_<wbr/>CURVE.<wbr/></p> 21495 </td> 21496 21497 <td class="entry_units"> 21498 </td> 21499 21500 <td class="entry_range"> 21501 </td> 21502 21503 <td class="entry_tags"> 21504 </td> 21505 21506 </tr> 21507 <tr class="entries_header"> 21508 <th class="th_details" colspan="5">Details</th> 21509 </tr> 21510 <tr class="entry_cont"> 21511 <td class="entry_details" colspan="5"> 21512 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 21513 </td> 21514 </tr> 21515 21516 21517 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21518 <!-- end of entry --> 21519 21520 21521 <tr class="entry" id="controls_android.tonemap.curveGreen"> 21522 <td class="entry_name 21523 " rowspan="3"> 21524 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 21525 </td> 21526 <td class="entry_type"> 21527 <span class="entry_type_name">float</span> 21528 <span class="entry_type_container">x</span> 21529 21530 <span class="entry_type_array"> 21531 n x 2 21532 </span> 21533 <span class="entry_type_visibility"> [hidden]</span> 21534 21535 21536 <span class="entry_type_hwlevel">[full] </span> 21537 21538 21539 <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> 21540 21541 21542 </td> <!-- entry_type --> 21543 21544 <td class="entry_description"> 21545 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 21546 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 21547 CONTRAST_<wbr/>CURVE.<wbr/></p> 21548 </td> 21549 21550 <td class="entry_units"> 21551 </td> 21552 21553 <td class="entry_range"> 21554 </td> 21555 21556 <td class="entry_tags"> 21557 </td> 21558 21559 </tr> 21560 <tr class="entries_header"> 21561 <th class="th_details" colspan="5">Details</th> 21562 </tr> 21563 <tr class="entry_cont"> 21564 <td class="entry_details" colspan="5"> 21565 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 21566 </td> 21567 </tr> 21568 21569 21570 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21571 <!-- end of entry --> 21572 21573 21574 <tr class="entry" id="controls_android.tonemap.curveRed"> 21575 <td class="entry_name 21576 " rowspan="5"> 21577 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 21578 </td> 21579 <td class="entry_type"> 21580 <span class="entry_type_name">float</span> 21581 <span class="entry_type_container">x</span> 21582 21583 <span class="entry_type_array"> 21584 n x 2 21585 </span> 21586 <span class="entry_type_visibility"> [hidden]</span> 21587 21588 21589 <span class="entry_type_hwlevel">[full] </span> 21590 21591 21592 <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> 21593 21594 21595 </td> <!-- entry_type --> 21596 21597 <td class="entry_description"> 21598 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 21599 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 21600 CONTRAST_<wbr/>CURVE.<wbr/></p> 21601 </td> 21602 21603 <td class="entry_units"> 21604 </td> 21605 21606 <td class="entry_range"> 21607 <p>0-1 on both input and output coordinates,<wbr/> normalized 21608 as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 21609 </td> 21610 21611 <td class="entry_tags"> 21612 </td> 21613 21614 </tr> 21615 <tr class="entries_header"> 21616 <th class="th_details" colspan="5">Details</th> 21617 </tr> 21618 <tr class="entry_cont"> 21619 <td class="entry_details" colspan="5"> 21620 <p>Each channel's curve is defined by an array of control points:</p> 21621 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 21622 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 21623 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 21624 <p>These are sorted in order of increasing <code>Pin</code>; it is 21625 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 21626 define a complete mapping.<wbr/> For input values between control points,<wbr/> 21627 the camera device must linearly interpolate between the control 21628 points.<wbr/></p> 21629 <p>Each curve can have an independent number of points,<wbr/> and the number 21630 of points can be less than max (that is,<wbr/> the request doesn't have to 21631 always provide a curve with number of points equivalent to 21632 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 21633 <p>A few examples,<wbr/> and their corresponding graphical mappings; these 21634 only specify the red channel and the precision is limited to 4 21635 digits,<wbr/> for conciseness.<wbr/></p> 21636 <p>Linear mapping:</p> 21637 <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 ] 21638 </code></pre> 21639 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 21640 <p>Invert mapping:</p> 21641 <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 ] 21642 </code></pre> 21643 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 21644 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 21645 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 21646 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/> 21647 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/> 21648 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/> 21649 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 ] 21650 </code></pre> 21651 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 21652 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 21653 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 21654 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/> 21655 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/> 21656 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/> 21657 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 ] 21658 </code></pre> 21659 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 21660 </td> 21661 </tr> 21662 21663 <tr class="entries_header"> 21664 <th class="th_details" colspan="5">HAL Implementation Details</th> 21665 </tr> 21666 <tr class="entry_cont"> 21667 <td class="entry_details" colspan="5"> 21668 <p>For good quality of mapping,<wbr/> at least 128 control points are 21669 preferred.<wbr/></p> 21670 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 21671 control points used as are available.<wbr/></p> 21672 </td> 21673 </tr> 21674 21675 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21676 <!-- end of entry --> 21677 21678 21679 <tr class="entry" id="controls_android.tonemap.curve"> 21680 <td class="entry_name 21681 " rowspan="5"> 21682 android.<wbr/>tonemap.<wbr/>curve 21683 </td> 21684 <td class="entry_type"> 21685 <span class="entry_type_name">float</span> 21686 21687 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 21688 21689 <span class="entry_type_synthetic">[synthetic] </span> 21690 21691 <span class="entry_type_hwlevel">[full] </span> 21692 21693 21694 21695 21696 </td> <!-- entry_type --> 21697 21698 <td class="entry_description"> 21699 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 21700 is CONTRAST_<wbr/>CURVE.<wbr/></p> 21701 </td> 21702 21703 <td class="entry_units"> 21704 </td> 21705 21706 <td class="entry_range"> 21707 </td> 21708 21709 <td class="entry_tags"> 21710 </td> 21711 21712 </tr> 21713 <tr class="entries_header"> 21714 <th class="th_details" colspan="5">Details</th> 21715 </tr> 21716 <tr class="entry_cont"> 21717 <td class="entry_details" colspan="5"> 21718 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 21719 channels respectively.<wbr/> The following example uses the red channel as an 21720 example.<wbr/> The same logic applies to green and blue channel.<wbr/> 21721 Each channel's curve is defined by an array of control points:</p> 21722 <pre><code>curveRed = 21723 [ 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) ] 21724 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 21725 <p>These are sorted in order of increasing <code>Pin</code>; it is always 21726 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 21727 define a complete mapping.<wbr/> For input values between control points,<wbr/> 21728 the camera device must linearly interpolate between the control 21729 points.<wbr/></p> 21730 <p>Each curve can have an independent number of points,<wbr/> and the number 21731 of points can be less than max (that is,<wbr/> the request doesn't have to 21732 always provide a curve with number of points equivalent to 21733 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 21734 <p>A few examples,<wbr/> and their corresponding graphical mappings; these 21735 only specify the red channel and the precision is limited to 4 21736 digits,<wbr/> for conciseness.<wbr/></p> 21737 <p>Linear mapping:</p> 21738 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 21739 </code></pre> 21740 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 21741 <p>Invert mapping:</p> 21742 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 21743 </code></pre> 21744 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 21745 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 21746 <pre><code>curveRed = [ 21747 (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/> 21748 (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/> 21749 (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/> 21750 (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) ] 21751 </code></pre> 21752 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 21753 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 21754 <pre><code>curveRed = [ 21755 (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/> 21756 (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/> 21757 (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/> 21758 (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) ] 21759 </code></pre> 21760 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 21761 </td> 21762 </tr> 21763 21764 <tr class="entries_header"> 21765 <th class="th_details" colspan="5">HAL Implementation Details</th> 21766 </tr> 21767 <tr class="entry_cont"> 21768 <td class="entry_details" colspan="5"> 21769 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 21770 curveBlue entries.<wbr/></p> 21771 </td> 21772 </tr> 21773 21774 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21775 <!-- end of entry --> 21776 21777 21778 <tr class="entry" id="controls_android.tonemap.mode"> 21779 <td class="entry_name 21780 " rowspan="3"> 21781 android.<wbr/>tonemap.<wbr/>mode 21782 </td> 21783 <td class="entry_type"> 21784 <span class="entry_type_name entry_type_name_enum">byte</span> 21785 21786 <span class="entry_type_visibility"> [public]</span> 21787 21788 21789 <span class="entry_type_hwlevel">[full] </span> 21790 21791 21792 21793 <ul class="entry_type_enum"> 21794 <li> 21795 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 21796 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 21797 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 21798 <p>All color enhancement and tonemapping must be disabled,<wbr/> except 21799 for applying the tonemapping curve specified by 21800 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 21801 <p>Must not slow down frame rate relative to raw 21802 sensor output.<wbr/></p></span> 21803 </li> 21804 <li> 21805 <span class="entry_type_enum_name">FAST</span> 21806 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 21807 reducing frame rate compared to raw sensor output.<wbr/></p></span> 21808 </li> 21809 <li> 21810 <span class="entry_type_enum_name">HIGH_QUALITY</span> 21811 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 21812 the cost of reduced frame rate compared to raw sensor output.<wbr/></p></span> 21813 </li> 21814 </ul> 21815 21816 </td> <!-- entry_type --> 21817 21818 <td class="entry_description"> 21819 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 21820 </td> 21821 21822 <td class="entry_units"> 21823 </td> 21824 21825 <td class="entry_range"> 21826 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 21827 </td> 21828 21829 <td class="entry_tags"> 21830 </td> 21831 21832 </tr> 21833 <tr class="entries_header"> 21834 <th class="th_details" colspan="5">Details</th> 21835 </tr> 21836 <tr class="entry_cont"> 21837 <td class="entry_details" colspan="5"> 21838 <p>When switching to an application-defined contrast curve by setting 21839 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 21840 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 21841 mapping from input high-bit-depth pixel value to the output 21842 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 21843 and output may change depending on the camera pipeline,<wbr/> the values 21844 are specified by normalized floating-point numbers.<wbr/></p> 21845 <p>More-complex color mapping operations such as 3D color look-up 21846 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 21847 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 21848 CONTRAST_<wbr/>CURVE.<wbr/></p> 21849 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 21850 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 21851 These values are always available,<wbr/> and as close as possible to the 21852 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 21853 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 21854 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 21855 roughly the same.<wbr/></p> 21856 </td> 21857 </tr> 21858 21859 21860 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21861 <!-- end of entry --> 21862 21863 21864 21865 <!-- end of kind --> 21866 </tbody> 21867 <tr><td colspan="6" class="kind">static</td></tr> 21868 21869 <thead class="entries_header"> 21870 <tr> 21871 <th class="th_name">Property Name</th> 21872 <th class="th_type">Type</th> 21873 <th class="th_description">Description</th> 21874 <th class="th_units">Units</th> 21875 <th class="th_range">Range</th> 21876 <th class="th_tags">Tags</th> 21877 </tr> 21878 </thead> 21879 21880 <tbody> 21881 21882 21883 21884 21885 21886 21887 21888 21889 21890 21891 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 21892 <td class="entry_name 21893 " rowspan="5"> 21894 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 21895 </td> 21896 <td class="entry_type"> 21897 <span class="entry_type_name">int32</span> 21898 21899 <span class="entry_type_visibility"> [public]</span> 21900 21901 21902 <span class="entry_type_hwlevel">[full] </span> 21903 21904 21905 21906 21907 </td> <!-- entry_type --> 21908 21909 <td class="entry_description"> 21910 <p>Maximum number of supported points in the 21911 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 21912 </td> 21913 21914 <td class="entry_units"> 21915 </td> 21916 21917 <td class="entry_range"> 21918 </td> 21919 21920 <td class="entry_tags"> 21921 </td> 21922 21923 </tr> 21924 <tr class="entries_header"> 21925 <th class="th_details" colspan="5">Details</th> 21926 </tr> 21927 <tr class="entry_cont"> 21928 <td class="entry_details" colspan="5"> 21929 <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 21930 less than this maximum,<wbr/> the camera device will resample the curve to its internal 21931 representation,<wbr/> using linear interpolation.<wbr/></p> 21932 <p>The output curves in the result metadata may have a different number 21933 of points than the input curves,<wbr/> and will represent the actual 21934 hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 21935 </td> 21936 </tr> 21937 21938 <tr class="entries_header"> 21939 <th class="th_details" colspan="5">HAL Implementation Details</th> 21940 </tr> 21941 <tr class="entry_cont"> 21942 <td class="entry_details" colspan="5"> 21943 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 21944 </td> 21945 </tr> 21946 21947 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21948 <!-- end of entry --> 21949 21950 21951 <tr class="entry" id="static_android.tonemap.availableToneMapModes"> 21952 <td class="entry_name 21953 " rowspan="3"> 21954 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes 21955 </td> 21956 <td class="entry_type"> 21957 <span class="entry_type_name">byte</span> 21958 <span class="entry_type_container">x</span> 21959 21960 <span class="entry_type_array"> 21961 n 21962 </span> 21963 <span class="entry_type_visibility"> [public as enumList]</span> 21964 21965 21966 <span class="entry_type_hwlevel">[full] </span> 21967 21968 21969 <div class="entry_type_notes">list of enums</div> 21970 21971 21972 </td> <!-- entry_type --> 21973 21974 <td class="entry_description"> 21975 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera 21976 device.<wbr/></p> 21977 </td> 21978 21979 <td class="entry_units"> 21980 </td> 21981 21982 <td class="entry_range"> 21983 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p> 21984 </td> 21985 21986 <td class="entry_tags"> 21987 </td> 21988 21989 </tr> 21990 <tr class="entries_header"> 21991 <th class="th_details" colspan="5">Details</th> 21992 </tr> 21993 <tr class="entry_cont"> 21994 <td class="entry_details" colspan="5"> 21995 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list 21996 CONTRAST_<wbr/>CURVE and FAST.<wbr/> This includes all FULL level devices.<wbr/></p> 21997 </td> 21998 </tr> 21999 22000 22001 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22002 <!-- end of entry --> 22003 22004 22005 22006 <!-- end of kind --> 22007 </tbody> 22008 <tr><td colspan="6" class="kind">dynamic</td></tr> 22009 22010 <thead class="entries_header"> 22011 <tr> 22012 <th class="th_name">Property Name</th> 22013 <th class="th_type">Type</th> 22014 <th class="th_description">Description</th> 22015 <th class="th_units">Units</th> 22016 <th class="th_range">Range</th> 22017 <th class="th_tags">Tags</th> 22018 </tr> 22019 </thead> 22020 22021 <tbody> 22022 22023 22024 22025 22026 22027 22028 22029 22030 22031 22032 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 22033 <td class="entry_name 22034 " rowspan="3"> 22035 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 22036 </td> 22037 <td class="entry_type"> 22038 <span class="entry_type_name">float</span> 22039 <span class="entry_type_container">x</span> 22040 22041 <span class="entry_type_array"> 22042 n x 2 22043 </span> 22044 <span class="entry_type_visibility"> [hidden]</span> 22045 22046 22047 <span class="entry_type_hwlevel">[full] </span> 22048 22049 22050 <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> 22051 22052 22053 </td> <!-- entry_type --> 22054 22055 <td class="entry_description"> 22056 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 22057 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 22058 CONTRAST_<wbr/>CURVE.<wbr/></p> 22059 </td> 22060 22061 <td class="entry_units"> 22062 </td> 22063 22064 <td class="entry_range"> 22065 </td> 22066 22067 <td class="entry_tags"> 22068 </td> 22069 22070 </tr> 22071 <tr class="entries_header"> 22072 <th class="th_details" colspan="5">Details</th> 22073 </tr> 22074 <tr class="entry_cont"> 22075 <td class="entry_details" colspan="5"> 22076 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 22077 </td> 22078 </tr> 22079 22080 22081 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22082 <!-- end of entry --> 22083 22084 22085 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 22086 <td class="entry_name 22087 " rowspan="3"> 22088 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 22089 </td> 22090 <td class="entry_type"> 22091 <span class="entry_type_name">float</span> 22092 <span class="entry_type_container">x</span> 22093 22094 <span class="entry_type_array"> 22095 n x 2 22096 </span> 22097 <span class="entry_type_visibility"> [hidden]</span> 22098 22099 22100 <span class="entry_type_hwlevel">[full] </span> 22101 22102 22103 <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> 22104 22105 22106 </td> <!-- entry_type --> 22107 22108 <td class="entry_description"> 22109 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 22110 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 22111 CONTRAST_<wbr/>CURVE.<wbr/></p> 22112 </td> 22113 22114 <td class="entry_units"> 22115 </td> 22116 22117 <td class="entry_range"> 22118 </td> 22119 22120 <td class="entry_tags"> 22121 </td> 22122 22123 </tr> 22124 <tr class="entries_header"> 22125 <th class="th_details" colspan="5">Details</th> 22126 </tr> 22127 <tr class="entry_cont"> 22128 <td class="entry_details" colspan="5"> 22129 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 22130 </td> 22131 </tr> 22132 22133 22134 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22135 <!-- end of entry --> 22136 22137 22138 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 22139 <td class="entry_name 22140 " rowspan="5"> 22141 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 22142 </td> 22143 <td class="entry_type"> 22144 <span class="entry_type_name">float</span> 22145 <span class="entry_type_container">x</span> 22146 22147 <span class="entry_type_array"> 22148 n x 2 22149 </span> 22150 <span class="entry_type_visibility"> [hidden]</span> 22151 22152 22153 <span class="entry_type_hwlevel">[full] </span> 22154 22155 22156 <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> 22157 22158 22159 </td> <!-- entry_type --> 22160 22161 <td class="entry_description"> 22162 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 22163 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 22164 CONTRAST_<wbr/>CURVE.<wbr/></p> 22165 </td> 22166 22167 <td class="entry_units"> 22168 </td> 22169 22170 <td class="entry_range"> 22171 <p>0-1 on both input and output coordinates,<wbr/> normalized 22172 as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 22173 </td> 22174 22175 <td class="entry_tags"> 22176 </td> 22177 22178 </tr> 22179 <tr class="entries_header"> 22180 <th class="th_details" colspan="5">Details</th> 22181 </tr> 22182 <tr class="entry_cont"> 22183 <td class="entry_details" colspan="5"> 22184 <p>Each channel's curve is defined by an array of control points:</p> 22185 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 22186 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 22187 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 22188 <p>These are sorted in order of increasing <code>Pin</code>; it is 22189 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 22190 define a complete mapping.<wbr/> For input values between control points,<wbr/> 22191 the camera device must linearly interpolate between the control 22192 points.<wbr/></p> 22193 <p>Each curve can have an independent number of points,<wbr/> and the number 22194 of points can be less than max (that is,<wbr/> the request doesn't have to 22195 always provide a curve with number of points equivalent to 22196 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 22197 <p>A few examples,<wbr/> and their corresponding graphical mappings; these 22198 only specify the red channel and the precision is limited to 4 22199 digits,<wbr/> for conciseness.<wbr/></p> 22200 <p>Linear mapping:</p> 22201 <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 ] 22202 </code></pre> 22203 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 22204 <p>Invert mapping:</p> 22205 <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 ] 22206 </code></pre> 22207 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 22208 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 22209 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 22210 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/> 22211 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/> 22212 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/> 22213 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 ] 22214 </code></pre> 22215 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 22216 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 22217 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 22218 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/> 22219 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/> 22220 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/> 22221 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 ] 22222 </code></pre> 22223 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 22224 </td> 22225 </tr> 22226 22227 <tr class="entries_header"> 22228 <th class="th_details" colspan="5">HAL Implementation Details</th> 22229 </tr> 22230 <tr class="entry_cont"> 22231 <td class="entry_details" colspan="5"> 22232 <p>For good quality of mapping,<wbr/> at least 128 control points are 22233 preferred.<wbr/></p> 22234 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 22235 control points used as are available.<wbr/></p> 22236 </td> 22237 </tr> 22238 22239 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22240 <!-- end of entry --> 22241 22242 22243 <tr class="entry" id="dynamic_android.tonemap.curve"> 22244 <td class="entry_name 22245 " rowspan="5"> 22246 android.<wbr/>tonemap.<wbr/>curve 22247 </td> 22248 <td class="entry_type"> 22249 <span class="entry_type_name">float</span> 22250 22251 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 22252 22253 <span class="entry_type_synthetic">[synthetic] </span> 22254 22255 <span class="entry_type_hwlevel">[full] </span> 22256 22257 22258 22259 22260 </td> <!-- entry_type --> 22261 22262 <td class="entry_description"> 22263 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 22264 is CONTRAST_<wbr/>CURVE.<wbr/></p> 22265 </td> 22266 22267 <td class="entry_units"> 22268 </td> 22269 22270 <td class="entry_range"> 22271 </td> 22272 22273 <td class="entry_tags"> 22274 </td> 22275 22276 </tr> 22277 <tr class="entries_header"> 22278 <th class="th_details" colspan="5">Details</th> 22279 </tr> 22280 <tr class="entry_cont"> 22281 <td class="entry_details" colspan="5"> 22282 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 22283 channels respectively.<wbr/> The following example uses the red channel as an 22284 example.<wbr/> The same logic applies to green and blue channel.<wbr/> 22285 Each channel's curve is defined by an array of control points:</p> 22286 <pre><code>curveRed = 22287 [ 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) ] 22288 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 22289 <p>These are sorted in order of increasing <code>Pin</code>; it is always 22290 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 22291 define a complete mapping.<wbr/> For input values between control points,<wbr/> 22292 the camera device must linearly interpolate between the control 22293 points.<wbr/></p> 22294 <p>Each curve can have an independent number of points,<wbr/> and the number 22295 of points can be less than max (that is,<wbr/> the request doesn't have to 22296 always provide a curve with number of points equivalent to 22297 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 22298 <p>A few examples,<wbr/> and their corresponding graphical mappings; these 22299 only specify the red channel and the precision is limited to 4 22300 digits,<wbr/> for conciseness.<wbr/></p> 22301 <p>Linear mapping:</p> 22302 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 22303 </code></pre> 22304 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 22305 <p>Invert mapping:</p> 22306 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 22307 </code></pre> 22308 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 22309 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 22310 <pre><code>curveRed = [ 22311 (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/> 22312 (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/> 22313 (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/> 22314 (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) ] 22315 </code></pre> 22316 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 22317 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 22318 <pre><code>curveRed = [ 22319 (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/> 22320 (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/> 22321 (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/> 22322 (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) ] 22323 </code></pre> 22324 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 22325 </td> 22326 </tr> 22327 22328 <tr class="entries_header"> 22329 <th class="th_details" colspan="5">HAL Implementation Details</th> 22330 </tr> 22331 <tr class="entry_cont"> 22332 <td class="entry_details" colspan="5"> 22333 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 22334 curveBlue entries.<wbr/></p> 22335 </td> 22336 </tr> 22337 22338 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22339 <!-- end of entry --> 22340 22341 22342 <tr class="entry" id="dynamic_android.tonemap.mode"> 22343 <td class="entry_name 22344 " rowspan="3"> 22345 android.<wbr/>tonemap.<wbr/>mode 22346 </td> 22347 <td class="entry_type"> 22348 <span class="entry_type_name entry_type_name_enum">byte</span> 22349 22350 <span class="entry_type_visibility"> [public]</span> 22351 22352 22353 <span class="entry_type_hwlevel">[full] </span> 22354 22355 22356 22357 <ul class="entry_type_enum"> 22358 <li> 22359 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 22360 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 22361 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 22362 <p>All color enhancement and tonemapping must be disabled,<wbr/> except 22363 for applying the tonemapping curve specified by 22364 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 22365 <p>Must not slow down frame rate relative to raw 22366 sensor output.<wbr/></p></span> 22367 </li> 22368 <li> 22369 <span class="entry_type_enum_name">FAST</span> 22370 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 22371 reducing frame rate compared to raw sensor output.<wbr/></p></span> 22372 </li> 22373 <li> 22374 <span class="entry_type_enum_name">HIGH_QUALITY</span> 22375 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 22376 the cost of reduced frame rate compared to raw sensor output.<wbr/></p></span> 22377 </li> 22378 </ul> 22379 22380 </td> <!-- entry_type --> 22381 22382 <td class="entry_description"> 22383 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 22384 </td> 22385 22386 <td class="entry_units"> 22387 </td> 22388 22389 <td class="entry_range"> 22390 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 22391 </td> 22392 22393 <td class="entry_tags"> 22394 </td> 22395 22396 </tr> 22397 <tr class="entries_header"> 22398 <th class="th_details" colspan="5">Details</th> 22399 </tr> 22400 <tr class="entry_cont"> 22401 <td class="entry_details" colspan="5"> 22402 <p>When switching to an application-defined contrast curve by setting 22403 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 22404 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 22405 mapping from input high-bit-depth pixel value to the output 22406 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 22407 and output may change depending on the camera pipeline,<wbr/> the values 22408 are specified by normalized floating-point numbers.<wbr/></p> 22409 <p>More-complex color mapping operations such as 3D color look-up 22410 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 22411 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 22412 CONTRAST_<wbr/>CURVE.<wbr/></p> 22413 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 22414 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 22415 These values are always available,<wbr/> and as close as possible to the 22416 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 22417 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 22418 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 22419 roughly the same.<wbr/></p> 22420 </td> 22421 </tr> 22422 22423 22424 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22425 <!-- end of entry --> 22426 22427 22428 22429 <!-- end of kind --> 22430 </tbody> 22431 22432 <!-- end of section --> 22433 <tr><td colspan="6" id="section_led" class="section">led</td></tr> 22434 22435 22436 <tr><td colspan="6" class="kind">controls</td></tr> 22437 22438 <thead class="entries_header"> 22439 <tr> 22440 <th class="th_name">Property Name</th> 22441 <th class="th_type">Type</th> 22442 <th class="th_description">Description</th> 22443 <th class="th_units">Units</th> 22444 <th class="th_range">Range</th> 22445 <th class="th_tags">Tags</th> 22446 </tr> 22447 </thead> 22448 22449 <tbody> 22450 22451 22452 22453 22454 22455 22456 22457 22458 22459 22460 <tr class="entry" id="controls_android.led.transmit"> 22461 <td class="entry_name 22462 " rowspan="1"> 22463 android.<wbr/>led.<wbr/>transmit 22464 </td> 22465 <td class="entry_type"> 22466 <span class="entry_type_name entry_type_name_enum">byte</span> 22467 22468 <span class="entry_type_visibility"> [hidden as boolean]</span> 22469 22470 22471 22472 22473 22474 <ul class="entry_type_enum"> 22475 <li> 22476 <span class="entry_type_enum_name">OFF</span> 22477 </li> 22478 <li> 22479 <span class="entry_type_enum_name">ON</span> 22480 </li> 22481 </ul> 22482 22483 </td> <!-- entry_type --> 22484 22485 <td class="entry_description"> 22486 <p>This LED is nominally used to indicate to the user 22487 that the camera is powered on and may be streaming images back to the 22488 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 22489 disable this when video is processed locally and not transmitted to 22490 any untrusted applications.<wbr/></p> 22491 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 22492 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 22493 data is stored locally on the device.<wbr/></p> 22494 <p>The LED <em>may</em> be off if a trusted application is using the data that 22495 doesn't violate the above rules.<wbr/></p> 22496 </td> 22497 22498 <td class="entry_units"> 22499 </td> 22500 22501 <td class="entry_range"> 22502 </td> 22503 22504 <td class="entry_tags"> 22505 </td> 22506 22507 </tr> 22508 22509 22510 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22511 <!-- end of entry --> 22512 22513 22514 22515 <!-- end of kind --> 22516 </tbody> 22517 <tr><td colspan="6" class="kind">dynamic</td></tr> 22518 22519 <thead class="entries_header"> 22520 <tr> 22521 <th class="th_name">Property Name</th> 22522 <th class="th_type">Type</th> 22523 <th class="th_description">Description</th> 22524 <th class="th_units">Units</th> 22525 <th class="th_range">Range</th> 22526 <th class="th_tags">Tags</th> 22527 </tr> 22528 </thead> 22529 22530 <tbody> 22531 22532 22533 22534 22535 22536 22537 22538 22539 22540 22541 <tr class="entry" id="dynamic_android.led.transmit"> 22542 <td class="entry_name 22543 " rowspan="1"> 22544 android.<wbr/>led.<wbr/>transmit 22545 </td> 22546 <td class="entry_type"> 22547 <span class="entry_type_name entry_type_name_enum">byte</span> 22548 22549 <span class="entry_type_visibility"> [hidden as boolean]</span> 22550 22551 22552 22553 22554 22555 <ul class="entry_type_enum"> 22556 <li> 22557 <span class="entry_type_enum_name">OFF</span> 22558 </li> 22559 <li> 22560 <span class="entry_type_enum_name">ON</span> 22561 </li> 22562 </ul> 22563 22564 </td> <!-- entry_type --> 22565 22566 <td class="entry_description"> 22567 <p>This LED is nominally used to indicate to the user 22568 that the camera is powered on and may be streaming images back to the 22569 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 22570 disable this when video is processed locally and not transmitted to 22571 any untrusted applications.<wbr/></p> 22572 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 22573 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 22574 data is stored locally on the device.<wbr/></p> 22575 <p>The LED <em>may</em> be off if a trusted application is using the data that 22576 doesn't violate the above rules.<wbr/></p> 22577 </td> 22578 22579 <td class="entry_units"> 22580 </td> 22581 22582 <td class="entry_range"> 22583 </td> 22584 22585 <td class="entry_tags"> 22586 </td> 22587 22588 </tr> 22589 22590 22591 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22592 <!-- end of entry --> 22593 22594 22595 22596 <!-- end of kind --> 22597 </tbody> 22598 <tr><td colspan="6" class="kind">static</td></tr> 22599 22600 <thead class="entries_header"> 22601 <tr> 22602 <th class="th_name">Property Name</th> 22603 <th class="th_type">Type</th> 22604 <th class="th_description">Description</th> 22605 <th class="th_units">Units</th> 22606 <th class="th_range">Range</th> 22607 <th class="th_tags">Tags</th> 22608 </tr> 22609 </thead> 22610 22611 <tbody> 22612 22613 22614 22615 22616 22617 22618 22619 22620 22621 22622 <tr class="entry" id="static_android.led.availableLeds"> 22623 <td class="entry_name 22624 " rowspan="1"> 22625 android.<wbr/>led.<wbr/>available<wbr/>Leds 22626 </td> 22627 <td class="entry_type"> 22628 <span class="entry_type_name entry_type_name_enum">byte</span> 22629 <span class="entry_type_container">x</span> 22630 22631 <span class="entry_type_array"> 22632 n 22633 </span> 22634 <span class="entry_type_visibility"> [hidden]</span> 22635 22636 22637 22638 22639 22640 <ul class="entry_type_enum"> 22641 <li> 22642 <span class="entry_type_enum_name">TRANSMIT</span> 22643 <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> 22644 </li> 22645 </ul> 22646 22647 </td> <!-- entry_type --> 22648 22649 <td class="entry_description"> 22650 <p>A list of camera LEDs that are available on this system.<wbr/></p> 22651 </td> 22652 22653 <td class="entry_units"> 22654 </td> 22655 22656 <td class="entry_range"> 22657 </td> 22658 22659 <td class="entry_tags"> 22660 </td> 22661 22662 </tr> 22663 22664 22665 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22666 <!-- end of entry --> 22667 22668 22669 22670 <!-- end of kind --> 22671 </tbody> 22672 22673 <!-- end of section --> 22674 <tr><td colspan="6" id="section_info" class="section">info</td></tr> 22675 22676 22677 <tr><td colspan="6" class="kind">static</td></tr> 22678 22679 <thead class="entries_header"> 22680 <tr> 22681 <th class="th_name">Property Name</th> 22682 <th class="th_type">Type</th> 22683 <th class="th_description">Description</th> 22684 <th class="th_units">Units</th> 22685 <th class="th_range">Range</th> 22686 <th class="th_tags">Tags</th> 22687 </tr> 22688 </thead> 22689 22690 <tbody> 22691 22692 22693 22694 22695 22696 22697 22698 22699 22700 22701 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 22702 <td class="entry_name 22703 " rowspan="5"> 22704 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 22705 </td> 22706 <td class="entry_type"> 22707 <span class="entry_type_name entry_type_name_enum">byte</span> 22708 22709 <span class="entry_type_visibility"> [public]</span> 22710 22711 22712 <span class="entry_type_hwlevel">[legacy] </span> 22713 22714 22715 22716 <ul class="entry_type_enum"> 22717 <li> 22718 <span class="entry_type_enum_name">LIMITED</span> 22719 <span class="entry_type_enum_notes"><p>This camera device has only limited capabilities.<wbr/></p></span> 22720 </li> 22721 <li> 22722 <span class="entry_type_enum_name">FULL</span> 22723 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p></span> 22724 </li> 22725 <li> 22726 <span class="entry_type_enum_name">LEGACY</span> 22727 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p></span> 22728 </li> 22729 </ul> 22730 22731 </td> <!-- entry_type --> 22732 22733 <td class="entry_description"> 22734 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> 22735 </td> 22736 22737 <td class="entry_units"> 22738 </td> 22739 22740 <td class="entry_range"> 22741 </td> 22742 22743 <td class="entry_tags"> 22744 </td> 22745 22746 </tr> 22747 <tr class="entries_header"> 22748 <th class="th_details" colspan="5">Details</th> 22749 </tr> 22750 <tr class="entry_cont"> 22751 <td class="entry_details" colspan="5"> 22752 <p>Camera devices will come in three flavors: LEGACY,<wbr/> LIMITED and FULL.<wbr/></p> 22753 <p>A FULL device will support below capabilities:</p> 22754 <ul> 22755 <li>30fps operation at maximum resolution (== sensor resolution) is preferred,<wbr/> more than 22756 20fps is required,<wbr/> for at least uncompressed YUV 22757 output.<wbr/> (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains BURST_<wbr/>CAPTURE)</li> 22758 <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> 22759 <li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li> 22760 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 22761 MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li> 22762 <li>Arbitrary cropping region (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>==</code> FREEFORM)</li> 22763 <li>At least 3 processed (but not stalling) format output streams 22764 (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>>=</code> 3)</li> 22765 <li>The required stream configuration defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a></li> 22766 <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> 22767 <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> 22768 </ul> 22769 <p>A LIMITED device may have some or none of the above characteristics.<wbr/> 22770 To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 22771 <p>Some features are not part of any particular hardware level or capability and must be 22772 queried separately.<wbr/> These include:</p> 22773 <ul> 22774 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li> 22775 <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> 22776 <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> 22777 <li>Optical or electrical image stabilization 22778 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/> 22779 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li> 22780 </ul> 22781 <p>A LEGACY device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual 22782 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/></p> 22783 <p>Each higher level supports everything the lower level supports 22784 in this order: FULL <code>></code> LIMITED <code>></code> LEGACY.<wbr/></p> 22785 </td> 22786 </tr> 22787 22788 <tr class="entries_header"> 22789 <th class="th_details" colspan="5">HAL Implementation Details</th> 22790 </tr> 22791 <tr class="entry_cont"> 22792 <td class="entry_details" colspan="5"> 22793 <p>The camera 3 HAL device can implement one of two possible 22794 operational modes; limited and full.<wbr/> Full support is 22795 expected from new higher-end devices.<wbr/> Limited mode has 22796 hardware requirements roughly in line with those for a 22797 camera HAL device v1 implementation,<wbr/> and is expected from 22798 older or inexpensive devices.<wbr/> Full is a strict superset of 22799 limited,<wbr/> and they share the same essential operational flow.<wbr/></p> 22800 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 22801 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there 22802 for backwards compatibility in the <code>android.<wbr/>hardware.<wbr/>camera2</code> 22803 user-facing API only.<wbr/></p> 22804 </td> 22805 </tr> 22806 22807 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22808 <!-- end of entry --> 22809 22810 22811 22812 <!-- end of kind --> 22813 </tbody> 22814 22815 <!-- end of section --> 22816 <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr> 22817 22818 22819 <tr><td colspan="6" class="kind">controls</td></tr> 22820 22821 <thead class="entries_header"> 22822 <tr> 22823 <th class="th_name">Property Name</th> 22824 <th class="th_type">Type</th> 22825 <th class="th_description">Description</th> 22826 <th class="th_units">Units</th> 22827 <th class="th_range">Range</th> 22828 <th class="th_tags">Tags</th> 22829 </tr> 22830 </thead> 22831 22832 <tbody> 22833 22834 22835 22836 22837 22838 22839 22840 22841 22842 22843 <tr class="entry" id="controls_android.blackLevel.lock"> 22844 <td class="entry_name 22845 " rowspan="5"> 22846 android.<wbr/>black<wbr/>Level.<wbr/>lock 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"> [public as boolean]</span> 22852 22853 22854 <span class="entry_type_hwlevel">[full] </span> 22855 22856 22857 22858 <ul class="entry_type_enum"> 22859 <li> 22860 <span class="entry_type_enum_name">OFF</span> 22861 </li> 22862 <li> 22863 <span class="entry_type_enum_name">ON</span> 22864 </li> 22865 </ul> 22866 22867 </td> <!-- entry_type --> 22868 22869 <td class="entry_description"> 22870 <p>Whether black-level compensation is locked 22871 to its current values,<wbr/> or is free to vary.<wbr/></p> 22872 </td> 22873 22874 <td class="entry_units"> 22875 </td> 22876 22877 <td class="entry_range"> 22878 </td> 22879 22880 <td class="entry_tags"> 22881 <ul class="entry_tags"> 22882 <li><a href="#tag_HAL2">HAL2</a></li> 22883 </ul> 22884 </td> 22885 22886 </tr> 22887 <tr class="entries_header"> 22888 <th class="th_details" colspan="5">Details</th> 22889 </tr> 22890 <tr class="entry_cont"> 22891 <td class="entry_details" colspan="5"> 22892 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level 22893 compensation will not change until the lock is set to 22894 <code>false</code> (OFF).<wbr/></p> 22895 <p>Since changes to certain capture parameters (such as 22896 exposure time) may require resetting of black level 22897 compensation,<wbr/> the camera device must report whether setting 22898 the black level lock was successful in the output result 22899 metadata.<wbr/></p> 22900 <p>For example,<wbr/> if a sequence of requests is as follows:</p> 22901 <ul> 22902 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 22903 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 22904 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 22905 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 22906 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 22907 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 22908 </ul> 22909 <p>And the exposure change in Request 4 requires the camera 22910 device to reset the black level offsets,<wbr/> then the output 22911 result metadata is expected to be:</p> 22912 <ul> 22913 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 22914 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 22915 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 22916 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 22917 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 22918 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 22919 </ul> 22920 <p>This indicates to the application that on frame 4,<wbr/> black 22921 levels were reset due to exposure value changes,<wbr/> and pixel 22922 values may not be consistent across captures.<wbr/></p> 22923 <p>The camera device will maintain the lock to the extent 22924 possible,<wbr/> only overriding the lock to OFF when changes to 22925 other request parameters require a black level recalculation 22926 or reset.<wbr/></p> 22927 </td> 22928 </tr> 22929 22930 <tr class="entries_header"> 22931 <th class="th_details" colspan="5">HAL Implementation Details</th> 22932 </tr> 22933 <tr class="entry_cont"> 22934 <td class="entry_details" colspan="5"> 22935 <p>If for some reason black level locking is no longer possible 22936 (for example,<wbr/> the analog gain has changed,<wbr/> which forces 22937 black level offsets to be recalculated),<wbr/> then the HAL must 22938 override this request (and it must report 'OFF' when this 22939 does happen) until the next capture for which locking is 22940 possible again.<wbr/></p> 22941 </td> 22942 </tr> 22943 22944 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22945 <!-- end of entry --> 22946 22947 22948 22949 <!-- end of kind --> 22950 </tbody> 22951 <tr><td colspan="6" class="kind">dynamic</td></tr> 22952 22953 <thead class="entries_header"> 22954 <tr> 22955 <th class="th_name">Property Name</th> 22956 <th class="th_type">Type</th> 22957 <th class="th_description">Description</th> 22958 <th class="th_units">Units</th> 22959 <th class="th_range">Range</th> 22960 <th class="th_tags">Tags</th> 22961 </tr> 22962 </thead> 22963 22964 <tbody> 22965 22966 22967 22968 22969 22970 22971 22972 22973 22974 22975 <tr class="entry" id="dynamic_android.blackLevel.lock"> 22976 <td class="entry_name 22977 " rowspan="5"> 22978 android.<wbr/>black<wbr/>Level.<wbr/>lock 22979 </td> 22980 <td class="entry_type"> 22981 <span class="entry_type_name entry_type_name_enum">byte</span> 22982 22983 <span class="entry_type_visibility"> [public as boolean]</span> 22984 22985 22986 <span class="entry_type_hwlevel">[full] </span> 22987 22988 22989 22990 <ul class="entry_type_enum"> 22991 <li> 22992 <span class="entry_type_enum_name">OFF</span> 22993 </li> 22994 <li> 22995 <span class="entry_type_enum_name">ON</span> 22996 </li> 22997 </ul> 22998 22999 </td> <!-- entry_type --> 23000 23001 <td class="entry_description"> 23002 <p>Whether black-level compensation is locked 23003 to its current values,<wbr/> or is free to vary.<wbr/></p> 23004 </td> 23005 23006 <td class="entry_units"> 23007 </td> 23008 23009 <td class="entry_range"> 23010 </td> 23011 23012 <td class="entry_tags"> 23013 <ul class="entry_tags"> 23014 <li><a href="#tag_HAL2">HAL2</a></li> 23015 </ul> 23016 </td> 23017 23018 </tr> 23019 <tr class="entries_header"> 23020 <th class="th_details" colspan="5">Details</th> 23021 </tr> 23022 <tr class="entry_cont"> 23023 <td class="entry_details" colspan="5"> 23024 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 23025 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 23026 a change in other capture settings forced the camera device to 23027 perform a black level reset.<wbr/></p> 23028 </td> 23029 </tr> 23030 23031 <tr class="entries_header"> 23032 <th class="th_details" colspan="5">HAL Implementation Details</th> 23033 </tr> 23034 <tr class="entry_cont"> 23035 <td class="entry_details" colspan="5"> 23036 <p>If for some reason black level locking is no longer possible 23037 (for example,<wbr/> the analog gain has changed,<wbr/> which forces 23038 black level offsets to be recalculated),<wbr/> then the HAL must 23039 override this request (and it must report 'OFF' when this 23040 does happen) until the next capture for which locking is 23041 possible again.<wbr/></p> 23042 </td> 23043 </tr> 23044 23045 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23046 <!-- end of entry --> 23047 23048 23049 23050 <!-- end of kind --> 23051 </tbody> 23052 23053 <!-- end of section --> 23054 <tr><td colspan="6" id="section_sync" class="section">sync</td></tr> 23055 23056 23057 <tr><td colspan="6" class="kind">dynamic</td></tr> 23058 23059 <thead class="entries_header"> 23060 <tr> 23061 <th class="th_name">Property Name</th> 23062 <th class="th_type">Type</th> 23063 <th class="th_description">Description</th> 23064 <th class="th_units">Units</th> 23065 <th class="th_range">Range</th> 23066 <th class="th_tags">Tags</th> 23067 </tr> 23068 </thead> 23069 23070 <tbody> 23071 23072 23073 23074 23075 23076 23077 23078 23079 23080 23081 <tr class="entry" id="dynamic_android.sync.frameNumber"> 23082 <td class="entry_name 23083 " rowspan="5"> 23084 android.<wbr/>sync.<wbr/>frame<wbr/>Number 23085 </td> 23086 <td class="entry_type"> 23087 <span class="entry_type_name entry_type_name_enum">int64</span> 23088 23089 <span class="entry_type_visibility"> [hidden]</span> 23090 23091 23092 <span class="entry_type_hwlevel">[legacy] </span> 23093 23094 23095 23096 <ul class="entry_type_enum"> 23097 <li> 23098 <span class="entry_type_enum_name">CONVERGING</span> 23099 <span class="entry_type_enum_value">-1</span> 23100 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p> 23101 <p>Synchronization is in progress,<wbr/> and reading metadata from this 23102 result may include a mix of data that have taken effect since the 23103 last synchronization time.<wbr/></p> 23104 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 23105 this value will update to the actual frame number frame number 23106 the result is guaranteed to be synchronized to (as long as the 23107 request settings remain constant).<wbr/></p></span> 23108 </li> 23109 <li> 23110 <span class="entry_type_enum_name">UNKNOWN</span> 23111 <span class="entry_type_enum_value">-2</span> 23112 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p> 23113 <p>The result may have already converged,<wbr/> or it may be in 23114 progress.<wbr/> Reading from this result may include some mix 23115 of settings from past requests.<wbr/></p> 23116 <p>After a settings change,<wbr/> the new settings will eventually all 23117 take effect for the output buffers and results.<wbr/> However,<wbr/> this 23118 value will not change when that happens.<wbr/> Altering settings 23119 rapidly may provide outcomes using mixes of settings from recent 23120 requests.<wbr/></p> 23121 <p>This value is intended primarily for backwards compatibility with 23122 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 23123 </li> 23124 </ul> 23125 23126 </td> <!-- entry_type --> 23127 23128 <td class="entry_description"> 23129 <p>The frame number corresponding to the last request 23130 with which the output result (metadata + buffers) has been fully 23131 synchronized.<wbr/></p> 23132 </td> 23133 23134 <td class="entry_units"> 23135 </td> 23136 23137 <td class="entry_range"> 23138 <p>Either a non-negative value corresponding to a 23139 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 23140 </td> 23141 23142 <td class="entry_tags"> 23143 <ul class="entry_tags"> 23144 <li><a href="#tag_V1">V1</a></li> 23145 </ul> 23146 </td> 23147 23148 </tr> 23149 <tr class="entries_header"> 23150 <th class="th_details" colspan="5">Details</th> 23151 </tr> 23152 <tr class="entry_cont"> 23153 <td class="entry_details" colspan="5"> 23154 <p>When a request is submitted to the camera device,<wbr/> there is usually a 23155 delay of several frames before the controls get applied.<wbr/> A camera 23156 device may either choose to account for this delay by implementing a 23157 pipeline and carefully submit well-timed atomic control updates,<wbr/> or 23158 it may start streaming control changes that span over several frame 23159 boundaries.<wbr/></p> 23160 <p>In the latter case,<wbr/> whenever a request's settings change relative to 23161 the previous submitted request,<wbr/> the full set of changes may take 23162 multiple frame durations to fully take effect.<wbr/> Some settings may 23163 take effect sooner (in less frame durations) than others.<wbr/></p> 23164 <p>While a set of control changes are being propagated,<wbr/> this value 23165 will be CONVERGING.<wbr/></p> 23166 <p>Once it is fully known that a set of control changes have been 23167 finished propagating,<wbr/> and the resulting updated control settings 23168 have been read back by the camera device,<wbr/> this value will be set 23169 to a non-negative frame number (corresponding to the request to 23170 which the results have synchronized to).<wbr/></p> 23171 <p>Older camera device implementations may not have a way to detect 23172 when all camera controls have been applied,<wbr/> and will always set this 23173 value to UNKNOWN.<wbr/></p> 23174 <p>FULL capability devices will always have this value set to the 23175 frame number of the request corresponding to this result.<wbr/></p> 23176 <p><em>Further details</em>:</p> 23177 <ul> 23178 <li>Whenever a request differs from the last request,<wbr/> any future 23179 results not yet returned may have this value set to CONVERGING (this 23180 could include any in-progress captures not yet returned by the camera 23181 device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 23182 <li>Submitting a series of multiple requests that differ from the 23183 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 23184 moves the new synchronization frame to the last non-repeating 23185 request (using the smallest frame number from the contiguous list of 23186 repeating requests).<wbr/></li> 23187 <li>Submitting the same request repeatedly will not change this value 23188 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 23189 <li>When this value changes to non-negative,<wbr/> that means that all of the 23190 metadata controls from the request have been applied,<wbr/> all of the 23191 metadata controls from the camera device have been read to the 23192 updated values (into the result),<wbr/> and all of the graphics buffers 23193 corresponding to this result are also synchronized to the request.<wbr/></li> 23194 </ul> 23195 <p><em>Pipeline considerations</em>:</p> 23196 <p>Submitting a request with updated controls relative to the previously 23197 submitted requests may also invalidate the synchronization state 23198 of all the results corresponding to currently in-flight requests.<wbr/></p> 23199 <p>In other words,<wbr/> results for this current request and up to 23200 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 23201 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 23202 </td> 23203 </tr> 23204 23205 <tr class="entries_header"> 23206 <th class="th_details" colspan="5">HAL Implementation Details</th> 23207 </tr> 23208 <tr class="entry_cont"> 23209 <td class="entry_details" colspan="5"> 23210 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> 23211 is also UNKNOWN.<wbr/></p> 23212 <p>FULL capability devices should simply set this value to the 23213 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 23214 </td> 23215 </tr> 23216 23217 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23218 <!-- end of entry --> 23219 23220 23221 23222 <!-- end of kind --> 23223 </tbody> 23224 <tr><td colspan="6" class="kind">static</td></tr> 23225 23226 <thead class="entries_header"> 23227 <tr> 23228 <th class="th_name">Property Name</th> 23229 <th class="th_type">Type</th> 23230 <th class="th_description">Description</th> 23231 <th class="th_units">Units</th> 23232 <th class="th_range">Range</th> 23233 <th class="th_tags">Tags</th> 23234 </tr> 23235 </thead> 23236 23237 <tbody> 23238 23239 23240 23241 23242 23243 23244 23245 23246 23247 23248 <tr class="entry" id="static_android.sync.maxLatency"> 23249 <td class="entry_name 23250 " rowspan="5"> 23251 android.<wbr/>sync.<wbr/>max<wbr/>Latency 23252 </td> 23253 <td class="entry_type"> 23254 <span class="entry_type_name entry_type_name_enum">int32</span> 23255 23256 <span class="entry_type_visibility"> [public]</span> 23257 23258 23259 <span class="entry_type_hwlevel">[legacy] </span> 23260 23261 23262 23263 <ul class="entry_type_enum"> 23264 <li> 23265 <span class="entry_type_enum_name">PER_FRAME_CONTROL</span> 23266 <span class="entry_type_enum_value">0</span> 23267 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p> 23268 <p>Furthermore for all results,<wbr/> 23269 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CaptureResult#getFrameNumber()</code></p> 23270 <p>Changing controls over multiple requests one after another will 23271 produce results that have those controls applied atomically 23272 each frame.<wbr/></p> 23273 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 23274 </li> 23275 <li> 23276 <span class="entry_type_enum_name">UNKNOWN</span> 23277 <span class="entry_type_enum_value">-1</span> 23278 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 23279 of the past requests applied to the camera settings.<wbr/></p> 23280 <p>By submitting a series of identical requests,<wbr/> the camera device 23281 will eventually have the camera settings applied,<wbr/> but it is 23282 unknown when that exact point will be.<wbr/></p> 23283 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span> 23284 </li> 23285 </ul> 23286 23287 </td> <!-- entry_type --> 23288 23289 <td class="entry_description"> 23290 <p>The maximum number of frames that can occur after a request 23291 (different than the previous) has been submitted,<wbr/> and before the 23292 result's state becomes synchronized (by setting 23293 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> to a non-negative value).<wbr/></p> 23294 </td> 23295 23296 <td class="entry_units"> 23297 Frame counts 23298 </td> 23299 23300 <td class="entry_range"> 23301 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p> 23302 </td> 23303 23304 <td class="entry_tags"> 23305 <ul class="entry_tags"> 23306 <li><a href="#tag_V1">V1</a></li> 23307 </ul> 23308 </td> 23309 23310 </tr> 23311 <tr class="entries_header"> 23312 <th class="th_details" colspan="5">Details</th> 23313 </tr> 23314 <tr class="entry_cont"> 23315 <td class="entry_details" colspan="5"> 23316 <p>This defines the maximum distance (in number of metadata results),<wbr/> 23317 between <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> and the equivalent 23318 frame number for that result.<wbr/></p> 23319 <p>In other words this acts as an upper boundary for how many frames 23320 must occur before the camera device knows for a fact that the new 23321 submitted camera settings have been applied in outgoing frames.<wbr/></p> 23322 <p>For example if the distance was 2,<wbr/></p> 23323 <pre><code>initial request = X (repeating) 23324 request1 = X 23325 request2 = Y 23326 request3 = Y 23327 request4 = Y 23328 23329 where requestN has frameNumber N,<wbr/> and the first of the repeating 23330 initial request's has frameNumber F (and F < 1).<wbr/> 23331 23332 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 23333 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 23334 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 23335 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 23336 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 23337 23338 where resultN has frameNumber N.<wbr/> 23339 </code></pre> 23340 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 23341 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 23342 <code>4 - 2 = 2</code>.<wbr/></p> 23343 </td> 23344 </tr> 23345 23346 <tr class="entries_header"> 23347 <th class="th_details" colspan="5">HAL Implementation Details</th> 23348 </tr> 23349 <tr class="entry_cont"> 23350 <td class="entry_details" colspan="5"> 23351 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 23352 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or <code>CaptureResult#getFrameNumber()</code>.<wbr/></p> 23353 <p>LIMITED devices are strongly encouraged to use a non-negative 23354 value.<wbr/> If UNKNOWN is used here then app developers do not have a way 23355 to know when sensor settings have been applied.<wbr/></p> 23356 </td> 23357 </tr> 23358 23359 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23360 <!-- end of entry --> 23361 23362 23363 23364 <!-- end of kind --> 23365 </tbody> 23366 23367 <!-- end of section --> 23368 <!-- </namespace> --> 23369 </table> 23370 23371 <div class="tags" id="tag_index"> 23372 <h2>Tags</h2> 23373 <ul> 23374 <li id="tag_BC">BC - 23375 Needed for backwards compatibility with old Java API 23376 23377 <ul class="tags_entries"> 23378 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 23379 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 23380 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 23381 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 23382 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 23383 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 23384 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 23385 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 23386 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 23387 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 23388 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 23389 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 23390 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 23391 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 23392 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 23393 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 23394 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 23395 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 23396 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li> 23397 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 23398 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li> 23399 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 23400 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 23401 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 23402 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 23403 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 23404 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 23405 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 23406 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 23407 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 23408 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 23409 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 23410 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 23411 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 23412 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 23413 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 23414 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 23415 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 23416 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 23417 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 23418 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 23419 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 23420 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 23421 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 23422 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 23423 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 23424 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 23425 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 23426 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 23427 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 23428 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 23429 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 23430 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 23431 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 23432 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 23433 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 23434 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 23435 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 23436 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li> 23437 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 23438 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 23439 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 23440 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 23441 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 23442 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 23443 </ul> 23444 </li> <!-- tag_BC --> 23445 <li id="tag_V1">V1 - 23446 New features for first camera 2 release (API1) 23447 23448 <ul class="tags_entries"> 23449 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li> 23450 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li> 23451 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 23452 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 23453 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 23454 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 23455 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 23456 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 23457 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 23458 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 23459 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 23460 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 23461 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 23462 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 23463 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 23464 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 23465 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 23466 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 23467 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 23468 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 23469 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 23470 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 23471 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> 23472 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> 23473 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 23474 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 23475 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 23476 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 23477 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 23478 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 23479 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 23480 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li> 23481 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 23482 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li> 23483 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 23484 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 23485 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 23486 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 23487 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 23488 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 23489 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 23490 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 23491 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 23492 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 23493 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 23494 </ul> 23495 </li> <!-- tag_V1 --> 23496 <li id="tag_RAW">RAW - 23497 Needed for useful RAW image processing and DNG file support 23498 23499 <ul class="tags_entries"> 23500 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 23501 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 23502 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 23503 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 23504 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 23505 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 23506 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 23507 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li> 23508 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> 23509 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> 23510 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> 23511 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> 23512 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> 23513 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> 23514 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 23515 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> 23516 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> 23517 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li> 23518 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> 23519 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> 23520 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> 23521 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 23522 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 23523 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 23524 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li> 23525 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 23526 </ul> 23527 </li> <!-- tag_RAW --> 23528 <li id="tag_HAL2">HAL2 - 23529 Entry is only used by camera device HAL 2.x 23530 23531 <ul class="tags_entries"> 23532 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 23533 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 23534 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 23535 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 23536 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 23537 </ul> 23538 </li> <!-- tag_HAL2 --> 23539 <li id="tag_FULL">FULL - 23540 Entry is required for full hardware level devices, and optional for other hardware levels 23541 23542 <ul class="tags_entries"> 23543 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 23544 </ul> 23545 </li> <!-- tag_FULL --> 23546 <li id="tag_FUTURE">FUTURE - 23547 Entry is under-specified and is not required for now. This is for book-keeping purpose, 23548 do not implement or use it, it may be revised for future. 23549 23550 <ul class="tags_entries"> 23551 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 23552 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> 23553 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 23554 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 23555 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 23556 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 23557 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 23558 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li> 23559 <li><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a> (static)</li> 23560 <li><a href="#static_android.lens.position">android.lens.position</a> (static)</li> 23561 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li> 23562 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li> 23563 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 23564 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 23565 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 23566 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 23567 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 23568 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li> 23569 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li> 23570 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li> 23571 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li> 23572 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 23573 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 23574 </ul> 23575 </li> <!-- tag_FUTURE --> 23576 </ul> 23577 </div> 23578 23579 [ <a href="#">top</a> ] 23580 23581 </body> 23582 </html> 23583