docs.html revision 59793d75a462bb7a4ac2a7b94da284e3e8516a88
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_deprecated { font-weight: bolder; color: #4D4D4D; } 64 .entry_type_enum_name { font-family: monospace; font-weight: bolder; } 65 .entry_type_enum_notes:before { content:" - " } 66 .entry_type_enum_notes>p:first-child { display:inline; } 67 .entry_type_enum_value:before { content:" = " } 68 .entry_type_enum_value { font-family: monospace; } 69 .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; } 70 .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;} 71 .entry_range_deprecated { font-weight: bolder; } 72 73 /* Entry tags flair */ 74 .entry_tags ul { list-style-type: none; } 75 76 /* Entry details (full docs) flair */ 77 .entry_details_header { font-weight: bold; background-color: #dddddd; 78 text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; } 79 80 /* Entry spacer flair */ 81 .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; } 82 83 /* TODO: generate abbr element for each tag link? */ 84 /* TODO for each x.y.z try to link it to the entry */ 85 86 </style> 87 88 <style> 89 90 { 91 /* broken... 92 supposedly there is a bug in chrome that it lays out tables before 93 it knows its being printed, so the page-break-* styles are ignored 94 */ 95 tr { page-break-after: always; page-break-inside: avoid; } 96 } 97 98 </style> 99</head> 100 101 102 103<body> 104 <h1>Android Camera HAL3.2 Properties</h1> 105 106 107 <h2>Table of Contents</h2> 108 <ul class="toc"> 109 <li><a href="#tag_index" class="toc_section_header">Tags</a></li> 110 <li> 111 <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span> 112 <ul class="toc_section"> 113 <li> 114 <span class="toc_kind_header">controls</span> 115 <ul class="toc_section"> 116 <li 117 ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 118 <li 119 ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 120 <li 121 ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 122 </ul> 123 </li> 124 <li> 125 <span class="toc_kind_header">dynamic</span> 126 <ul class="toc_section"> 127 <li 128 ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 129 <li 130 ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 131 <li 132 ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 133 </ul> 134 </li> 135 </ul> <!-- toc_section --> 136 </li> 137 <li> 138 <span class="toc_section_header"><a href="#section_control">control</a></span> 139 <ul class="toc_section"> 140 <li> 141 <span class="toc_kind_header">controls</span> 142 <ul class="toc_section"> 143 <li 144 ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 145 <li 146 ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 147 <li 148 ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li> 149 <li 150 ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li> 151 <li 152 ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li> 153 <li 154 ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 155 <li 156 ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 157 <li 158 ><a href="#controls_android.control.afMode">android.control.afMode</a></li> 159 <li 160 ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li> 161 <li 162 ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li> 163 <li 164 ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li> 165 <li 166 ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li> 167 <li 168 ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li> 169 <li 170 ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li> 171 <li 172 ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li> 173 <li 174 ><a href="#controls_android.control.mode">android.control.mode</a></li> 175 <li 176 ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li> 177 <li 178 ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 179 </ul> 180 </li> 181 <li> 182 <span class="toc_kind_header">static</span> 183 <ul class="toc_section"> 184 <li 185 ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li> 186 <li 187 ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li> 188 <li 189 ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li> 190 <li 191 ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li> 192 <li 193 ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li> 194 <li 195 ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li> 196 <li 197 ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li> 198 <li 199 ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li> 200 <li 201 ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li> 202 <li 203 ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li> 204 <li 205 ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li> 206 <li 207 ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li> 208 <li 209 ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li> 210 <li 211 ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li> 212 <li 213 ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li> 214 </ul> 215 </li> 216 <li> 217 <span class="toc_kind_header">dynamic</span> 218 <ul class="toc_section"> 219 <li 220 class="toc_deprecated" 221 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li> 222 <li 223 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 224 <li 225 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 226 <li 227 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li> 228 <li 229 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li> 230 <li 231 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li> 232 <li 233 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 234 <li 235 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 236 <li 237 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li> 238 <li 239 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li> 240 <li 241 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li> 242 <li 243 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li> 244 <li 245 ><a href="#dynamic_android.control.afState">android.control.afState</a></li> 246 <li 247 class="toc_deprecated" 248 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li> 249 <li 250 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li> 251 <li 252 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li> 253 <li 254 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li> 255 <li 256 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li> 257 <li 258 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li> 259 <li 260 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li> 261 <li 262 ><a href="#dynamic_android.control.mode">android.control.mode</a></li> 263 <li 264 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li> 265 <li 266 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 267 </ul> 268 </li> 269 </ul> <!-- toc_section --> 270 </li> 271 <li> 272 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span> 273 <ul class="toc_section"> 274 <li> 275 <span class="toc_kind_header">controls</span> 276 <ul class="toc_section"> 277 <li 278 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li> 279 </ul> 280 </li> 281 </ul> <!-- toc_section --> 282 </li> 283 <li> 284 <span class="toc_section_header"><a href="#section_edge">edge</a></span> 285 <ul class="toc_section"> 286 <li> 287 <span class="toc_kind_header">controls</span> 288 <ul class="toc_section"> 289 <li 290 ><a href="#controls_android.edge.mode">android.edge.mode</a></li> 291 <li 292 ><a href="#controls_android.edge.strength">android.edge.strength</a></li> 293 </ul> 294 </li> 295 <li> 296 <span class="toc_kind_header">static</span> 297 <ul class="toc_section"> 298 <li 299 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li> 300 </ul> 301 </li> 302 <li> 303 <span class="toc_kind_header">dynamic</span> 304 <ul class="toc_section"> 305 <li 306 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li> 307 </ul> 308 </li> 309 </ul> <!-- toc_section --> 310 </li> 311 <li> 312 <span class="toc_section_header"><a href="#section_flash">flash</a></span> 313 <ul class="toc_section"> 314 <li> 315 <span class="toc_kind_header">controls</span> 316 <ul class="toc_section"> 317 <li 318 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li> 319 <li 320 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li> 321 <li 322 ><a href="#controls_android.flash.mode">android.flash.mode</a></li> 323 </ul> 324 </li> 325 <li> 326 <span class="toc_kind_header">static</span> 327 <ul class="toc_section"> 328 329 <li 330 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li> 331 <li 332 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li> 333 334 <li 335 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li> 336 <li 337 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li> 338 </ul> 339 </li> 340 <li> 341 <span class="toc_kind_header">dynamic</span> 342 <ul class="toc_section"> 343 <li 344 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li> 345 <li 346 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li> 347 <li 348 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li> 349 <li 350 ><a href="#dynamic_android.flash.state">android.flash.state</a></li> 351 </ul> 352 </li> 353 </ul> <!-- toc_section --> 354 </li> 355 <li> 356 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span> 357 <ul class="toc_section"> 358 <li> 359 <span class="toc_kind_header">controls</span> 360 <ul class="toc_section"> 361 <li 362 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li> 363 </ul> 364 </li> 365 <li> 366 <span class="toc_kind_header">static</span> 367 <ul class="toc_section"> 368 <li 369 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li> 370 </ul> 371 </li> 372 <li> 373 <span class="toc_kind_header">dynamic</span> 374 <ul class="toc_section"> 375 <li 376 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li> 377 </ul> 378 </li> 379 </ul> <!-- toc_section --> 380 </li> 381 <li> 382 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span> 383 <ul class="toc_section"> 384 <li> 385 <span class="toc_kind_header">controls</span> 386 <ul class="toc_section"> 387 <li 388 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 389 <li 390 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 391 <li 392 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 393 <li 394 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 395 <li 396 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li> 397 <li 398 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li> 399 <li 400 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 401 <li 402 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 403 </ul> 404 </li> 405 <li> 406 <span class="toc_kind_header">static</span> 407 <ul class="toc_section"> 408 <li 409 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li> 410 <li 411 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li> 412 </ul> 413 </li> 414 <li> 415 <span class="toc_kind_header">dynamic</span> 416 <ul class="toc_section"> 417 <li 418 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 419 <li 420 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 421 <li 422 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 423 <li 424 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 425 <li 426 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li> 427 <li 428 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li> 429 <li 430 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li> 431 <li 432 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 433 <li 434 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 435 </ul> 436 </li> 437 </ul> <!-- toc_section --> 438 </li> 439 <li> 440 <span class="toc_section_header"><a href="#section_lens">lens</a></span> 441 <ul class="toc_section"> 442 <li> 443 <span class="toc_kind_header">controls</span> 444 <ul class="toc_section"> 445 <li 446 ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li> 447 <li 448 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li> 449 <li 450 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li> 451 <li 452 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li> 453 <li 454 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 455 </ul> 456 </li> 457 <li> 458 <span class="toc_kind_header">static</span> 459 <ul class="toc_section"> 460 461 <li 462 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li> 463 <li 464 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li> 465 <li 466 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li> 467 <li 468 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li> 469 <li 470 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li> 471 <li 472 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li> 473 <li 474 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li> 475 <li 476 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li> 477 478 <li 479 ><a href="#static_android.lens.facing">android.lens.facing</a></li> 480 <li 481 ><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a></li> 482 <li 483 ><a href="#static_android.lens.position">android.lens.position</a></li> 484 </ul> 485 </li> 486 <li> 487 <span class="toc_kind_header">dynamic</span> 488 <ul class="toc_section"> 489 <li 490 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li> 491 <li 492 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li> 493 <li 494 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li> 495 <li 496 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li> 497 <li 498 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li> 499 <li 500 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 501 <li 502 ><a href="#dynamic_android.lens.state">android.lens.state</a></li> 503 </ul> 504 </li> 505 </ul> <!-- toc_section --> 506 </li> 507 <li> 508 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span> 509 <ul class="toc_section"> 510 <li> 511 <span class="toc_kind_header">controls</span> 512 <ul class="toc_section"> 513 <li 514 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 515 <li 516 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li> 517 </ul> 518 </li> 519 <li> 520 <span class="toc_kind_header">static</span> 521 <ul class="toc_section"> 522 <li 523 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li> 524 </ul> 525 </li> 526 <li> 527 <span class="toc_kind_header">dynamic</span> 528 <ul class="toc_section"> 529 <li 530 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 531 </ul> 532 </li> 533 </ul> <!-- toc_section --> 534 </li> 535 <li> 536 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span> 537 <ul class="toc_section"> 538 <li> 539 <span class="toc_kind_header">static</span> 540 <ul class="toc_section"> 541 <li 542 class="toc_deprecated" 543 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li> 544 <li 545 class="toc_deprecated" 546 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li> 547 <li 548 class="toc_deprecated" 549 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li> 550 <li 551 class="toc_deprecated" 552 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li> 553 </ul> 554 </li> 555 <li> 556 <span class="toc_kind_header">dynamic</span> 557 <ul class="toc_section"> 558 <li 559 class="toc_deprecated" 560 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li> 561 </ul> 562 </li> 563 </ul> <!-- toc_section --> 564 </li> 565 <li> 566 <span class="toc_section_header"><a href="#section_request">request</a></span> 567 <ul class="toc_section"> 568 <li> 569 <span class="toc_kind_header">controls</span> 570 <ul class="toc_section"> 571 <li 572 class="toc_deprecated" 573 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li> 574 <li 575 ><a href="#controls_android.request.id">android.request.id</a></li> 576 <li 577 class="toc_deprecated" 578 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li> 579 <li 580 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li> 581 <li 582 class="toc_deprecated" 583 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li> 584 <li 585 class="toc_deprecated" 586 ><a href="#controls_android.request.type">android.request.type</a></li> 587 </ul> 588 </li> 589 <li> 590 <span class="toc_kind_header">static</span> 591 <ul class="toc_section"> 592 <li 593 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li> 594 <li 595 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li> 596 <li 597 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li> 598 <li 599 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li> 600 <li 601 class="toc_deprecated" 602 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li> 603 <li 604 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li> 605 <li 606 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li> 607 <li 608 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li> 609 <li 610 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li> 611 <li 612 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li> 613 <li 614 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li> 615 <li 616 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li> 617 </ul> 618 </li> 619 <li> 620 <span class="toc_kind_header">dynamic</span> 621 <ul class="toc_section"> 622 <li 623 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li> 624 <li 625 ><a href="#dynamic_android.request.id">android.request.id</a></li> 626 <li 627 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li> 628 <li 629 class="toc_deprecated" 630 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li> 631 <li 632 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li> 633 </ul> 634 </li> 635 </ul> <!-- toc_section --> 636 </li> 637 <li> 638 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span> 639 <ul class="toc_section"> 640 <li> 641 <span class="toc_kind_header">controls</span> 642 <ul class="toc_section"> 643 <li 644 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 645 </ul> 646 </li> 647 <li> 648 <span class="toc_kind_header">static</span> 649 <ul class="toc_section"> 650 <li 651 class="toc_deprecated" 652 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li> 653 <li 654 class="toc_deprecated" 655 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li> 656 <li 657 class="toc_deprecated" 658 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li> 659 <li 660 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li> 661 <li 662 class="toc_deprecated" 663 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li> 664 <li 665 class="toc_deprecated" 666 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li> 667 <li 668 class="toc_deprecated" 669 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li> 670 <li 671 class="toc_deprecated" 672 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li> 673 <li 674 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li> 675 <li 676 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li> 677 <li 678 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li> 679 <li 680 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li> 681 <li 682 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li> 683 <li 684 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li> 685 </ul> 686 </li> 687 <li> 688 <span class="toc_kind_header">dynamic</span> 689 <ul class="toc_section"> 690 <li 691 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 692 </ul> 693 </li> 694 </ul> <!-- toc_section --> 695 </li> 696 <li> 697 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span> 698 <ul class="toc_section"> 699 <li> 700 <span class="toc_kind_header">controls</span> 701 <ul class="toc_section"> 702 <li 703 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 704 <li 705 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 706 <li 707 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 708 <li 709 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 710 <li 711 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 712 </ul> 713 </li> 714 <li> 715 <span class="toc_kind_header">static</span> 716 <ul class="toc_section"> 717 718 <li 719 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li> 720 <li 721 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li> 722 <li 723 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li> 724 <li 725 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li> 726 <li 727 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li> 728 <li 729 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li> 730 <li 731 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li> 732 <li 733 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li> 734 735 <li 736 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li> 737 <li 738 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li> 739 <li 740 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li> 741 <li 742 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li> 743 <li 744 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li> 745 <li 746 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li> 747 <li 748 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li> 749 <li 750 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li> 751 <li 752 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> 753 <li 754 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li> 755 <li 756 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> 757 <li 758 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li> 759 <li 760 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li> 761 <li 762 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li> 763 </ul> 764 </li> 765 <li> 766 <span class="toc_kind_header">dynamic</span> 767 <ul class="toc_section"> 768 <li 769 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 770 <li 771 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 772 <li 773 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 774 <li 775 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> 776 <li 777 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> 778 <li 779 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li> 780 <li 781 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li> 782 <li 783 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li> 784 <li 785 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li> 786 <li 787 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 788 <li 789 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 790 </ul> 791 </li> 792 </ul> <!-- toc_section --> 793 </li> 794 <li> 795 <span class="toc_section_header"><a href="#section_shading">shading</a></span> 796 <ul class="toc_section"> 797 <li> 798 <span class="toc_kind_header">controls</span> 799 <ul class="toc_section"> 800 <li 801 ><a href="#controls_android.shading.mode">android.shading.mode</a></li> 802 <li 803 ><a href="#controls_android.shading.strength">android.shading.strength</a></li> 804 </ul> 805 </li> 806 <li> 807 <span class="toc_kind_header">dynamic</span> 808 <ul class="toc_section"> 809 <li 810 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> 811 </ul> 812 </li> 813 </ul> <!-- toc_section --> 814 </li> 815 <li> 816 <span class="toc_section_header"><a href="#section_statistics">statistics</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.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 823 <li 824 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 825 <li 826 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 827 <li 828 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 829 <li 830 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 831 </ul> 832 </li> 833 <li> 834 <span class="toc_kind_header">static</span> 835 <ul class="toc_section"> 836 837 <li 838 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> 839 <li 840 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> 841 <li 842 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> 843 <li 844 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> 845 <li 846 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> 847 <li 848 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> 849 <li 850 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li> 851 852 </ul> 853 </li> 854 <li> 855 <span class="toc_kind_header">dynamic</span> 856 <ul class="toc_section"> 857 <li 858 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 859 <li 860 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> 861 <li 862 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> 863 <li 864 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> 865 <li 866 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> 867 <li 868 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li> 869 <li 870 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> 871 <li 872 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 873 <li 874 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> 875 <li 876 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 877 <li 878 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li> 879 <li 880 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> 881 <li 882 class="toc_deprecated" 883 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> 884 <li 885 class="toc_deprecated" 886 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> 887 <li 888 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> 889 <li 890 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 891 <li 892 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li> 893 <li 894 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 895 </ul> 896 </li> 897 </ul> <!-- toc_section --> 898 </li> 899 <li> 900 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> 901 <ul class="toc_section"> 902 <li> 903 <span class="toc_kind_header">controls</span> 904 <ul class="toc_section"> 905 <li 906 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 907 <li 908 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 909 <li 910 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 911 <li 912 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li> 913 <li 914 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> 915 </ul> 916 </li> 917 <li> 918 <span class="toc_kind_header">static</span> 919 <ul class="toc_section"> 920 <li 921 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> 922 <li 923 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li> 924 </ul> 925 </li> 926 <li> 927 <span class="toc_kind_header">dynamic</span> 928 <ul class="toc_section"> 929 <li 930 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 931 <li 932 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 933 <li 934 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 935 <li 936 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li> 937 <li 938 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> 939 </ul> 940 </li> 941 </ul> <!-- toc_section --> 942 </li> 943 <li> 944 <span class="toc_section_header"><a href="#section_led">led</a></span> 945 <ul class="toc_section"> 946 <li> 947 <span class="toc_kind_header">controls</span> 948 <ul class="toc_section"> 949 <li 950 ><a href="#controls_android.led.transmit">android.led.transmit</a></li> 951 </ul> 952 </li> 953 <li> 954 <span class="toc_kind_header">dynamic</span> 955 <ul class="toc_section"> 956 <li 957 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> 958 </ul> 959 </li> 960 <li> 961 <span class="toc_kind_header">static</span> 962 <ul class="toc_section"> 963 <li 964 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> 965 </ul> 966 </li> 967 </ul> <!-- toc_section --> 968 </li> 969 <li> 970 <span class="toc_section_header"><a href="#section_info">info</a></span> 971 <ul class="toc_section"> 972 <li> 973 <span class="toc_kind_header">static</span> 974 <ul class="toc_section"> 975 <li 976 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> 977 </ul> 978 </li> 979 </ul> <!-- toc_section --> 980 </li> 981 <li> 982 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> 983 <ul class="toc_section"> 984 <li> 985 <span class="toc_kind_header">controls</span> 986 <ul class="toc_section"> 987 <li 988 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> 989 </ul> 990 </li> 991 <li> 992 <span class="toc_kind_header">dynamic</span> 993 <ul class="toc_section"> 994 <li 995 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> 996 </ul> 997 </li> 998 </ul> <!-- toc_section --> 999 </li> 1000 <li> 1001 <span class="toc_section_header"><a href="#section_sync">sync</a></span> 1002 <ul class="toc_section"> 1003 <li> 1004 <span class="toc_kind_header">dynamic</span> 1005 <ul class="toc_section"> 1006 <li 1007 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> 1008 </ul> 1009 </li> 1010 <li> 1011 <span class="toc_kind_header">static</span> 1012 <ul class="toc_section"> 1013 <li 1014 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> 1015 </ul> 1016 </li> 1017 </ul> <!-- toc_section --> 1018 </li> 1019 </ul> 1020 1021 1022 <h1>Properties</h1> 1023 <table class="properties"> 1024 1025 <thead class="thead_dummy"> 1026 <tr> 1027 <th class="th_name">Property Name</th> 1028 <th class="th_type">Type</th> 1029 <th class="th_description">Description</th> 1030 <th class="th_units">Units</th> 1031 <th class="th_range">Range</th> 1032 <th class="th_tags">Tags</th> 1033 </tr> 1034 </thead> <!-- so that the first occurrence of thead is not 1035 above the first occurrence of tr --> 1036<!-- <namespace name="android"> --> 1037 <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr> 1038 1039 1040 <tr><td colspan="6" class="kind">controls</td></tr> 1041 1042 <thead class="entries_header"> 1043 <tr> 1044 <th class="th_name">Property Name</th> 1045 <th class="th_type">Type</th> 1046 <th class="th_description">Description</th> 1047 <th class="th_units">Units</th> 1048 <th class="th_range">Range</th> 1049 <th class="th_tags">Tags</th> 1050 </tr> 1051 </thead> 1052 1053 <tbody> 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 <tr class="entry" id="controls_android.colorCorrection.mode"> 1065 <td class="entry_name 1066 " rowspan="3"> 1067 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1068 </td> 1069 <td class="entry_type"> 1070 <span class="entry_type_name entry_type_name_enum">byte</span> 1071 1072 <span class="entry_type_visibility"> [public]</span> 1073 1074 1075 1076 1077 <ul class="entry_type_enum"> 1078 <li> 1079 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1080 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1081and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1082<p>All advanced white balance adjustments (not specified 1083by our white balance pipeline) must be disabled.<wbr/></p> 1084<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 1085TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1086this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1087 </li> 1088 <li> 1089 <span class="entry_type_enum_name">FAST</span> 1090 <span class="entry_type_enum_notes"><p>Must not slow down capture rate relative to sensor raw 1091output.<wbr/></p> 1092<p>Advanced white balance adjustments above and beyond 1093the specified white balance pipeline may be applied.<wbr/></p> 1094<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 1095the camera device uses the last frame's AWB values 1096(or defaults if AWB has never been run).<wbr/></p></span> 1097 </li> 1098 <li> 1099 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1100 <span class="entry_type_enum_notes"><p>Capture rate (relative to sensor raw output) 1101may be reduced by high quality.<wbr/></p> 1102<p>Advanced white balance adjustments above and beyond 1103the specified white balance pipeline may be applied.<wbr/></p> 1104<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 1105the camera device uses the last frame's AWB values 1106(or defaults if AWB has never been run).<wbr/></p></span> 1107 </li> 1108 </ul> 1109 1110 </td> <!-- entry_type --> 1111 1112 <td class="entry_description"> 1113 <p>The mode control selects how the image data is converted from the 1114sensor's native color into linear sRGB color.<wbr/></p> 1115 </td> 1116 1117 <td class="entry_units"> 1118 </td> 1119 1120 <td class="entry_range"> 1121 </td> 1122 1123 <td class="entry_tags"> 1124 </td> 1125 1126 </tr> 1127 <tr class="entries_header"> 1128 <th class="th_details" colspan="5">Details</th> 1129 </tr> 1130 <tr class="entry_cont"> 1131 <td class="entry_details" colspan="5"> 1132 <p>When auto-white balance is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this 1133control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1134application controls how the color mapping is performed.<wbr/></p> 1135<p>We define the expected processing pipeline below.<wbr/> For consistency 1136across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1137<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1138do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1139<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1140camera device (in the results) and be roughly correct.<wbr/></p> 1141<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1142FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1143as what was produced by the camera device in the earlier frame.<wbr/></p> 1144<p>The expected processing pipeline is as follows:</p> 1145<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1146<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1147gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1148matrix (applied after demosaic).<wbr/></p> 1149<p>The 4-channel white-balance gains are defined as:</p> 1150<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1151</code></pre> 1152<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1153output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1154These may be identical for a given camera device implementation; if 1155the camera device does not support a separate gain for even/<wbr/>odd green 1156channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1157<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1158<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1159<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 ] 1160</code></pre> 1161<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1162to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1163<p>with colors as follows:</p> 1164<pre><code>r' = I0r + I1g + I2b 1165g' = I3r + I4g + I5b 1166b' = I6r + I7g + I8b 1167</code></pre> 1168<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1169values are clipped to fit within the range.<wbr/></p> 1170 </td> 1171 </tr> 1172 1173 1174 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1175 <!-- end of entry --> 1176 1177 1178 <tr class="entry" id="controls_android.colorCorrection.transform"> 1179 <td class="entry_name 1180 " rowspan="3"> 1181 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1182 </td> 1183 <td class="entry_type"> 1184 <span class="entry_type_name">rational</span> 1185 <span class="entry_type_container">x</span> 1186 1187 <span class="entry_type_array"> 1188 3 x 3 1189 </span> 1190 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1191 1192 1193 1194 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1195 1196 1197 </td> <!-- entry_type --> 1198 1199 <td class="entry_description"> 1200 <p>A color transform matrix to use to transform 1201from sensor RGB color space to output linear sRGB color space</p> 1202 </td> 1203 1204 <td class="entry_units"> 1205 </td> 1206 1207 <td class="entry_range"> 1208 </td> 1209 1210 <td class="entry_tags"> 1211 </td> 1212 1213 </tr> 1214 <tr class="entries_header"> 1215 <th class="th_details" colspan="5">Details</th> 1216 </tr> 1217 <tr class="entry_cont"> 1218 <td class="entry_details" colspan="5"> 1219 <p>This matrix is either set by the camera device when the request 1220<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1221directly by the application in the request when the 1222<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1223<p>In the latter case,<wbr/> the camera device may round the matrix to account 1224for precision issues; the final rounded matrix should be reported back 1225in this matrix result metadata.<wbr/> The transform should keep the magnitude 1226of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1227values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1228 </td> 1229 </tr> 1230 1231 1232 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1233 <!-- end of entry --> 1234 1235 1236 <tr class="entry" id="controls_android.colorCorrection.gains"> 1237 <td class="entry_name 1238 " rowspan="5"> 1239 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1240 </td> 1241 <td class="entry_type"> 1242 <span class="entry_type_name">float</span> 1243 <span class="entry_type_container">x</span> 1244 1245 <span class="entry_type_array"> 1246 4 1247 </span> 1248 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1249 1250 1251 1252 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1253 1254 1255 </td> <!-- entry_type --> 1256 1257 <td class="entry_description"> 1258 <p>Gains applying to Bayer raw color channels for 1259white-balance.<wbr/></p> 1260 </td> 1261 1262 <td class="entry_units"> 1263 </td> 1264 1265 <td class="entry_range"> 1266 </td> 1267 1268 <td class="entry_tags"> 1269 </td> 1270 1271 </tr> 1272 <tr class="entries_header"> 1273 <th class="th_details" colspan="5">Details</th> 1274 </tr> 1275 <tr class="entry_cont"> 1276 <td class="entry_details" colspan="5"> 1277 <p>These per-channel gains are either set by the camera device 1278when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1279TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1280request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1281TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1282<p>The gains in the result metadata are the gains actually 1283applied by the camera device to the current frame.<wbr/></p> 1284 </td> 1285 </tr> 1286 1287 <tr class="entries_header"> 1288 <th class="th_details" colspan="5">HAL Implementation Details</th> 1289 </tr> 1290 <tr class="entry_cont"> 1291 <td class="entry_details" colspan="5"> 1292 <p>The 4-channel white-balance gains are defined in 1293the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1294for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1295is the gain for green pixels on the odd rows.<wbr/></p> 1296<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1297channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1298<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1299 </td> 1300 </tr> 1301 1302 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1303 <!-- end of entry --> 1304 1305 1306 1307 <!-- end of kind --> 1308 </tbody> 1309 <tr><td colspan="6" class="kind">dynamic</td></tr> 1310 1311 <thead class="entries_header"> 1312 <tr> 1313 <th class="th_name">Property Name</th> 1314 <th class="th_type">Type</th> 1315 <th class="th_description">Description</th> 1316 <th class="th_units">Units</th> 1317 <th class="th_range">Range</th> 1318 <th class="th_tags">Tags</th> 1319 </tr> 1320 </thead> 1321 1322 <tbody> 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 <tr class="entry" id="dynamic_android.colorCorrection.mode"> 1334 <td class="entry_name 1335 " rowspan="3"> 1336 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1337 </td> 1338 <td class="entry_type"> 1339 <span class="entry_type_name entry_type_name_enum">byte</span> 1340 1341 <span class="entry_type_visibility"> [public]</span> 1342 1343 1344 1345 1346 <ul class="entry_type_enum"> 1347 <li> 1348 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1349 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1350and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1351<p>All advanced white balance adjustments (not specified 1352by our white balance pipeline) must be disabled.<wbr/></p> 1353<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 1354TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1355this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1356 </li> 1357 <li> 1358 <span class="entry_type_enum_name">FAST</span> 1359 <span class="entry_type_enum_notes"><p>Must not slow down capture rate relative to sensor raw 1360output.<wbr/></p> 1361<p>Advanced white balance adjustments above and beyond 1362the specified white balance pipeline may be applied.<wbr/></p> 1363<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 1364the camera device uses the last frame's AWB values 1365(or defaults if AWB has never been run).<wbr/></p></span> 1366 </li> 1367 <li> 1368 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1369 <span class="entry_type_enum_notes"><p>Capture rate (relative to sensor raw output) 1370may be reduced by high quality.<wbr/></p> 1371<p>Advanced white balance adjustments above and beyond 1372the specified white balance pipeline may be applied.<wbr/></p> 1373<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 1374the camera device uses the last frame's AWB values 1375(or defaults if AWB has never been run).<wbr/></p></span> 1376 </li> 1377 </ul> 1378 1379 </td> <!-- entry_type --> 1380 1381 <td class="entry_description"> 1382 <p>The mode control selects how the image data is converted from the 1383sensor's native color into linear sRGB color.<wbr/></p> 1384 </td> 1385 1386 <td class="entry_units"> 1387 </td> 1388 1389 <td class="entry_range"> 1390 </td> 1391 1392 <td class="entry_tags"> 1393 </td> 1394 1395 </tr> 1396 <tr class="entries_header"> 1397 <th class="th_details" colspan="5">Details</th> 1398 </tr> 1399 <tr class="entry_cont"> 1400 <td class="entry_details" colspan="5"> 1401 <p>When auto-white balance is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this 1402control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1403application controls how the color mapping is performed.<wbr/></p> 1404<p>We define the expected processing pipeline below.<wbr/> For consistency 1405across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1406<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1407do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1408<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1409camera device (in the results) and be roughly correct.<wbr/></p> 1410<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1411FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1412as what was produced by the camera device in the earlier frame.<wbr/></p> 1413<p>The expected processing pipeline is as follows:</p> 1414<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1415<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1416gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1417matrix (applied after demosaic).<wbr/></p> 1418<p>The 4-channel white-balance gains are defined as:</p> 1419<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1420</code></pre> 1421<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1422output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1423These may be identical for a given camera device implementation; if 1424the camera device does not support a separate gain for even/<wbr/>odd green 1425channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1426<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1427<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1428<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 ] 1429</code></pre> 1430<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1431to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1432<p>with colors as follows:</p> 1433<pre><code>r' = I0r + I1g + I2b 1434g' = I3r + I4g + I5b 1435b' = I6r + I7g + I8b 1436</code></pre> 1437<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1438values are clipped to fit within the range.<wbr/></p> 1439 </td> 1440 </tr> 1441 1442 1443 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1444 <!-- end of entry --> 1445 1446 1447 <tr class="entry" id="dynamic_android.colorCorrection.transform"> 1448 <td class="entry_name 1449 " rowspan="3"> 1450 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1451 </td> 1452 <td class="entry_type"> 1453 <span class="entry_type_name">rational</span> 1454 <span class="entry_type_container">x</span> 1455 1456 <span class="entry_type_array"> 1457 3 x 3 1458 </span> 1459 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1460 1461 1462 1463 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1464 1465 1466 </td> <!-- entry_type --> 1467 1468 <td class="entry_description"> 1469 <p>A color transform matrix to use to transform 1470from sensor RGB color space to output linear sRGB color space</p> 1471 </td> 1472 1473 <td class="entry_units"> 1474 </td> 1475 1476 <td class="entry_range"> 1477 </td> 1478 1479 <td class="entry_tags"> 1480 </td> 1481 1482 </tr> 1483 <tr class="entries_header"> 1484 <th class="th_details" colspan="5">Details</th> 1485 </tr> 1486 <tr class="entry_cont"> 1487 <td class="entry_details" colspan="5"> 1488 <p>This matrix is either set by the camera device when the request 1489<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1490directly by the application in the request when the 1491<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1492<p>In the latter case,<wbr/> the camera device may round the matrix to account 1493for precision issues; the final rounded matrix should be reported back 1494in this matrix result metadata.<wbr/> The transform should keep the magnitude 1495of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1496values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1497 </td> 1498 </tr> 1499 1500 1501 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1502 <!-- end of entry --> 1503 1504 1505 <tr class="entry" id="dynamic_android.colorCorrection.gains"> 1506 <td class="entry_name 1507 " rowspan="5"> 1508 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1509 </td> 1510 <td class="entry_type"> 1511 <span class="entry_type_name">float</span> 1512 <span class="entry_type_container">x</span> 1513 1514 <span class="entry_type_array"> 1515 4 1516 </span> 1517 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1518 1519 1520 1521 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1522 1523 1524 </td> <!-- entry_type --> 1525 1526 <td class="entry_description"> 1527 <p>Gains applying to Bayer raw color channels for 1528white-balance.<wbr/></p> 1529 </td> 1530 1531 <td class="entry_units"> 1532 </td> 1533 1534 <td class="entry_range"> 1535 </td> 1536 1537 <td class="entry_tags"> 1538 </td> 1539 1540 </tr> 1541 <tr class="entries_header"> 1542 <th class="th_details" colspan="5">Details</th> 1543 </tr> 1544 <tr class="entry_cont"> 1545 <td class="entry_details" colspan="5"> 1546 <p>These per-channel gains are either set by the camera device 1547when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1548TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1549request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1550TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1551<p>The gains in the result metadata are the gains actually 1552applied by the camera device to the current frame.<wbr/></p> 1553 </td> 1554 </tr> 1555 1556 <tr class="entries_header"> 1557 <th class="th_details" colspan="5">HAL Implementation Details</th> 1558 </tr> 1559 <tr class="entry_cont"> 1560 <td class="entry_details" colspan="5"> 1561 <p>The 4-channel white-balance gains are defined in 1562the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1563for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1564is the gain for green pixels on the odd rows.<wbr/></p> 1565<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1566channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1567<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1568 </td> 1569 </tr> 1570 1571 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1572 <!-- end of entry --> 1573 1574 1575 1576 <!-- end of kind --> 1577 </tbody> 1578 1579 <!-- end of section --> 1580 <tr><td colspan="6" id="section_control" class="section">control</td></tr> 1581 1582 1583 <tr><td colspan="6" class="kind">controls</td></tr> 1584 1585 <thead class="entries_header"> 1586 <tr> 1587 <th class="th_name">Property Name</th> 1588 <th class="th_type">Type</th> 1589 <th class="th_description">Description</th> 1590 <th class="th_units">Units</th> 1591 <th class="th_range">Range</th> 1592 <th class="th_tags">Tags</th> 1593 </tr> 1594 </thead> 1595 1596 <tbody> 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 <tr class="entry" id="controls_android.control.aeAntibandingMode"> 1608 <td class="entry_name 1609 " rowspan="5"> 1610 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 1611 </td> 1612 <td class="entry_type"> 1613 <span class="entry_type_name entry_type_name_enum">byte</span> 1614 1615 <span class="entry_type_visibility"> [public]</span> 1616 1617 1618 1619 1620 <ul class="entry_type_enum"> 1621 <li> 1622 <span class="entry_type_enum_name">OFF</span> 1623 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 1624avoid banding problems.<wbr/></p></span> 1625 </li> 1626 <li> 1627 <span class="entry_type_enum_name">50HZ</span> 1628 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 1629avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 1630 </li> 1631 <li> 1632 <span class="entry_type_enum_name">60HZ</span> 1633 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 1634avoid banding problems with 60Hz illumination 1635sources.<wbr/></p></span> 1636 </li> 1637 <li> 1638 <span class="entry_type_enum_name">AUTO</span> 1639 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 1640antibanding routine to the current illumination 1641conditions.<wbr/> This is the default.<wbr/></p></span> 1642 </li> 1643 </ul> 1644 1645 </td> <!-- entry_type --> 1646 1647 <td class="entry_description"> 1648 <p>The desired setting for the camera device's auto-exposure 1649algorithm's antibanding compensation.<wbr/></p> 1650 </td> 1651 1652 <td class="entry_units"> 1653 </td> 1654 1655 <td class="entry_range"> 1656 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 1657 </td> 1658 1659 <td class="entry_tags"> 1660 <ul class="entry_tags"> 1661 <li><a href="#tag_BC">BC</a></li> 1662 </ul> 1663 </td> 1664 1665 </tr> 1666 <tr class="entries_header"> 1667 <th class="th_details" colspan="5">Details</th> 1668 </tr> 1669 <tr class="entry_cont"> 1670 <td class="entry_details" colspan="5"> 1671 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 1672lights,<wbr/> flicker at the rate of the power supply frequency 1673(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 1674typically not noticeable to a person,<wbr/> it can be visible to 1675a camera device.<wbr/> If a camera sets its exposure time to the 1676wrong value,<wbr/> the flicker may become visible in the 1677viewfinder as flicker or in a final captured image,<wbr/> as a 1678set of variable-brightness bands across the image.<wbr/></p> 1679<p>Therefore,<wbr/> the auto-exposure routines of camera devices 1680include antibanding routines that ensure that the chosen 1681exposure value will not cause such banding.<wbr/> The choice of 1682exposure time depends on the rate of flicker,<wbr/> which the 1683camera device can detect automatically,<wbr/> or the expected 1684rate can be selected by the application using this 1685control.<wbr/></p> 1686<p>A given camera device may not support all of the possible 1687options for the antibanding mode.<wbr/> The 1688<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 1689the available modes for a given camera device.<wbr/></p> 1690<p>The default mode is AUTO,<wbr/> which must be supported by all 1691camera devices.<wbr/></p> 1692<p>If manual exposure control is enabled (by setting 1693<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/> 1694then this setting has no effect,<wbr/> and the application must 1695ensure it selects exposure times that do not cause banding 1696issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 1697the application in this.<wbr/></p> 1698 </td> 1699 </tr> 1700 1701 <tr class="entries_header"> 1702 <th class="th_details" colspan="5">HAL Implementation Details</th> 1703 </tr> 1704 <tr class="entry_cont"> 1705 <td class="entry_details" colspan="5"> 1706 <p>For all capture request templates,<wbr/> this field must be set 1707to AUTO.<wbr/> AUTO is the only mode that must supported; 1708OFF,<wbr/> 50HZ,<wbr/> 60HZ are all optional.<wbr/></p> 1709<p>If manual exposure control is enabled (by setting 1710<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/> 1711then the exposure values provided by the application must not be 1712adjusted for antibanding.<wbr/></p> 1713 </td> 1714 </tr> 1715 1716 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1717 <!-- end of entry --> 1718 1719 1720 <tr class="entry" id="controls_android.control.aeExposureCompensation"> 1721 <td class="entry_name 1722 " rowspan="3"> 1723 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 1724 </td> 1725 <td class="entry_type"> 1726 <span class="entry_type_name">int32</span> 1727 1728 <span class="entry_type_visibility"> [public]</span> 1729 1730 1731 1732 1733 1734 </td> <!-- entry_type --> 1735 1736 <td class="entry_description"> 1737 <p>Adjustment to AE target image 1738brightness</p> 1739 </td> 1740 1741 <td class="entry_units"> 1742 count of positive/<wbr/>negative EV steps 1743 </td> 1744 1745 <td class="entry_range"> 1746 </td> 1747 1748 <td class="entry_tags"> 1749 <ul class="entry_tags"> 1750 <li><a href="#tag_BC">BC</a></li> 1751 </ul> 1752 </td> 1753 1754 </tr> 1755 <tr class="entries_header"> 1756 <th class="th_details" colspan="5">Details</th> 1757 </tr> 1758 <tr class="entry_cont"> 1759 <td class="entry_details" colspan="5"> 1760 <p>For example,<wbr/> if EV step is 0.<wbr/>333,<wbr/> '6' will mean an 1761exposure compensation of +2 EV; -3 will mean an exposure 1762compensation of -1 EV.<wbr/> Note that this control will only be effective 1763if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control will take effect even when 1764<a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 1765<p>In the event of exposure compensation value being changed,<wbr/> camera device 1766may take several frames to reach the newly requested exposure target.<wbr/> 1767During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 1768state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 1769change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 1770FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 1771 </td> 1772 </tr> 1773 1774 1775 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1776 <!-- end of entry --> 1777 1778 1779 <tr class="entry" id="controls_android.control.aeLock"> 1780 <td class="entry_name 1781 " rowspan="3"> 1782 android.<wbr/>control.<wbr/>ae<wbr/>Lock 1783 </td> 1784 <td class="entry_type"> 1785 <span class="entry_type_name entry_type_name_enum">byte</span> 1786 1787 <span class="entry_type_visibility"> [public as boolean]</span> 1788 1789 1790 1791 1792 <ul class="entry_type_enum"> 1793 <li> 1794 <span class="entry_type_enum_name">OFF</span> 1795 <span class="entry_type_enum_notes"><p>Autoexposure lock is disabled; the AE algorithm 1796is free to update its parameters.<wbr/></p></span> 1797 </li> 1798 <li> 1799 <span class="entry_type_enum_name">ON</span> 1800 <span class="entry_type_enum_notes"><p>Autoexposure lock is enabled; the AE algorithm 1801must not update the exposure and sensitivity parameters 1802while the lock is active.<wbr/> 1803<a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 1804will still take effect while auto-exposure is locked.<wbr/></p></span> 1805 </li> 1806 </ul> 1807 1808 </td> <!-- entry_type --> 1809 1810 <td class="entry_description"> 1811 <p>Whether AE is currently locked to its latest 1812calculated values.<wbr/></p> 1813 </td> 1814 1815 <td class="entry_units"> 1816 </td> 1817 1818 <td class="entry_range"> 1819 </td> 1820 1821 <td class="entry_tags"> 1822 <ul class="entry_tags"> 1823 <li><a href="#tag_BC">BC</a></li> 1824 </ul> 1825 </td> 1826 1827 </tr> 1828 <tr class="entries_header"> 1829 <th class="th_details" colspan="5">Details</th> 1830 </tr> 1831 <tr class="entry_cont"> 1832 <td class="entry_details" colspan="5"> 1833 <p>Note that even when AE is locked,<wbr/> the flash may be 1834fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> 1835ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 1836<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 1837is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 1838<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 1839when AE is already locked,<wbr/> the camera device will not change the exposure time 1840(<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>) 1841parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 1842is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 1843<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> 1844<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> 1845 </td> 1846 </tr> 1847 1848 1849 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1850 <!-- end of entry --> 1851 1852 1853 <tr class="entry" id="controls_android.control.aeMode"> 1854 <td class="entry_name 1855 " rowspan="3"> 1856 android.<wbr/>control.<wbr/>ae<wbr/>Mode 1857 </td> 1858 <td class="entry_type"> 1859 <span class="entry_type_name entry_type_name_enum">byte</span> 1860 1861 <span class="entry_type_visibility"> [public]</span> 1862 1863 1864 1865 1866 <ul class="entry_type_enum"> 1867 <li> 1868 <span class="entry_type_enum_name">OFF</span> 1869 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled; 1870the application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 1871<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 1872<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 1873device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 1874a flash unit for this camera device.<wbr/></p></span> 1875 </li> 1876 <li> 1877 <span class="entry_type_enum_name">ON</span> 1878 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 1879with no flash control.<wbr/> The application's values for 1880<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 1881<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 1882<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 1883application has control over the various 1884android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 1885 </li> 1886 <li> 1887 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 1888 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 1889the camera's flash unit,<wbr/> firing it in low-light 1890conditions.<wbr/> The flash may be fired during a 1891precapture sequence (triggered by 1892<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and may be fired 1893for captures for which the 1894<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 1895STILL_<wbr/>CAPTURE</p></span> 1896 </li> 1897 <li> 1898 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 1899 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 1900the camera's flash unit,<wbr/> always firing it for still 1901captures.<wbr/> The flash may be fired during a precapture 1902sequence (triggered by 1903<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and will always 1904be fired for captures for which the 1905<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 1906STILL_<wbr/>CAPTURE</p></span> 1907 </li> 1908 <li> 1909 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 1910 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 1911reduction.<wbr/> If deemed necessary by the camera device,<wbr/> 1912a red eye reduction flash will fire during the 1913precapture sequence.<wbr/></p></span> 1914 </li> 1915 </ul> 1916 1917 </td> <!-- entry_type --> 1918 1919 <td class="entry_description"> 1920 <p>The desired mode for the camera device's 1921auto-exposure routine.<wbr/></p> 1922 </td> 1923 1924 <td class="entry_units"> 1925 </td> 1926 1927 <td class="entry_range"> 1928 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 1929 </td> 1930 1931 <td class="entry_tags"> 1932 <ul class="entry_tags"> 1933 <li><a href="#tag_BC">BC</a></li> 1934 </ul> 1935 </td> 1936 1937 </tr> 1938 <tr class="entries_header"> 1939 <th class="th_details" colspan="5">Details</th> 1940 </tr> 1941 <tr class="entry_cont"> 1942 <td class="entry_details" colspan="5"> 1943 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 1944AUTO.<wbr/></p> 1945<p>When set to any of the ON modes,<wbr/> the camera device's 1946auto-exposure routine is enabled,<wbr/> overriding the 1947application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 1948and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 1949<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 1950<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 1951is selected,<wbr/> the camera device's flash unit controls are 1952also overridden.<wbr/></p> 1953<p>The FLASH modes are only available if the camera device 1954has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 1955<p>If flash TORCH mode is desired,<wbr/> this field must be set to 1956ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 1957<p>When set to any of the ON modes,<wbr/> the values chosen by the 1958camera device auto-exposure routine for the overridden 1959fields for a given capture will be available in its 1960CaptureResult.<wbr/></p> 1961 </td> 1962 </tr> 1963 1964 1965 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1966 <!-- end of entry --> 1967 1968 1969 <tr class="entry" id="controls_android.control.aeRegions"> 1970 <td class="entry_name 1971 " rowspan="5"> 1972 android.<wbr/>control.<wbr/>ae<wbr/>Regions 1973 </td> 1974 <td class="entry_type"> 1975 <span class="entry_type_name">int32</span> 1976 <span class="entry_type_container">x</span> 1977 1978 <span class="entry_type_array"> 1979 5 x area_count 1980 </span> 1981 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 1982 1983 1984 1985 1986 1987 </td> <!-- entry_type --> 1988 1989 <td class="entry_description"> 1990 <p>List of areas to use for 1991metering.<wbr/></p> 1992 </td> 1993 1994 <td class="entry_units"> 1995 </td> 1996 1997 <td class="entry_range"> 1998 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[0]</code></p> 1999 </td> 2000 2001 <td class="entry_tags"> 2002 <ul class="entry_tags"> 2003 <li><a href="#tag_BC">BC</a></li> 2004 </ul> 2005 </td> 2006 2007 </tr> 2008 <tr class="entries_header"> 2009 <th class="th_details" colspan="5">Details</th> 2010 </tr> 2011 <tr class="entry_cont"> 2012 <td class="entry_details" colspan="5"> 2013 <p>The coordinate system is based on the active pixel array,<wbr/> 2014with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2015(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2016<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2017bottom-right pixel in the active pixel array.<wbr/></p> 2018<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 2019for every pixel in the area.<wbr/> This means that a large metering area 2020with the same weight as a smaller area will have more effect in 2021the metering result.<wbr/> Metering areas can partially overlap and the 2022camera device will add the weights in the overlap region.<wbr/></p> 2023<p>If all regions have 0 weight,<wbr/> then no specific metering area 2024needs to be used by the camera device.<wbr/> If the metering region is 2025outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in capture result metadata,<wbr/> 2026the camera device will ignore the sections outside the region and output the 2027used sections in the result metadata.<wbr/></p> 2028 </td> 2029 </tr> 2030 2031 <tr class="entries_header"> 2032 <th class="th_details" colspan="5">HAL Implementation Details</th> 2033 </tr> 2034 <tr class="entry_cont"> 2035 <td class="entry_details" colspan="5"> 2036 <p>The HAL level representation of MeteringRectangle[] is a 2037int[5 * area_<wbr/>count].<wbr/> 2038Every five elements represent a metering region of 2039(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2040The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2041exclusive on xmax and ymax.<wbr/></p> 2042 </td> 2043 </tr> 2044 2045 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2046 <!-- end of entry --> 2047 2048 2049 <tr class="entry" id="controls_android.control.aeTargetFpsRange"> 2050 <td class="entry_name 2051 " rowspan="3"> 2052 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 2053 </td> 2054 <td class="entry_type"> 2055 <span class="entry_type_name">int32</span> 2056 <span class="entry_type_container">x</span> 2057 2058 <span class="entry_type_array"> 2059 2 2060 </span> 2061 <span class="entry_type_visibility"> [public as rangeInt]</span> 2062 2063 2064 2065 2066 2067 </td> <!-- entry_type --> 2068 2069 <td class="entry_description"> 2070 <p>Range over which fps can be adjusted to 2071maintain exposure</p> 2072 </td> 2073 2074 <td class="entry_units"> 2075 </td> 2076 2077 <td class="entry_range"> 2078 <p><a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p> 2079 </td> 2080 2081 <td class="entry_tags"> 2082 <ul class="entry_tags"> 2083 <li><a href="#tag_BC">BC</a></li> 2084 </ul> 2085 </td> 2086 2087 </tr> 2088 <tr class="entries_header"> 2089 <th class="th_details" colspan="5">Details</th> 2090 </tr> 2091 <tr class="entry_cont"> 2092 <td class="entry_details" colspan="5"> 2093 <p>Only constrains AE algorithm,<wbr/> not manual control 2094of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></p> 2095 </td> 2096 </tr> 2097 2098 2099 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2100 <!-- end of entry --> 2101 2102 2103 <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> 2104 <td class="entry_name 2105 " rowspan="3"> 2106 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 2107 </td> 2108 <td class="entry_type"> 2109 <span class="entry_type_name entry_type_name_enum">byte</span> 2110 2111 <span class="entry_type_visibility"> [public]</span> 2112 2113 2114 2115 2116 <ul class="entry_type_enum"> 2117 <li> 2118 <span class="entry_type_enum_name">IDLE</span> 2119 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2120 </li> 2121 <li> 2122 <span class="entry_type_enum_name">START</span> 2123 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 2124by the camera device.<wbr/> The exact effect of the precapture 2125trigger depends on the current AE mode and state.<wbr/></p></span> 2126 </li> 2127 </ul> 2128 2129 </td> <!-- entry_type --> 2130 2131 <td class="entry_description"> 2132 <p>Whether the camera device will trigger a precapture 2133metering sequence when it processes this request.<wbr/></p> 2134 </td> 2135 2136 <td class="entry_units"> 2137 </td> 2138 2139 <td class="entry_range"> 2140 </td> 2141 2142 <td class="entry_tags"> 2143 <ul class="entry_tags"> 2144 <li><a href="#tag_BC">BC</a></li> 2145 </ul> 2146 </td> 2147 2148 </tr> 2149 <tr class="entries_header"> 2150 <th class="th_details" colspan="5">Details</th> 2151 </tr> 2152 <tr class="entry_cont"> 2153 <td class="entry_details" colspan="5"> 2154 <p>This entry is normally set to IDLE,<wbr/> or is not 2155included at all in the request settings.<wbr/> When included and 2156set to START,<wbr/> the camera device will trigger the autoexposure 2157precapture metering sequence.<wbr/></p> 2158<p>The effect of AE precapture trigger depends on the current 2159AE mode and state; see <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture 2160state transition details.<wbr/></p> 2161 </td> 2162 </tr> 2163 2164 2165 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2166 <!-- end of entry --> 2167 2168 2169 <tr class="entry" id="controls_android.control.afMode"> 2170 <td class="entry_name 2171 " rowspan="5"> 2172 android.<wbr/>control.<wbr/>af<wbr/>Mode 2173 </td> 2174 <td class="entry_type"> 2175 <span class="entry_type_name entry_type_name_enum">byte</span> 2176 2177 <span class="entry_type_visibility"> [public]</span> 2178 2179 2180 2181 2182 <ul class="entry_type_enum"> 2183 <li> 2184 <span class="entry_type_enum_name">OFF</span> 2185 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 2186<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 2187application</p></span> 2188 </li> 2189 <li> 2190 <span class="entry_type_enum_name">AUTO</span> 2191 <span class="entry_type_enum_notes"><p>If lens is not fixed focus.<wbr/></p> 2192<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 2193is fixed-focus.<wbr/> In this mode,<wbr/> the lens does not move unless 2194the autofocus trigger action is called.<wbr/> When that trigger 2195is activated,<wbr/> AF must transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2196the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 2197<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 2198and sets the AF state to INACTIVE.<wbr/></p></span> 2199 </li> 2200 <li> 2201 <span class="entry_type_enum_name">MACRO</span> 2202 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the lens does not move unless the 2203autofocus trigger action is called.<wbr/></p> 2204<p>When that trigger is activated,<wbr/> AF must transition to 2205ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 2206NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 2207position to default,<wbr/> and sets the AF state to 2208INACTIVE.<wbr/></p></span> 2209 </li> 2210 <li> 2211 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 2212 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2213position continually to attempt to provide a 2214constantly-in-focus image stream.<wbr/></p> 2215<p>The focusing behavior should be suitable for good quality 2216video recording; typically this means slower focus 2217movement and no overshoots.<wbr/> When the AF trigger is not 2218involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 2219and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 2220states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 2221the algorithm should immediately transition into 2222AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2223lens position until a cancel AF trigger is received.<wbr/></p> 2224<p>Once cancel is received,<wbr/> the algorithm should transition 2225back to INACTIVE and resume passive scan.<wbr/> Note that this 2226behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 2227ongoing PASSIVE_<wbr/>SCAN must immediately be 2228canceled.<wbr/></p></span> 2229 </li> 2230 <li> 2231 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 2232 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2233position continually to attempt to provide a 2234constantly-in-focus image stream.<wbr/></p> 2235<p>The focusing behavior should be suitable for still image 2236capture; typically this means focusing as fast as 2237possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 2238algorithm should start in INACTIVE state,<wbr/> and then 2239transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 2240appropriate as it attempts to maintain focus.<wbr/> When the AF 2241trigger is activated,<wbr/> the algorithm should finish its 2242PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 2243AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2244lens position until a cancel AF trigger is received.<wbr/></p> 2245<p>When the AF cancel trigger is activated,<wbr/> the algorithm 2246should transition back to INACTIVE and then act as if it 2247has just been started.<wbr/></p></span> 2248 </li> 2249 <li> 2250 <span class="entry_type_enum_name">EDOF</span> 2251 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus).<wbr/> AF 2252trigger is ignored,<wbr/> AF state should always be 2253INACTIVE.<wbr/></p></span> 2254 </li> 2255 </ul> 2256 2257 </td> <!-- entry_type --> 2258 2259 <td class="entry_description"> 2260 <p>Whether AF is currently enabled,<wbr/> and what 2261mode it is set to</p> 2262 </td> 2263 2264 <td class="entry_units"> 2265 </td> 2266 2267 <td class="entry_range"> 2268 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 2269 </td> 2270 2271 <td class="entry_tags"> 2272 <ul class="entry_tags"> 2273 <li><a href="#tag_BC">BC</a></li> 2274 </ul> 2275 </td> 2276 2277 </tr> 2278 <tr class="entries_header"> 2279 <th class="th_details" colspan="5">Details</th> 2280 </tr> 2281 <tr class="entry_cont"> 2282 <td class="entry_details" colspan="5"> 2283 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 2284(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/></p> 2285<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 2286the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 2287in result metadata.<wbr/></p> 2288 </td> 2289 </tr> 2290 2291 <tr class="entries_header"> 2292 <th class="th_details" colspan="5">HAL Implementation Details</th> 2293 </tr> 2294 <tr class="entry_cont"> 2295 <td class="entry_details" colspan="5"> 2296 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 2297request (<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 2298up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 2299<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 2300locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 2301after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 2302the same focal plane remains in focus.<wbr/></p> 2303<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 2304scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 2305(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 2306same lock behavior as above.<wbr/></p> 2307<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 2308focus 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/> 2309However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 2310manual control.<wbr/></p> 2311<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 2312camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 2313remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 2314by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 2315that will arise on camera modules with open-loop VCMs.<wbr/></p> 2316 </td> 2317 </tr> 2318 2319 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2320 <!-- end of entry --> 2321 2322 2323 <tr class="entry" id="controls_android.control.afRegions"> 2324 <td class="entry_name 2325 " rowspan="5"> 2326 android.<wbr/>control.<wbr/>af<wbr/>Regions 2327 </td> 2328 <td class="entry_type"> 2329 <span class="entry_type_name">int32</span> 2330 <span class="entry_type_container">x</span> 2331 2332 <span class="entry_type_array"> 2333 5 x area_count 2334 </span> 2335 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2336 2337 2338 2339 2340 2341 </td> <!-- entry_type --> 2342 2343 <td class="entry_description"> 2344 <p>List of areas to use for focus 2345estimation.<wbr/></p> 2346 </td> 2347 2348 <td class="entry_units"> 2349 </td> 2350 2351 <td class="entry_range"> 2352 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[2]</code></p> 2353 </td> 2354 2355 <td class="entry_tags"> 2356 <ul class="entry_tags"> 2357 <li><a href="#tag_BC">BC</a></li> 2358 </ul> 2359 </td> 2360 2361 </tr> 2362 <tr class="entries_header"> 2363 <th class="th_details" colspan="5">Details</th> 2364 </tr> 2365 <tr class="entry_cont"> 2366 <td class="entry_details" colspan="5"> 2367 <p>The coordinate system is based on the active pixel array,<wbr/> 2368with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2369(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2370<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2371bottom-right pixel in the active pixel array.<wbr/></p> 2372<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 2373for every pixel in the area.<wbr/> This means that a large metering area 2374with the same weight as a smaller area will have more effect in 2375the metering result.<wbr/> Metering areas can partially overlap and the 2376camera device will add the weights in the overlap region.<wbr/></p> 2377<p>If all regions have 0 weight,<wbr/> then no specific metering area 2378needs to be used by the camera device.<wbr/> If the metering region is 2379outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in capture result metadata,<wbr/> 2380the camera device will ignore the sections outside the region and output the 2381used sections in the result metadata.<wbr/></p> 2382 </td> 2383 </tr> 2384 2385 <tr class="entries_header"> 2386 <th class="th_details" colspan="5">HAL Implementation Details</th> 2387 </tr> 2388 <tr class="entry_cont"> 2389 <td class="entry_details" colspan="5"> 2390 <p>The HAL level representation of MeteringRectangle[] is a 2391int[5 * area_<wbr/>count].<wbr/> 2392Every five elements represent a metering region of 2393(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2394The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2395exclusive on xmax and ymax.<wbr/></p> 2396 </td> 2397 </tr> 2398 2399 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2400 <!-- end of entry --> 2401 2402 2403 <tr class="entry" id="controls_android.control.afTrigger"> 2404 <td class="entry_name 2405 " rowspan="3"> 2406 android.<wbr/>control.<wbr/>af<wbr/>Trigger 2407 </td> 2408 <td class="entry_type"> 2409 <span class="entry_type_name entry_type_name_enum">byte</span> 2410 2411 <span class="entry_type_visibility"> [public]</span> 2412 2413 2414 2415 2416 <ul class="entry_type_enum"> 2417 <li> 2418 <span class="entry_type_enum_name">IDLE</span> 2419 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2420 </li> 2421 <li> 2422 <span class="entry_type_enum_name">START</span> 2423 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 2424 </li> 2425 <li> 2426 <span class="entry_type_enum_name">CANCEL</span> 2427 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 2428state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 2429 </li> 2430 </ul> 2431 2432 </td> <!-- entry_type --> 2433 2434 <td class="entry_description"> 2435 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 2436 </td> 2437 2438 <td class="entry_units"> 2439 </td> 2440 2441 <td class="entry_range"> 2442 </td> 2443 2444 <td class="entry_tags"> 2445 <ul class="entry_tags"> 2446 <li><a href="#tag_BC">BC</a></li> 2447 </ul> 2448 </td> 2449 2450 </tr> 2451 <tr class="entries_header"> 2452 <th class="th_details" colspan="5">Details</th> 2453 </tr> 2454 <tr class="entry_cont"> 2455 <td class="entry_details" colspan="5"> 2456 <p>This entry is normally set to IDLE,<wbr/> or is not 2457included at all in the request settings.<wbr/></p> 2458<p>When included and set to START,<wbr/> the camera device will trigger the 2459autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 2460<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 2461and return to its initial AF state.<wbr/></p> 2462<p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what that means for each AF mode.<wbr/></p> 2463 </td> 2464 </tr> 2465 2466 2467 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2468 <!-- end of entry --> 2469 2470 2471 <tr class="entry" id="controls_android.control.awbLock"> 2472 <td class="entry_name 2473 " rowspan="3"> 2474 android.<wbr/>control.<wbr/>awb<wbr/>Lock 2475 </td> 2476 <td class="entry_type"> 2477 <span class="entry_type_name entry_type_name_enum">byte</span> 2478 2479 <span class="entry_type_visibility"> [public as boolean]</span> 2480 2481 2482 2483 2484 <ul class="entry_type_enum"> 2485 <li> 2486 <span class="entry_type_enum_name">OFF</span> 2487 <span class="entry_type_enum_notes"><p>Auto-whitebalance lock is disabled; the AWB 2488algorithm is free to update its parameters if in AUTO 2489mode.<wbr/></p></span> 2490 </li> 2491 <li> 2492 <span class="entry_type_enum_name">ON</span> 2493 <span class="entry_type_enum_notes"><p>Auto-whitebalance lock is enabled; the AWB 2494algorithm must not update its parameters while the lock 2495is active.<wbr/></p></span> 2496 </li> 2497 </ul> 2498 2499 </td> <!-- entry_type --> 2500 2501 <td class="entry_description"> 2502 <p>Whether AWB is currently locked to its 2503latest calculated values.<wbr/></p> 2504 </td> 2505 2506 <td class="entry_units"> 2507 </td> 2508 2509 <td class="entry_range"> 2510 </td> 2511 2512 <td class="entry_tags"> 2513 <ul class="entry_tags"> 2514 <li><a href="#tag_BC">BC</a></li> 2515 </ul> 2516 </td> 2517 2518 </tr> 2519 <tr class="entries_header"> 2520 <th class="th_details" colspan="5">Details</th> 2521 </tr> 2522 <tr class="entry_cont"> 2523 <td class="entry_details" colspan="5"> 2524 <p>Note that AWB lock is only meaningful for AUTO 2525mode; in other modes,<wbr/> AWB is already fixed to a specific 2526setting.<wbr/></p> 2527 </td> 2528 </tr> 2529 2530 2531 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2532 <!-- end of entry --> 2533 2534 2535 <tr class="entry" id="controls_android.control.awbMode"> 2536 <td class="entry_name 2537 " rowspan="3"> 2538 android.<wbr/>control.<wbr/>awb<wbr/>Mode 2539 </td> 2540 <td class="entry_type"> 2541 <span class="entry_type_name entry_type_name_enum">byte</span> 2542 2543 <span class="entry_type_visibility"> [public]</span> 2544 2545 2546 2547 2548 <ul class="entry_type_enum"> 2549 <li> 2550 <span class="entry_type_enum_name">OFF</span> 2551 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2552the application-selected color transform matrix 2553(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 2554(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 2555device for manual white balance control.<wbr/></p></span> 2556 </li> 2557 <li> 2558 <span class="entry_type_enum_name">AUTO</span> 2559 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is active; 2560the application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 2561and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/></p></span> 2562 </li> 2563 <li> 2564 <span class="entry_type_enum_name">INCANDESCENT</span> 2565 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2566the camera device uses incandescent light as the assumed scene 2567illumination for white balance.<wbr/> While the exact white balance 2568transforms are up to the camera device,<wbr/> they will approximately 2569match the CIE standard illuminant A.<wbr/></p></span> 2570 </li> 2571 <li> 2572 <span class="entry_type_enum_name">FLUORESCENT</span> 2573 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2574the camera device uses fluorescent light as the assumed scene 2575illumination for white balance.<wbr/> While the exact white balance 2576transforms are up to the camera device,<wbr/> they will approximately 2577match the CIE standard illuminant F2.<wbr/></p></span> 2578 </li> 2579 <li> 2580 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 2581 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2582the camera device uses warm fluorescent light as the assumed scene 2583illumination for white balance.<wbr/> While the exact white balance 2584transforms are up to the camera device,<wbr/> they will approximately 2585match the CIE standard illuminant F4.<wbr/></p></span> 2586 </li> 2587 <li> 2588 <span class="entry_type_enum_name">DAYLIGHT</span> 2589 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2590the camera device uses daylight light as the assumed scene 2591illumination for white balance.<wbr/> While the exact white balance 2592transforms are up to the camera device,<wbr/> they will approximately 2593match the CIE standard illuminant D65.<wbr/></p></span> 2594 </li> 2595 <li> 2596 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 2597 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2598the camera device uses cloudy daylight light as the assumed scene 2599illumination for white balance.<wbr/></p></span> 2600 </li> 2601 <li> 2602 <span class="entry_type_enum_name">TWILIGHT</span> 2603 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2604the camera device uses twilight light as the assumed scene 2605illumination for white balance.<wbr/></p></span> 2606 </li> 2607 <li> 2608 <span class="entry_type_enum_name">SHADE</span> 2609 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2610the camera device uses shade light as the assumed scene 2611illumination for white balance.<wbr/></p></span> 2612 </li> 2613 </ul> 2614 2615 </td> <!-- entry_type --> 2616 2617 <td class="entry_description"> 2618 <p>Whether AWB is currently setting the color 2619transform fields,<wbr/> and what its illumination target 2620is.<wbr/></p> 2621 </td> 2622 2623 <td class="entry_units"> 2624 </td> 2625 2626 <td class="entry_range"> 2627 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 2628 </td> 2629 2630 <td class="entry_tags"> 2631 <ul class="entry_tags"> 2632 <li><a href="#tag_BC">BC</a></li> 2633 </ul> 2634 </td> 2635 2636 </tr> 2637 <tr class="entries_header"> 2638 <th class="th_details" colspan="5">Details</th> 2639 </tr> 2640 <tr class="entry_cont"> 2641 <td class="entry_details" colspan="5"> 2642 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 2643<p>When set to the ON mode,<wbr/> the camera device's auto white balance 2644routine is enabled,<wbr/> overriding the application's selected 2645<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 2646<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 2647<p>When set to the OFF mode,<wbr/> the camera device's auto white balance 2648routine is disabled.<wbr/> The application manually controls the white 2649balance 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> 2650and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 2651<p>When set to any other modes,<wbr/> the camera device's auto white balance 2652routine is disabled.<wbr/> The camera device uses each particular illumination 2653target for white balance adjustment.<wbr/></p> 2654 </td> 2655 </tr> 2656 2657 2658 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2659 <!-- end of entry --> 2660 2661 2662 <tr class="entry" id="controls_android.control.awbRegions"> 2663 <td class="entry_name 2664 " rowspan="5"> 2665 android.<wbr/>control.<wbr/>awb<wbr/>Regions 2666 </td> 2667 <td class="entry_type"> 2668 <span class="entry_type_name">int32</span> 2669 <span class="entry_type_container">x</span> 2670 2671 <span class="entry_type_array"> 2672 5 x area_count 2673 </span> 2674 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2675 2676 2677 2678 2679 2680 </td> <!-- entry_type --> 2681 2682 <td class="entry_description"> 2683 <p>List of areas to use for illuminant 2684estimation.<wbr/></p> 2685 </td> 2686 2687 <td class="entry_units"> 2688 </td> 2689 2690 <td class="entry_range"> 2691 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[1]</code></p> 2692 </td> 2693 2694 <td class="entry_tags"> 2695 <ul class="entry_tags"> 2696 <li><a href="#tag_BC">BC</a></li> 2697 </ul> 2698 </td> 2699 2700 </tr> 2701 <tr class="entries_header"> 2702 <th class="th_details" colspan="5">Details</th> 2703 </tr> 2704 <tr class="entry_cont"> 2705 <td class="entry_details" colspan="5"> 2706 <p>The coordinate system is based on the active pixel array,<wbr/> 2707with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2708(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2709<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2710bottom-right pixel in the active pixel array.<wbr/></p> 2711<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 2712for every pixel in the area.<wbr/> This means that a large metering area 2713with the same weight as a smaller area will have more effect in 2714the metering result.<wbr/> Metering areas can partially overlap and the 2715camera device will add the weights in the overlap region.<wbr/></p> 2716<p>If all regions have 0 weight,<wbr/> then no specific metering area 2717needs to be used by the camera device.<wbr/> If the metering region is 2718outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in capture result metadata,<wbr/> 2719the camera device will ignore the sections outside the region and output the 2720used sections in the result metadata.<wbr/></p> 2721 </td> 2722 </tr> 2723 2724 <tr class="entries_header"> 2725 <th class="th_details" colspan="5">HAL Implementation Details</th> 2726 </tr> 2727 <tr class="entry_cont"> 2728 <td class="entry_details" colspan="5"> 2729 <p>The HAL level representation of MeteringRectangle[] is a 2730int[5 * area_<wbr/>count].<wbr/> 2731Every five elements represent a metering region of 2732(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2733The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2734exclusive on xmax and ymax.<wbr/></p> 2735 </td> 2736 </tr> 2737 2738 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2739 <!-- end of entry --> 2740 2741 2742 <tr class="entry" id="controls_android.control.captureIntent"> 2743 <td class="entry_name 2744 " rowspan="3"> 2745 android.<wbr/>control.<wbr/>capture<wbr/>Intent 2746 </td> 2747 <td class="entry_type"> 2748 <span class="entry_type_name entry_type_name_enum">byte</span> 2749 2750 <span class="entry_type_visibility"> [public]</span> 2751 2752 2753 2754 2755 <ul class="entry_type_enum"> 2756 <li> 2757 <span class="entry_type_enum_name">CUSTOM</span> 2758 <span class="entry_type_enum_notes"><p>This request doesn't fall into the other 2759categories.<wbr/> Default to preview-like 2760behavior.<wbr/></p></span> 2761 </li> 2762 <li> 2763 <span class="entry_type_enum_name">PREVIEW</span> 2764 <span class="entry_type_enum_notes"><p>This request is for a preview-like usecase.<wbr/> The 2765precapture trigger may be used to start off a metering 2766w/<wbr/>flash sequence</p></span> 2767 </li> 2768 <li> 2769 <span class="entry_type_enum_name">STILL_CAPTURE</span> 2770 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 2771usecase.<wbr/></p></span> 2772 </li> 2773 <li> 2774 <span class="entry_type_enum_name">VIDEO_RECORD</span> 2775 <span class="entry_type_enum_notes"><p>This request is for a video recording 2776usecase.<wbr/></p></span> 2777 </li> 2778 <li> 2779 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 2780 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 2781image while recording video) usecase</p></span> 2782 </li> 2783 <li> 2784 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 2785 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 2786application will stream full-resolution images and 2787reprocess one or several later for a final 2788capture</p></span> 2789 </li> 2790 <li> 2791 <span class="entry_type_enum_name">MANUAL</span> 2792 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 2793the applications want to directly control the capture parameters 2794(e.<wbr/>g.<wbr/> <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> etc.<wbr/>).<wbr/></p></span> 2795 </li> 2796 </ul> 2797 2798 </td> <!-- entry_type --> 2799 2800 <td class="entry_description"> 2801 <p>Information to the camera device 3A (auto-exposure,<wbr/> 2802auto-focus,<wbr/> auto-white balance) routines about the purpose 2803of this capture,<wbr/> to help the camera device to decide optimal 3A 2804strategy.<wbr/></p> 2805 </td> 2806 2807 <td class="entry_units"> 2808 </td> 2809 2810 <td class="entry_range"> 2811 <p>All must be supported except for ZERO_<wbr/>SHUTTER_<wbr/>LAG and MANUAL.<wbr/></p> 2812 </td> 2813 2814 <td class="entry_tags"> 2815 <ul class="entry_tags"> 2816 <li><a href="#tag_BC">BC</a></li> 2817 </ul> 2818 </td> 2819 2820 </tr> 2821 <tr class="entries_header"> 2822 <th class="th_details" colspan="5">Details</th> 2823 </tr> 2824 <tr class="entry_cont"> 2825 <td class="entry_details" colspan="5"> 2826 <p>This control (except for MANUAL) is only effective if 2827<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 2828<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG must be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 2829contains ZSL.<wbr/> MANUAL must be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 2830contains MANUAL_<wbr/>SENSOR.<wbr/></p> 2831 </td> 2832 </tr> 2833 2834 2835 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2836 <!-- end of entry --> 2837 2838 2839 <tr class="entry" id="controls_android.control.effectMode"> 2840 <td class="entry_name 2841 " rowspan="3"> 2842 android.<wbr/>control.<wbr/>effect<wbr/>Mode 2843 </td> 2844 <td class="entry_type"> 2845 <span class="entry_type_name entry_type_name_enum">byte</span> 2846 2847 <span class="entry_type_visibility"> [public]</span> 2848 2849 2850 2851 2852 <ul class="entry_type_enum"> 2853 <li> 2854 <span class="entry_type_enum_name">OFF</span> 2855 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 2856 </li> 2857 <li> 2858 <span class="entry_type_enum_name">MONO</span> 2859 <span class="entry_type_enum_optional">optional</span> 2860 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 2861a single color.<wbr/> This will typically be grayscale.<wbr/></p></span> 2862 </li> 2863 <li> 2864 <span class="entry_type_enum_name">NEGATIVE</span> 2865 <span class="entry_type_enum_optional">optional</span> 2866 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 2867are inverted.<wbr/></p></span> 2868 </li> 2869 <li> 2870 <span class="entry_type_enum_name">SOLARIZE</span> 2871 <span class="entry_type_enum_optional">optional</span> 2872 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 2873image is wholly or partially reversed in 2874tone.<wbr/></p></span> 2875 </li> 2876 <li> 2877 <span class="entry_type_enum_name">SEPIA</span> 2878 <span class="entry_type_enum_optional">optional</span> 2879 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 2880gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 2881 </li> 2882 <li> 2883 <span class="entry_type_enum_name">POSTERIZE</span> 2884 <span class="entry_type_enum_optional">optional</span> 2885 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 2886discrete regions of tone rather than a continuous 2887gradient of tones.<wbr/></p></span> 2888 </li> 2889 <li> 2890 <span class="entry_type_enum_name">WHITEBOARD</span> 2891 <span class="entry_type_enum_optional">optional</span> 2892 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 2893as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 2894 </li> 2895 <li> 2896 <span class="entry_type_enum_name">BLACKBOARD</span> 2897 <span class="entry_type_enum_optional">optional</span> 2898 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 2899as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 2900 </li> 2901 <li> 2902 <span class="entry_type_enum_name">AQUA</span> 2903 <span class="entry_type_enum_optional">optional</span> 2904 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 2905 </li> 2906 </ul> 2907 2908 </td> <!-- entry_type --> 2909 2910 <td class="entry_description"> 2911 <p>A special color effect to apply.<wbr/></p> 2912 </td> 2913 2914 <td class="entry_units"> 2915 </td> 2916 2917 <td class="entry_range"> 2918 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 2919 </td> 2920 2921 <td class="entry_tags"> 2922 <ul class="entry_tags"> 2923 <li><a href="#tag_BC">BC</a></li> 2924 </ul> 2925 </td> 2926 2927 </tr> 2928 <tr class="entries_header"> 2929 <th class="th_details" colspan="5">Details</th> 2930 </tr> 2931 <tr class="entry_cont"> 2932 <td class="entry_details" colspan="5"> 2933 <p>When this mode is set,<wbr/> a color effect will be applied 2934to images produced by the camera device.<wbr/> The interpretation 2935and implementation of these color effects is left to the 2936implementor of the camera device,<wbr/> and should not be 2937depended on to be consistent (or present) across all 2938devices.<wbr/></p> 2939<p>A color effect will only be applied if 2940<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/></p> 2941 </td> 2942 </tr> 2943 2944 2945 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2946 <!-- end of entry --> 2947 2948 2949 <tr class="entry" id="controls_android.control.mode"> 2950 <td class="entry_name 2951 " rowspan="3"> 2952 android.<wbr/>control.<wbr/>mode 2953 </td> 2954 <td class="entry_type"> 2955 <span class="entry_type_name entry_type_name_enum">byte</span> 2956 2957 <span class="entry_type_visibility"> [public]</span> 2958 2959 2960 2961 2962 <ul class="entry_type_enum"> 2963 <li> 2964 <span class="entry_type_enum_name">OFF</span> 2965 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/> All 3A 2966routines are disabled,<wbr/> no other settings in 2967android.<wbr/>control.<wbr/>* have any effect</p></span> 2968 </li> 2969 <li> 2970 <span class="entry_type_enum_name">AUTO</span> 2971 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/> 2972Manual control of capture parameters is disabled.<wbr/> All 2973controls in android.<wbr/>control.<wbr/>* besides sceneMode take 2974effect</p></span> 2975 </li> 2976 <li> 2977 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 2978 <span class="entry_type_enum_notes"><p>Use specific scene mode.<wbr/> Enabling this disables 2979control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and control.<wbr/>afMode 2980controls; the camera device will ignore those settings while 2981USE_<wbr/>SCENE_<wbr/>MODE is active (except for FACE_<wbr/>PRIORITY 2982scene mode).<wbr/> Other control entries are still active.<wbr/> 2983This setting can only be used if scene mode is supported 2984(i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> contain some modes 2985other than DISABLED).<wbr/></p></span> 2986 </li> 2987 <li> 2988 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 2989 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 2990used by camera device background auto-exposure,<wbr/> auto-white balance and 2991auto-focus algorithms to update their statistics.<wbr/></p></span> 2992 </li> 2993 </ul> 2994 2995 </td> <!-- entry_type --> 2996 2997 <td class="entry_description"> 2998 <p>Overall mode of 3A control 2999routines.<wbr/></p> 3000 </td> 3001 3002 <td class="entry_units"> 3003 </td> 3004 3005 <td class="entry_range"> 3006 <p>all must be supported</p> 3007 </td> 3008 3009 <td class="entry_tags"> 3010 <ul class="entry_tags"> 3011 <li><a href="#tag_BC">BC</a></li> 3012 </ul> 3013 </td> 3014 3015 </tr> 3016 <tr class="entries_header"> 3017 <th class="th_details" colspan="5">Details</th> 3018 </tr> 3019 <tr class="entry_cont"> 3020 <td class="entry_details" colspan="5"> 3021 <p>High-level 3A control.<wbr/> When set to OFF,<wbr/> all 3A control 3022by the camera device is disabled.<wbr/> The application must set the fields for 3023capture parameters itself.<wbr/></p> 3024<p>When set to AUTO,<wbr/> the individual algorithm controls in 3025android.<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> 3026<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 3027android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 3028one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 3029as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 3030<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 3031<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 3032is that this frame will not be used by camera device background 3A statistics 3033update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 3034where the application doesn't want a 3A manual control capture to affect 3035the subsequent auto 3A capture results.<wbr/></p> 3036 </td> 3037 </tr> 3038 3039 3040 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3041 <!-- end of entry --> 3042 3043 3044 <tr class="entry" id="controls_android.control.sceneMode"> 3045 <td class="entry_name 3046 " rowspan="5"> 3047 android.<wbr/>control.<wbr/>scene<wbr/>Mode 3048 </td> 3049 <td class="entry_type"> 3050 <span class="entry_type_name entry_type_name_enum">byte</span> 3051 3052 <span class="entry_type_visibility"> [public]</span> 3053 3054 3055 3056 3057 <ul class="entry_type_enum"> 3058 <li> 3059 <span class="entry_type_enum_name">DISABLED</span> 3060 <span class="entry_type_enum_value">0</span> 3061 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 3062 </li> 3063 <li> 3064 <span class="entry_type_enum_name">FACE_PRIORITY</span> 3065 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 3066detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 3067auto-exposure routines.<wbr/> If face detection statistics are 3068disabled (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/> 3069this should still operate correctly (but will not return 3070face detection statistics to the framework).<wbr/></p> 3071<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3072<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> 3073remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 3074 </li> 3075 <li> 3076 <span class="entry_type_enum_name">ACTION</span> 3077 <span class="entry_type_enum_optional">optional</span> 3078 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/> 3079Similar to SPORTS.<wbr/></p></span> 3080 </li> 3081 <li> 3082 <span class="entry_type_enum_name">PORTRAIT</span> 3083 <span class="entry_type_enum_optional">optional</span> 3084 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 3085 </li> 3086 <li> 3087 <span class="entry_type_enum_name">LANDSCAPE</span> 3088 <span class="entry_type_enum_optional">optional</span> 3089 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 3090 </li> 3091 <li> 3092 <span class="entry_type_enum_name">NIGHT</span> 3093 <span class="entry_type_enum_optional">optional</span> 3094 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 3095 </li> 3096 <li> 3097 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 3098 <span class="entry_type_enum_optional">optional</span> 3099 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 3100settings.<wbr/></p></span> 3101 </li> 3102 <li> 3103 <span class="entry_type_enum_name">THEATRE</span> 3104 <span class="entry_type_enum_optional">optional</span> 3105 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 3106remain off.<wbr/></p></span> 3107 </li> 3108 <li> 3109 <span class="entry_type_enum_name">BEACH</span> 3110 <span class="entry_type_enum_optional">optional</span> 3111 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 3112 </li> 3113 <li> 3114 <span class="entry_type_enum_name">SNOW</span> 3115 <span class="entry_type_enum_optional">optional</span> 3116 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 3117 </li> 3118 <li> 3119 <span class="entry_type_enum_name">SUNSET</span> 3120 <span class="entry_type_enum_optional">optional</span> 3121 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 3122 </li> 3123 <li> 3124 <span class="entry_type_enum_name">STEADYPHOTO</span> 3125 <span class="entry_type_enum_optional">optional</span> 3126 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 3127device motion (for example: due to hand shake).<wbr/></p></span> 3128 </li> 3129 <li> 3130 <span class="entry_type_enum_name">FIREWORKS</span> 3131 <span class="entry_type_enum_optional">optional</span> 3132 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 3133 </li> 3134 <li> 3135 <span class="entry_type_enum_name">SPORTS</span> 3136 <span class="entry_type_enum_optional">optional</span> 3137 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/> 3138Similar to ACTION.<wbr/></p></span> 3139 </li> 3140 <li> 3141 <span class="entry_type_enum_name">PARTY</span> 3142 <span class="entry_type_enum_optional">optional</span> 3143 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 3144people.<wbr/></p></span> 3145 </li> 3146 <li> 3147 <span class="entry_type_enum_name">CANDLELIGHT</span> 3148 <span class="entry_type_enum_optional">optional</span> 3149 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 3150is a flame.<wbr/></p></span> 3151 </li> 3152 <li> 3153 <span class="entry_type_enum_name">BARCODE</span> 3154 <span class="entry_type_enum_optional">optional</span> 3155 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 3156for use by camera applications that wish to read the 3157barcode value.<wbr/></p></span> 3158 </li> 3159 </ul> 3160 3161 </td> <!-- entry_type --> 3162 3163 <td class="entry_description"> 3164 <p>A camera mode optimized for conditions typical in a particular 3165capture setting.<wbr/></p> 3166 </td> 3167 3168 <td class="entry_units"> 3169 </td> 3170 3171 <td class="entry_range"> 3172 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 3173 </td> 3174 3175 <td class="entry_tags"> 3176 <ul class="entry_tags"> 3177 <li><a href="#tag_BC">BC</a></li> 3178 </ul> 3179 </td> 3180 3181 </tr> 3182 <tr class="entries_header"> 3183 <th class="th_details" colspan="5">Details</th> 3184 </tr> 3185 <tr class="entry_cont"> 3186 <td class="entry_details" colspan="5"> 3187 <p>This is the mode that that is active when 3188<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/> 3189these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3190<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> 3191<p>The interpretation and implementation of these scene modes is left 3192to the implementor of the camera device.<wbr/> Their behavior will not be 3193consistent across all devices,<wbr/> and any given device may only implement 3194a subset of these modes.<wbr/></p> 3195 </td> 3196 </tr> 3197 3198 <tr class="entries_header"> 3199 <th class="th_details" colspan="5">HAL Implementation Details</th> 3200 </tr> 3201 <tr class="entry_cont"> 3202 <td class="entry_details" colspan="5"> 3203 <p>HAL implementations that include scene modes are expected to provide 3204the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3205<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 3206<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<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.videoStabilizationMode"> 3215 <td class="entry_name 3216 " rowspan="3"> 3217 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 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 3226 3227 <ul class="entry_type_enum"> 3228 <li> 3229 <span class="entry_type_enum_name">OFF</span> 3230 </li> 3231 <li> 3232 <span class="entry_type_enum_name">ON</span> 3233 </li> 3234 </ul> 3235 3236 </td> <!-- entry_type --> 3237 3238 <td class="entry_description"> 3239 <p>Whether video stabilization is 3240active</p> 3241 </td> 3242 3243 <td class="entry_units"> 3244 </td> 3245 3246 <td class="entry_range"> 3247 </td> 3248 3249 <td class="entry_tags"> 3250 <ul class="entry_tags"> 3251 <li><a href="#tag_BC">BC</a></li> 3252 </ul> 3253 </td> 3254 3255 </tr> 3256 <tr class="entries_header"> 3257 <th class="th_details" colspan="5">Details</th> 3258 </tr> 3259 <tr class="entry_cont"> 3260 <td class="entry_details" colspan="5"> 3261 <p>If enabled,<wbr/> video stabilization can modify the 3262<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream 3263stabilized</p> 3264 </td> 3265 </tr> 3266 3267 3268 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3269 <!-- end of entry --> 3270 3271 3272 3273 <!-- end of kind --> 3274 </tbody> 3275 <tr><td colspan="6" class="kind">static</td></tr> 3276 3277 <thead class="entries_header"> 3278 <tr> 3279 <th class="th_name">Property Name</th> 3280 <th class="th_type">Type</th> 3281 <th class="th_description">Description</th> 3282 <th class="th_units">Units</th> 3283 <th class="th_range">Range</th> 3284 <th class="th_tags">Tags</th> 3285 </tr> 3286 </thead> 3287 3288 <tbody> 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> 3300 <td class="entry_name 3301 " rowspan="3"> 3302 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes 3303 </td> 3304 <td class="entry_type"> 3305 <span class="entry_type_name">byte</span> 3306 <span class="entry_type_container">x</span> 3307 3308 <span class="entry_type_array"> 3309 n 3310 </span> 3311 <span class="entry_type_visibility"> [public as enumList]</span> 3312 3313 3314 3315 <div class="entry_type_notes">list of enums</div> 3316 3317 3318 </td> <!-- entry_type --> 3319 3320 <td class="entry_description"> 3321 <p>The set of auto-exposure antibanding modes that are 3322supported by this camera device.<wbr/></p> 3323 </td> 3324 3325 <td class="entry_units"> 3326 </td> 3327 3328 <td class="entry_range"> 3329 </td> 3330 3331 <td class="entry_tags"> 3332 <ul class="entry_tags"> 3333 <li><a href="#tag_BC">BC</a></li> 3334 </ul> 3335 </td> 3336 3337 </tr> 3338 <tr class="entries_header"> 3339 <th class="th_details" colspan="5">Details</th> 3340 </tr> 3341 <tr class="entry_cont"> 3342 <td class="entry_details" colspan="5"> 3343 <p>Not all of the auto-exposure anti-banding modes may be 3344supported by a given camera device.<wbr/> This field lists the 3345valid anti-banding modes that the application may request 3346for this camera device; they must include AUTO.<wbr/></p> 3347 </td> 3348 </tr> 3349 3350 3351 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3352 <!-- end of entry --> 3353 3354 3355 <tr class="entry" id="static_android.control.aeAvailableModes"> 3356 <td class="entry_name 3357 " rowspan="3"> 3358 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes 3359 </td> 3360 <td class="entry_type"> 3361 <span class="entry_type_name">byte</span> 3362 <span class="entry_type_container">x</span> 3363 3364 <span class="entry_type_array"> 3365 n 3366 </span> 3367 <span class="entry_type_visibility"> [public as enumList]</span> 3368 3369 3370 3371 <div class="entry_type_notes">list of enums</div> 3372 3373 3374 </td> <!-- entry_type --> 3375 3376 <td class="entry_description"> 3377 <p>The set of auto-exposure modes that are supported by this 3378camera device.<wbr/></p> 3379 </td> 3380 3381 <td class="entry_units"> 3382 </td> 3383 3384 <td class="entry_range"> 3385 </td> 3386 3387 <td class="entry_tags"> 3388 <ul class="entry_tags"> 3389 <li><a href="#tag_BC">BC</a></li> 3390 </ul> 3391 </td> 3392 3393 </tr> 3394 <tr class="entries_header"> 3395 <th class="th_details" colspan="5">Details</th> 3396 </tr> 3397 <tr class="entry_cont"> 3398 <td class="entry_details" colspan="5"> 3399 <p>Not all the auto-exposure modes may be supported by a 3400given camera device,<wbr/> especially if no flash unit is 3401available.<wbr/> This entry lists the valid modes for 3402<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> 3403<p>All camera devices support ON,<wbr/> and all camera devices with 3404flash units support ON_<wbr/>AUTO_<wbr/>FLASH and 3405ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> 3406<p>FULL mode camera devices always support OFF mode,<wbr/> 3407which enables application control of camera exposure time,<wbr/> 3408sensitivity,<wbr/> and frame duration.<wbr/></p> 3409 </td> 3410 </tr> 3411 3412 3413 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3414 <!-- end of entry --> 3415 3416 3417 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> 3418 <td class="entry_name 3419 " rowspan="1"> 3420 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges 3421 </td> 3422 <td class="entry_type"> 3423 <span class="entry_type_name">int32</span> 3424 <span class="entry_type_container">x</span> 3425 3426 <span class="entry_type_array"> 3427 2 x n 3428 </span> 3429 <span class="entry_type_visibility"> [public as rangeInt]</span> 3430 3431 3432 3433 <div class="entry_type_notes">list of pairs of frame rates</div> 3434 3435 3436 </td> <!-- entry_type --> 3437 3438 <td class="entry_description"> 3439 <p>List of frame rate ranges supported by the 3440AE algorithm/<wbr/>hardware</p> 3441 </td> 3442 3443 <td class="entry_units"> 3444 </td> 3445 3446 <td class="entry_range"> 3447 </td> 3448 3449 <td class="entry_tags"> 3450 <ul class="entry_tags"> 3451 <li><a href="#tag_BC">BC</a></li> 3452 </ul> 3453 </td> 3454 3455 </tr> 3456 3457 3458 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3459 <!-- end of entry --> 3460 3461 3462 <tr class="entry" id="static_android.control.aeCompensationRange"> 3463 <td class="entry_name 3464 " rowspan="1"> 3465 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 3466 </td> 3467 <td class="entry_type"> 3468 <span class="entry_type_name">int32</span> 3469 <span class="entry_type_container">x</span> 3470 3471 <span class="entry_type_array"> 3472 2 3473 </span> 3474 <span class="entry_type_visibility"> [public as rangeInt]</span> 3475 3476 3477 3478 3479 3480 </td> <!-- entry_type --> 3481 3482 <td class="entry_description"> 3483 <p>Maximum and minimum exposure compensation 3484setting,<wbr/> in counts of 3485<a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a>.<wbr/></p> 3486 </td> 3487 3488 <td class="entry_units"> 3489 </td> 3490 3491 <td class="entry_range"> 3492 <p>At least (-2,<wbr/>2)/<wbr/>(exp compensation step 3493size)</p> 3494 </td> 3495 3496 <td class="entry_tags"> 3497 <ul class="entry_tags"> 3498 <li><a href="#tag_BC">BC</a></li> 3499 </ul> 3500 </td> 3501 3502 </tr> 3503 3504 3505 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3506 <!-- end of entry --> 3507 3508 3509 <tr class="entry" id="static_android.control.aeCompensationStep"> 3510 <td class="entry_name 3511 " rowspan="1"> 3512 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 3513 </td> 3514 <td class="entry_type"> 3515 <span class="entry_type_name">rational</span> 3516 3517 <span class="entry_type_visibility"> [public]</span> 3518 3519 3520 3521 3522 3523 </td> <!-- entry_type --> 3524 3525 <td class="entry_description"> 3526 <p>Smallest step by which exposure compensation 3527can be changed</p> 3528 </td> 3529 3530 <td class="entry_units"> 3531 </td> 3532 3533 <td class="entry_range"> 3534 <p><= 1/<wbr/>2</p> 3535 </td> 3536 3537 <td class="entry_tags"> 3538 <ul class="entry_tags"> 3539 <li><a href="#tag_BC">BC</a></li> 3540 </ul> 3541 </td> 3542 3543 </tr> 3544 3545 3546 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3547 <!-- end of entry --> 3548 3549 3550 <tr class="entry" id="static_android.control.afAvailableModes"> 3551 <td class="entry_name 3552 " rowspan="3"> 3553 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 3554 </td> 3555 <td class="entry_type"> 3556 <span class="entry_type_name">byte</span> 3557 <span class="entry_type_container">x</span> 3558 3559 <span class="entry_type_array"> 3560 n 3561 </span> 3562 <span class="entry_type_visibility"> [public as enumList]</span> 3563 3564 3565 3566 <div class="entry_type_notes">List of enums</div> 3567 3568 3569 </td> <!-- entry_type --> 3570 3571 <td class="entry_description"> 3572 <p>List of AF modes that can be 3573selected with <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p> 3574 </td> 3575 3576 <td class="entry_units"> 3577 </td> 3578 3579 <td class="entry_range"> 3580 </td> 3581 3582 <td class="entry_tags"> 3583 <ul class="entry_tags"> 3584 <li><a href="#tag_BC">BC</a></li> 3585 </ul> 3586 </td> 3587 3588 </tr> 3589 <tr class="entries_header"> 3590 <th class="th_details" colspan="5">Details</th> 3591 </tr> 3592 <tr class="entry_cont"> 3593 <td class="entry_details" colspan="5"> 3594 <p>Not all the auto-focus modes may be supported by a 3595given camera device.<wbr/> This entry lists the valid modes for 3596<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 3597<p>All camera devices will support OFF mode,<wbr/> and all camera devices with 3598adjustable focuser units (<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>) 3599will support AUTO mode.<wbr/></p> 3600 </td> 3601 </tr> 3602 3603 3604 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3605 <!-- end of entry --> 3606 3607 3608 <tr class="entry" id="static_android.control.availableEffects"> 3609 <td class="entry_name 3610 " rowspan="3"> 3611 android.<wbr/>control.<wbr/>available<wbr/>Effects 3612 </td> 3613 <td class="entry_type"> 3614 <span class="entry_type_name">byte</span> 3615 <span class="entry_type_container">x</span> 3616 3617 <span class="entry_type_array"> 3618 n 3619 </span> 3620 <span class="entry_type_visibility"> [public as enumList]</span> 3621 3622 3623 3624 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 3625 3626 3627 </td> <!-- entry_type --> 3628 3629 <td class="entry_description"> 3630 <p>List containing the subset of color effects 3631specified in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a> that is supported by 3632this device.<wbr/></p> 3633 </td> 3634 3635 <td class="entry_units"> 3636 </td> 3637 3638 <td class="entry_range"> 3639 <p>Any subset of enums from those specified in 3640<a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a>.<wbr/> OFF must be included in any subset.<wbr/></p> 3641 </td> 3642 3643 <td class="entry_tags"> 3644 <ul class="entry_tags"> 3645 <li><a href="#tag_BC">BC</a></li> 3646 </ul> 3647 </td> 3648 3649 </tr> 3650 <tr class="entries_header"> 3651 <th class="th_details" colspan="5">Details</th> 3652 </tr> 3653 <tr class="entry_cont"> 3654 <td class="entry_details" colspan="5"> 3655 <p>This list contains the color effect modes that can be applied to 3656images produced by the camera device.<wbr/> Only modes that have 3657been fully implemented for the current device may be included here.<wbr/> 3658Implementations are not expected to be consistent across all devices.<wbr/> 3659If no color effect modes are available for a device,<wbr/> this should 3660simply be set to OFF.<wbr/></p> 3661<p>A color effect will only be applied if 3662<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/></p> 3663 </td> 3664 </tr> 3665 3666 3667 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3668 <!-- end of entry --> 3669 3670 3671 <tr class="entry" id="static_android.control.availableSceneModes"> 3672 <td class="entry_name 3673 " rowspan="3"> 3674 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 3675 </td> 3676 <td class="entry_type"> 3677 <span class="entry_type_name">byte</span> 3678 <span class="entry_type_container">x</span> 3679 3680 <span class="entry_type_array"> 3681 n 3682 </span> 3683 <span class="entry_type_visibility"> [public as enumList]</span> 3684 3685 3686 3687 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 3688 3689 3690 </td> <!-- entry_type --> 3691 3692 <td class="entry_description"> 3693 <p>List containing a subset of scene modes 3694specified in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a>.<wbr/></p> 3695 </td> 3696 3697 <td class="entry_units"> 3698 </td> 3699 3700 <td class="entry_range"> 3701 <p>Any subset of the enums specified in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> 3702not including DISABLED,<wbr/> or solely DISABLED if no 3703scene modes are available.<wbr/> FACE_<wbr/>PRIORITY must be included 3704if face detection is 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> > 0</code>).<wbr/></p> 3705 </td> 3706 3707 <td class="entry_tags"> 3708 <ul class="entry_tags"> 3709 <li><a href="#tag_BC">BC</a></li> 3710 </ul> 3711 </td> 3712 3713 </tr> 3714 <tr class="entries_header"> 3715 <th class="th_details" colspan="5">Details</th> 3716 </tr> 3717 <tr class="entry_cont"> 3718 <td class="entry_details" colspan="5"> 3719 <p>This list contains scene modes that can be set for the camera device.<wbr/> 3720Only scene modes that have been fully implemented for the 3721camera device may be included here.<wbr/> Implementations are not expected 3722to be consistent across all devices.<wbr/> If no scene modes are supported 3723by the camera device,<wbr/> this will be set to <code>[DISABLED]</code>.<wbr/></p> 3724 </td> 3725 </tr> 3726 3727 3728 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3729 <!-- end of entry --> 3730 3731 3732 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 3733 <td class="entry_name 3734 " rowspan="1"> 3735 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 3736 </td> 3737 <td class="entry_type"> 3738 <span class="entry_type_name">byte</span> 3739 <span class="entry_type_container">x</span> 3740 3741 <span class="entry_type_array"> 3742 n 3743 </span> 3744 <span class="entry_type_visibility"> [public as enumList]</span> 3745 3746 3747 3748 <div class="entry_type_notes">List of enums.<wbr/></div> 3749 3750 3751 </td> <!-- entry_type --> 3752 3753 <td class="entry_description"> 3754 <p>List of video stabilization modes that can 3755be supported</p> 3756 </td> 3757 3758 <td class="entry_units"> 3759 </td> 3760 3761 <td class="entry_range"> 3762 <p>OFF must be included</p> 3763 </td> 3764 3765 <td class="entry_tags"> 3766 <ul class="entry_tags"> 3767 <li><a href="#tag_BC">BC</a></li> 3768 </ul> 3769 </td> 3770 3771 </tr> 3772 3773 3774 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3775 <!-- end of entry --> 3776 3777 3778 <tr class="entry" id="static_android.control.awbAvailableModes"> 3779 <td class="entry_name 3780 " rowspan="3"> 3781 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 3782 </td> 3783 <td class="entry_type"> 3784 <span class="entry_type_name">byte</span> 3785 <span class="entry_type_container">x</span> 3786 3787 <span class="entry_type_array"> 3788 n 3789 </span> 3790 <span class="entry_type_visibility"> [public as enumList]</span> 3791 3792 3793 3794 <div class="entry_type_notes">List of enums</div> 3795 3796 3797 </td> <!-- entry_type --> 3798 3799 <td class="entry_description"> 3800 <p>The set of auto-white-balance modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) 3801that are supported by this camera device.<wbr/></p> 3802 </td> 3803 3804 <td class="entry_units"> 3805 </td> 3806 3807 <td class="entry_range"> 3808 </td> 3809 3810 <td class="entry_tags"> 3811 <ul class="entry_tags"> 3812 <li><a href="#tag_BC">BC</a></li> 3813 </ul> 3814 </td> 3815 3816 </tr> 3817 <tr class="entries_header"> 3818 <th class="th_details" colspan="5">Details</th> 3819 </tr> 3820 <tr class="entry_cont"> 3821 <td class="entry_details" colspan="5"> 3822 <p>Not all the auto-white-balance modes may be supported by a 3823given camera device.<wbr/> This entry lists the valid modes for 3824<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 3825<p>All camera devices will support ON mode.<wbr/></p> 3826<p>FULL mode camera devices will always support OFF mode,<wbr/> 3827which enables application control of white balance,<wbr/> by using 3828<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/></p> 3829 </td> 3830 </tr> 3831 3832 3833 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3834 <!-- end of entry --> 3835 3836 3837 <tr class="entry" id="static_android.control.maxRegions"> 3838 <td class="entry_name 3839 " rowspan="1"> 3840 android.<wbr/>control.<wbr/>max<wbr/>Regions 3841 </td> 3842 <td class="entry_type"> 3843 <span class="entry_type_name">int32</span> 3844 <span class="entry_type_container">x</span> 3845 3846 <span class="entry_type_array"> 3847 3 3848 </span> 3849 <span class="entry_type_visibility"> [hidden]</span> 3850 3851 3852 3853 3854 3855 </td> <!-- entry_type --> 3856 3857 <td class="entry_description"> 3858 <p>List of the maximum number of regions that can be used for metering in 3859auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 3860this corresponds to the the maximum number of elements in 3861<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/> 3862and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 3863 </td> 3864 3865 <td class="entry_units"> 3866 </td> 3867 3868 <td class="entry_range"> 3869 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 3870this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 3871<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 3872 </td> 3873 3874 <td class="entry_tags"> 3875 <ul class="entry_tags"> 3876 <li><a href="#tag_BC">BC</a></li> 3877 </ul> 3878 </td> 3879 3880 </tr> 3881 3882 3883 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3884 <!-- end of entry --> 3885 3886 3887 <tr class="entry" id="static_android.control.maxRegionsAe"> 3888 <td class="entry_name 3889 " rowspan="3"> 3890 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae 3891 </td> 3892 <td class="entry_type"> 3893 <span class="entry_type_name">int32</span> 3894 3895 <span class="entry_type_visibility"> [public]</span> 3896 3897 <span class="entry_type_synthetic">[synthetic] </span> 3898 3899 3900 3901 3902 </td> <!-- entry_type --> 3903 3904 <td class="entry_description"> 3905 <p>List of the maximum number of regions that can be used for metering in 3906auto-exposure (AE); 3907this corresponds to the the maximum number of elements in 3908<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 3909 </td> 3910 3911 <td class="entry_units"> 3912 </td> 3913 3914 <td class="entry_range"> 3915 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 3916value will be >= 1.<wbr/></p> 3917 </td> 3918 3919 <td class="entry_tags"> 3920 </td> 3921 3922 </tr> 3923 3924 <tr class="entries_header"> 3925 <th class="th_details" colspan="5">HAL Implementation Details</th> 3926 </tr> 3927 <tr class="entry_cont"> 3928 <td class="entry_details" colspan="5"> 3929 <p>This entry is private to the framework.<wbr/> Fill in 3930maxRegions to have this entry be automatically populated.<wbr/></p> 3931 </td> 3932 </tr> 3933 3934 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3935 <!-- end of entry --> 3936 3937 3938 <tr class="entry" id="static_android.control.maxRegionsAwb"> 3939 <td class="entry_name 3940 " rowspan="3"> 3941 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb 3942 </td> 3943 <td class="entry_type"> 3944 <span class="entry_type_name">int32</span> 3945 3946 <span class="entry_type_visibility"> [public]</span> 3947 3948 <span class="entry_type_synthetic">[synthetic] </span> 3949 3950 3951 3952 3953 </td> <!-- entry_type --> 3954 3955 <td class="entry_description"> 3956 <p>List of the maximum number of regions that can be used for metering in 3957auto-white balance (AWB); 3958this corresponds to the the maximum number of elements in 3959<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 3960 </td> 3961 3962 <td class="entry_units"> 3963 </td> 3964 3965 <td class="entry_range"> 3966 <p>Value will be >= 0.<wbr/></p> 3967 </td> 3968 3969 <td class="entry_tags"> 3970 </td> 3971 3972 </tr> 3973 3974 <tr class="entries_header"> 3975 <th class="th_details" colspan="5">HAL Implementation Details</th> 3976 </tr> 3977 <tr class="entry_cont"> 3978 <td class="entry_details" colspan="5"> 3979 <p>This entry is private to the framework.<wbr/> Fill in 3980maxRegions to have this entry be automatically populated.<wbr/></p> 3981 </td> 3982 </tr> 3983 3984 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3985 <!-- end of entry --> 3986 3987 3988 <tr class="entry" id="static_android.control.maxRegionsAf"> 3989 <td class="entry_name 3990 " rowspan="3"> 3991 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af 3992 </td> 3993 <td class="entry_type"> 3994 <span class="entry_type_name">int32</span> 3995 3996 <span class="entry_type_visibility"> [public]</span> 3997 3998 <span class="entry_type_synthetic">[synthetic] </span> 3999 4000 4001 4002 4003 </td> <!-- entry_type --> 4004 4005 <td class="entry_description"> 4006 <p>List of the maximum number of regions that can be used for metering in 4007auto-focus (AF); 4008this corresponds to the the maximum number of elements in 4009<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 4010 </td> 4011 4012 <td class="entry_units"> 4013 </td> 4014 4015 <td class="entry_range"> 4016 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 4017value will be >= 1.<wbr/></p> 4018 </td> 4019 4020 <td class="entry_tags"> 4021 </td> 4022 4023 </tr> 4024 4025 <tr class="entries_header"> 4026 <th class="th_details" colspan="5">HAL Implementation Details</th> 4027 </tr> 4028 <tr class="entry_cont"> 4029 <td class="entry_details" colspan="5"> 4030 <p>This entry is private to the framework.<wbr/> Fill in 4031maxRegions to have this entry be automatically populated.<wbr/></p> 4032 </td> 4033 </tr> 4034 4035 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4036 <!-- end of entry --> 4037 4038 4039 <tr class="entry" id="static_android.control.sceneModeOverrides"> 4040 <td class="entry_name 4041 " rowspan="5"> 4042 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 4043 </td> 4044 <td class="entry_type"> 4045 <span class="entry_type_name">byte</span> 4046 <span class="entry_type_container">x</span> 4047 4048 <span class="entry_type_array"> 4049 3 x length(availableSceneModes) 4050 </span> 4051 <span class="entry_type_visibility"> [system]</span> 4052 4053 4054 4055 4056 4057 </td> <!-- entry_type --> 4058 4059 <td class="entry_description"> 4060 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 4061settings to use with each available scene mode.<wbr/></p> 4062 </td> 4063 4064 <td class="entry_units"> 4065 </td> 4066 4067 <td class="entry_range"> 4068 <p>For each available scene mode,<wbr/> the list must contain three 4069entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4070<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 4071by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 4072where aeMode has the lowest index position.<wbr/></p> 4073 </td> 4074 4075 <td class="entry_tags"> 4076 <ul class="entry_tags"> 4077 <li><a href="#tag_BC">BC</a></li> 4078 </ul> 4079 </td> 4080 4081 </tr> 4082 <tr class="entries_header"> 4083 <th class="th_details" colspan="5">Details</th> 4084 </tr> 4085 <tr class="entry_cont"> 4086 <td class="entry_details" colspan="5"> 4087 <p>When a scene mode is enabled,<wbr/> the camera device is expected 4088to 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/> 4089and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 4090that scene mode.<wbr/></p> 4091<p>The order of this list matches that of availableSceneModes,<wbr/> 4092with 3 entries for each mode.<wbr/> The overrides listed 4093for FACE_<wbr/>PRIORITY are ignored,<wbr/> since for that 4094mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4095<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 4096used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 4097is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY 4098overrides should be set to 0.<wbr/></p> 4099<p>For example,<wbr/> if availableSceneModes contains 4100<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 4101expects sceneModeOverrides to have 9 entries formatted like: 4102<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 4103ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 4104 </td> 4105 </tr> 4106 4107 <tr class="entries_header"> 4108 <th class="th_details" colspan="5">HAL Implementation Details</th> 4109 </tr> 4110 <tr class="entry_cont"> 4111 <td class="entry_details" colspan="5"> 4112 <p>To maintain backward compatibility,<wbr/> this list will be made available 4113in the static metadata of the camera service.<wbr/> The camera service will 4114use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4115<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 4116mode other than FACE_<wbr/>PRIORITY.<wbr/></p> 4117 </td> 4118 </tr> 4119 4120 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4121 <!-- end of entry --> 4122 4123 4124 4125 <!-- end of kind --> 4126 </tbody> 4127 <tr><td colspan="6" class="kind">dynamic</td></tr> 4128 4129 <thead class="entries_header"> 4130 <tr> 4131 <th class="th_name">Property Name</th> 4132 <th class="th_type">Type</th> 4133 <th class="th_description">Description</th> 4134 <th class="th_units">Units</th> 4135 <th class="th_range">Range</th> 4136 <th class="th_tags">Tags</th> 4137 </tr> 4138 </thead> 4139 4140 <tbody> 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 4152 <td class="entry_name 4153 entry_name_deprecated 4154 " rowspan="3"> 4155 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 4156 </td> 4157 <td class="entry_type"> 4158 <span class="entry_type_name">int32</span> 4159 4160 <span class="entry_type_visibility"> [system]</span> 4161 4162 4163 <span class="entry_type_deprecated">[deprecated] </span> 4164 4165 4166 4167 </td> <!-- entry_type --> 4168 4169 <td class="entry_description"> 4170 <p>The ID sent with the latest 4171CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 4172 </td> 4173 4174 <td class="entry_units"> 4175 </td> 4176 4177 <td class="entry_range"> 4178 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 4179 </td> 4180 4181 <td class="entry_tags"> 4182 </td> 4183 4184 </tr> 4185 <tr class="entries_header"> 4186 <th class="th_details" colspan="5">Details</th> 4187 </tr> 4188 <tr class="entry_cont"> 4189 <td class="entry_details" colspan="5"> 4190 <p>Must be 0 if no 4191CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 4192by HAL.<wbr/> Always updated even if AE algorithm ignores the 4193trigger</p> 4194 </td> 4195 </tr> 4196 4197 4198 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4199 <!-- end of entry --> 4200 4201 4202 <tr class="entry" id="dynamic_android.control.aeAntibandingMode"> 4203 <td class="entry_name 4204 " rowspan="5"> 4205 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 4206 </td> 4207 <td class="entry_type"> 4208 <span class="entry_type_name entry_type_name_enum">byte</span> 4209 4210 <span class="entry_type_visibility"> [public]</span> 4211 4212 4213 4214 4215 <ul class="entry_type_enum"> 4216 <li> 4217 <span class="entry_type_enum_name">OFF</span> 4218 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 4219avoid banding problems.<wbr/></p></span> 4220 </li> 4221 <li> 4222 <span class="entry_type_enum_name">50HZ</span> 4223 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 4224avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 4225 </li> 4226 <li> 4227 <span class="entry_type_enum_name">60HZ</span> 4228 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 4229avoid banding problems with 60Hz illumination 4230sources.<wbr/></p></span> 4231 </li> 4232 <li> 4233 <span class="entry_type_enum_name">AUTO</span> 4234 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 4235antibanding routine to the current illumination 4236conditions.<wbr/> This is the default.<wbr/></p></span> 4237 </li> 4238 </ul> 4239 4240 </td> <!-- entry_type --> 4241 4242 <td class="entry_description"> 4243 <p>The desired setting for the camera device's auto-exposure 4244algorithm's antibanding compensation.<wbr/></p> 4245 </td> 4246 4247 <td class="entry_units"> 4248 </td> 4249 4250 <td class="entry_range"> 4251 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</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>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 4267lights,<wbr/> flicker at the rate of the power supply frequency 4268(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 4269typically not noticeable to a person,<wbr/> it can be visible to 4270a camera device.<wbr/> If a camera sets its exposure time to the 4271wrong value,<wbr/> the flicker may become visible in the 4272viewfinder as flicker or in a final captured image,<wbr/> as a 4273set of variable-brightness bands across the image.<wbr/></p> 4274<p>Therefore,<wbr/> the auto-exposure routines of camera devices 4275include antibanding routines that ensure that the chosen 4276exposure value will not cause such banding.<wbr/> The choice of 4277exposure time depends on the rate of flicker,<wbr/> which the 4278camera device can detect automatically,<wbr/> or the expected 4279rate can be selected by the application using this 4280control.<wbr/></p> 4281<p>A given camera device may not support all of the possible 4282options for the antibanding mode.<wbr/> The 4283<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 4284the available modes for a given camera device.<wbr/></p> 4285<p>The default mode is AUTO,<wbr/> which must be supported by all 4286camera devices.<wbr/></p> 4287<p>If manual exposure control is enabled (by setting 4288<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/> 4289then this setting has no effect,<wbr/> and the application must 4290ensure it selects exposure times that do not cause banding 4291issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 4292the application in this.<wbr/></p> 4293 </td> 4294 </tr> 4295 4296 <tr class="entries_header"> 4297 <th class="th_details" colspan="5">HAL Implementation Details</th> 4298 </tr> 4299 <tr class="entry_cont"> 4300 <td class="entry_details" colspan="5"> 4301 <p>For all capture request templates,<wbr/> this field must be set 4302to AUTO.<wbr/> AUTO is the only mode that must supported; 4303OFF,<wbr/> 50HZ,<wbr/> 60HZ are all optional.<wbr/></p> 4304<p>If manual exposure control is enabled (by setting 4305<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/> 4306then the exposure values provided by the application must not be 4307adjusted for antibanding.<wbr/></p> 4308 </td> 4309 </tr> 4310 4311 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4312 <!-- end of entry --> 4313 4314 4315 <tr class="entry" id="dynamic_android.control.aeExposureCompensation"> 4316 <td class="entry_name 4317 " rowspan="3"> 4318 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 4319 </td> 4320 <td class="entry_type"> 4321 <span class="entry_type_name">int32</span> 4322 4323 <span class="entry_type_visibility"> [public]</span> 4324 4325 4326 4327 4328 4329 </td> <!-- entry_type --> 4330 4331 <td class="entry_description"> 4332 <p>Adjustment to AE target image 4333brightness</p> 4334 </td> 4335 4336 <td class="entry_units"> 4337 count of positive/<wbr/>negative EV steps 4338 </td> 4339 4340 <td class="entry_range"> 4341 </td> 4342 4343 <td class="entry_tags"> 4344 <ul class="entry_tags"> 4345 <li><a href="#tag_BC">BC</a></li> 4346 </ul> 4347 </td> 4348 4349 </tr> 4350 <tr class="entries_header"> 4351 <th class="th_details" colspan="5">Details</th> 4352 </tr> 4353 <tr class="entry_cont"> 4354 <td class="entry_details" colspan="5"> 4355 <p>For example,<wbr/> if EV step is 0.<wbr/>333,<wbr/> '6' will mean an 4356exposure compensation of +2 EV; -3 will mean an exposure 4357compensation of -1 EV.<wbr/> Note that this control will only be effective 4358if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control will take effect even when 4359<a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 4360<p>In the event of exposure compensation value being changed,<wbr/> camera device 4361may take several frames to reach the newly requested exposure target.<wbr/> 4362During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 4363state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 4364change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 4365FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 4366 </td> 4367 </tr> 4368 4369 4370 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4371 <!-- end of entry --> 4372 4373 4374 <tr class="entry" id="dynamic_android.control.aeLock"> 4375 <td class="entry_name 4376 " rowspan="3"> 4377 android.<wbr/>control.<wbr/>ae<wbr/>Lock 4378 </td> 4379 <td class="entry_type"> 4380 <span class="entry_type_name entry_type_name_enum">byte</span> 4381 4382 <span class="entry_type_visibility"> [public as boolean]</span> 4383 4384 4385 4386 4387 <ul class="entry_type_enum"> 4388 <li> 4389 <span class="entry_type_enum_name">OFF</span> 4390 <span class="entry_type_enum_notes"><p>Autoexposure lock is disabled; the AE algorithm 4391is free to update its parameters.<wbr/></p></span> 4392 </li> 4393 <li> 4394 <span class="entry_type_enum_name">ON</span> 4395 <span class="entry_type_enum_notes"><p>Autoexposure lock is enabled; the AE algorithm 4396must not update the exposure and sensitivity parameters 4397while the lock is active.<wbr/> 4398<a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 4399will still take effect while auto-exposure is locked.<wbr/></p></span> 4400 </li> 4401 </ul> 4402 4403 </td> <!-- entry_type --> 4404 4405 <td class="entry_description"> 4406 <p>Whether AE is currently locked to its latest 4407calculated values.<wbr/></p> 4408 </td> 4409 4410 <td class="entry_units"> 4411 </td> 4412 4413 <td class="entry_range"> 4414 </td> 4415 4416 <td class="entry_tags"> 4417 <ul class="entry_tags"> 4418 <li><a href="#tag_BC">BC</a></li> 4419 </ul> 4420 </td> 4421 4422 </tr> 4423 <tr class="entries_header"> 4424 <th class="th_details" colspan="5">Details</th> 4425 </tr> 4426 <tr class="entry_cont"> 4427 <td class="entry_details" colspan="5"> 4428 <p>Note that even when AE is locked,<wbr/> the flash may be 4429fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> 4430ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 4431<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 4432is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 4433<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 4434when AE is already locked,<wbr/> the camera device will not change the exposure time 4435(<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>) 4436parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 4437is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 4438<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> 4439<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> 4440 </td> 4441 </tr> 4442 4443 4444 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4445 <!-- end of entry --> 4446 4447 4448 <tr class="entry" id="dynamic_android.control.aeMode"> 4449 <td class="entry_name 4450 " rowspan="3"> 4451 android.<wbr/>control.<wbr/>ae<wbr/>Mode 4452 </td> 4453 <td class="entry_type"> 4454 <span class="entry_type_name entry_type_name_enum">byte</span> 4455 4456 <span class="entry_type_visibility"> [public]</span> 4457 4458 4459 4460 4461 <ul class="entry_type_enum"> 4462 <li> 4463 <span class="entry_type_enum_name">OFF</span> 4464 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled; 4465the application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 4466<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 4467<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 4468device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 4469a flash unit for this camera device.<wbr/></p></span> 4470 </li> 4471 <li> 4472 <span class="entry_type_enum_name">ON</span> 4473 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 4474with no flash control.<wbr/> The application's values for 4475<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 4476<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 4477<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 4478application has control over the various 4479android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 4480 </li> 4481 <li> 4482 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 4483 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 4484the camera's flash unit,<wbr/> firing it in low-light 4485conditions.<wbr/> The flash may be fired during a 4486precapture sequence (triggered by 4487<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and may be fired 4488for captures for which the 4489<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 4490STILL_<wbr/>CAPTURE</p></span> 4491 </li> 4492 <li> 4493 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 4494 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 4495the camera's flash unit,<wbr/> always firing it for still 4496captures.<wbr/> The flash may be fired during a precapture 4497sequence (triggered by 4498<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and will always 4499be fired for captures for which the 4500<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 4501STILL_<wbr/>CAPTURE</p></span> 4502 </li> 4503 <li> 4504 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 4505 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 4506reduction.<wbr/> If deemed necessary by the camera device,<wbr/> 4507a red eye reduction flash will fire during the 4508precapture sequence.<wbr/></p></span> 4509 </li> 4510 </ul> 4511 4512 </td> <!-- entry_type --> 4513 4514 <td class="entry_description"> 4515 <p>The desired mode for the camera device's 4516auto-exposure routine.<wbr/></p> 4517 </td> 4518 4519 <td class="entry_units"> 4520 </td> 4521 4522 <td class="entry_range"> 4523 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 4524 </td> 4525 4526 <td class="entry_tags"> 4527 <ul class="entry_tags"> 4528 <li><a href="#tag_BC">BC</a></li> 4529 </ul> 4530 </td> 4531 4532 </tr> 4533 <tr class="entries_header"> 4534 <th class="th_details" colspan="5">Details</th> 4535 </tr> 4536 <tr class="entry_cont"> 4537 <td class="entry_details" colspan="5"> 4538 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 4539AUTO.<wbr/></p> 4540<p>When set to any of the ON modes,<wbr/> the camera device's 4541auto-exposure routine is enabled,<wbr/> overriding the 4542application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 4543and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 4544<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 4545<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 4546is selected,<wbr/> the camera device's flash unit controls are 4547also overridden.<wbr/></p> 4548<p>The FLASH modes are only available if the camera device 4549has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 4550<p>If flash TORCH mode is desired,<wbr/> this field must be set to 4551ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 4552<p>When set to any of the ON modes,<wbr/> the values chosen by the 4553camera device auto-exposure routine for the overridden 4554fields for a given capture will be available in its 4555CaptureResult.<wbr/></p> 4556 </td> 4557 </tr> 4558 4559 4560 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4561 <!-- end of entry --> 4562 4563 4564 <tr class="entry" id="dynamic_android.control.aeRegions"> 4565 <td class="entry_name 4566 " rowspan="5"> 4567 android.<wbr/>control.<wbr/>ae<wbr/>Regions 4568 </td> 4569 <td class="entry_type"> 4570 <span class="entry_type_name">int32</span> 4571 <span class="entry_type_container">x</span> 4572 4573 <span class="entry_type_array"> 4574 5 x area_count 4575 </span> 4576 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 4577 4578 4579 4580 4581 4582 </td> <!-- entry_type --> 4583 4584 <td class="entry_description"> 4585 <p>List of areas to use for 4586metering.<wbr/></p> 4587 </td> 4588 4589 <td class="entry_units"> 4590 </td> 4591 4592 <td class="entry_range"> 4593 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[0]</code></p> 4594 </td> 4595 4596 <td class="entry_tags"> 4597 <ul class="entry_tags"> 4598 <li><a href="#tag_BC">BC</a></li> 4599 </ul> 4600 </td> 4601 4602 </tr> 4603 <tr class="entries_header"> 4604 <th class="th_details" colspan="5">Details</th> 4605 </tr> 4606 <tr class="entry_cont"> 4607 <td class="entry_details" colspan="5"> 4608 <p>The coordinate system is based on the active pixel array,<wbr/> 4609with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 4610(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 4611<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 4612bottom-right pixel in the active pixel array.<wbr/></p> 4613<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 4614for every pixel in the area.<wbr/> This means that a large metering area 4615with the same weight as a smaller area will have more effect in 4616the metering result.<wbr/> Metering areas can partially overlap and the 4617camera device will add the weights in the overlap region.<wbr/></p> 4618<p>If all regions have 0 weight,<wbr/> then no specific metering area 4619needs to be used by the camera device.<wbr/> If the metering region is 4620outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in capture result metadata,<wbr/> 4621the camera device will ignore the sections outside the region and output the 4622used sections in the result metadata.<wbr/></p> 4623 </td> 4624 </tr> 4625 4626 <tr class="entries_header"> 4627 <th class="th_details" colspan="5">HAL Implementation Details</th> 4628 </tr> 4629 <tr class="entry_cont"> 4630 <td class="entry_details" colspan="5"> 4631 <p>The HAL level representation of MeteringRectangle[] is a 4632int[5 * area_<wbr/>count].<wbr/> 4633Every five elements represent a metering region of 4634(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 4635The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 4636exclusive on xmax and ymax.<wbr/></p> 4637 </td> 4638 </tr> 4639 4640 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4641 <!-- end of entry --> 4642 4643 4644 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange"> 4645 <td class="entry_name 4646 " rowspan="3"> 4647 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 4648 </td> 4649 <td class="entry_type"> 4650 <span class="entry_type_name">int32</span> 4651 <span class="entry_type_container">x</span> 4652 4653 <span class="entry_type_array"> 4654 2 4655 </span> 4656 <span class="entry_type_visibility"> [public as rangeInt]</span> 4657 4658 4659 4660 4661 4662 </td> <!-- entry_type --> 4663 4664 <td class="entry_description"> 4665 <p>Range over which fps can be adjusted to 4666maintain exposure</p> 4667 </td> 4668 4669 <td class="entry_units"> 4670 </td> 4671 4672 <td class="entry_range"> 4673 <p><a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p> 4674 </td> 4675 4676 <td class="entry_tags"> 4677 <ul class="entry_tags"> 4678 <li><a href="#tag_BC">BC</a></li> 4679 </ul> 4680 </td> 4681 4682 </tr> 4683 <tr class="entries_header"> 4684 <th class="th_details" colspan="5">Details</th> 4685 </tr> 4686 <tr class="entry_cont"> 4687 <td class="entry_details" colspan="5"> 4688 <p>Only constrains AE algorithm,<wbr/> not manual control 4689of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></p> 4690 </td> 4691 </tr> 4692 4693 4694 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4695 <!-- end of entry --> 4696 4697 4698 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger"> 4699 <td class="entry_name 4700 " rowspan="3"> 4701 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 4702 </td> 4703 <td class="entry_type"> 4704 <span class="entry_type_name entry_type_name_enum">byte</span> 4705 4706 <span class="entry_type_visibility"> [public]</span> 4707 4708 4709 4710 4711 <ul class="entry_type_enum"> 4712 <li> 4713 <span class="entry_type_enum_name">IDLE</span> 4714 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 4715 </li> 4716 <li> 4717 <span class="entry_type_enum_name">START</span> 4718 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 4719by the camera device.<wbr/> The exact effect of the precapture 4720trigger depends on the current AE mode and state.<wbr/></p></span> 4721 </li> 4722 </ul> 4723 4724 </td> <!-- entry_type --> 4725 4726 <td class="entry_description"> 4727 <p>Whether the camera device will trigger a precapture 4728metering sequence when it processes this request.<wbr/></p> 4729 </td> 4730 4731 <td class="entry_units"> 4732 </td> 4733 4734 <td class="entry_range"> 4735 </td> 4736 4737 <td class="entry_tags"> 4738 <ul class="entry_tags"> 4739 <li><a href="#tag_BC">BC</a></li> 4740 </ul> 4741 </td> 4742 4743 </tr> 4744 <tr class="entries_header"> 4745 <th class="th_details" colspan="5">Details</th> 4746 </tr> 4747 <tr class="entry_cont"> 4748 <td class="entry_details" colspan="5"> 4749 <p>This entry is normally set to IDLE,<wbr/> or is not 4750included at all in the request settings.<wbr/> When included and 4751set to START,<wbr/> the camera device will trigger the autoexposure 4752precapture metering sequence.<wbr/></p> 4753<p>The effect of AE precapture trigger depends on the current 4754AE mode and state; see <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture 4755state transition details.<wbr/></p> 4756 </td> 4757 </tr> 4758 4759 4760 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4761 <!-- end of entry --> 4762 4763 4764 <tr class="entry" id="dynamic_android.control.aeState"> 4765 <td class="entry_name 4766 " rowspan="3"> 4767 android.<wbr/>control.<wbr/>ae<wbr/>State 4768 </td> 4769 <td class="entry_type"> 4770 <span class="entry_type_name entry_type_name_enum">byte</span> 4771 4772 <span class="entry_type_visibility"> [public]</span> 4773 4774 4775 4776 4777 <ul class="entry_type_enum"> 4778 <li> 4779 <span class="entry_type_enum_name">INACTIVE</span> 4780 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/> When a camera device is opened,<wbr/> it starts in 4781this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 4782this state in capture result.<wbr/></p></span> 4783 </li> 4784 <li> 4785 <span class="entry_type_enum_name">SEARCHING</span> 4786 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 4787for the current scene.<wbr/> This is a transient state,<wbr/> the camera device may skip 4788reporting this state in capture result.<wbr/></p></span> 4789 </li> 4790 <li> 4791 <span class="entry_type_enum_name">CONVERGED</span> 4792 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 4793current scene.<wbr/></p></span> 4794 </li> 4795 <li> 4796 <span class="entry_type_enum_name">LOCKED</span> 4797 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 4798 </li> 4799 <li> 4800 <span class="entry_type_enum_name">FLASH_REQUIRED</span> 4801 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 4802needs to be fired for good quality still 4803capture.<wbr/></p></span> 4804 </li> 4805 <li> 4806 <span class="entry_type_enum_name">PRECAPTURE</span> 4807 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 4808(through the <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> START),<wbr/> 4809and is currently executing it.<wbr/> Once PRECAPTURE 4810completes,<wbr/> AE will transition to CONVERGED or 4811FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient state,<wbr/> the 4812camera device may skip reporting this state in capture result.<wbr/></p></span> 4813 </li> 4814 </ul> 4815 4816 </td> <!-- entry_type --> 4817 4818 <td class="entry_description"> 4819 <p>Current state of AE algorithm</p> 4820 </td> 4821 4822 <td class="entry_units"> 4823 </td> 4824 4825 <td class="entry_range"> 4826 </td> 4827 4828 <td class="entry_tags"> 4829 </td> 4830 4831 </tr> 4832 <tr class="entries_header"> 4833 <th class="th_details" colspan="5">Details</th> 4834 </tr> 4835 <tr class="entry_cont"> 4836 <td class="entry_details" colspan="5"> 4837 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 4838resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 4839or <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 4840the algorithm states to INACTIVE.<wbr/></p> 4841<p>The camera device can do several state transitions between two results,<wbr/> if it is 4842allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 4843seen in a result.<wbr/></p> 4844<p>The state in the result is the state for this image (in sync with this image): if 4845AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 4846be good to use.<wbr/></p> 4847<p>Below are state transition tables for different AE modes.<wbr/></p> 4848<table> 4849<thead> 4850<tr> 4851<th align="center">State</th> 4852<th align="center">Transition Cause</th> 4853<th align="center">New State</th> 4854<th align="center">Notes</th> 4855</tr> 4856</thead> 4857<tbody> 4858<tr> 4859<td align="center">INACTIVE</td> 4860<td align="center"></td> 4861<td align="center">INACTIVE</td> 4862<td align="center">Camera device auto exposure algorithm is disabled</td> 4863</tr> 4864</tbody> 4865</table> 4866<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p> 4867<table> 4868<thead> 4869<tr> 4870<th align="center">State</th> 4871<th align="center">Transition Cause</th> 4872<th align="center">New State</th> 4873<th align="center">Notes</th> 4874</tr> 4875</thead> 4876<tbody> 4877<tr> 4878<td align="center">INACTIVE</td> 4879<td align="center">Camera device initiates AE scan</td> 4880<td align="center">SEARCHING</td> 4881<td align="center">Values changing</td> 4882</tr> 4883<tr> 4884<td align="center">INACTIVE</td> 4885<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 4886<td align="center">LOCKED</td> 4887<td align="center">Values locked</td> 4888</tr> 4889<tr> 4890<td align="center">SEARCHING</td> 4891<td align="center">Camera device finishes AE scan</td> 4892<td align="center">CONVERGED</td> 4893<td align="center">Good values,<wbr/> not changing</td> 4894</tr> 4895<tr> 4896<td align="center">SEARCHING</td> 4897<td align="center">Camera device finishes AE scan</td> 4898<td align="center">FLASH_<wbr/>REQUIRED</td> 4899<td align="center">Converged but too dark w/<wbr/>o flash</td> 4900</tr> 4901<tr> 4902<td align="center">SEARCHING</td> 4903<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 4904<td align="center">LOCKED</td> 4905<td align="center">Values locked</td> 4906</tr> 4907<tr> 4908<td align="center">CONVERGED</td> 4909<td align="center">Camera device initiates AE scan</td> 4910<td align="center">SEARCHING</td> 4911<td align="center">Values changing</td> 4912</tr> 4913<tr> 4914<td align="center">CONVERGED</td> 4915<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 4916<td align="center">LOCKED</td> 4917<td align="center">Values locked</td> 4918</tr> 4919<tr> 4920<td align="center">FLASH_<wbr/>REQUIRED</td> 4921<td align="center">Camera device initiates AE scan</td> 4922<td align="center">SEARCHING</td> 4923<td align="center">Values changing</td> 4924</tr> 4925<tr> 4926<td align="center">FLASH_<wbr/>REQUIRED</td> 4927<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 4928<td align="center">LOCKED</td> 4929<td align="center">Values locked</td> 4930</tr> 4931<tr> 4932<td align="center">LOCKED</td> 4933<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 4934<td align="center">SEARCHING</td> 4935<td align="center">Values not good after unlock</td> 4936</tr> 4937<tr> 4938<td align="center">LOCKED</td> 4939<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 4940<td align="center">CONVERGED</td> 4941<td align="center">Values good after unlock</td> 4942</tr> 4943<tr> 4944<td align="center">LOCKED</td> 4945<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 4946<td align="center">FLASH_<wbr/>REQUIRED</td> 4947<td align="center">Exposure good,<wbr/> but too dark</td> 4948</tr> 4949<tr> 4950<td align="center">PRECAPTURE</td> 4951<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 4952<td align="center">CONVERGED</td> 4953<td align="center">Ready for high-quality capture</td> 4954</tr> 4955<tr> 4956<td align="center">PRECAPTURE</td> 4957<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 4958<td align="center">LOCKED</td> 4959<td align="center">Ready for high-quality capture</td> 4960</tr> 4961<tr> 4962<td align="center">Any state</td> 4963<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 4964<td align="center">PRECAPTURE</td> 4965<td align="center">Start AE precapture metering sequence</td> 4966</tr> 4967</tbody> 4968</table> 4969<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 4970without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 4971can be skipped in that manner is called a transient state.<wbr/></p> 4972<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions 4973listed in above table,<wbr/> it is also legal for the camera device to skip one or more 4974transient states between two results.<wbr/> See below table for examples:</p> 4975<table> 4976<thead> 4977<tr> 4978<th align="center">State</th> 4979<th align="center">Transition Cause</th> 4980<th align="center">New State</th> 4981<th align="center">Notes</th> 4982</tr> 4983</thead> 4984<tbody> 4985<tr> 4986<td align="center">INACTIVE</td> 4987<td align="center">Camera device finished AE scan</td> 4988<td align="center">CONVERGED</td> 4989<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 4990</tr> 4991<tr> 4992<td align="center">Any state</td> 4993<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> 4994<td align="center">FLASH_<wbr/>REQUIRED</td> 4995<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> 4996</tr> 4997<tr> 4998<td align="center">Any state</td> 4999<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> 5000<td align="center">CONVERGED</td> 5001<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 5002</tr> 5003<tr> 5004<td align="center">CONVERGED</td> 5005<td align="center">Camera device finished AE scan</td> 5006<td align="center">FLASH_<wbr/>REQUIRED</td> 5007<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> 5008</tr> 5009<tr> 5010<td align="center">FLASH_<wbr/>REQUIRED</td> 5011<td align="center">Camera device finished AE scan</td> 5012<td align="center">CONVERGED</td> 5013<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 5014</tr> 5015</tbody> 5016</table> 5017 </td> 5018 </tr> 5019 5020 5021 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5022 <!-- end of entry --> 5023 5024 5025 <tr class="entry" id="dynamic_android.control.afMode"> 5026 <td class="entry_name 5027 " rowspan="5"> 5028 android.<wbr/>control.<wbr/>af<wbr/>Mode 5029 </td> 5030 <td class="entry_type"> 5031 <span class="entry_type_name entry_type_name_enum">byte</span> 5032 5033 <span class="entry_type_visibility"> [public]</span> 5034 5035 5036 5037 5038 <ul class="entry_type_enum"> 5039 <li> 5040 <span class="entry_type_enum_name">OFF</span> 5041 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 5042<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 5043application</p></span> 5044 </li> 5045 <li> 5046 <span class="entry_type_enum_name">AUTO</span> 5047 <span class="entry_type_enum_notes"><p>If lens is not fixed focus.<wbr/></p> 5048<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 5049is fixed-focus.<wbr/> In this mode,<wbr/> the lens does not move unless 5050the autofocus trigger action is called.<wbr/> When that trigger 5051is activated,<wbr/> AF must transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 5052the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 5053<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 5054and sets the AF state to INACTIVE.<wbr/></p></span> 5055 </li> 5056 <li> 5057 <span class="entry_type_enum_name">MACRO</span> 5058 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the lens does not move unless the 5059autofocus trigger action is called.<wbr/></p> 5060<p>When that trigger is activated,<wbr/> AF must transition to 5061ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 5062NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 5063position to default,<wbr/> and sets the AF state to 5064INACTIVE.<wbr/></p></span> 5065 </li> 5066 <li> 5067 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 5068 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 5069position continually to attempt to provide a 5070constantly-in-focus image stream.<wbr/></p> 5071<p>The focusing behavior should be suitable for good quality 5072video recording; typically this means slower focus 5073movement and no overshoots.<wbr/> When the AF trigger is not 5074involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 5075and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 5076states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 5077the algorithm should immediately transition into 5078AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 5079lens position until a cancel AF trigger is received.<wbr/></p> 5080<p>Once cancel is received,<wbr/> the algorithm should transition 5081back to INACTIVE and resume passive scan.<wbr/> Note that this 5082behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 5083ongoing PASSIVE_<wbr/>SCAN must immediately be 5084canceled.<wbr/></p></span> 5085 </li> 5086 <li> 5087 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 5088 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 5089position continually to attempt to provide a 5090constantly-in-focus image stream.<wbr/></p> 5091<p>The focusing behavior should be suitable for still image 5092capture; typically this means focusing as fast as 5093possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 5094algorithm should start in INACTIVE state,<wbr/> and then 5095transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 5096appropriate as it attempts to maintain focus.<wbr/> When the AF 5097trigger is activated,<wbr/> the algorithm should finish its 5098PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 5099AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 5100lens position until a cancel AF trigger is received.<wbr/></p> 5101<p>When the AF cancel trigger is activated,<wbr/> the algorithm 5102should transition back to INACTIVE and then act as if it 5103has just been started.<wbr/></p></span> 5104 </li> 5105 <li> 5106 <span class="entry_type_enum_name">EDOF</span> 5107 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus).<wbr/> AF 5108trigger is ignored,<wbr/> AF state should always be 5109INACTIVE.<wbr/></p></span> 5110 </li> 5111 </ul> 5112 5113 </td> <!-- entry_type --> 5114 5115 <td class="entry_description"> 5116 <p>Whether AF is currently enabled,<wbr/> and what 5117mode it is set to</p> 5118 </td> 5119 5120 <td class="entry_units"> 5121 </td> 5122 5123 <td class="entry_range"> 5124 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 5125 </td> 5126 5127 <td class="entry_tags"> 5128 <ul class="entry_tags"> 5129 <li><a href="#tag_BC">BC</a></li> 5130 </ul> 5131 </td> 5132 5133 </tr> 5134 <tr class="entries_header"> 5135 <th class="th_details" colspan="5">Details</th> 5136 </tr> 5137 <tr class="entry_cont"> 5138 <td class="entry_details" colspan="5"> 5139 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 5140(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/></p> 5141<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 5142the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 5143in result metadata.<wbr/></p> 5144 </td> 5145 </tr> 5146 5147 <tr class="entries_header"> 5148 <th class="th_details" colspan="5">HAL Implementation Details</th> 5149 </tr> 5150 <tr class="entry_cont"> 5151 <td class="entry_details" colspan="5"> 5152 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 5153request (<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 5154up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 5155<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 5156locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 5157after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 5158the same focal plane remains in focus.<wbr/></p> 5159<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 5160scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 5161(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 5162same lock behavior as above.<wbr/></p> 5163<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 5164focus 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/> 5165However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 5166manual control.<wbr/></p> 5167<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 5168camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 5169remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 5170by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 5171that will arise on camera modules with open-loop VCMs.<wbr/></p> 5172 </td> 5173 </tr> 5174 5175 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5176 <!-- end of entry --> 5177 5178 5179 <tr class="entry" id="dynamic_android.control.afRegions"> 5180 <td class="entry_name 5181 " rowspan="5"> 5182 android.<wbr/>control.<wbr/>af<wbr/>Regions 5183 </td> 5184 <td class="entry_type"> 5185 <span class="entry_type_name">int32</span> 5186 <span class="entry_type_container">x</span> 5187 5188 <span class="entry_type_array"> 5189 5 x area_count 5190 </span> 5191 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 5192 5193 5194 5195 5196 5197 </td> <!-- entry_type --> 5198 5199 <td class="entry_description"> 5200 <p>List of areas to use for focus 5201estimation.<wbr/></p> 5202 </td> 5203 5204 <td class="entry_units"> 5205 </td> 5206 5207 <td class="entry_range"> 5208 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[2]</code></p> 5209 </td> 5210 5211 <td class="entry_tags"> 5212 <ul class="entry_tags"> 5213 <li><a href="#tag_BC">BC</a></li> 5214 </ul> 5215 </td> 5216 5217 </tr> 5218 <tr class="entries_header"> 5219 <th class="th_details" colspan="5">Details</th> 5220 </tr> 5221 <tr class="entry_cont"> 5222 <td class="entry_details" colspan="5"> 5223 <p>The coordinate system is based on the active pixel array,<wbr/> 5224with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 5225(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 5226<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 5227bottom-right pixel in the active pixel array.<wbr/></p> 5228<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 5229for every pixel in the area.<wbr/> This means that a large metering area 5230with the same weight as a smaller area will have more effect in 5231the metering result.<wbr/> Metering areas can partially overlap and the 5232camera device will add the weights in the overlap region.<wbr/></p> 5233<p>If all regions have 0 weight,<wbr/> then no specific metering area 5234needs to be used by the camera device.<wbr/> If the metering region is 5235outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in capture result metadata,<wbr/> 5236the camera device will ignore the sections outside the region and output the 5237used sections in the result metadata.<wbr/></p> 5238 </td> 5239 </tr> 5240 5241 <tr class="entries_header"> 5242 <th class="th_details" colspan="5">HAL Implementation Details</th> 5243 </tr> 5244 <tr class="entry_cont"> 5245 <td class="entry_details" colspan="5"> 5246 <p>The HAL level representation of MeteringRectangle[] is a 5247int[5 * area_<wbr/>count].<wbr/> 5248Every five elements represent a metering region of 5249(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 5250The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 5251exclusive on xmax and ymax.<wbr/></p> 5252 </td> 5253 </tr> 5254 5255 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5256 <!-- end of entry --> 5257 5258 5259 <tr class="entry" id="dynamic_android.control.afTrigger"> 5260 <td class="entry_name 5261 " rowspan="3"> 5262 android.<wbr/>control.<wbr/>af<wbr/>Trigger 5263 </td> 5264 <td class="entry_type"> 5265 <span class="entry_type_name entry_type_name_enum">byte</span> 5266 5267 <span class="entry_type_visibility"> [public]</span> 5268 5269 5270 5271 5272 <ul class="entry_type_enum"> 5273 <li> 5274 <span class="entry_type_enum_name">IDLE</span> 5275 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 5276 </li> 5277 <li> 5278 <span class="entry_type_enum_name">START</span> 5279 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 5280 </li> 5281 <li> 5282 <span class="entry_type_enum_name">CANCEL</span> 5283 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 5284state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 5285 </li> 5286 </ul> 5287 5288 </td> <!-- entry_type --> 5289 5290 <td class="entry_description"> 5291 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 5292 </td> 5293 5294 <td class="entry_units"> 5295 </td> 5296 5297 <td class="entry_range"> 5298 </td> 5299 5300 <td class="entry_tags"> 5301 <ul class="entry_tags"> 5302 <li><a href="#tag_BC">BC</a></li> 5303 </ul> 5304 </td> 5305 5306 </tr> 5307 <tr class="entries_header"> 5308 <th class="th_details" colspan="5">Details</th> 5309 </tr> 5310 <tr class="entry_cont"> 5311 <td class="entry_details" colspan="5"> 5312 <p>This entry is normally set to IDLE,<wbr/> or is not 5313included at all in the request settings.<wbr/></p> 5314<p>When included and set to START,<wbr/> the camera device will trigger the 5315autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 5316<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 5317and return to its initial AF state.<wbr/></p> 5318<p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what that means for each AF mode.<wbr/></p> 5319 </td> 5320 </tr> 5321 5322 5323 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5324 <!-- end of entry --> 5325 5326 5327 <tr class="entry" id="dynamic_android.control.afState"> 5328 <td class="entry_name 5329 " rowspan="3"> 5330 android.<wbr/>control.<wbr/>af<wbr/>State 5331 </td> 5332 <td class="entry_type"> 5333 <span class="entry_type_name entry_type_name_enum">byte</span> 5334 5335 <span class="entry_type_visibility"> [public]</span> 5336 5337 5338 5339 5340 <ul class="entry_type_enum"> 5341 <li> 5342 <span class="entry_type_enum_name">INACTIVE</span> 5343 <span class="entry_type_enum_notes"><p>AF off or has not yet tried to scan/<wbr/>been asked 5344to scan.<wbr/> When a camera device is opened,<wbr/> it starts in 5345this state.<wbr/> This is a transient state,<wbr/> the camera device may 5346skip reporting this state in capture result.<wbr/></p></span> 5347 </li> 5348 <li> 5349 <span class="entry_type_enum_name">PASSIVE_SCAN</span> 5350 <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF is 5351currently doing an AF scan initiated by a continuous 5352autofocus mode.<wbr/> This is a transient state,<wbr/> the camera device may 5353skip reporting this state in capture result.<wbr/></p></span> 5354 </li> 5355 <li> 5356 <span class="entry_type_enum_name">PASSIVE_FOCUSED</span> 5357 <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF currently 5358believes it is in focus,<wbr/> but may restart scanning at 5359any time.<wbr/> This is a transient state,<wbr/> the camera device may skip 5360reporting this state in capture result.<wbr/></p></span> 5361 </li> 5362 <li> 5363 <span class="entry_type_enum_name">ACTIVE_SCAN</span> 5364 <span class="entry_type_enum_notes"><p>if AUTO or MACRO modes are supported.<wbr/> AF is doing 5365an AF scan because it was triggered by AF trigger.<wbr/> This is a 5366transient state,<wbr/> the camera device may skip reporting 5367this state in capture result.<wbr/></p></span> 5368 </li> 5369 <li> 5370 <span class="entry_type_enum_name">FOCUSED_LOCKED</span> 5371 <span class="entry_type_enum_notes"><p>if any AF mode besides OFF is supported.<wbr/> AF 5372believes it is focused correctly and is 5373locked.<wbr/></p></span> 5374 </li> 5375 <li> 5376 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span> 5377 <span class="entry_type_enum_notes"><p>if any AF mode besides OFF is supported.<wbr/> AF has 5378failed to focus successfully and is 5379locked.<wbr/></p></span> 5380 </li> 5381 <li> 5382 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span> 5383 <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF finished a 5384passive scan without finding focus,<wbr/> and may restart 5385scanning at any time.<wbr/> This is a transient state,<wbr/> the camera 5386device may skip reporting this state in capture result.<wbr/></p></span> 5387 </li> 5388 </ul> 5389 5390 </td> <!-- entry_type --> 5391 5392 <td class="entry_description"> 5393 <p>Current state of AF algorithm.<wbr/></p> 5394 </td> 5395 5396 <td class="entry_units"> 5397 </td> 5398 5399 <td class="entry_range"> 5400 </td> 5401 5402 <td class="entry_tags"> 5403 </td> 5404 5405 </tr> 5406 <tr class="entries_header"> 5407 <th class="th_details" colspan="5">Details</th> 5408 </tr> 5409 <tr class="entry_cont"> 5410 <td class="entry_details" colspan="5"> 5411 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 5412resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 5413or <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 5414the algorithm states to INACTIVE.<wbr/></p> 5415<p>The camera device can do several state transitions between two results,<wbr/> if it is 5416allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 5417seen in a result.<wbr/></p> 5418<p>The state in the result is the state for this image (in sync with this image): if 5419AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 5420be sharp.<wbr/></p> 5421<p>Below are state transition tables for different AF modes.<wbr/></p> 5422<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> 5423<table> 5424<thead> 5425<tr> 5426<th align="center">State</th> 5427<th align="center">Transition Cause</th> 5428<th align="center">New State</th> 5429<th align="center">Notes</th> 5430</tr> 5431</thead> 5432<tbody> 5433<tr> 5434<td align="center">INACTIVE</td> 5435<td align="center"></td> 5436<td align="center">INACTIVE</td> 5437<td align="center">Never changes</td> 5438</tr> 5439</tbody> 5440</table> 5441<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> 5442<table> 5443<thead> 5444<tr> 5445<th align="center">State</th> 5446<th align="center">Transition Cause</th> 5447<th align="center">New State</th> 5448<th align="center">Notes</th> 5449</tr> 5450</thead> 5451<tbody> 5452<tr> 5453<td align="center">INACTIVE</td> 5454<td align="center">AF_<wbr/>TRIGGER</td> 5455<td align="center">ACTIVE_<wbr/>SCAN</td> 5456<td align="center">Start AF sweep,<wbr/> Lens now moving</td> 5457</tr> 5458<tr> 5459<td align="center">ACTIVE_<wbr/>SCAN</td> 5460<td align="center">AF sweep done</td> 5461<td align="center">FOCUSED_<wbr/>LOCKED</td> 5462<td align="center">Focused,<wbr/> Lens now locked</td> 5463</tr> 5464<tr> 5465<td align="center">ACTIVE_<wbr/>SCAN</td> 5466<td align="center">AF sweep done</td> 5467<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5468<td align="center">Not focused,<wbr/> Lens now locked</td> 5469</tr> 5470<tr> 5471<td align="center">ACTIVE_<wbr/>SCAN</td> 5472<td align="center">AF_<wbr/>CANCEL</td> 5473<td align="center">INACTIVE</td> 5474<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 5475</tr> 5476<tr> 5477<td align="center">FOCUSED_<wbr/>LOCKED</td> 5478<td align="center">AF_<wbr/>CANCEL</td> 5479<td align="center">INACTIVE</td> 5480<td align="center">Cancel/<wbr/>reset AF</td> 5481</tr> 5482<tr> 5483<td align="center">FOCUSED_<wbr/>LOCKED</td> 5484<td align="center">AF_<wbr/>TRIGGER</td> 5485<td align="center">ACTIVE_<wbr/>SCAN</td> 5486<td align="center">Start new sweep,<wbr/> Lens now moving</td> 5487</tr> 5488<tr> 5489<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5490<td align="center">AF_<wbr/>CANCEL</td> 5491<td align="center">INACTIVE</td> 5492<td align="center">Cancel/<wbr/>reset AF</td> 5493</tr> 5494<tr> 5495<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5496<td align="center">AF_<wbr/>TRIGGER</td> 5497<td align="center">ACTIVE_<wbr/>SCAN</td> 5498<td align="center">Start new sweep,<wbr/> Lens now moving</td> 5499</tr> 5500<tr> 5501<td align="center">Any state</td> 5502<td align="center">Mode change</td> 5503<td align="center">INACTIVE</td> 5504<td align="center"></td> 5505</tr> 5506</tbody> 5507</table> 5508<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 5509without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 5510can be skipped in that manner is called a transient state.<wbr/></p> 5511<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the 5512state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 5513one or more transient states between two results.<wbr/> See below table for examples:</p> 5514<table> 5515<thead> 5516<tr> 5517<th align="center">State</th> 5518<th align="center">Transition Cause</th> 5519<th align="center">New State</th> 5520<th align="center">Notes</th> 5521</tr> 5522</thead> 5523<tbody> 5524<tr> 5525<td align="center">INACTIVE</td> 5526<td align="center">AF_<wbr/>TRIGGER</td> 5527<td align="center">FOCUSED_<wbr/>LOCKED</td> 5528<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 5529</tr> 5530<tr> 5531<td align="center">INACTIVE</td> 5532<td align="center">AF_<wbr/>TRIGGER</td> 5533<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5534<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> 5535</tr> 5536<tr> 5537<td align="center">FOCUSED_<wbr/>LOCKED</td> 5538<td align="center">AF_<wbr/>TRIGGER</td> 5539<td align="center">FOCUSED_<wbr/>LOCKED</td> 5540<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 5541</tr> 5542<tr> 5543<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5544<td align="center">AF_<wbr/>TRIGGER</td> 5545<td align="center">FOCUSED_<wbr/>LOCKED</td> 5546<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> 5547</tr> 5548</tbody> 5549</table> 5550<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> 5551<table> 5552<thead> 5553<tr> 5554<th align="center">State</th> 5555<th align="center">Transition Cause</th> 5556<th align="center">New State</th> 5557<th align="center">Notes</th> 5558</tr> 5559</thead> 5560<tbody> 5561<tr> 5562<td align="center">INACTIVE</td> 5563<td align="center">Camera device initiates new scan</td> 5564<td align="center">PASSIVE_<wbr/>SCAN</td> 5565<td align="center">Start AF scan,<wbr/> Lens now moving</td> 5566</tr> 5567<tr> 5568<td align="center">INACTIVE</td> 5569<td align="center">AF_<wbr/>TRIGGER</td> 5570<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5571<td align="center">AF state query,<wbr/> Lens now locked</td> 5572</tr> 5573<tr> 5574<td align="center">PASSIVE_<wbr/>SCAN</td> 5575<td align="center">Camera device completes current scan</td> 5576<td align="center">PASSIVE_<wbr/>FOCUSED</td> 5577<td align="center">End AF scan,<wbr/> Lens now locked</td> 5578</tr> 5579<tr> 5580<td align="center">PASSIVE_<wbr/>SCAN</td> 5581<td align="center">Camera device fails current scan</td> 5582<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 5583<td align="center">End AF scan,<wbr/> Lens now locked</td> 5584</tr> 5585<tr> 5586<td align="center">PASSIVE_<wbr/>SCAN</td> 5587<td align="center">AF_<wbr/>TRIGGER</td> 5588<td align="center">FOCUSED_<wbr/>LOCKED</td> 5589<td align="center">Immediate trans.<wbr/> If focus is good,<wbr/> Lens now locked</td> 5590</tr> 5591<tr> 5592<td align="center">PASSIVE_<wbr/>SCAN</td> 5593<td align="center">AF_<wbr/>TRIGGER</td> 5594<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5595<td align="center">Immediate trans.<wbr/> if focus is bad,<wbr/> Lens now locked</td> 5596</tr> 5597<tr> 5598<td align="center">PASSIVE_<wbr/>SCAN</td> 5599<td align="center">AF_<wbr/>CANCEL</td> 5600<td align="center">INACTIVE</td> 5601<td align="center">Reset lens position,<wbr/> Lens now locked</td> 5602</tr> 5603<tr> 5604<td align="center">PASSIVE_<wbr/>FOCUSED</td> 5605<td align="center">Camera device initiates new scan</td> 5606<td align="center">PASSIVE_<wbr/>SCAN</td> 5607<td align="center">Start AF scan,<wbr/> Lens now moving</td> 5608</tr> 5609<tr> 5610<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 5611<td align="center">Camera device initiates new scan</td> 5612<td align="center">PASSIVE_<wbr/>SCAN</td> 5613<td align="center">Start AF scan,<wbr/> Lens now moving</td> 5614</tr> 5615<tr> 5616<td align="center">PASSIVE_<wbr/>FOCUSED</td> 5617<td align="center">AF_<wbr/>TRIGGER</td> 5618<td align="center">FOCUSED_<wbr/>LOCKED</td> 5619<td align="center">Immediate trans.<wbr/> Lens now locked</td> 5620</tr> 5621<tr> 5622<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 5623<td align="center">AF_<wbr/>TRIGGER</td> 5624<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5625<td align="center">Immediate trans.<wbr/> Lens now locked</td> 5626</tr> 5627<tr> 5628<td align="center">FOCUSED_<wbr/>LOCKED</td> 5629<td align="center">AF_<wbr/>TRIGGER</td> 5630<td align="center">FOCUSED_<wbr/>LOCKED</td> 5631<td align="center">No effect</td> 5632</tr> 5633<tr> 5634<td align="center">FOCUSED_<wbr/>LOCKED</td> 5635<td align="center">AF_<wbr/>CANCEL</td> 5636<td align="center">INACTIVE</td> 5637<td align="center">Restart AF scan</td> 5638</tr> 5639<tr> 5640<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5641<td align="center">AF_<wbr/>TRIGGER</td> 5642<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5643<td align="center">No effect</td> 5644</tr> 5645<tr> 5646<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5647<td align="center">AF_<wbr/>CANCEL</td> 5648<td align="center">INACTIVE</td> 5649<td align="center">Restart AF scan</td> 5650</tr> 5651</tbody> 5652</table> 5653<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> 5654<table> 5655<thead> 5656<tr> 5657<th align="center">State</th> 5658<th align="center">Transition Cause</th> 5659<th align="center">New State</th> 5660<th align="center">Notes</th> 5661</tr> 5662</thead> 5663<tbody> 5664<tr> 5665<td align="center">INACTIVE</td> 5666<td align="center">Camera device initiates new scan</td> 5667<td align="center">PASSIVE_<wbr/>SCAN</td> 5668<td align="center">Start AF scan,<wbr/> Lens now moving</td> 5669</tr> 5670<tr> 5671<td align="center">INACTIVE</td> 5672<td align="center">AF_<wbr/>TRIGGER</td> 5673<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5674<td align="center">AF state query,<wbr/> Lens now locked</td> 5675</tr> 5676<tr> 5677<td align="center">PASSIVE_<wbr/>SCAN</td> 5678<td align="center">Camera device completes current scan</td> 5679<td align="center">PASSIVE_<wbr/>FOCUSED</td> 5680<td align="center">End AF scan,<wbr/> Lens now locked</td> 5681</tr> 5682<tr> 5683<td align="center">PASSIVE_<wbr/>SCAN</td> 5684<td align="center">Camera device fails current scan</td> 5685<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 5686<td align="center">End AF scan,<wbr/> Lens now locked</td> 5687</tr> 5688<tr> 5689<td align="center">PASSIVE_<wbr/>SCAN</td> 5690<td align="center">AF_<wbr/>TRIGGER</td> 5691<td align="center">FOCUSED_<wbr/>LOCKED</td> 5692<td align="center">Eventual trans.<wbr/> once focus good,<wbr/> Lens now locked</td> 5693</tr> 5694<tr> 5695<td align="center">PASSIVE_<wbr/>SCAN</td> 5696<td align="center">AF_<wbr/>TRIGGER</td> 5697<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5698<td align="center">Eventual trans.<wbr/> if cannot focus,<wbr/> Lens now locked</td> 5699</tr> 5700<tr> 5701<td align="center">PASSIVE_<wbr/>SCAN</td> 5702<td align="center">AF_<wbr/>CANCEL</td> 5703<td align="center">INACTIVE</td> 5704<td align="center">Reset lens position,<wbr/> Lens now locked</td> 5705</tr> 5706<tr> 5707<td align="center">PASSIVE_<wbr/>FOCUSED</td> 5708<td align="center">Camera device initiates new scan</td> 5709<td align="center">PASSIVE_<wbr/>SCAN</td> 5710<td align="center">Start AF scan,<wbr/> Lens now moving</td> 5711</tr> 5712<tr> 5713<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 5714<td align="center">Camera device initiates new scan</td> 5715<td align="center">PASSIVE_<wbr/>SCAN</td> 5716<td align="center">Start AF scan,<wbr/> Lens now moving</td> 5717</tr> 5718<tr> 5719<td align="center">PASSIVE_<wbr/>FOCUSED</td> 5720<td align="center">AF_<wbr/>TRIGGER</td> 5721<td align="center">FOCUSED_<wbr/>LOCKED</td> 5722<td align="center">Immediate trans.<wbr/> Lens now locked</td> 5723</tr> 5724<tr> 5725<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 5726<td align="center">AF_<wbr/>TRIGGER</td> 5727<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5728<td align="center">Immediate trans.<wbr/> Lens now locked</td> 5729</tr> 5730<tr> 5731<td align="center">FOCUSED_<wbr/>LOCKED</td> 5732<td align="center">AF_<wbr/>TRIGGER</td> 5733<td align="center">FOCUSED_<wbr/>LOCKED</td> 5734<td align="center">No effect</td> 5735</tr> 5736<tr> 5737<td align="center">FOCUSED_<wbr/>LOCKED</td> 5738<td align="center">AF_<wbr/>CANCEL</td> 5739<td align="center">INACTIVE</td> 5740<td align="center">Restart AF scan</td> 5741</tr> 5742<tr> 5743<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5744<td align="center">AF_<wbr/>TRIGGER</td> 5745<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5746<td align="center">No effect</td> 5747</tr> 5748<tr> 5749<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 5750<td align="center">AF_<wbr/>CANCEL</td> 5751<td align="center">INACTIVE</td> 5752<td align="center">Restart AF scan</td> 5753</tr> 5754</tbody> 5755</table> 5756<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO 5757(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the 5758camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 5759will be evaluated in the context of the new mode in the request.<wbr/> 5760See below table for examples:</p> 5761<table> 5762<thead> 5763<tr> 5764<th align="center">State</th> 5765<th align="center">Transition Cause</th> 5766<th align="center">New State</th> 5767<th align="center">Notes</th> 5768</tr> 5769</thead> 5770<tbody> 5771<tr> 5772<td align="center">any state</td> 5773<td align="center">CAF-->AUTO mode switch</td> 5774<td align="center">INACTIVE</td> 5775<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> 5776</tr> 5777<tr> 5778<td align="center">any state</td> 5779<td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> 5780<td align="center">trigger-reachable states from INACTIVE</td> 5781<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> 5782</tr> 5783<tr> 5784<td align="center">any state</td> 5785<td align="center">AUTO-->CAF mode switch</td> 5786<td align="center">passively reachable states from INACTIVE</td> 5787<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td> 5788</tr> 5789</tbody> 5790</table> 5791 </td> 5792 </tr> 5793 5794 5795 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5796 <!-- end of entry --> 5797 5798 5799 <tr class="entry" id="dynamic_android.control.afTriggerId"> 5800 <td class="entry_name 5801 entry_name_deprecated 5802 " rowspan="3"> 5803 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 5804 </td> 5805 <td class="entry_type"> 5806 <span class="entry_type_name">int32</span> 5807 5808 <span class="entry_type_visibility"> [system]</span> 5809 5810 5811 <span class="entry_type_deprecated">[deprecated] </span> 5812 5813 5814 5815 </td> <!-- entry_type --> 5816 5817 <td class="entry_description"> 5818 <p>The ID sent with the latest 5819CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 5820 </td> 5821 5822 <td class="entry_units"> 5823 </td> 5824 5825 <td class="entry_range"> 5826 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 5827 </td> 5828 5829 <td class="entry_tags"> 5830 </td> 5831 5832 </tr> 5833 <tr class="entries_header"> 5834 <th class="th_details" colspan="5">Details</th> 5835 </tr> 5836 <tr class="entry_cont"> 5837 <td class="entry_details" colspan="5"> 5838 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 5839received yet by HAL.<wbr/> Always updated even if AF algorithm 5840ignores the trigger</p> 5841 </td> 5842 </tr> 5843 5844 5845 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5846 <!-- end of entry --> 5847 5848 5849 <tr class="entry" id="dynamic_android.control.awbLock"> 5850 <td class="entry_name 5851 " rowspan="3"> 5852 android.<wbr/>control.<wbr/>awb<wbr/>Lock 5853 </td> 5854 <td class="entry_type"> 5855 <span class="entry_type_name entry_type_name_enum">byte</span> 5856 5857 <span class="entry_type_visibility"> [public as boolean]</span> 5858 5859 5860 5861 5862 <ul class="entry_type_enum"> 5863 <li> 5864 <span class="entry_type_enum_name">OFF</span> 5865 <span class="entry_type_enum_notes"><p>Auto-whitebalance lock is disabled; the AWB 5866algorithm is free to update its parameters if in AUTO 5867mode.<wbr/></p></span> 5868 </li> 5869 <li> 5870 <span class="entry_type_enum_name">ON</span> 5871 <span class="entry_type_enum_notes"><p>Auto-whitebalance lock is enabled; the AWB 5872algorithm must not update its parameters while the lock 5873is active.<wbr/></p></span> 5874 </li> 5875 </ul> 5876 5877 </td> <!-- entry_type --> 5878 5879 <td class="entry_description"> 5880 <p>Whether AWB is currently locked to its 5881latest calculated values.<wbr/></p> 5882 </td> 5883 5884 <td class="entry_units"> 5885 </td> 5886 5887 <td class="entry_range"> 5888 </td> 5889 5890 <td class="entry_tags"> 5891 <ul class="entry_tags"> 5892 <li><a href="#tag_BC">BC</a></li> 5893 </ul> 5894 </td> 5895 5896 </tr> 5897 <tr class="entries_header"> 5898 <th class="th_details" colspan="5">Details</th> 5899 </tr> 5900 <tr class="entry_cont"> 5901 <td class="entry_details" colspan="5"> 5902 <p>Note that AWB lock is only meaningful for AUTO 5903mode; in other modes,<wbr/> AWB is already fixed to a specific 5904setting.<wbr/></p> 5905 </td> 5906 </tr> 5907 5908 5909 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5910 <!-- end of entry --> 5911 5912 5913 <tr class="entry" id="dynamic_android.control.awbMode"> 5914 <td class="entry_name 5915 " rowspan="3"> 5916 android.<wbr/>control.<wbr/>awb<wbr/>Mode 5917 </td> 5918 <td class="entry_type"> 5919 <span class="entry_type_name entry_type_name_enum">byte</span> 5920 5921 <span class="entry_type_visibility"> [public]</span> 5922 5923 5924 5925 5926 <ul class="entry_type_enum"> 5927 <li> 5928 <span class="entry_type_enum_name">OFF</span> 5929 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 5930the application-selected color transform matrix 5931(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 5932(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 5933device for manual white balance control.<wbr/></p></span> 5934 </li> 5935 <li> 5936 <span class="entry_type_enum_name">AUTO</span> 5937 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is active; 5938the application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 5939and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/></p></span> 5940 </li> 5941 <li> 5942 <span class="entry_type_enum_name">INCANDESCENT</span> 5943 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 5944the camera device uses incandescent light as the assumed scene 5945illumination for white balance.<wbr/> While the exact white balance 5946transforms are up to the camera device,<wbr/> they will approximately 5947match the CIE standard illuminant A.<wbr/></p></span> 5948 </li> 5949 <li> 5950 <span class="entry_type_enum_name">FLUORESCENT</span> 5951 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 5952the camera device uses fluorescent light as the assumed scene 5953illumination for white balance.<wbr/> While the exact white balance 5954transforms are up to the camera device,<wbr/> they will approximately 5955match the CIE standard illuminant F2.<wbr/></p></span> 5956 </li> 5957 <li> 5958 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 5959 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 5960the camera device uses warm fluorescent light as the assumed scene 5961illumination for white balance.<wbr/> While the exact white balance 5962transforms are up to the camera device,<wbr/> they will approximately 5963match the CIE standard illuminant F4.<wbr/></p></span> 5964 </li> 5965 <li> 5966 <span class="entry_type_enum_name">DAYLIGHT</span> 5967 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 5968the camera device uses daylight light as the assumed scene 5969illumination for white balance.<wbr/> While the exact white balance 5970transforms are up to the camera device,<wbr/> they will approximately 5971match the CIE standard illuminant D65.<wbr/></p></span> 5972 </li> 5973 <li> 5974 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 5975 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 5976the camera device uses cloudy daylight light as the assumed scene 5977illumination for white balance.<wbr/></p></span> 5978 </li> 5979 <li> 5980 <span class="entry_type_enum_name">TWILIGHT</span> 5981 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 5982the camera device uses twilight light as the assumed scene 5983illumination for white balance.<wbr/></p></span> 5984 </li> 5985 <li> 5986 <span class="entry_type_enum_name">SHADE</span> 5987 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 5988the camera device uses shade light as the assumed scene 5989illumination for white balance.<wbr/></p></span> 5990 </li> 5991 </ul> 5992 5993 </td> <!-- entry_type --> 5994 5995 <td class="entry_description"> 5996 <p>Whether AWB is currently setting the color 5997transform fields,<wbr/> and what its illumination target 5998is.<wbr/></p> 5999 </td> 6000 6001 <td class="entry_units"> 6002 </td> 6003 6004 <td class="entry_range"> 6005 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 6006 </td> 6007 6008 <td class="entry_tags"> 6009 <ul class="entry_tags"> 6010 <li><a href="#tag_BC">BC</a></li> 6011 </ul> 6012 </td> 6013 6014 </tr> 6015 <tr class="entries_header"> 6016 <th class="th_details" colspan="5">Details</th> 6017 </tr> 6018 <tr class="entry_cont"> 6019 <td class="entry_details" colspan="5"> 6020 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 6021<p>When set to the ON mode,<wbr/> the camera device's auto white balance 6022routine is enabled,<wbr/> overriding the application's selected 6023<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 6024<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 6025<p>When set to the OFF mode,<wbr/> the camera device's auto white balance 6026routine is disabled.<wbr/> The application manually controls the white 6027balance 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> 6028and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 6029<p>When set to any other modes,<wbr/> the camera device's auto white balance 6030routine is disabled.<wbr/> The camera device uses each particular illumination 6031target for white balance adjustment.<wbr/></p> 6032 </td> 6033 </tr> 6034 6035 6036 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6037 <!-- end of entry --> 6038 6039 6040 <tr class="entry" id="dynamic_android.control.awbRegions"> 6041 <td class="entry_name 6042 " rowspan="5"> 6043 android.<wbr/>control.<wbr/>awb<wbr/>Regions 6044 </td> 6045 <td class="entry_type"> 6046 <span class="entry_type_name">int32</span> 6047 <span class="entry_type_container">x</span> 6048 6049 <span class="entry_type_array"> 6050 5 x area_count 6051 </span> 6052 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 6053 6054 6055 6056 6057 6058 </td> <!-- entry_type --> 6059 6060 <td class="entry_description"> 6061 <p>List of areas to use for illuminant 6062estimation.<wbr/></p> 6063 </td> 6064 6065 <td class="entry_units"> 6066 </td> 6067 6068 <td class="entry_range"> 6069 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[1]</code></p> 6070 </td> 6071 6072 <td class="entry_tags"> 6073 <ul class="entry_tags"> 6074 <li><a href="#tag_BC">BC</a></li> 6075 </ul> 6076 </td> 6077 6078 </tr> 6079 <tr class="entries_header"> 6080 <th class="th_details" colspan="5">Details</th> 6081 </tr> 6082 <tr class="entry_cont"> 6083 <td class="entry_details" colspan="5"> 6084 <p>The coordinate system is based on the active pixel array,<wbr/> 6085with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 6086(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 6087<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 6088bottom-right pixel in the active pixel array.<wbr/></p> 6089<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 6090for every pixel in the area.<wbr/> This means that a large metering area 6091with the same weight as a smaller area will have more effect in 6092the metering result.<wbr/> Metering areas can partially overlap and the 6093camera device will add the weights in the overlap region.<wbr/></p> 6094<p>If all regions have 0 weight,<wbr/> then no specific metering area 6095needs to be used by the camera device.<wbr/> If the metering region is 6096outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in capture result metadata,<wbr/> 6097the camera device will ignore the sections outside the region and output the 6098used sections in the result metadata.<wbr/></p> 6099 </td> 6100 </tr> 6101 6102 <tr class="entries_header"> 6103 <th class="th_details" colspan="5">HAL Implementation Details</th> 6104 </tr> 6105 <tr class="entry_cont"> 6106 <td class="entry_details" colspan="5"> 6107 <p>The HAL level representation of MeteringRectangle[] is a 6108int[5 * area_<wbr/>count].<wbr/> 6109Every five elements represent a metering region of 6110(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 6111The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 6112exclusive on xmax and ymax.<wbr/></p> 6113 </td> 6114 </tr> 6115 6116 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6117 <!-- end of entry --> 6118 6119 6120 <tr class="entry" id="dynamic_android.control.captureIntent"> 6121 <td class="entry_name 6122 " rowspan="3"> 6123 android.<wbr/>control.<wbr/>capture<wbr/>Intent 6124 </td> 6125 <td class="entry_type"> 6126 <span class="entry_type_name entry_type_name_enum">byte</span> 6127 6128 <span class="entry_type_visibility"> [public]</span> 6129 6130 6131 6132 6133 <ul class="entry_type_enum"> 6134 <li> 6135 <span class="entry_type_enum_name">CUSTOM</span> 6136 <span class="entry_type_enum_notes"><p>This request doesn't fall into the other 6137categories.<wbr/> Default to preview-like 6138behavior.<wbr/></p></span> 6139 </li> 6140 <li> 6141 <span class="entry_type_enum_name">PREVIEW</span> 6142 <span class="entry_type_enum_notes"><p>This request is for a preview-like usecase.<wbr/> The 6143precapture trigger may be used to start off a metering 6144w/<wbr/>flash sequence</p></span> 6145 </li> 6146 <li> 6147 <span class="entry_type_enum_name">STILL_CAPTURE</span> 6148 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 6149usecase.<wbr/></p></span> 6150 </li> 6151 <li> 6152 <span class="entry_type_enum_name">VIDEO_RECORD</span> 6153 <span class="entry_type_enum_notes"><p>This request is for a video recording 6154usecase.<wbr/></p></span> 6155 </li> 6156 <li> 6157 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 6158 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 6159image while recording video) usecase</p></span> 6160 </li> 6161 <li> 6162 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 6163 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 6164application will stream full-resolution images and 6165reprocess one or several later for a final 6166capture</p></span> 6167 </li> 6168 <li> 6169 <span class="entry_type_enum_name">MANUAL</span> 6170 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 6171the applications want to directly control the capture parameters 6172(e.<wbr/>g.<wbr/> <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> etc.<wbr/>).<wbr/></p></span> 6173 </li> 6174 </ul> 6175 6176 </td> <!-- entry_type --> 6177 6178 <td class="entry_description"> 6179 <p>Information to the camera device 3A (auto-exposure,<wbr/> 6180auto-focus,<wbr/> auto-white balance) routines about the purpose 6181of this capture,<wbr/> to help the camera device to decide optimal 3A 6182strategy.<wbr/></p> 6183 </td> 6184 6185 <td class="entry_units"> 6186 </td> 6187 6188 <td class="entry_range"> 6189 <p>All must be supported except for ZERO_<wbr/>SHUTTER_<wbr/>LAG and MANUAL.<wbr/></p> 6190 </td> 6191 6192 <td class="entry_tags"> 6193 <ul class="entry_tags"> 6194 <li><a href="#tag_BC">BC</a></li> 6195 </ul> 6196 </td> 6197 6198 </tr> 6199 <tr class="entries_header"> 6200 <th class="th_details" colspan="5">Details</th> 6201 </tr> 6202 <tr class="entry_cont"> 6203 <td class="entry_details" colspan="5"> 6204 <p>This control (except for MANUAL) is only effective if 6205<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 6206<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG must be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 6207contains ZSL.<wbr/> MANUAL must be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 6208contains MANUAL_<wbr/>SENSOR.<wbr/></p> 6209 </td> 6210 </tr> 6211 6212 6213 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6214 <!-- end of entry --> 6215 6216 6217 <tr class="entry" id="dynamic_android.control.awbState"> 6218 <td class="entry_name 6219 " rowspan="3"> 6220 android.<wbr/>control.<wbr/>awb<wbr/>State 6221 </td> 6222 <td class="entry_type"> 6223 <span class="entry_type_name entry_type_name_enum">byte</span> 6224 6225 <span class="entry_type_visibility"> [public]</span> 6226 6227 6228 6229 6230 <ul class="entry_type_enum"> 6231 <li> 6232 <span class="entry_type_enum_name">INACTIVE</span> 6233 <span class="entry_type_enum_notes"><p>AWB is not in auto mode.<wbr/> When a camera device is opened,<wbr/> it 6234starts in this state.<wbr/> This is a transient state,<wbr/> the camera device may 6235skip reporting this state in capture result.<wbr/></p></span> 6236 </li> 6237 <li> 6238 <span class="entry_type_enum_name">SEARCHING</span> 6239 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 6240values for the current scene.<wbr/> This is a transient state,<wbr/> the camera device 6241may skip reporting this state in capture result.<wbr/></p></span> 6242 </li> 6243 <li> 6244 <span class="entry_type_enum_name">CONVERGED</span> 6245 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 6246current scene.<wbr/></p></span> 6247 </li> 6248 <li> 6249 <span class="entry_type_enum_name">LOCKED</span> 6250 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 6251 </li> 6252 </ul> 6253 6254 </td> <!-- entry_type --> 6255 6256 <td class="entry_description"> 6257 <p>Current state of AWB algorithm</p> 6258 </td> 6259 6260 <td class="entry_units"> 6261 </td> 6262 6263 <td class="entry_range"> 6264 </td> 6265 6266 <td class="entry_tags"> 6267 </td> 6268 6269 </tr> 6270 <tr class="entries_header"> 6271 <th class="th_details" colspan="5">Details</th> 6272 </tr> 6273 <tr class="entry_cont"> 6274 <td class="entry_details" colspan="5"> 6275 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 6276resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6277or <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 6278the algorithm states to INACTIVE.<wbr/></p> 6279<p>The camera device can do several state transitions between two results,<wbr/> if it is 6280allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 6281a result.<wbr/></p> 6282<p>The state in the result is the state for this image (in sync with this image): if 6283AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 6284be good to use.<wbr/></p> 6285<p>Below are state transition tables for different AWB modes.<wbr/></p> 6286<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 6287<table> 6288<thead> 6289<tr> 6290<th align="center">State</th> 6291<th align="center">Transition Cause</th> 6292<th align="center">New State</th> 6293<th align="center">Notes</th> 6294</tr> 6295</thead> 6296<tbody> 6297<tr> 6298<td align="center">INACTIVE</td> 6299<td align="center"></td> 6300<td align="center">INACTIVE</td> 6301<td align="center">Camera device auto white balance algorithm is disabled</td> 6302</tr> 6303</tbody> 6304</table> 6305<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 6306<table> 6307<thead> 6308<tr> 6309<th align="center">State</th> 6310<th align="center">Transition Cause</th> 6311<th align="center">New State</th> 6312<th align="center">Notes</th> 6313</tr> 6314</thead> 6315<tbody> 6316<tr> 6317<td align="center">INACTIVE</td> 6318<td align="center">Camera device initiates AWB scan</td> 6319<td align="center">SEARCHING</td> 6320<td align="center">Values changing</td> 6321</tr> 6322<tr> 6323<td align="center">INACTIVE</td> 6324<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 6325<td align="center">LOCKED</td> 6326<td align="center">Values locked</td> 6327</tr> 6328<tr> 6329<td align="center">SEARCHING</td> 6330<td align="center">Camera device finishes AWB scan</td> 6331<td align="center">CONVERGED</td> 6332<td align="center">Good values,<wbr/> not changing</td> 6333</tr> 6334<tr> 6335<td align="center">SEARCHING</td> 6336<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 6337<td align="center">LOCKED</td> 6338<td align="center">Values locked</td> 6339</tr> 6340<tr> 6341<td align="center">CONVERGED</td> 6342<td align="center">Camera device initiates AWB scan</td> 6343<td align="center">SEARCHING</td> 6344<td align="center">Values changing</td> 6345</tr> 6346<tr> 6347<td align="center">CONVERGED</td> 6348<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 6349<td align="center">LOCKED</td> 6350<td align="center">Values locked</td> 6351</tr> 6352<tr> 6353<td align="center">LOCKED</td> 6354<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 6355<td align="center">SEARCHING</td> 6356<td align="center">Values not good after unlock</td> 6357</tr> 6358</tbody> 6359</table> 6360<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 6361without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 6362can be skipped in that manner is called a transient state.<wbr/></p> 6363<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions 6364listed in above table,<wbr/> it is also legal for the camera device to skip one or more 6365transient states between two results.<wbr/> See below table for examples:</p> 6366<table> 6367<thead> 6368<tr> 6369<th align="center">State</th> 6370<th align="center">Transition Cause</th> 6371<th align="center">New State</th> 6372<th align="center">Notes</th> 6373</tr> 6374</thead> 6375<tbody> 6376<tr> 6377<td align="center">INACTIVE</td> 6378<td align="center">Camera device finished AWB scan</td> 6379<td align="center">CONVERGED</td> 6380<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 6381</tr> 6382<tr> 6383<td align="center">LOCKED</td> 6384<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 6385<td align="center">CONVERGED</td> 6386<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> 6387</tr> 6388</tbody> 6389</table> 6390 </td> 6391 </tr> 6392 6393 6394 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6395 <!-- end of entry --> 6396 6397 6398 <tr class="entry" id="dynamic_android.control.effectMode"> 6399 <td class="entry_name 6400 " rowspan="3"> 6401 android.<wbr/>control.<wbr/>effect<wbr/>Mode 6402 </td> 6403 <td class="entry_type"> 6404 <span class="entry_type_name entry_type_name_enum">byte</span> 6405 6406 <span class="entry_type_visibility"> [public]</span> 6407 6408 6409 6410 6411 <ul class="entry_type_enum"> 6412 <li> 6413 <span class="entry_type_enum_name">OFF</span> 6414 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 6415 </li> 6416 <li> 6417 <span class="entry_type_enum_name">MONO</span> 6418 <span class="entry_type_enum_optional">optional</span> 6419 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 6420a single color.<wbr/> This will typically be grayscale.<wbr/></p></span> 6421 </li> 6422 <li> 6423 <span class="entry_type_enum_name">NEGATIVE</span> 6424 <span class="entry_type_enum_optional">optional</span> 6425 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 6426are inverted.<wbr/></p></span> 6427 </li> 6428 <li> 6429 <span class="entry_type_enum_name">SOLARIZE</span> 6430 <span class="entry_type_enum_optional">optional</span> 6431 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 6432image is wholly or partially reversed in 6433tone.<wbr/></p></span> 6434 </li> 6435 <li> 6436 <span class="entry_type_enum_name">SEPIA</span> 6437 <span class="entry_type_enum_optional">optional</span> 6438 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 6439gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 6440 </li> 6441 <li> 6442 <span class="entry_type_enum_name">POSTERIZE</span> 6443 <span class="entry_type_enum_optional">optional</span> 6444 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 6445discrete regions of tone rather than a continuous 6446gradient of tones.<wbr/></p></span> 6447 </li> 6448 <li> 6449 <span class="entry_type_enum_name">WHITEBOARD</span> 6450 <span class="entry_type_enum_optional">optional</span> 6451 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 6452as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 6453 </li> 6454 <li> 6455 <span class="entry_type_enum_name">BLACKBOARD</span> 6456 <span class="entry_type_enum_optional">optional</span> 6457 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 6458as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 6459 </li> 6460 <li> 6461 <span class="entry_type_enum_name">AQUA</span> 6462 <span class="entry_type_enum_optional">optional</span> 6463 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 6464 </li> 6465 </ul> 6466 6467 </td> <!-- entry_type --> 6468 6469 <td class="entry_description"> 6470 <p>A special color effect to apply.<wbr/></p> 6471 </td> 6472 6473 <td class="entry_units"> 6474 </td> 6475 6476 <td class="entry_range"> 6477 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 6478 </td> 6479 6480 <td class="entry_tags"> 6481 <ul class="entry_tags"> 6482 <li><a href="#tag_BC">BC</a></li> 6483 </ul> 6484 </td> 6485 6486 </tr> 6487 <tr class="entries_header"> 6488 <th class="th_details" colspan="5">Details</th> 6489 </tr> 6490 <tr class="entry_cont"> 6491 <td class="entry_details" colspan="5"> 6492 <p>When this mode is set,<wbr/> a color effect will be applied 6493to images produced by the camera device.<wbr/> The interpretation 6494and implementation of these color effects is left to the 6495implementor of the camera device,<wbr/> and should not be 6496depended on to be consistent (or present) across all 6497devices.<wbr/></p> 6498<p>A color effect will only be applied if 6499<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/></p> 6500 </td> 6501 </tr> 6502 6503 6504 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6505 <!-- end of entry --> 6506 6507 6508 <tr class="entry" id="dynamic_android.control.mode"> 6509 <td class="entry_name 6510 " rowspan="3"> 6511 android.<wbr/>control.<wbr/>mode 6512 </td> 6513 <td class="entry_type"> 6514 <span class="entry_type_name entry_type_name_enum">byte</span> 6515 6516 <span class="entry_type_visibility"> [public]</span> 6517 6518 6519 6520 6521 <ul class="entry_type_enum"> 6522 <li> 6523 <span class="entry_type_enum_name">OFF</span> 6524 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/> All 3A 6525routines are disabled,<wbr/> no other settings in 6526android.<wbr/>control.<wbr/>* have any effect</p></span> 6527 </li> 6528 <li> 6529 <span class="entry_type_enum_name">AUTO</span> 6530 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/> 6531Manual control of capture parameters is disabled.<wbr/> All 6532controls in android.<wbr/>control.<wbr/>* besides sceneMode take 6533effect</p></span> 6534 </li> 6535 <li> 6536 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 6537 <span class="entry_type_enum_notes"><p>Use specific scene mode.<wbr/> Enabling this disables 6538control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and control.<wbr/>afMode 6539controls; the camera device will ignore those settings while 6540USE_<wbr/>SCENE_<wbr/>MODE is active (except for FACE_<wbr/>PRIORITY 6541scene mode).<wbr/> Other control entries are still active.<wbr/> 6542This setting can only be used if scene mode is supported 6543(i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> contain some modes 6544other than DISABLED).<wbr/></p></span> 6545 </li> 6546 <li> 6547 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 6548 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 6549used by camera device background auto-exposure,<wbr/> auto-white balance and 6550auto-focus algorithms to update their statistics.<wbr/></p></span> 6551 </li> 6552 </ul> 6553 6554 </td> <!-- entry_type --> 6555 6556 <td class="entry_description"> 6557 <p>Overall mode of 3A control 6558routines.<wbr/></p> 6559 </td> 6560 6561 <td class="entry_units"> 6562 </td> 6563 6564 <td class="entry_range"> 6565 <p>all must be supported</p> 6566 </td> 6567 6568 <td class="entry_tags"> 6569 <ul class="entry_tags"> 6570 <li><a href="#tag_BC">BC</a></li> 6571 </ul> 6572 </td> 6573 6574 </tr> 6575 <tr class="entries_header"> 6576 <th class="th_details" colspan="5">Details</th> 6577 </tr> 6578 <tr class="entry_cont"> 6579 <td class="entry_details" colspan="5"> 6580 <p>High-level 3A control.<wbr/> When set to OFF,<wbr/> all 3A control 6581by the camera device is disabled.<wbr/> The application must set the fields for 6582capture parameters itself.<wbr/></p> 6583<p>When set to AUTO,<wbr/> the individual algorithm controls in 6584android.<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> 6585<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 6586android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 6587one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 6588as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 6589<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 6590<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 6591is that this frame will not be used by camera device background 3A statistics 6592update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 6593where the application doesn't want a 3A manual control capture to affect 6594the subsequent auto 3A capture results.<wbr/></p> 6595 </td> 6596 </tr> 6597 6598 6599 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6600 <!-- end of entry --> 6601 6602 6603 <tr class="entry" id="dynamic_android.control.sceneMode"> 6604 <td class="entry_name 6605 " rowspan="5"> 6606 android.<wbr/>control.<wbr/>scene<wbr/>Mode 6607 </td> 6608 <td class="entry_type"> 6609 <span class="entry_type_name entry_type_name_enum">byte</span> 6610 6611 <span class="entry_type_visibility"> [public]</span> 6612 6613 6614 6615 6616 <ul class="entry_type_enum"> 6617 <li> 6618 <span class="entry_type_enum_name">DISABLED</span> 6619 <span class="entry_type_enum_value">0</span> 6620 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 6621 </li> 6622 <li> 6623 <span class="entry_type_enum_name">FACE_PRIORITY</span> 6624 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 6625detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 6626auto-exposure routines.<wbr/> If face detection statistics are 6627disabled (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/> 6628this should still operate correctly (but will not return 6629face detection statistics to the framework).<wbr/></p> 6630<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 6631<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> 6632remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 6633 </li> 6634 <li> 6635 <span class="entry_type_enum_name">ACTION</span> 6636 <span class="entry_type_enum_optional">optional</span> 6637 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/> 6638Similar to SPORTS.<wbr/></p></span> 6639 </li> 6640 <li> 6641 <span class="entry_type_enum_name">PORTRAIT</span> 6642 <span class="entry_type_enum_optional">optional</span> 6643 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 6644 </li> 6645 <li> 6646 <span class="entry_type_enum_name">LANDSCAPE</span> 6647 <span class="entry_type_enum_optional">optional</span> 6648 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 6649 </li> 6650 <li> 6651 <span class="entry_type_enum_name">NIGHT</span> 6652 <span class="entry_type_enum_optional">optional</span> 6653 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 6654 </li> 6655 <li> 6656 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 6657 <span class="entry_type_enum_optional">optional</span> 6658 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 6659settings.<wbr/></p></span> 6660 </li> 6661 <li> 6662 <span class="entry_type_enum_name">THEATRE</span> 6663 <span class="entry_type_enum_optional">optional</span> 6664 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 6665remain off.<wbr/></p></span> 6666 </li> 6667 <li> 6668 <span class="entry_type_enum_name">BEACH</span> 6669 <span class="entry_type_enum_optional">optional</span> 6670 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 6671 </li> 6672 <li> 6673 <span class="entry_type_enum_name">SNOW</span> 6674 <span class="entry_type_enum_optional">optional</span> 6675 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 6676 </li> 6677 <li> 6678 <span class="entry_type_enum_name">SUNSET</span> 6679 <span class="entry_type_enum_optional">optional</span> 6680 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 6681 </li> 6682 <li> 6683 <span class="entry_type_enum_name">STEADYPHOTO</span> 6684 <span class="entry_type_enum_optional">optional</span> 6685 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 6686device motion (for example: due to hand shake).<wbr/></p></span> 6687 </li> 6688 <li> 6689 <span class="entry_type_enum_name">FIREWORKS</span> 6690 <span class="entry_type_enum_optional">optional</span> 6691 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 6692 </li> 6693 <li> 6694 <span class="entry_type_enum_name">SPORTS</span> 6695 <span class="entry_type_enum_optional">optional</span> 6696 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/> 6697Similar to ACTION.<wbr/></p></span> 6698 </li> 6699 <li> 6700 <span class="entry_type_enum_name">PARTY</span> 6701 <span class="entry_type_enum_optional">optional</span> 6702 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 6703people.<wbr/></p></span> 6704 </li> 6705 <li> 6706 <span class="entry_type_enum_name">CANDLELIGHT</span> 6707 <span class="entry_type_enum_optional">optional</span> 6708 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 6709is a flame.<wbr/></p></span> 6710 </li> 6711 <li> 6712 <span class="entry_type_enum_name">BARCODE</span> 6713 <span class="entry_type_enum_optional">optional</span> 6714 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 6715for use by camera applications that wish to read the 6716barcode value.<wbr/></p></span> 6717 </li> 6718 </ul> 6719 6720 </td> <!-- entry_type --> 6721 6722 <td class="entry_description"> 6723 <p>A camera mode optimized for conditions typical in a particular 6724capture setting.<wbr/></p> 6725 </td> 6726 6727 <td class="entry_units"> 6728 </td> 6729 6730 <td class="entry_range"> 6731 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 6732 </td> 6733 6734 <td class="entry_tags"> 6735 <ul class="entry_tags"> 6736 <li><a href="#tag_BC">BC</a></li> 6737 </ul> 6738 </td> 6739 6740 </tr> 6741 <tr class="entries_header"> 6742 <th class="th_details" colspan="5">Details</th> 6743 </tr> 6744 <tr class="entry_cont"> 6745 <td class="entry_details" colspan="5"> 6746 <p>This is the mode that that is active when 6747<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/> 6748these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 6749<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> 6750<p>The interpretation and implementation of these scene modes is left 6751to the implementor of the camera device.<wbr/> Their behavior will not be 6752consistent across all devices,<wbr/> and any given device may only implement 6753a subset of these modes.<wbr/></p> 6754 </td> 6755 </tr> 6756 6757 <tr class="entries_header"> 6758 <th class="th_details" colspan="5">HAL Implementation Details</th> 6759 </tr> 6760 <tr class="entry_cont"> 6761 <td class="entry_details" colspan="5"> 6762 <p>HAL implementations that include scene modes are expected to provide 6763the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 6764<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 6765<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 6766 </td> 6767 </tr> 6768 6769 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6770 <!-- end of entry --> 6771 6772 6773 <tr class="entry" id="dynamic_android.control.videoStabilizationMode"> 6774 <td class="entry_name 6775 " rowspan="3"> 6776 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 6777 </td> 6778 <td class="entry_type"> 6779 <span class="entry_type_name entry_type_name_enum">byte</span> 6780 6781 <span class="entry_type_visibility"> [public]</span> 6782 6783 6784 6785 6786 <ul class="entry_type_enum"> 6787 <li> 6788 <span class="entry_type_enum_name">OFF</span> 6789 </li> 6790 <li> 6791 <span class="entry_type_enum_name">ON</span> 6792 </li> 6793 </ul> 6794 6795 </td> <!-- entry_type --> 6796 6797 <td class="entry_description"> 6798 <p>Whether video stabilization is 6799active</p> 6800 </td> 6801 6802 <td class="entry_units"> 6803 </td> 6804 6805 <td class="entry_range"> 6806 </td> 6807 6808 <td class="entry_tags"> 6809 <ul class="entry_tags"> 6810 <li><a href="#tag_BC">BC</a></li> 6811 </ul> 6812 </td> 6813 6814 </tr> 6815 <tr class="entries_header"> 6816 <th class="th_details" colspan="5">Details</th> 6817 </tr> 6818 <tr class="entry_cont"> 6819 <td class="entry_details" colspan="5"> 6820 <p>If enabled,<wbr/> video stabilization can modify the 6821<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream 6822stabilized</p> 6823 </td> 6824 </tr> 6825 6826 6827 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6828 <!-- end of entry --> 6829 6830 6831 6832 <!-- end of kind --> 6833 </tbody> 6834 6835 <!-- end of section --> 6836 <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr> 6837 6838 6839 <tr><td colspan="6" class="kind">controls</td></tr> 6840 6841 <thead class="entries_header"> 6842 <tr> 6843 <th class="th_name">Property Name</th> 6844 <th class="th_type">Type</th> 6845 <th class="th_description">Description</th> 6846 <th class="th_units">Units</th> 6847 <th class="th_range">Range</th> 6848 <th class="th_tags">Tags</th> 6849 </tr> 6850 </thead> 6851 6852 <tbody> 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 <tr class="entry" id="controls_android.demosaic.mode"> 6864 <td class="entry_name 6865 " rowspan="1"> 6866 android.<wbr/>demosaic.<wbr/>mode 6867 </td> 6868 <td class="entry_type"> 6869 <span class="entry_type_name entry_type_name_enum">byte</span> 6870 6871 <span class="entry_type_visibility"> [system]</span> 6872 6873 6874 6875 6876 <ul class="entry_type_enum"> 6877 <li> 6878 <span class="entry_type_enum_name">FAST</span> 6879 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 6880Bayer RAW output</p></span> 6881 </li> 6882 <li> 6883 <span class="entry_type_enum_name">HIGH_QUALITY</span> 6884 <span class="entry_type_enum_notes"><p>High-quality may reduce output frame 6885rate</p></span> 6886 </li> 6887 </ul> 6888 6889 </td> <!-- entry_type --> 6890 6891 <td class="entry_description"> 6892 <p>Controls the quality of the demosaicing 6893processing</p> 6894 </td> 6895 6896 <td class="entry_units"> 6897 </td> 6898 6899 <td class="entry_range"> 6900 </td> 6901 6902 <td class="entry_tags"> 6903 <ul class="entry_tags"> 6904 <li><a href="#tag_FUTURE">FUTURE</a></li> 6905 </ul> 6906 </td> 6907 6908 </tr> 6909 6910 6911 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6912 <!-- end of entry --> 6913 6914 6915 6916 <!-- end of kind --> 6917 </tbody> 6918 6919 <!-- end of section --> 6920 <tr><td colspan="6" id="section_edge" class="section">edge</td></tr> 6921 6922 6923 <tr><td colspan="6" class="kind">controls</td></tr> 6924 6925 <thead class="entries_header"> 6926 <tr> 6927 <th class="th_name">Property Name</th> 6928 <th class="th_type">Type</th> 6929 <th class="th_description">Description</th> 6930 <th class="th_units">Units</th> 6931 <th class="th_range">Range</th> 6932 <th class="th_tags">Tags</th> 6933 </tr> 6934 </thead> 6935 6936 <tbody> 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 <tr class="entry" id="controls_android.edge.mode"> 6948 <td class="entry_name 6949 " rowspan="3"> 6950 android.<wbr/>edge.<wbr/>mode 6951 </td> 6952 <td class="entry_type"> 6953 <span class="entry_type_name entry_type_name_enum">byte</span> 6954 6955 <span class="entry_type_visibility"> [public]</span> 6956 6957 6958 6959 6960 <ul class="entry_type_enum"> 6961 <li> 6962 <span class="entry_type_enum_name">OFF</span> 6963 <span class="entry_type_enum_notes"><p>No edge enhancement is applied</p></span> 6964 </li> 6965 <li> 6966 <span class="entry_type_enum_name">FAST</span> 6967 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor 6968output</p></span> 6969 </li> 6970 <li> 6971 <span class="entry_type_enum_name">HIGH_QUALITY</span> 6972 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high 6973quality</p></span> 6974 </li> 6975 </ul> 6976 6977 </td> <!-- entry_type --> 6978 6979 <td class="entry_description"> 6980 <p>Operation mode for edge 6981enhancement.<wbr/></p> 6982 </td> 6983 6984 <td class="entry_units"> 6985 </td> 6986 6987 <td class="entry_range"> 6988 </td> 6989 6990 <td class="entry_tags"> 6991 <ul class="entry_tags"> 6992 <li><a href="#tag_V1">V1</a></li> 6993 </ul> 6994 </td> 6995 6996 </tr> 6997 <tr class="entries_header"> 6998 <th class="th_details" colspan="5">Details</th> 6999 </tr> 7000 <tr class="entry_cont"> 7001 <td class="entry_details" colspan="5"> 7002 <p>Edge/<wbr/>sharpness/<wbr/>detail enhancement.<wbr/> OFF means no 7003enhancement will be applied by the camera device.<wbr/></p> 7004<p>This must be set to one of the modes listed in <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a>.<wbr/></p> 7005<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 7006will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 7007camera device will use the highest-quality enhancement algorithms,<wbr/> 7008even if it slows down capture rate.<wbr/> FAST means the camera device will 7009not slow down capture rate when applying edge enhancement.<wbr/></p> 7010 </td> 7011 </tr> 7012 7013 7014 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7015 <!-- end of entry --> 7016 7017 7018 <tr class="entry" id="controls_android.edge.strength"> 7019 <td class="entry_name 7020 " rowspan="1"> 7021 android.<wbr/>edge.<wbr/>strength 7022 </td> 7023 <td class="entry_type"> 7024 <span class="entry_type_name">byte</span> 7025 7026 <span class="entry_type_visibility"> [system]</span> 7027 7028 7029 7030 7031 7032 </td> <!-- entry_type --> 7033 7034 <td class="entry_description"> 7035 <p>Control the amount of edge enhancement 7036applied to the images</p> 7037 </td> 7038 7039 <td class="entry_units"> 7040 1-10; 10 is maximum sharpening 7041 </td> 7042 7043 <td class="entry_range"> 7044 </td> 7045 7046 <td class="entry_tags"> 7047 <ul class="entry_tags"> 7048 <li><a href="#tag_FUTURE">FUTURE</a></li> 7049 </ul> 7050 </td> 7051 7052 </tr> 7053 7054 7055 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7056 <!-- end of entry --> 7057 7058 7059 7060 <!-- end of kind --> 7061 </tbody> 7062 <tr><td colspan="6" class="kind">static</td></tr> 7063 7064 <thead class="entries_header"> 7065 <tr> 7066 <th class="th_name">Property Name</th> 7067 <th class="th_type">Type</th> 7068 <th class="th_description">Description</th> 7069 <th class="th_units">Units</th> 7070 <th class="th_range">Range</th> 7071 <th class="th_tags">Tags</th> 7072 </tr> 7073 </thead> 7074 7075 <tbody> 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 <tr class="entry" id="static_android.edge.availableEdgeModes"> 7087 <td class="entry_name 7088 " rowspan="3"> 7089 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes 7090 </td> 7091 <td class="entry_type"> 7092 <span class="entry_type_name">byte</span> 7093 <span class="entry_type_container">x</span> 7094 7095 <span class="entry_type_array"> 7096 n 7097 </span> 7098 <span class="entry_type_visibility"> [public as enumList]</span> 7099 7100 7101 7102 <div class="entry_type_notes">list of enums</div> 7103 7104 7105 </td> <!-- entry_type --> 7106 7107 <td class="entry_description"> 7108 <p>The set of edge enhancement modes supported by this camera device.<wbr/></p> 7109 </td> 7110 7111 <td class="entry_units"> 7112 </td> 7113 7114 <td class="entry_range"> 7115 </td> 7116 7117 <td class="entry_tags"> 7118 <ul class="entry_tags"> 7119 <li><a href="#tag_V1">V1</a></li> 7120 </ul> 7121 </td> 7122 7123 </tr> 7124 <tr class="entries_header"> 7125 <th class="th_details" colspan="5">Details</th> 7126 </tr> 7127 <tr class="entry_cont"> 7128 <td class="entry_details" colspan="5"> 7129 <p>This tag lists the valid modes for <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>.<wbr/></p> 7130<p>Full-capability camera devices must always support OFF and FAST.<wbr/></p> 7131 </td> 7132 </tr> 7133 7134 7135 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7136 <!-- end of entry --> 7137 7138 7139 7140 <!-- end of kind --> 7141 </tbody> 7142 <tr><td colspan="6" class="kind">dynamic</td></tr> 7143 7144 <thead class="entries_header"> 7145 <tr> 7146 <th class="th_name">Property Name</th> 7147 <th class="th_type">Type</th> 7148 <th class="th_description">Description</th> 7149 <th class="th_units">Units</th> 7150 <th class="th_range">Range</th> 7151 <th class="th_tags">Tags</th> 7152 </tr> 7153 </thead> 7154 7155 <tbody> 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 <tr class="entry" id="dynamic_android.edge.mode"> 7167 <td class="entry_name 7168 " rowspan="3"> 7169 android.<wbr/>edge.<wbr/>mode 7170 </td> 7171 <td class="entry_type"> 7172 <span class="entry_type_name entry_type_name_enum">byte</span> 7173 7174 <span class="entry_type_visibility"> [public]</span> 7175 7176 7177 7178 7179 <ul class="entry_type_enum"> 7180 <li> 7181 <span class="entry_type_enum_name">OFF</span> 7182 <span class="entry_type_enum_notes"><p>No edge enhancement is applied</p></span> 7183 </li> 7184 <li> 7185 <span class="entry_type_enum_name">FAST</span> 7186 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor 7187output</p></span> 7188 </li> 7189 <li> 7190 <span class="entry_type_enum_name">HIGH_QUALITY</span> 7191 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high 7192quality</p></span> 7193 </li> 7194 </ul> 7195 7196 </td> <!-- entry_type --> 7197 7198 <td class="entry_description"> 7199 <p>Operation mode for edge 7200enhancement.<wbr/></p> 7201 </td> 7202 7203 <td class="entry_units"> 7204 </td> 7205 7206 <td class="entry_range"> 7207 </td> 7208 7209 <td class="entry_tags"> 7210 <ul class="entry_tags"> 7211 <li><a href="#tag_V1">V1</a></li> 7212 </ul> 7213 </td> 7214 7215 </tr> 7216 <tr class="entries_header"> 7217 <th class="th_details" colspan="5">Details</th> 7218 </tr> 7219 <tr class="entry_cont"> 7220 <td class="entry_details" colspan="5"> 7221 <p>Edge/<wbr/>sharpness/<wbr/>detail enhancement.<wbr/> OFF means no 7222enhancement will be applied by the camera device.<wbr/></p> 7223<p>This must be set to one of the modes listed in <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a>.<wbr/></p> 7224<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 7225will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 7226camera device will use the highest-quality enhancement algorithms,<wbr/> 7227even if it slows down capture rate.<wbr/> FAST means the camera device will 7228not slow down capture rate when applying edge enhancement.<wbr/></p> 7229 </td> 7230 </tr> 7231 7232 7233 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7234 <!-- end of entry --> 7235 7236 7237 7238 <!-- end of kind --> 7239 </tbody> 7240 7241 <!-- end of section --> 7242 <tr><td colspan="6" id="section_flash" class="section">flash</td></tr> 7243 7244 7245 <tr><td colspan="6" class="kind">controls</td></tr> 7246 7247 <thead class="entries_header"> 7248 <tr> 7249 <th class="th_name">Property Name</th> 7250 <th class="th_type">Type</th> 7251 <th class="th_description">Description</th> 7252 <th class="th_units">Units</th> 7253 <th class="th_range">Range</th> 7254 <th class="th_tags">Tags</th> 7255 </tr> 7256 </thead> 7257 7258 <tbody> 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 <tr class="entry" id="controls_android.flash.firingPower"> 7270 <td class="entry_name 7271 " rowspan="3"> 7272 android.<wbr/>flash.<wbr/>firing<wbr/>Power 7273 </td> 7274 <td class="entry_type"> 7275 <span class="entry_type_name">byte</span> 7276 7277 <span class="entry_type_visibility"> [system]</span> 7278 7279 7280 7281 7282 7283 </td> <!-- entry_type --> 7284 7285 <td class="entry_description"> 7286 <p>Power for flash firing/<wbr/>torch</p> 7287 </td> 7288 7289 <td class="entry_units"> 7290 10 is max power; 0 is no flash.<wbr/> Linear 7291 </td> 7292 7293 <td class="entry_range"> 7294 <p>0 - 10</p> 7295 </td> 7296 7297 <td class="entry_tags"> 7298 <ul class="entry_tags"> 7299 <li><a href="#tag_FUTURE">FUTURE</a></li> 7300 </ul> 7301 </td> 7302 7303 </tr> 7304 <tr class="entries_header"> 7305 <th class="th_details" colspan="5">Details</th> 7306 </tr> 7307 <tr class="entry_cont"> 7308 <td class="entry_details" colspan="5"> 7309 <p>Power for snapshot may use a different scale than 7310for torch mode.<wbr/> Only one entry for torch mode will be 7311used</p> 7312 </td> 7313 </tr> 7314 7315 7316 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7317 <!-- end of entry --> 7318 7319 7320 <tr class="entry" id="controls_android.flash.firingTime"> 7321 <td class="entry_name 7322 " rowspan="3"> 7323 android.<wbr/>flash.<wbr/>firing<wbr/>Time 7324 </td> 7325 <td class="entry_type"> 7326 <span class="entry_type_name">int64</span> 7327 7328 <span class="entry_type_visibility"> [system]</span> 7329 7330 7331 7332 7333 7334 </td> <!-- entry_type --> 7335 7336 <td class="entry_description"> 7337 <p>Firing time of flash relative to start of 7338exposure</p> 7339 </td> 7340 7341 <td class="entry_units"> 7342 nanoseconds 7343 </td> 7344 7345 <td class="entry_range"> 7346 <p>0-(exposure time-flash duration)</p> 7347 </td> 7348 7349 <td class="entry_tags"> 7350 <ul class="entry_tags"> 7351 <li><a href="#tag_FUTURE">FUTURE</a></li> 7352 </ul> 7353 </td> 7354 7355 </tr> 7356 <tr class="entries_header"> 7357 <th class="th_details" colspan="5">Details</th> 7358 </tr> 7359 <tr class="entry_cont"> 7360 <td class="entry_details" colspan="5"> 7361 <p>Clamped to (0,<wbr/> exposure time - flash 7362duration).<wbr/></p> 7363 </td> 7364 </tr> 7365 7366 7367 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7368 <!-- end of entry --> 7369 7370 7371 <tr class="entry" id="controls_android.flash.mode"> 7372 <td class="entry_name 7373 " rowspan="3"> 7374 android.<wbr/>flash.<wbr/>mode 7375 </td> 7376 <td class="entry_type"> 7377 <span class="entry_type_name entry_type_name_enum">byte</span> 7378 7379 <span class="entry_type_visibility"> [public]</span> 7380 7381 7382 7383 7384 <ul class="entry_type_enum"> 7385 <li> 7386 <span class="entry_type_enum_name">OFF</span> 7387 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 7388 </li> 7389 <li> 7390 <span class="entry_type_enum_name">SINGLE</span> 7391 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 7392for this capture.<wbr/></p></span> 7393 </li> 7394 <li> 7395 <span class="entry_type_enum_name">TORCH</span> 7396 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 7397 </li> 7398 </ul> 7399 7400 </td> <!-- entry_type --> 7401 7402 <td class="entry_description"> 7403 <p>The desired mode for for the camera device's flash control.<wbr/></p> 7404 </td> 7405 7406 <td class="entry_units"> 7407 </td> 7408 7409 <td class="entry_range"> 7410 </td> 7411 7412 <td class="entry_tags"> 7413 <ul class="entry_tags"> 7414 <li><a href="#tag_BC">BC</a></li> 7415 </ul> 7416 </td> 7417 7418 </tr> 7419 <tr class="entries_header"> 7420 <th class="th_details" colspan="5">Details</th> 7421 </tr> 7422 <tr class="entry_cont"> 7423 <td class="entry_details" colspan="5"> 7424 <p>This control is only effective when flash unit is available 7425(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 7426<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/> 7427Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 7428ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 7429<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 7430<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 7431device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 7432control should be used along with AE precapture metering sequence 7433(<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> 7434<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 7435for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 7436<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> 7437 </td> 7438 </tr> 7439 7440 7441 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7442 <!-- end of entry --> 7443 7444 7445 7446 <!-- end of kind --> 7447 </tbody> 7448 <tr><td colspan="6" class="kind">static</td></tr> 7449 7450 <thead class="entries_header"> 7451 <tr> 7452 <th class="th_name">Property Name</th> 7453 <th class="th_type">Type</th> 7454 <th class="th_description">Description</th> 7455 <th class="th_units">Units</th> 7456 <th class="th_range">Range</th> 7457 <th class="th_tags">Tags</th> 7458 </tr> 7459 </thead> 7460 7461 <tbody> 7462 7463 7464 7465 7466 7467 7468 7469 7470 7471 7472 7473 7474 <tr class="entry" id="static_android.flash.info.available"> 7475 <td class="entry_name 7476 " rowspan="3"> 7477 android.<wbr/>flash.<wbr/>info.<wbr/>available 7478 </td> 7479 <td class="entry_type"> 7480 <span class="entry_type_name entry_type_name_enum">byte</span> 7481 7482 <span class="entry_type_visibility"> [public as boolean]</span> 7483 7484 7485 7486 7487 <ul class="entry_type_enum"> 7488 <li> 7489 <span class="entry_type_enum_name">FALSE</span> 7490 </li> 7491 <li> 7492 <span class="entry_type_enum_name">TRUE</span> 7493 </li> 7494 </ul> 7495 7496 </td> <!-- entry_type --> 7497 7498 <td class="entry_description"> 7499 <p>Whether this camera device has a 7500flash.<wbr/></p> 7501 </td> 7502 7503 <td class="entry_units"> 7504 </td> 7505 7506 <td class="entry_range"> 7507 </td> 7508 7509 <td class="entry_tags"> 7510 <ul class="entry_tags"> 7511 <li><a href="#tag_BC">BC</a></li> 7512 </ul> 7513 </td> 7514 7515 </tr> 7516 <tr class="entries_header"> 7517 <th class="th_details" colspan="5">Details</th> 7518 </tr> 7519 <tr class="entry_cont"> 7520 <td class="entry_details" colspan="5"> 7521 <p>If no flash,<wbr/> none of the flash controls do 7522anything.<wbr/> All other metadata should return 0.<wbr/></p> 7523 </td> 7524 </tr> 7525 7526 7527 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7528 <!-- end of entry --> 7529 7530 7531 <tr class="entry" id="static_android.flash.info.chargeDuration"> 7532 <td class="entry_name 7533 " rowspan="3"> 7534 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 7535 </td> 7536 <td class="entry_type"> 7537 <span class="entry_type_name">int64</span> 7538 7539 <span class="entry_type_visibility"> [system]</span> 7540 7541 7542 7543 7544 7545 </td> <!-- entry_type --> 7546 7547 <td class="entry_description"> 7548 <p>Time taken before flash can fire 7549again</p> 7550 </td> 7551 7552 <td class="entry_units"> 7553 nanoseconds 7554 </td> 7555 7556 <td class="entry_range"> 7557 <p>0-1e9</p> 7558 </td> 7559 7560 <td class="entry_tags"> 7561 <ul class="entry_tags"> 7562 <li><a href="#tag_FUTURE">FUTURE</a></li> 7563 </ul> 7564 </td> 7565 7566 </tr> 7567 <tr class="entries_header"> 7568 <th class="th_details" colspan="5">Details</th> 7569 </tr> 7570 <tr class="entry_cont"> 7571 <td class="entry_details" colspan="5"> 7572 <p>1 second too long/<wbr/>too short for recharge? Should 7573this be power-dependent?</p> 7574 </td> 7575 </tr> 7576 7577 7578 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7579 <!-- end of entry --> 7580 7581 7582 7583 7584 7585 <tr class="entry" id="static_android.flash.colorTemperature"> 7586 <td class="entry_name 7587 " rowspan="1"> 7588 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 7589 </td> 7590 <td class="entry_type"> 7591 <span class="entry_type_name">byte</span> 7592 7593 <span class="entry_type_visibility"> [system]</span> 7594 7595 7596 7597 7598 7599 </td> <!-- entry_type --> 7600 7601 <td class="entry_description"> 7602 <p>The x,<wbr/>y whitepoint of the 7603flash</p> 7604 </td> 7605 7606 <td class="entry_units"> 7607 pair of floats 7608 </td> 7609 7610 <td class="entry_range"> 7611 <p>0-1 for both</p> 7612 </td> 7613 7614 <td class="entry_tags"> 7615 <ul class="entry_tags"> 7616 <li><a href="#tag_FUTURE">FUTURE</a></li> 7617 </ul> 7618 </td> 7619 7620 </tr> 7621 7622 7623 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7624 <!-- end of entry --> 7625 7626 7627 <tr class="entry" id="static_android.flash.maxEnergy"> 7628 <td class="entry_name 7629 " rowspan="1"> 7630 android.<wbr/>flash.<wbr/>max<wbr/>Energy 7631 </td> 7632 <td class="entry_type"> 7633 <span class="entry_type_name">byte</span> 7634 7635 <span class="entry_type_visibility"> [system]</span> 7636 7637 7638 7639 7640 7641 </td> <!-- entry_type --> 7642 7643 <td class="entry_description"> 7644 <p>Max energy output of the flash for a full 7645power single flash</p> 7646 </td> 7647 7648 <td class="entry_units"> 7649 lumen-seconds 7650 </td> 7651 7652 <td class="entry_range"> 7653 <p>>= 0</p> 7654 </td> 7655 7656 <td class="entry_tags"> 7657 <ul class="entry_tags"> 7658 <li><a href="#tag_FUTURE">FUTURE</a></li> 7659 </ul> 7660 </td> 7661 7662 </tr> 7663 7664 7665 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7666 <!-- end of entry --> 7667 7668 7669 7670 <!-- end of kind --> 7671 </tbody> 7672 <tr><td colspan="6" class="kind">dynamic</td></tr> 7673 7674 <thead class="entries_header"> 7675 <tr> 7676 <th class="th_name">Property Name</th> 7677 <th class="th_type">Type</th> 7678 <th class="th_description">Description</th> 7679 <th class="th_units">Units</th> 7680 <th class="th_range">Range</th> 7681 <th class="th_tags">Tags</th> 7682 </tr> 7683 </thead> 7684 7685 <tbody> 7686 7687 7688 7689 7690 7691 7692 7693 7694 7695 7696 <tr class="entry" id="dynamic_android.flash.firingPower"> 7697 <td class="entry_name 7698 " rowspan="3"> 7699 android.<wbr/>flash.<wbr/>firing<wbr/>Power 7700 </td> 7701 <td class="entry_type"> 7702 <span class="entry_type_name">byte</span> 7703 7704 <span class="entry_type_visibility"> [system]</span> 7705 7706 7707 7708 7709 7710 </td> <!-- entry_type --> 7711 7712 <td class="entry_description"> 7713 <p>Power for flash firing/<wbr/>torch</p> 7714 </td> 7715 7716 <td class="entry_units"> 7717 10 is max power; 0 is no flash.<wbr/> Linear 7718 </td> 7719 7720 <td class="entry_range"> 7721 <p>0 - 10</p> 7722 </td> 7723 7724 <td class="entry_tags"> 7725 <ul class="entry_tags"> 7726 <li><a href="#tag_FUTURE">FUTURE</a></li> 7727 </ul> 7728 </td> 7729 7730 </tr> 7731 <tr class="entries_header"> 7732 <th class="th_details" colspan="5">Details</th> 7733 </tr> 7734 <tr class="entry_cont"> 7735 <td class="entry_details" colspan="5"> 7736 <p>Power for snapshot may use a different scale than 7737for torch mode.<wbr/> Only one entry for torch mode will be 7738used</p> 7739 </td> 7740 </tr> 7741 7742 7743 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7744 <!-- end of entry --> 7745 7746 7747 <tr class="entry" id="dynamic_android.flash.firingTime"> 7748 <td class="entry_name 7749 " rowspan="3"> 7750 android.<wbr/>flash.<wbr/>firing<wbr/>Time 7751 </td> 7752 <td class="entry_type"> 7753 <span class="entry_type_name">int64</span> 7754 7755 <span class="entry_type_visibility"> [system]</span> 7756 7757 7758 7759 7760 7761 </td> <!-- entry_type --> 7762 7763 <td class="entry_description"> 7764 <p>Firing time of flash relative to start of 7765exposure</p> 7766 </td> 7767 7768 <td class="entry_units"> 7769 nanoseconds 7770 </td> 7771 7772 <td class="entry_range"> 7773 <p>0-(exposure time-flash duration)</p> 7774 </td> 7775 7776 <td class="entry_tags"> 7777 <ul class="entry_tags"> 7778 <li><a href="#tag_FUTURE">FUTURE</a></li> 7779 </ul> 7780 </td> 7781 7782 </tr> 7783 <tr class="entries_header"> 7784 <th class="th_details" colspan="5">Details</th> 7785 </tr> 7786 <tr class="entry_cont"> 7787 <td class="entry_details" colspan="5"> 7788 <p>Clamped to (0,<wbr/> exposure time - flash 7789duration).<wbr/></p> 7790 </td> 7791 </tr> 7792 7793 7794 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7795 <!-- end of entry --> 7796 7797 7798 <tr class="entry" id="dynamic_android.flash.mode"> 7799 <td class="entry_name 7800 " rowspan="3"> 7801 android.<wbr/>flash.<wbr/>mode 7802 </td> 7803 <td class="entry_type"> 7804 <span class="entry_type_name entry_type_name_enum">byte</span> 7805 7806 <span class="entry_type_visibility"> [public]</span> 7807 7808 7809 7810 7811 <ul class="entry_type_enum"> 7812 <li> 7813 <span class="entry_type_enum_name">OFF</span> 7814 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 7815 </li> 7816 <li> 7817 <span class="entry_type_enum_name">SINGLE</span> 7818 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 7819for this capture.<wbr/></p></span> 7820 </li> 7821 <li> 7822 <span class="entry_type_enum_name">TORCH</span> 7823 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 7824 </li> 7825 </ul> 7826 7827 </td> <!-- entry_type --> 7828 7829 <td class="entry_description"> 7830 <p>The desired mode for for the camera device's flash control.<wbr/></p> 7831 </td> 7832 7833 <td class="entry_units"> 7834 </td> 7835 7836 <td class="entry_range"> 7837 </td> 7838 7839 <td class="entry_tags"> 7840 <ul class="entry_tags"> 7841 <li><a href="#tag_BC">BC</a></li> 7842 </ul> 7843 </td> 7844 7845 </tr> 7846 <tr class="entries_header"> 7847 <th class="th_details" colspan="5">Details</th> 7848 </tr> 7849 <tr class="entry_cont"> 7850 <td class="entry_details" colspan="5"> 7851 <p>This control is only effective when flash unit is available 7852(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 7853<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/> 7854Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 7855ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 7856<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 7857<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 7858device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 7859control should be used along with AE precapture metering sequence 7860(<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> 7861<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 7862for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 7863<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> 7864 </td> 7865 </tr> 7866 7867 7868 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7869 <!-- end of entry --> 7870 7871 7872 <tr class="entry" id="dynamic_android.flash.state"> 7873 <td class="entry_name 7874 " rowspan="3"> 7875 android.<wbr/>flash.<wbr/>state 7876 </td> 7877 <td class="entry_type"> 7878 <span class="entry_type_name entry_type_name_enum">byte</span> 7879 7880 <span class="entry_type_visibility"> [public]</span> 7881 7882 7883 7884 7885 <ul class="entry_type_enum"> 7886 <li> 7887 <span class="entry_type_enum_name">UNAVAILABLE</span> 7888 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> 7889 </li> 7890 <li> 7891 <span class="entry_type_enum_name">CHARGING</span> 7892 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> 7893 </li> 7894 <li> 7895 <span class="entry_type_enum_name">READY</span> 7896 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> 7897 </li> 7898 <li> 7899 <span class="entry_type_enum_name">FIRED</span> 7900 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> 7901 </li> 7902 <li> 7903 <span class="entry_type_enum_name">PARTIAL</span> 7904 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/> This is usually due to the next 7905or previous frame having the flash fire,<wbr/> and the flash spilling into this capture 7906due to hardware limitations.<wbr/></p></span> 7907 </li> 7908 </ul> 7909 7910 </td> <!-- entry_type --> 7911 7912 <td class="entry_description"> 7913 <p>Current state of the flash 7914unit.<wbr/></p> 7915 </td> 7916 7917 <td class="entry_units"> 7918 </td> 7919 7920 <td class="entry_range"> 7921 </td> 7922 7923 <td class="entry_tags"> 7924 </td> 7925 7926 </tr> 7927 <tr class="entries_header"> 7928 <th class="th_details" colspan="5">Details</th> 7929 </tr> 7930 <tr class="entry_cont"> 7931 <td class="entry_details" colspan="5"> 7932 <p>When the camera device doesn't have flash unit 7933(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/> 7934Other states indicate the current flash status.<wbr/></p> 7935 </td> 7936 </tr> 7937 7938 7939 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7940 <!-- end of entry --> 7941 7942 7943 7944 <!-- end of kind --> 7945 </tbody> 7946 7947 <!-- end of section --> 7948 <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr> 7949 7950 7951 <tr><td colspan="6" class="kind">controls</td></tr> 7952 7953 <thead class="entries_header"> 7954 <tr> 7955 <th class="th_name">Property Name</th> 7956 <th class="th_type">Type</th> 7957 <th class="th_description">Description</th> 7958 <th class="th_units">Units</th> 7959 <th class="th_range">Range</th> 7960 <th class="th_tags">Tags</th> 7961 </tr> 7962 </thead> 7963 7964 <tbody> 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 <tr class="entry" id="controls_android.hotPixel.mode"> 7976 <td class="entry_name 7977 " rowspan="3"> 7978 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 7979 </td> 7980 <td class="entry_type"> 7981 <span class="entry_type_name entry_type_name_enum">byte</span> 7982 7983 <span class="entry_type_visibility"> [public]</span> 7984 7985 7986 7987 7988 <ul class="entry_type_enum"> 7989 <li> 7990 <span class="entry_type_enum_name">OFF</span> 7991 <span class="entry_type_enum_notes"><p>The frame rate must not be reduced relative to sensor raw output 7992for this option.<wbr/></p> 7993<p>No hot pixel correction is applied.<wbr/> 7994The 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> 7995 </li> 7996 <li> 7997 <span class="entry_type_enum_name">FAST</span> 7998 <span class="entry_type_enum_notes"><p>The frame rate must not be reduced relative to sensor raw output 7999for this option.<wbr/></p> 8000<p>Hot pixel correction is applied.<wbr/> 8001The 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> 8002 </li> 8003 <li> 8004 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8005 <span class="entry_type_enum_notes"><p>The frame rate may be reduced relative to sensor raw output 8006for this option.<wbr/></p> 8007<p>A high-quality hot pixel correction is applied.<wbr/> 8008The 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> 8009 </li> 8010 </ul> 8011 8012 </td> <!-- entry_type --> 8013 8014 <td class="entry_description"> 8015 <p>Set operational mode for hot pixel correction.<wbr/></p> 8016 </td> 8017 8018 <td class="entry_units"> 8019 </td> 8020 8021 <td class="entry_range"> 8022 </td> 8023 8024 <td class="entry_tags"> 8025 <ul class="entry_tags"> 8026 <li><a href="#tag_V1">V1</a></li> 8027 <li><a href="#tag_DNG">DNG</a></li> 8028 </ul> 8029 </td> 8030 8031 </tr> 8032 <tr class="entries_header"> 8033 <th class="th_details" colspan="5">Details</th> 8034 </tr> 8035 <tr class="entry_cont"> 8036 <td class="entry_details" colspan="5"> 8037 <p>Valid modes for this camera device are listed in 8038<a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a>.<wbr/></p> 8039<p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 8040that do not accurately encode the incoming light (i.<wbr/>e.<wbr/> pixels that 8041are stuck at an arbitrary value).<wbr/></p> 8042 </td> 8043 </tr> 8044 8045 8046 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8047 <!-- end of entry --> 8048 8049 8050 8051 <!-- end of kind --> 8052 </tbody> 8053 <tr><td colspan="6" class="kind">static</td></tr> 8054 8055 <thead class="entries_header"> 8056 <tr> 8057 <th class="th_name">Property Name</th> 8058 <th class="th_type">Type</th> 8059 <th class="th_description">Description</th> 8060 <th class="th_units">Units</th> 8061 <th class="th_range">Range</th> 8062 <th class="th_tags">Tags</th> 8063 </tr> 8064 </thead> 8065 8066 <tbody> 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> 8078 <td class="entry_name 8079 " rowspan="5"> 8080 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes 8081 </td> 8082 <td class="entry_type"> 8083 <span class="entry_type_name">byte</span> 8084 <span class="entry_type_container">x</span> 8085 8086 <span class="entry_type_array"> 8087 n 8088 </span> 8089 <span class="entry_type_visibility"> [public as enumList]</span> 8090 8091 8092 8093 <div class="entry_type_notes">list of enums</div> 8094 8095 8096 </td> <!-- entry_type --> 8097 8098 <td class="entry_description"> 8099 <p>The set of hot pixel correction modes that are supported by this 8100camera device.<wbr/></p> 8101 </td> 8102 8103 <td class="entry_units"> 8104 </td> 8105 8106 <td class="entry_range"> 8107 </td> 8108 8109 <td class="entry_tags"> 8110 <ul class="entry_tags"> 8111 <li><a href="#tag_V1">V1</a></li> 8112 <li><a href="#tag_DNG">DNG</a></li> 8113 </ul> 8114 </td> 8115 8116 </tr> 8117 <tr class="entries_header"> 8118 <th class="th_details" colspan="5">Details</th> 8119 </tr> 8120 <tr class="entry_cont"> 8121 <td class="entry_details" colspan="5"> 8122 <p>This tag lists valid modes for <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a>.<wbr/></p> 8123<p>FULL mode camera devices will always support FAST.<wbr/></p> 8124 </td> 8125 </tr> 8126 8127 <tr class="entries_header"> 8128 <th class="th_details" colspan="5">HAL Implementation Details</th> 8129 </tr> 8130 <tr class="entry_cont"> 8131 <td class="entry_details" colspan="5"> 8132 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot 8133pixels than actual pixels on the camera sensor.<wbr/></p> 8134 </td> 8135 </tr> 8136 8137 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8138 <!-- end of entry --> 8139 8140 8141 8142 <!-- end of kind --> 8143 </tbody> 8144 <tr><td colspan="6" class="kind">dynamic</td></tr> 8145 8146 <thead class="entries_header"> 8147 <tr> 8148 <th class="th_name">Property Name</th> 8149 <th class="th_type">Type</th> 8150 <th class="th_description">Description</th> 8151 <th class="th_units">Units</th> 8152 <th class="th_range">Range</th> 8153 <th class="th_tags">Tags</th> 8154 </tr> 8155 </thead> 8156 8157 <tbody> 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 <tr class="entry" id="dynamic_android.hotPixel.mode"> 8169 <td class="entry_name 8170 " rowspan="3"> 8171 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 8172 </td> 8173 <td class="entry_type"> 8174 <span class="entry_type_name entry_type_name_enum">byte</span> 8175 8176 <span class="entry_type_visibility"> [public]</span> 8177 8178 8179 8180 8181 <ul class="entry_type_enum"> 8182 <li> 8183 <span class="entry_type_enum_name">OFF</span> 8184 <span class="entry_type_enum_notes"><p>The frame rate must not be reduced relative to sensor raw output 8185for this option.<wbr/></p> 8186<p>No hot pixel correction is applied.<wbr/> 8187The 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> 8188 </li> 8189 <li> 8190 <span class="entry_type_enum_name">FAST</span> 8191 <span class="entry_type_enum_notes"><p>The frame rate must not be reduced relative to sensor raw output 8192for this option.<wbr/></p> 8193<p>Hot pixel correction is applied.<wbr/> 8194The 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> 8195 </li> 8196 <li> 8197 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8198 <span class="entry_type_enum_notes"><p>The frame rate may be reduced relative to sensor raw output 8199for this option.<wbr/></p> 8200<p>A high-quality hot pixel correction is applied.<wbr/> 8201The 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> 8202 </li> 8203 </ul> 8204 8205 </td> <!-- entry_type --> 8206 8207 <td class="entry_description"> 8208 <p>Set operational mode for hot pixel correction.<wbr/></p> 8209 </td> 8210 8211 <td class="entry_units"> 8212 </td> 8213 8214 <td class="entry_range"> 8215 </td> 8216 8217 <td class="entry_tags"> 8218 <ul class="entry_tags"> 8219 <li><a href="#tag_V1">V1</a></li> 8220 <li><a href="#tag_DNG">DNG</a></li> 8221 </ul> 8222 </td> 8223 8224 </tr> 8225 <tr class="entries_header"> 8226 <th class="th_details" colspan="5">Details</th> 8227 </tr> 8228 <tr class="entry_cont"> 8229 <td class="entry_details" colspan="5"> 8230 <p>Valid modes for this camera device are listed in 8231<a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a>.<wbr/></p> 8232<p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 8233that do not accurately encode the incoming light (i.<wbr/>e.<wbr/> pixels that 8234are stuck at an arbitrary value).<wbr/></p> 8235 </td> 8236 </tr> 8237 8238 8239 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8240 <!-- end of entry --> 8241 8242 8243 8244 <!-- end of kind --> 8245 </tbody> 8246 8247 <!-- end of section --> 8248 <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr> 8249 8250 8251 <tr><td colspan="6" class="kind">controls</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="controls_android.jpeg.gpsLocation"> 8276 <td class="entry_name 8277 " rowspan="1"> 8278 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 8279 </td> 8280 <td class="entry_type"> 8281 <span class="entry_type_name">byte</span> 8282 8283 <span class="entry_type_visibility"> [public as location]</span> 8284 8285 <span class="entry_type_synthetic">[synthetic] </span> 8286 8287 8288 8289 8290 </td> <!-- entry_type --> 8291 8292 <td class="entry_description"> 8293 <p>A location object to use when generating image GPS metadata.<wbr/></p> 8294 </td> 8295 8296 <td class="entry_units"> 8297 </td> 8298 8299 <td class="entry_range"> 8300 </td> 8301 8302 <td class="entry_tags"> 8303 </td> 8304 8305 </tr> 8306 8307 8308 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8309 <!-- end of entry --> 8310 8311 8312 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 8313 <td class="entry_name 8314 " rowspan="1"> 8315 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 8316 </td> 8317 <td class="entry_type"> 8318 <span class="entry_type_name">double</span> 8319 <span class="entry_type_container">x</span> 8320 8321 <span class="entry_type_array"> 8322 3 8323 </span> 8324 <span class="entry_type_visibility"> [hidden]</span> 8325 8326 8327 8328 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 8329 8330 8331 </td> <!-- entry_type --> 8332 8333 <td class="entry_description"> 8334 <p>GPS coordinates to include in output JPEG 8335EXIF</p> 8336 </td> 8337 8338 <td class="entry_units"> 8339 </td> 8340 8341 <td class="entry_range"> 8342 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 8343 </td> 8344 8345 <td class="entry_tags"> 8346 <ul class="entry_tags"> 8347 <li><a href="#tag_BC">BC</a></li> 8348 </ul> 8349 </td> 8350 8351 </tr> 8352 8353 8354 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8355 <!-- end of entry --> 8356 8357 8358 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 8359 <td class="entry_name 8360 " rowspan="1"> 8361 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 8362 </td> 8363 <td class="entry_type"> 8364 <span class="entry_type_name">byte</span> 8365 8366 <span class="entry_type_visibility"> [hidden as string]</span> 8367 8368 8369 8370 8371 8372 </td> <!-- entry_type --> 8373 8374 <td class="entry_description"> 8375 <p>32 characters describing GPS algorithm to 8376include in EXIF</p> 8377 </td> 8378 8379 <td class="entry_units"> 8380 UTF-8 null-terminated string 8381 </td> 8382 8383 <td class="entry_range"> 8384 </td> 8385 8386 <td class="entry_tags"> 8387 <ul class="entry_tags"> 8388 <li><a href="#tag_BC">BC</a></li> 8389 </ul> 8390 </td> 8391 8392 </tr> 8393 8394 8395 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8396 <!-- end of entry --> 8397 8398 8399 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 8400 <td class="entry_name 8401 " rowspan="1"> 8402 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 8403 </td> 8404 <td class="entry_type"> 8405 <span class="entry_type_name">int64</span> 8406 8407 <span class="entry_type_visibility"> [hidden]</span> 8408 8409 8410 8411 8412 8413 </td> <!-- entry_type --> 8414 8415 <td class="entry_description"> 8416 <p>Time GPS fix was made to include in 8417EXIF</p> 8418 </td> 8419 8420 <td class="entry_units"> 8421 UTC in seconds since January 1,<wbr/> 1970 8422 </td> 8423 8424 <td class="entry_range"> 8425 </td> 8426 8427 <td class="entry_tags"> 8428 <ul class="entry_tags"> 8429 <li><a href="#tag_BC">BC</a></li> 8430 </ul> 8431 </td> 8432 8433 </tr> 8434 8435 8436 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8437 <!-- end of entry --> 8438 8439 8440 <tr class="entry" id="controls_android.jpeg.orientation"> 8441 <td class="entry_name 8442 " rowspan="1"> 8443 android.<wbr/>jpeg.<wbr/>orientation 8444 </td> 8445 <td class="entry_type"> 8446 <span class="entry_type_name">int32</span> 8447 8448 <span class="entry_type_visibility"> [public]</span> 8449 8450 8451 8452 8453 8454 </td> <!-- entry_type --> 8455 8456 <td class="entry_description"> 8457 <p>Orientation of JPEG image to 8458write</p> 8459 </td> 8460 8461 <td class="entry_units"> 8462 Degrees in multiples of 90 8463 </td> 8464 8465 <td class="entry_range"> 8466 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 8467 </td> 8468 8469 <td class="entry_tags"> 8470 <ul class="entry_tags"> 8471 <li><a href="#tag_BC">BC</a></li> 8472 </ul> 8473 </td> 8474 8475 </tr> 8476 8477 8478 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8479 <!-- end of entry --> 8480 8481 8482 <tr class="entry" id="controls_android.jpeg.quality"> 8483 <td class="entry_name 8484 " rowspan="3"> 8485 android.<wbr/>jpeg.<wbr/>quality 8486 </td> 8487 <td class="entry_type"> 8488 <span class="entry_type_name">byte</span> 8489 8490 <span class="entry_type_visibility"> [public]</span> 8491 8492 8493 8494 8495 8496 </td> <!-- entry_type --> 8497 8498 <td class="entry_description"> 8499 <p>Compression quality of the final JPEG 8500image</p> 8501 </td> 8502 8503 <td class="entry_units"> 8504 </td> 8505 8506 <td class="entry_range"> 8507 <p>1-100; larger is higher quality</p> 8508 </td> 8509 8510 <td class="entry_tags"> 8511 <ul class="entry_tags"> 8512 <li><a href="#tag_BC">BC</a></li> 8513 </ul> 8514 </td> 8515 8516 </tr> 8517 <tr class="entries_header"> 8518 <th class="th_details" colspan="5">Details</th> 8519 </tr> 8520 <tr class="entry_cont"> 8521 <td class="entry_details" colspan="5"> 8522 <p>85-95 is typical usage range</p> 8523 </td> 8524 </tr> 8525 8526 8527 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8528 <!-- end of entry --> 8529 8530 8531 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 8532 <td class="entry_name 8533 " rowspan="1"> 8534 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 8535 </td> 8536 <td class="entry_type"> 8537 <span class="entry_type_name">byte</span> 8538 8539 <span class="entry_type_visibility"> [public]</span> 8540 8541 8542 8543 8544 8545 </td> <!-- entry_type --> 8546 8547 <td class="entry_description"> 8548 <p>Compression quality of JPEG 8549thumbnail</p> 8550 </td> 8551 8552 <td class="entry_units"> 8553 </td> 8554 8555 <td class="entry_range"> 8556 <p>1-100; larger is higher quality</p> 8557 </td> 8558 8559 <td class="entry_tags"> 8560 <ul class="entry_tags"> 8561 <li><a href="#tag_BC">BC</a></li> 8562 </ul> 8563 </td> 8564 8565 </tr> 8566 8567 8568 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8569 <!-- end of entry --> 8570 8571 8572 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 8573 <td class="entry_name 8574 " rowspan="5"> 8575 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 8576 </td> 8577 <td class="entry_type"> 8578 <span class="entry_type_name">int32</span> 8579 <span class="entry_type_container">x</span> 8580 8581 <span class="entry_type_array"> 8582 2 8583 </span> 8584 <span class="entry_type_visibility"> [public as size]</span> 8585 8586 8587 8588 8589 8590 </td> <!-- entry_type --> 8591 8592 <td class="entry_description"> 8593 <p>Resolution of embedded JPEG thumbnail</p> 8594 </td> 8595 8596 <td class="entry_units"> 8597 </td> 8598 8599 <td class="entry_range"> 8600 <p>Size must be one of the size from <a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 8601 </td> 8602 8603 <td class="entry_tags"> 8604 <ul class="entry_tags"> 8605 <li><a href="#tag_BC">BC</a></li> 8606 </ul> 8607 </td> 8608 8609 </tr> 8610 <tr class="entries_header"> 8611 <th class="th_details" colspan="5">Details</th> 8612 </tr> 8613 <tr class="entry_cont"> 8614 <td class="entry_details" colspan="5"> 8615 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 8616but the captured JPEG will still be a valid image.<wbr/></p> 8617<p>When a jpeg image capture is issued,<wbr/> the thumbnail size selected should have 8618the same aspect ratio as the jpeg image.<wbr/></p> 8619<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 8620ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 8621For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 862216:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 8623generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 8624Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 8625 </td> 8626 </tr> 8627 8628 <tr class="entries_header"> 8629 <th class="th_details" colspan="5">HAL Implementation Details</th> 8630 </tr> 8631 <tr class="entry_cont"> 8632 <td class="entry_details" colspan="5"> 8633 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 8634The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 8635The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 8636thumbnail image cropping.<wbr/></p> 8637 </td> 8638 </tr> 8639 8640 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8641 <!-- end of entry --> 8642 8643 8644 8645 <!-- end of kind --> 8646 </tbody> 8647 <tr><td colspan="6" class="kind">static</td></tr> 8648 8649 <thead class="entries_header"> 8650 <tr> 8651 <th class="th_name">Property Name</th> 8652 <th class="th_type">Type</th> 8653 <th class="th_description">Description</th> 8654 <th class="th_units">Units</th> 8655 <th class="th_range">Range</th> 8656 <th class="th_tags">Tags</th> 8657 </tr> 8658 </thead> 8659 8660 <tbody> 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 8672 <td class="entry_name 8673 " rowspan="3"> 8674 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 8675 </td> 8676 <td class="entry_type"> 8677 <span class="entry_type_name">int32</span> 8678 <span class="entry_type_container">x</span> 8679 8680 <span class="entry_type_array"> 8681 2 x n 8682 </span> 8683 <span class="entry_type_visibility"> [public as size]</span> 8684 8685 8686 8687 8688 8689 </td> <!-- entry_type --> 8690 8691 <td class="entry_description"> 8692 <p>Supported resolutions for the JPEG thumbnail</p> 8693 </td> 8694 8695 <td class="entry_units"> 8696 </td> 8697 8698 <td class="entry_range"> 8699 <p>Will include at least one valid resolution,<wbr/> plus 8700(0,<wbr/>0) for no thumbnail generation,<wbr/> and each size will be distinct.<wbr/></p> 8701 </td> 8702 8703 <td class="entry_tags"> 8704 <ul class="entry_tags"> 8705 <li><a href="#tag_BC">BC</a></li> 8706 </ul> 8707 </td> 8708 8709 </tr> 8710 <tr class="entries_header"> 8711 <th class="th_details" colspan="5">Details</th> 8712 </tr> 8713 <tr class="entry_cont"> 8714 <td class="entry_details" colspan="5"> 8715 <p>Below condiditions will be satisfied for this size list:</p> 8716<ul> 8717<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 8718If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 8719<li>The aspect ratio of the largest thumbnail size will be same as the 8720aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 8721The largest size is defined as the size that has the largest pixel area 8722in a given size list.<wbr/></li> 8723<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 8724one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 8725and vice versa.<wbr/></li> 8726<li>All non (0,<wbr/> 0) sizes will have non-zero widths and heights.<wbr/></li> 8727</ul> 8728 </td> 8729 </tr> 8730 8731 8732 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8733 <!-- end of entry --> 8734 8735 8736 <tr class="entry" id="static_android.jpeg.maxSize"> 8737 <td class="entry_name 8738 " rowspan="3"> 8739 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 8740 </td> 8741 <td class="entry_type"> 8742 <span class="entry_type_name">int32</span> 8743 8744 <span class="entry_type_visibility"> [system]</span> 8745 8746 8747 8748 8749 8750 </td> <!-- entry_type --> 8751 8752 <td class="entry_description"> 8753 <p>Maximum size in bytes for the compressed 8754JPEG buffer</p> 8755 </td> 8756 8757 <td class="entry_units"> 8758 </td> 8759 8760 <td class="entry_range"> 8761 <p>Must be large enough to fit any JPEG produced by 8762the camera</p> 8763 </td> 8764 8765 <td class="entry_tags"> 8766 </td> 8767 8768 </tr> 8769 <tr class="entries_header"> 8770 <th class="th_details" colspan="5">Details</th> 8771 </tr> 8772 <tr class="entry_cont"> 8773 <td class="entry_details" colspan="5"> 8774 <p>This is used for sizing the gralloc buffers for 8775JPEG</p> 8776 </td> 8777 </tr> 8778 8779 8780 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8781 <!-- end of entry --> 8782 8783 8784 8785 <!-- end of kind --> 8786 </tbody> 8787 <tr><td colspan="6" class="kind">dynamic</td></tr> 8788 8789 <thead class="entries_header"> 8790 <tr> 8791 <th class="th_name">Property Name</th> 8792 <th class="th_type">Type</th> 8793 <th class="th_description">Description</th> 8794 <th class="th_units">Units</th> 8795 <th class="th_range">Range</th> 8796 <th class="th_tags">Tags</th> 8797 </tr> 8798 </thead> 8799 8800 <tbody> 8801 8802 8803 8804 8805 8806 8807 8808 8809 8810 8811 <tr class="entry" id="dynamic_android.jpeg.gpsLocation"> 8812 <td class="entry_name 8813 " rowspan="1"> 8814 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 8815 </td> 8816 <td class="entry_type"> 8817 <span class="entry_type_name">byte</span> 8818 8819 <span class="entry_type_visibility"> [public as location]</span> 8820 8821 <span class="entry_type_synthetic">[synthetic] </span> 8822 8823 8824 8825 8826 </td> <!-- entry_type --> 8827 8828 <td class="entry_description"> 8829 <p>A location object to use when generating image GPS metadata.<wbr/></p> 8830 </td> 8831 8832 <td class="entry_units"> 8833 </td> 8834 8835 <td class="entry_range"> 8836 </td> 8837 8838 <td class="entry_tags"> 8839 </td> 8840 8841 </tr> 8842 8843 8844 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8845 <!-- end of entry --> 8846 8847 8848 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 8849 <td class="entry_name 8850 " rowspan="1"> 8851 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 8852 </td> 8853 <td class="entry_type"> 8854 <span class="entry_type_name">double</span> 8855 <span class="entry_type_container">x</span> 8856 8857 <span class="entry_type_array"> 8858 3 8859 </span> 8860 <span class="entry_type_visibility"> [hidden]</span> 8861 8862 8863 8864 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 8865 8866 8867 </td> <!-- entry_type --> 8868 8869 <td class="entry_description"> 8870 <p>GPS coordinates to include in output JPEG 8871EXIF</p> 8872 </td> 8873 8874 <td class="entry_units"> 8875 </td> 8876 8877 <td class="entry_range"> 8878 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 8879 </td> 8880 8881 <td class="entry_tags"> 8882 <ul class="entry_tags"> 8883 <li><a href="#tag_BC">BC</a></li> 8884 </ul> 8885 </td> 8886 8887 </tr> 8888 8889 8890 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8891 <!-- end of entry --> 8892 8893 8894 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 8895 <td class="entry_name 8896 " rowspan="1"> 8897 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 8898 </td> 8899 <td class="entry_type"> 8900 <span class="entry_type_name">byte</span> 8901 8902 <span class="entry_type_visibility"> [hidden as string]</span> 8903 8904 8905 8906 8907 8908 </td> <!-- entry_type --> 8909 8910 <td class="entry_description"> 8911 <p>32 characters describing GPS algorithm to 8912include in EXIF</p> 8913 </td> 8914 8915 <td class="entry_units"> 8916 UTF-8 null-terminated string 8917 </td> 8918 8919 <td class="entry_range"> 8920 </td> 8921 8922 <td class="entry_tags"> 8923 <ul class="entry_tags"> 8924 <li><a href="#tag_BC">BC</a></li> 8925 </ul> 8926 </td> 8927 8928 </tr> 8929 8930 8931 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8932 <!-- end of entry --> 8933 8934 8935 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 8936 <td class="entry_name 8937 " rowspan="1"> 8938 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 8939 </td> 8940 <td class="entry_type"> 8941 <span class="entry_type_name">int64</span> 8942 8943 <span class="entry_type_visibility"> [hidden]</span> 8944 8945 8946 8947 8948 8949 </td> <!-- entry_type --> 8950 8951 <td class="entry_description"> 8952 <p>Time GPS fix was made to include in 8953EXIF</p> 8954 </td> 8955 8956 <td class="entry_units"> 8957 UTC in seconds since January 1,<wbr/> 1970 8958 </td> 8959 8960 <td class="entry_range"> 8961 </td> 8962 8963 <td class="entry_tags"> 8964 <ul class="entry_tags"> 8965 <li><a href="#tag_BC">BC</a></li> 8966 </ul> 8967 </td> 8968 8969 </tr> 8970 8971 8972 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8973 <!-- end of entry --> 8974 8975 8976 <tr class="entry" id="dynamic_android.jpeg.orientation"> 8977 <td class="entry_name 8978 " rowspan="1"> 8979 android.<wbr/>jpeg.<wbr/>orientation 8980 </td> 8981 <td class="entry_type"> 8982 <span class="entry_type_name">int32</span> 8983 8984 <span class="entry_type_visibility"> [public]</span> 8985 8986 8987 8988 8989 8990 </td> <!-- entry_type --> 8991 8992 <td class="entry_description"> 8993 <p>Orientation of JPEG image to 8994write</p> 8995 </td> 8996 8997 <td class="entry_units"> 8998 Degrees in multiples of 90 8999 </td> 9000 9001 <td class="entry_range"> 9002 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 9003 </td> 9004 9005 <td class="entry_tags"> 9006 <ul class="entry_tags"> 9007 <li><a href="#tag_BC">BC</a></li> 9008 </ul> 9009 </td> 9010 9011 </tr> 9012 9013 9014 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9015 <!-- end of entry --> 9016 9017 9018 <tr class="entry" id="dynamic_android.jpeg.quality"> 9019 <td class="entry_name 9020 " rowspan="3"> 9021 android.<wbr/>jpeg.<wbr/>quality 9022 </td> 9023 <td class="entry_type"> 9024 <span class="entry_type_name">byte</span> 9025 9026 <span class="entry_type_visibility"> [public]</span> 9027 9028 9029 9030 9031 9032 </td> <!-- entry_type --> 9033 9034 <td class="entry_description"> 9035 <p>Compression quality of the final JPEG 9036image</p> 9037 </td> 9038 9039 <td class="entry_units"> 9040 </td> 9041 9042 <td class="entry_range"> 9043 <p>1-100; larger is higher quality</p> 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>85-95 is typical usage range</p> 9059 </td> 9060 </tr> 9061 9062 9063 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9064 <!-- end of entry --> 9065 9066 9067 <tr class="entry" id="dynamic_android.jpeg.size"> 9068 <td class="entry_name 9069 " rowspan="3"> 9070 android.<wbr/>jpeg.<wbr/>size 9071 </td> 9072 <td class="entry_type"> 9073 <span class="entry_type_name">int32</span> 9074 9075 <span class="entry_type_visibility"> [system]</span> 9076 9077 9078 9079 9080 9081 </td> <!-- entry_type --> 9082 9083 <td class="entry_description"> 9084 <p>The size of the compressed JPEG image,<wbr/> in 9085bytes</p> 9086 </td> 9087 9088 <td class="entry_units"> 9089 </td> 9090 9091 <td class="entry_range"> 9092 <p>>= 0</p> 9093 </td> 9094 9095 <td class="entry_tags"> 9096 <ul class="entry_tags"> 9097 <li><a href="#tag_FUTURE">FUTURE</a></li> 9098 </ul> 9099 </td> 9100 9101 </tr> 9102 <tr class="entries_header"> 9103 <th class="th_details" colspan="5">Details</th> 9104 </tr> 9105 <tr class="entry_cont"> 9106 <td class="entry_details" colspan="5"> 9107 <p>If no JPEG output is produced for the request,<wbr/> 9108this must be 0.<wbr/></p> 9109<p>Otherwise,<wbr/> this describes the real size of the compressed 9110JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 9111if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 9112has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 9113the JPEG stream will be 1000000 bytes,<wbr/> of which the first 9114500000 make up the real data.<wbr/></p> 9115 </td> 9116 </tr> 9117 9118 9119 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9120 <!-- end of entry --> 9121 9122 9123 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 9124 <td class="entry_name 9125 " rowspan="1"> 9126 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 9127 </td> 9128 <td class="entry_type"> 9129 <span class="entry_type_name">byte</span> 9130 9131 <span class="entry_type_visibility"> [public]</span> 9132 9133 9134 9135 9136 9137 </td> <!-- entry_type --> 9138 9139 <td class="entry_description"> 9140 <p>Compression quality of JPEG 9141thumbnail</p> 9142 </td> 9143 9144 <td class="entry_units"> 9145 </td> 9146 9147 <td class="entry_range"> 9148 <p>1-100; larger is higher quality</p> 9149 </td> 9150 9151 <td class="entry_tags"> 9152 <ul class="entry_tags"> 9153 <li><a href="#tag_BC">BC</a></li> 9154 </ul> 9155 </td> 9156 9157 </tr> 9158 9159 9160 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9161 <!-- end of entry --> 9162 9163 9164 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 9165 <td class="entry_name 9166 " rowspan="5"> 9167 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 9168 </td> 9169 <td class="entry_type"> 9170 <span class="entry_type_name">int32</span> 9171 <span class="entry_type_container">x</span> 9172 9173 <span class="entry_type_array"> 9174 2 9175 </span> 9176 <span class="entry_type_visibility"> [public as size]</span> 9177 9178 9179 9180 9181 9182 </td> <!-- entry_type --> 9183 9184 <td class="entry_description"> 9185 <p>Resolution of embedded JPEG thumbnail</p> 9186 </td> 9187 9188 <td class="entry_units"> 9189 </td> 9190 9191 <td class="entry_range"> 9192 <p>Size must be one of the size from <a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 9193 </td> 9194 9195 <td class="entry_tags"> 9196 <ul class="entry_tags"> 9197 <li><a href="#tag_BC">BC</a></li> 9198 </ul> 9199 </td> 9200 9201 </tr> 9202 <tr class="entries_header"> 9203 <th class="th_details" colspan="5">Details</th> 9204 </tr> 9205 <tr class="entry_cont"> 9206 <td class="entry_details" colspan="5"> 9207 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 9208but the captured JPEG will still be a valid image.<wbr/></p> 9209<p>When a jpeg image capture is issued,<wbr/> the thumbnail size selected should have 9210the same aspect ratio as the jpeg image.<wbr/></p> 9211<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 9212ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 9213For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 921416:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 9215generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 9216Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 9217 </td> 9218 </tr> 9219 9220 <tr class="entries_header"> 9221 <th class="th_details" colspan="5">HAL Implementation Details</th> 9222 </tr> 9223 <tr class="entry_cont"> 9224 <td class="entry_details" colspan="5"> 9225 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 9226The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 9227The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 9228thumbnail image cropping.<wbr/></p> 9229 </td> 9230 </tr> 9231 9232 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9233 <!-- end of entry --> 9234 9235 9236 9237 <!-- end of kind --> 9238 </tbody> 9239 9240 <!-- end of section --> 9241 <tr><td colspan="6" id="section_lens" class="section">lens</td></tr> 9242 9243 9244 <tr><td colspan="6" class="kind">controls</td></tr> 9245 9246 <thead class="entries_header"> 9247 <tr> 9248 <th class="th_name">Property Name</th> 9249 <th class="th_type">Type</th> 9250 <th class="th_description">Description</th> 9251 <th class="th_units">Units</th> 9252 <th class="th_range">Range</th> 9253 <th class="th_tags">Tags</th> 9254 </tr> 9255 </thead> 9256 9257 <tbody> 9258 9259 9260 9261 9262 9263 9264 9265 9266 9267 9268 <tr class="entry" id="controls_android.lens.aperture"> 9269 <td class="entry_name 9270 " rowspan="3"> 9271 android.<wbr/>lens.<wbr/>aperture 9272 </td> 9273 <td class="entry_type"> 9274 <span class="entry_type_name">float</span> 9275 9276 <span class="entry_type_visibility"> [public]</span> 9277 9278 9279 9280 9281 9282 </td> <!-- entry_type --> 9283 9284 <td class="entry_description"> 9285 <p>The ratio of lens focal length to the effective 9286aperture diameter.<wbr/></p> 9287 </td> 9288 9289 <td class="entry_units"> 9290 f-number (f/<wbr/>NNN) 9291 </td> 9292 9293 <td class="entry_range"> 9294 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 9295 </td> 9296 9297 <td class="entry_tags"> 9298 <ul class="entry_tags"> 9299 <li><a href="#tag_V1">V1</a></li> 9300 </ul> 9301 </td> 9302 9303 </tr> 9304 <tr class="entries_header"> 9305 <th class="th_details" colspan="5">Details</th> 9306 </tr> 9307 <tr class="entry_cont"> 9308 <td class="entry_details" colspan="5"> 9309 <p>This will only be supported on the camera devices that 9310have variable aperture lens.<wbr/> The aperture value can only be 9311one of the values listed in <a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a>.<wbr/></p> 9312<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 9313this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 9314<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> 9315to achieve manual exposure control.<wbr/></p> 9316<p>The requested aperture value may take several frames to reach the 9317requested value; the camera device will report the current (intermediate) 9318aperture size in capture result metadata while the aperture is changing.<wbr/> 9319While 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> 9320<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 9321the ON modes,<wbr/> this will be overridden by the camera device 9322auto-exposure algorithm,<wbr/> the overridden values are then provided 9323back to the user in the corresponding result.<wbr/></p> 9324 </td> 9325 </tr> 9326 9327 9328 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9329 <!-- end of entry --> 9330 9331 9332 <tr class="entry" id="controls_android.lens.filterDensity"> 9333 <td class="entry_name 9334 " rowspan="3"> 9335 android.<wbr/>lens.<wbr/>filter<wbr/>Density 9336 </td> 9337 <td class="entry_type"> 9338 <span class="entry_type_name">float</span> 9339 9340 <span class="entry_type_visibility"> [public]</span> 9341 9342 9343 9344 9345 9346 </td> <!-- entry_type --> 9347 9348 <td class="entry_description"> 9349 <p>State of lens neutral density filter(s).<wbr/></p> 9350 </td> 9351 9352 <td class="entry_units"> 9353 Steps of Exposure Value (EV).<wbr/> 9354 </td> 9355 9356 <td class="entry_range"> 9357 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 9358 </td> 9359 9360 <td class="entry_tags"> 9361 <ul class="entry_tags"> 9362 <li><a href="#tag_V1">V1</a></li> 9363 </ul> 9364 </td> 9365 9366 </tr> 9367 <tr class="entries_header"> 9368 <th class="th_details" colspan="5">Details</th> 9369 </tr> 9370 <tr class="entry_cont"> 9371 <td class="entry_details" colspan="5"> 9372 <p>This will not be supported on most camera devices.<wbr/> On devices 9373where this is supported,<wbr/> this may only be set to one of the 9374values included in <a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a>.<wbr/></p> 9375<p>Lens filters are typically used to lower the amount of light the 9376sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 9377step is the standard logarithmic representation,<wbr/> which are 9378non-negative,<wbr/> and inversely proportional to the amount of light 9379hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 9380in no reduction of the incoming light,<wbr/> and setting this to 2 would 9381mean that the filter is set to reduce incoming light by two stops 9382(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 9383<p>It may take several frames before the lens filter density changes 9384to the requested value.<wbr/> While the filter density is still changing,<wbr/> 9385<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 9386 </td> 9387 </tr> 9388 9389 9390 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9391 <!-- end of entry --> 9392 9393 9394 <tr class="entry" id="controls_android.lens.focalLength"> 9395 <td class="entry_name 9396 " rowspan="3"> 9397 android.<wbr/>lens.<wbr/>focal<wbr/>Length 9398 </td> 9399 <td class="entry_type"> 9400 <span class="entry_type_name">float</span> 9401 9402 <span class="entry_type_visibility"> [public]</span> 9403 9404 9405 9406 9407 9408 </td> <!-- entry_type --> 9409 9410 <td class="entry_description"> 9411 <p>The current lens focal length; used for optical zoom.<wbr/></p> 9412 </td> 9413 9414 <td class="entry_units"> 9415 focal length in mm 9416 </td> 9417 9418 <td class="entry_range"> 9419 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 9420 </td> 9421 9422 <td class="entry_tags"> 9423 <ul class="entry_tags"> 9424 <li><a href="#tag_V1">V1</a></li> 9425 </ul> 9426 </td> 9427 9428 </tr> 9429 <tr class="entries_header"> 9430 <th class="th_details" colspan="5">Details</th> 9431 </tr> 9432 <tr class="entry_cont"> 9433 <td class="entry_details" colspan="5"> 9434 <p>This setting controls the physical focal length of the camera 9435device's lens.<wbr/> Changing the focal length changes the field of 9436view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 9437<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 9438setting won't be applied instantaneously,<wbr/> and it may take several 9439frames before the lens can change to the requested focal length.<wbr/> 9440While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 9441be set to MOVING.<wbr/></p> 9442<p>This is expected not to be supported on most devices.<wbr/></p> 9443 </td> 9444 </tr> 9445 9446 9447 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9448 <!-- end of entry --> 9449 9450 9451 <tr class="entry" id="controls_android.lens.focusDistance"> 9452 <td class="entry_name 9453 " rowspan="3"> 9454 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 9455 </td> 9456 <td class="entry_type"> 9457 <span class="entry_type_name">float</span> 9458 9459 <span class="entry_type_visibility"> [public]</span> 9460 9461 9462 9463 9464 9465 </td> <!-- entry_type --> 9466 9467 <td class="entry_description"> 9468 <p>Distance to plane of sharpest focus,<wbr/> 9469measured from frontmost surface of the lens</p> 9470 </td> 9471 9472 <td class="entry_units"> 9473 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 9474 </td> 9475 9476 <td class="entry_range"> 9477 <p>>= 0</p> 9478 </td> 9479 9480 <td class="entry_tags"> 9481 <ul class="entry_tags"> 9482 <li><a href="#tag_BC">BC</a></li> 9483 <li><a href="#tag_V1">V1</a></li> 9484 </ul> 9485 </td> 9486 9487 </tr> 9488 <tr class="entries_header"> 9489 <th class="th_details" colspan="5">Details</th> 9490 </tr> 9491 <tr class="entry_cont"> 9492 <td class="entry_details" colspan="5"> 9493 <p>0 means infinity focus.<wbr/> Used value will be clamped 9494to [0,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>].<wbr/></p> 9495<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 9496instantaneously,<wbr/> and it may take several frames before the lens 9497can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 9498<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 9499 </td> 9500 </tr> 9501 9502 9503 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9504 <!-- end of entry --> 9505 9506 9507 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 9508 <td class="entry_name 9509 " rowspan="3"> 9510 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 9511 </td> 9512 <td class="entry_type"> 9513 <span class="entry_type_name entry_type_name_enum">byte</span> 9514 9515 <span class="entry_type_visibility"> [public]</span> 9516 9517 9518 9519 9520 <ul class="entry_type_enum"> 9521 <li> 9522 <span class="entry_type_enum_name">OFF</span> 9523 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 9524 </li> 9525 <li> 9526 <span class="entry_type_enum_name">ON</span> 9527 <span class="entry_type_enum_optional">optional</span> 9528 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 9529 </li> 9530 </ul> 9531 9532 </td> <!-- entry_type --> 9533 9534 <td class="entry_description"> 9535 <p>Sets whether the camera device uses optical image stabilization (OIS) 9536when capturing images.<wbr/></p> 9537 </td> 9538 9539 <td class="entry_units"> 9540 </td> 9541 9542 <td class="entry_range"> 9543 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 9544 </td> 9545 9546 <td class="entry_tags"> 9547 <ul class="entry_tags"> 9548 <li><a href="#tag_V1">V1</a></li> 9549 </ul> 9550 </td> 9551 9552 </tr> 9553 <tr class="entries_header"> 9554 <th class="th_details" colspan="5">Details</th> 9555 </tr> 9556 <tr class="entry_cont"> 9557 <td class="entry_details" colspan="5"> 9558 <p>OIS is used to compensate for motion blur due to small movements of 9559the camera during capture.<wbr/> Unlike digital image stabilization,<wbr/> OIS makes 9560use of mechanical elements to stabilize the camera sensor,<wbr/> and thus 9561allows for longer exposure times before camera shake becomes 9562apparent.<wbr/></p> 9563<p>This is not expected to be supported on most devices.<wbr/></p> 9564 </td> 9565 </tr> 9566 9567 9568 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9569 <!-- end of entry --> 9570 9571 9572 9573 <!-- end of kind --> 9574 </tbody> 9575 <tr><td colspan="6" class="kind">static</td></tr> 9576 9577 <thead class="entries_header"> 9578 <tr> 9579 <th class="th_name">Property Name</th> 9580 <th class="th_type">Type</th> 9581 <th class="th_description">Description</th> 9582 <th class="th_units">Units</th> 9583 <th class="th_range">Range</th> 9584 <th class="th_tags">Tags</th> 9585 </tr> 9586 </thead> 9587 9588 <tbody> 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 <tr class="entry" id="static_android.lens.info.availableApertures"> 9602 <td class="entry_name 9603 " rowspan="3"> 9604 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 9605 </td> 9606 <td class="entry_type"> 9607 <span class="entry_type_name">float</span> 9608 <span class="entry_type_container">x</span> 9609 9610 <span class="entry_type_array"> 9611 n 9612 </span> 9613 <span class="entry_type_visibility"> [public]</span> 9614 9615 9616 9617 9618 9619 </td> <!-- entry_type --> 9620 9621 <td class="entry_description"> 9622 <p>List of supported aperture 9623values.<wbr/></p> 9624 </td> 9625 9626 <td class="entry_units"> 9627 </td> 9628 9629 <td class="entry_range"> 9630 <p>one entry required,<wbr/> > 0</p> 9631 </td> 9632 9633 <td class="entry_tags"> 9634 <ul class="entry_tags"> 9635 <li><a href="#tag_V1">V1</a></li> 9636 </ul> 9637 </td> 9638 9639 </tr> 9640 <tr class="entries_header"> 9641 <th class="th_details" colspan="5">Details</th> 9642 </tr> 9643 <tr class="entry_cont"> 9644 <td class="entry_details" colspan="5"> 9645 <p>If the camera device doesn't support variable apertures,<wbr/> 9646listed value will be the fixed aperture.<wbr/></p> 9647<p>If the camera device supports variable apertures,<wbr/> the aperture value 9648in this list will be sorted in ascending order.<wbr/></p> 9649 </td> 9650 </tr> 9651 9652 9653 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9654 <!-- end of entry --> 9655 9656 9657 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 9658 <td class="entry_name 9659 " rowspan="3"> 9660 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 9661 </td> 9662 <td class="entry_type"> 9663 <span class="entry_type_name">float</span> 9664 <span class="entry_type_container">x</span> 9665 9666 <span class="entry_type_array"> 9667 n 9668 </span> 9669 <span class="entry_type_visibility"> [public]</span> 9670 9671 9672 9673 9674 9675 </td> <!-- entry_type --> 9676 9677 <td class="entry_description"> 9678 <p>List of supported neutral density filter values for 9679<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a>.<wbr/></p> 9680 </td> 9681 9682 <td class="entry_units"> 9683 </td> 9684 9685 <td class="entry_range"> 9686 <p>At least one value is required.<wbr/> Values must be >= 0.<wbr/></p> 9687 </td> 9688 9689 <td class="entry_tags"> 9690 <ul class="entry_tags"> 9691 <li><a href="#tag_V1">V1</a></li> 9692 </ul> 9693 </td> 9694 9695 </tr> 9696 <tr class="entries_header"> 9697 <th class="th_details" colspan="5">Details</th> 9698 </tr> 9699 <tr class="entry_cont"> 9700 <td class="entry_details" colspan="5"> 9701 <p>If changing <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> is not supported,<wbr/> 9702availableFilterDensities must contain only 0.<wbr/> Otherwise,<wbr/> this 9703list contains only the exact filter density values available on 9704this camera device.<wbr/></p> 9705 </td> 9706 </tr> 9707 9708 9709 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9710 <!-- end of entry --> 9711 9712 9713 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 9714 <td class="entry_name 9715 " rowspan="3"> 9716 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 9717 </td> 9718 <td class="entry_type"> 9719 <span class="entry_type_name">float</span> 9720 <span class="entry_type_container">x</span> 9721 9722 <span class="entry_type_array"> 9723 n 9724 </span> 9725 <span class="entry_type_visibility"> [public]</span> 9726 9727 9728 9729 <div class="entry_type_notes">The list of available focal lengths</div> 9730 9731 9732 </td> <!-- entry_type --> 9733 9734 <td class="entry_description"> 9735 <p>The available focal lengths for this device for use with 9736<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>.<wbr/></p> 9737 </td> 9738 9739 <td class="entry_units"> 9740 </td> 9741 9742 <td class="entry_range"> 9743 <p>Each value in this list must be > 0.<wbr/> This list must 9744contain at least one value.<wbr/></p> 9745 </td> 9746 9747 <td class="entry_tags"> 9748 <ul class="entry_tags"> 9749 <li><a href="#tag_BC">BC</a></li> 9750 <li><a href="#tag_V1">V1</a></li> 9751 </ul> 9752 </td> 9753 9754 </tr> 9755 <tr class="entries_header"> 9756 <th class="th_details" colspan="5">Details</th> 9757 </tr> 9758 <tr class="entry_cont"> 9759 <td class="entry_details" colspan="5"> 9760 <p>If optical zoom is not supported,<wbr/> this will only report 9761a single value corresponding to the static focal length of the 9762device.<wbr/> Otherwise,<wbr/> this will report every focal length supported 9763by the device.<wbr/></p> 9764 </td> 9765 </tr> 9766 9767 9768 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9769 <!-- end of entry --> 9770 9771 9772 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> 9773 <td class="entry_name 9774 " rowspan="3"> 9775 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 9776 </td> 9777 <td class="entry_type"> 9778 <span class="entry_type_name">byte</span> 9779 <span class="entry_type_container">x</span> 9780 9781 <span class="entry_type_array"> 9782 n 9783 </span> 9784 <span class="entry_type_visibility"> [public as enumList]</span> 9785 9786 9787 9788 <div class="entry_type_notes">list of enums</div> 9789 9790 9791 </td> <!-- entry_type --> 9792 9793 <td class="entry_description"> 9794 <p>List containing a subset of the optical image 9795stabilization (OIS) modes specified in 9796<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>.<wbr/></p> 9797 </td> 9798 9799 <td class="entry_units"> 9800 </td> 9801 9802 <td class="entry_range"> 9803 </td> 9804 9805 <td class="entry_tags"> 9806 <ul class="entry_tags"> 9807 <li><a href="#tag_V1">V1</a></li> 9808 </ul> 9809 </td> 9810 9811 </tr> 9812 <tr class="entries_header"> 9813 <th class="th_details" colspan="5">Details</th> 9814 </tr> 9815 <tr class="entry_cont"> 9816 <td class="entry_details" colspan="5"> 9817 <p>If OIS is not implemented for a given camera device,<wbr/> this should 9818contain only OFF.<wbr/></p> 9819 </td> 9820 </tr> 9821 9822 9823 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9824 <!-- end of entry --> 9825 9826 9827 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 9828 <td class="entry_name 9829 " rowspan="3"> 9830 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 9831 </td> 9832 <td class="entry_type"> 9833 <span class="entry_type_name">float</span> 9834 9835 <span class="entry_type_visibility"> [public]</span> 9836 9837 9838 9839 9840 9841 </td> <!-- entry_type --> 9842 9843 <td class="entry_description"> 9844 <p>Optional.<wbr/> Hyperfocal distance for this lens.<wbr/></p> 9845 </td> 9846 9847 <td class="entry_units"> 9848 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 9849 </td> 9850 9851 <td class="entry_range"> 9852 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the range is 9853<code>(0,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code></p> 9854 </td> 9855 9856 <td class="entry_tags"> 9857 </td> 9858 9859 </tr> 9860 <tr class="entries_header"> 9861 <th class="th_details" colspan="5">Details</th> 9862 </tr> 9863 <tr class="entry_cont"> 9864 <td class="entry_details" colspan="5"> 9865 <p>If the lens is not fixed focus,<wbr/> the camera device will report this 9866field 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> 9867 </td> 9868 </tr> 9869 9870 9871 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9872 <!-- end of entry --> 9873 9874 9875 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 9876 <td class="entry_name 9877 " rowspan="3"> 9878 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 9879 </td> 9880 <td class="entry_type"> 9881 <span class="entry_type_name">float</span> 9882 9883 <span class="entry_type_visibility"> [public]</span> 9884 9885 9886 9887 9888 9889 </td> <!-- entry_type --> 9890 9891 <td class="entry_description"> 9892 <p>Shortest distance from frontmost surface 9893of the lens that can be focused correctly.<wbr/></p> 9894 </td> 9895 9896 <td class="entry_units"> 9897 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 9898 </td> 9899 9900 <td class="entry_range"> 9901 <p>>= 0</p> 9902 </td> 9903 9904 <td class="entry_tags"> 9905 <ul class="entry_tags"> 9906 <li><a href="#tag_V1">V1</a></li> 9907 </ul> 9908 </td> 9909 9910 </tr> 9911 <tr class="entries_header"> 9912 <th class="th_details" colspan="5">Details</th> 9913 </tr> 9914 <tr class="entry_cont"> 9915 <td class="entry_details" colspan="5"> 9916 <p>If the lens is fixed-focus,<wbr/> this should be 99170.<wbr/></p> 9918 </td> 9919 </tr> 9920 9921 9922 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9923 <!-- end of entry --> 9924 9925 9926 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 9927 <td class="entry_name 9928 " rowspan="3"> 9929 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 9930 </td> 9931 <td class="entry_type"> 9932 <span class="entry_type_name">int32</span> 9933 <span class="entry_type_container">x</span> 9934 9935 <span class="entry_type_array"> 9936 2 9937 </span> 9938 <span class="entry_type_visibility"> [hidden as size]</span> 9939 9940 9941 9942 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> 9943 9944 9945 </td> <!-- entry_type --> 9946 9947 <td class="entry_description"> 9948 <p>Dimensions of lens shading map.<wbr/></p> 9949 </td> 9950 9951 <td class="entry_units"> 9952 </td> 9953 9954 <td class="entry_range"> 9955 <p>Both values >= 1</p> 9956 </td> 9957 9958 <td class="entry_tags"> 9959 <ul class="entry_tags"> 9960 <li><a href="#tag_V1">V1</a></li> 9961 </ul> 9962 </td> 9963 9964 </tr> 9965 <tr class="entries_header"> 9966 <th class="th_details" colspan="5">Details</th> 9967 </tr> 9968 <tr class="entry_cont"> 9969 <td class="entry_details" colspan="5"> 9970 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 9971must be smaller than 64x64.<wbr/></p> 9972 </td> 9973 </tr> 9974 9975 9976 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9977 <!-- end of entry --> 9978 9979 9980 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 9981 <td class="entry_name 9982 " rowspan="3"> 9983 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 9984 </td> 9985 <td class="entry_type"> 9986 <span class="entry_type_name entry_type_name_enum">byte</span> 9987 9988 <span class="entry_type_visibility"> [public]</span> 9989 9990 9991 9992 9993 <ul class="entry_type_enum"> 9994 <li> 9995 <span class="entry_type_enum_name">UNCALIBRATED</span> 9996 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 9997<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/> 9998Setting the lens to the same focus distance on separate occasions may 9999result in a different real focus distance,<wbr/> depending on factors such 10000as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 10001and the device temperature.<wbr/> The focus distance value will still be 10002in 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 10003represents the farthest focus.<wbr/></p></span> 10004 </li> 10005 <li> 10006 <span class="entry_type_enum_name">APPROXIMATE</span> 10007 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/> However,<wbr/> setting the lens 10008to the same focus distance on separate occasions may result in a 10009different real focus distance,<wbr/> depending on factors such as the 10010orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> and 10011the device temperature.<wbr/></p></span> 10012 </li> 10013 <li> 10014 <span class="entry_type_enum_name">CALIBRATED</span> 10015 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/> The lens mechanism is 10016calibrated so that setting the same focus distance is repeatable on 10017multiple occasions with good accuracy,<wbr/> and the focus distance corresponds 10018to the real physical distance to the plane of best focus.<wbr/></p></span> 10019 </li> 10020 </ul> 10021 10022 </td> <!-- entry_type --> 10023 10024 <td class="entry_description"> 10025 <p>The lens focus distance calibration quality.<wbr/></p> 10026 </td> 10027 10028 <td class="entry_units"> 10029 </td> 10030 10031 <td class="entry_range"> 10032 </td> 10033 10034 <td class="entry_tags"> 10035 <ul class="entry_tags"> 10036 <li><a href="#tag_V1">V1</a></li> 10037 </ul> 10038 </td> 10039 10040 </tr> 10041 <tr class="entries_header"> 10042 <th class="th_details" colspan="5">Details</th> 10043 </tr> 10044 <tr class="entry_cont"> 10045 <td class="entry_details" colspan="5"> 10046 <p>The lens focus distance calibration quality determines the reliability of 10047focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 10048<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 10049<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 10050 </td> 10051 </tr> 10052 10053 10054 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10055 <!-- end of entry --> 10056 10057 10058 10059 10060 10061 <tr class="entry" id="static_android.lens.facing"> 10062 <td class="entry_name 10063 " rowspan="1"> 10064 android.<wbr/>lens.<wbr/>facing 10065 </td> 10066 <td class="entry_type"> 10067 <span class="entry_type_name entry_type_name_enum">byte</span> 10068 10069 <span class="entry_type_visibility"> [public]</span> 10070 10071 10072 10073 10074 <ul class="entry_type_enum"> 10075 <li> 10076 <span class="entry_type_enum_name">FRONT</span> 10077 </li> 10078 <li> 10079 <span class="entry_type_enum_name">BACK</span> 10080 </li> 10081 </ul> 10082 10083 </td> <!-- entry_type --> 10084 10085 <td class="entry_description"> 10086 <p>Direction the camera faces relative to 10087device screen</p> 10088 </td> 10089 10090 <td class="entry_units"> 10091 </td> 10092 10093 <td class="entry_range"> 10094 </td> 10095 10096 <td class="entry_tags"> 10097 </td> 10098 10099 </tr> 10100 10101 10102 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10103 <!-- end of entry --> 10104 10105 10106 <tr class="entry" id="static_android.lens.opticalAxisAngle"> 10107 <td class="entry_name 10108 " rowspan="3"> 10109 android.<wbr/>lens.<wbr/>optical<wbr/>Axis<wbr/>Angle 10110 </td> 10111 <td class="entry_type"> 10112 <span class="entry_type_name">float</span> 10113 <span class="entry_type_container">x</span> 10114 10115 <span class="entry_type_array"> 10116 2 10117 </span> 10118 <span class="entry_type_visibility"> [system]</span> 10119 10120 10121 10122 <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> 10123 10124 10125 </td> <!-- entry_type --> 10126 10127 <td class="entry_description"> 10128 <p>Relative angle of camera optical axis to the 10129perpendicular axis from the display</p> 10130 </td> 10131 10132 <td class="entry_units"> 10133 </td> 10134 10135 <td class="entry_range"> 10136 <p>[0-90) for first angle,<wbr/> [0-360) for second</p> 10137 </td> 10138 10139 <td class="entry_tags"> 10140 <ul class="entry_tags"> 10141 <li><a href="#tag_FUTURE">FUTURE</a></li> 10142 </ul> 10143 </td> 10144 10145 </tr> 10146 <tr class="entries_header"> 10147 <th class="th_details" colspan="5">Details</th> 10148 </tr> 10149 <tr class="entry_cont"> 10150 <td class="entry_details" colspan="5"> 10151 <p>Examples:</p> 10152<p>(0,<wbr/>0) means that the camera optical axis 10153is perpendicular to the display surface;</p> 10154<p>(45,<wbr/>0) means that the camera points 45 degrees up when 10155device is held upright;</p> 10156<p>(45,<wbr/>90) means the camera points 45 degrees to the right when 10157the device is held upright.<wbr/></p> 10158<p>Use FACING field to determine perpendicular outgoing 10159direction</p> 10160 </td> 10161 </tr> 10162 10163 10164 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10165 <!-- end of entry --> 10166 10167 10168 <tr class="entry" id="static_android.lens.position"> 10169 <td class="entry_name 10170 " rowspan="1"> 10171 android.<wbr/>lens.<wbr/>position 10172 </td> 10173 <td class="entry_type"> 10174 <span class="entry_type_name">float</span> 10175 <span class="entry_type_container">x</span> 10176 10177 <span class="entry_type_array"> 10178 3, location in mm, in the sensor coordinate 10179 system 10180 </span> 10181 <span class="entry_type_visibility"> [system]</span> 10182 10183 10184 10185 10186 10187 </td> <!-- entry_type --> 10188 10189 <td class="entry_description"> 10190 <p>Coordinates of camera optical axis on 10191device</p> 10192 </td> 10193 10194 <td class="entry_units"> 10195 </td> 10196 10197 <td class="entry_range"> 10198 </td> 10199 10200 <td class="entry_tags"> 10201 <ul class="entry_tags"> 10202 <li><a href="#tag_FUTURE">FUTURE</a></li> 10203 </ul> 10204 </td> 10205 10206 </tr> 10207 10208 10209 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10210 <!-- end of entry --> 10211 10212 10213 10214 <!-- end of kind --> 10215 </tbody> 10216 <tr><td colspan="6" class="kind">dynamic</td></tr> 10217 10218 <thead class="entries_header"> 10219 <tr> 10220 <th class="th_name">Property Name</th> 10221 <th class="th_type">Type</th> 10222 <th class="th_description">Description</th> 10223 <th class="th_units">Units</th> 10224 <th class="th_range">Range</th> 10225 <th class="th_tags">Tags</th> 10226 </tr> 10227 </thead> 10228 10229 <tbody> 10230 10231 10232 10233 10234 10235 10236 10237 10238 10239 10240 <tr class="entry" id="dynamic_android.lens.aperture"> 10241 <td class="entry_name 10242 " rowspan="3"> 10243 android.<wbr/>lens.<wbr/>aperture 10244 </td> 10245 <td class="entry_type"> 10246 <span class="entry_type_name">float</span> 10247 10248 <span class="entry_type_visibility"> [public]</span> 10249 10250 10251 10252 10253 10254 </td> <!-- entry_type --> 10255 10256 <td class="entry_description"> 10257 <p>The ratio of lens focal length to the effective 10258aperture diameter.<wbr/></p> 10259 </td> 10260 10261 <td class="entry_units"> 10262 f-number (f/<wbr/>NNN) 10263 </td> 10264 10265 <td class="entry_range"> 10266 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 10267 </td> 10268 10269 <td class="entry_tags"> 10270 <ul class="entry_tags"> 10271 <li><a href="#tag_V1">V1</a></li> 10272 </ul> 10273 </td> 10274 10275 </tr> 10276 <tr class="entries_header"> 10277 <th class="th_details" colspan="5">Details</th> 10278 </tr> 10279 <tr class="entry_cont"> 10280 <td class="entry_details" colspan="5"> 10281 <p>This will only be supported on the camera devices that 10282have variable aperture lens.<wbr/> The aperture value can only be 10283one of the values listed in <a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a>.<wbr/></p> 10284<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 10285this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 10286<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> 10287to achieve manual exposure control.<wbr/></p> 10288<p>The requested aperture value may take several frames to reach the 10289requested value; the camera device will report the current (intermediate) 10290aperture size in capture result metadata while the aperture is changing.<wbr/> 10291While 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> 10292<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 10293the ON modes,<wbr/> this will be overridden by the camera device 10294auto-exposure algorithm,<wbr/> the overridden values are then provided 10295back to the user in the corresponding result.<wbr/></p> 10296 </td> 10297 </tr> 10298 10299 10300 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10301 <!-- end of entry --> 10302 10303 10304 <tr class="entry" id="dynamic_android.lens.filterDensity"> 10305 <td class="entry_name 10306 " rowspan="3"> 10307 android.<wbr/>lens.<wbr/>filter<wbr/>Density 10308 </td> 10309 <td class="entry_type"> 10310 <span class="entry_type_name">float</span> 10311 10312 <span class="entry_type_visibility"> [public]</span> 10313 10314 10315 10316 10317 10318 </td> <!-- entry_type --> 10319 10320 <td class="entry_description"> 10321 <p>State of lens neutral density filter(s).<wbr/></p> 10322 </td> 10323 10324 <td class="entry_units"> 10325 Steps of Exposure Value (EV).<wbr/> 10326 </td> 10327 10328 <td class="entry_range"> 10329 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 10330 </td> 10331 10332 <td class="entry_tags"> 10333 <ul class="entry_tags"> 10334 <li><a href="#tag_V1">V1</a></li> 10335 </ul> 10336 </td> 10337 10338 </tr> 10339 <tr class="entries_header"> 10340 <th class="th_details" colspan="5">Details</th> 10341 </tr> 10342 <tr class="entry_cont"> 10343 <td class="entry_details" colspan="5"> 10344 <p>This will not be supported on most camera devices.<wbr/> On devices 10345where this is supported,<wbr/> this may only be set to one of the 10346values included in <a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a>.<wbr/></p> 10347<p>Lens filters are typically used to lower the amount of light the 10348sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 10349step is the standard logarithmic representation,<wbr/> which are 10350non-negative,<wbr/> and inversely proportional to the amount of light 10351hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 10352in no reduction of the incoming light,<wbr/> and setting this to 2 would 10353mean that the filter is set to reduce incoming light by two stops 10354(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 10355<p>It may take several frames before the lens filter density changes 10356to the requested value.<wbr/> While the filter density is still changing,<wbr/> 10357<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 10358 </td> 10359 </tr> 10360 10361 10362 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10363 <!-- end of entry --> 10364 10365 10366 <tr class="entry" id="dynamic_android.lens.focalLength"> 10367 <td class="entry_name 10368 " rowspan="3"> 10369 android.<wbr/>lens.<wbr/>focal<wbr/>Length 10370 </td> 10371 <td class="entry_type"> 10372 <span class="entry_type_name">float</span> 10373 10374 <span class="entry_type_visibility"> [public]</span> 10375 10376 10377 10378 10379 10380 </td> <!-- entry_type --> 10381 10382 <td class="entry_description"> 10383 <p>The current lens focal length; used for optical zoom.<wbr/></p> 10384 </td> 10385 10386 <td class="entry_units"> 10387 focal length in mm 10388 </td> 10389 10390 <td class="entry_range"> 10391 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 10392 </td> 10393 10394 <td class="entry_tags"> 10395 <ul class="entry_tags"> 10396 <li><a href="#tag_BC">BC</a></li> 10397 </ul> 10398 </td> 10399 10400 </tr> 10401 <tr class="entries_header"> 10402 <th class="th_details" colspan="5">Details</th> 10403 </tr> 10404 <tr class="entry_cont"> 10405 <td class="entry_details" colspan="5"> 10406 <p>This setting controls the physical focal length of the camera 10407device's lens.<wbr/> Changing the focal length changes the field of 10408view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 10409<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 10410setting won't be applied instantaneously,<wbr/> and it may take several 10411frames before the lens can change to the requested focal length.<wbr/> 10412While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 10413be set to MOVING.<wbr/></p> 10414<p>This is expected not to be supported on most devices.<wbr/></p> 10415 </td> 10416 </tr> 10417 10418 10419 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10420 <!-- end of entry --> 10421 10422 10423 <tr class="entry" id="dynamic_android.lens.focusDistance"> 10424 <td class="entry_name 10425 " rowspan="3"> 10426 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 10427 </td> 10428 <td class="entry_type"> 10429 <span class="entry_type_name">float</span> 10430 10431 <span class="entry_type_visibility"> [public]</span> 10432 10433 10434 10435 10436 10437 </td> <!-- entry_type --> 10438 10439 <td class="entry_description"> 10440 <p>Distance to plane of sharpest focus,<wbr/> 10441measured from frontmost surface of the lens</p> 10442 </td> 10443 10444 <td class="entry_units"> 10445 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 10446 </td> 10447 10448 <td class="entry_range"> 10449 <p>>= 0</p> 10450 </td> 10451 10452 <td class="entry_tags"> 10453 <ul class="entry_tags"> 10454 <li><a href="#tag_BC">BC</a></li> 10455 </ul> 10456 </td> 10457 10458 </tr> 10459 <tr class="entries_header"> 10460 <th class="th_details" colspan="5">Details</th> 10461 </tr> 10462 <tr class="entry_cont"> 10463 <td class="entry_details" colspan="5"> 10464 <p>Should be zero for fixed-focus cameras</p> 10465 </td> 10466 </tr> 10467 10468 10469 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10470 <!-- end of entry --> 10471 10472 10473 <tr class="entry" id="dynamic_android.lens.focusRange"> 10474 <td class="entry_name 10475 " rowspan="3"> 10476 android.<wbr/>lens.<wbr/>focus<wbr/>Range 10477 </td> 10478 <td class="entry_type"> 10479 <span class="entry_type_name">float</span> 10480 <span class="entry_type_container">x</span> 10481 10482 <span class="entry_type_array"> 10483 2 10484 </span> 10485 <span class="entry_type_visibility"> [public as pairFloatFloat]</span> 10486 10487 10488 10489 <div class="entry_type_notes">Range of scene distances that are in focus</div> 10490 10491 10492 </td> <!-- entry_type --> 10493 10494 <td class="entry_description"> 10495 <p>The range of scene distances that are in 10496sharp focus (depth of field)</p> 10497 </td> 10498 10499 <td class="entry_units"> 10500 pair of focus distances in diopters: (near,<wbr/> 10501 far),<wbr/> see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 10502 </td> 10503 10504 <td class="entry_range"> 10505 <p>>=0</p> 10506 </td> 10507 10508 <td class="entry_tags"> 10509 <ul class="entry_tags"> 10510 <li><a href="#tag_BC">BC</a></li> 10511 </ul> 10512 </td> 10513 10514 </tr> 10515 <tr class="entries_header"> 10516 <th class="th_details" colspan="5">Details</th> 10517 </tr> 10518 <tr class="entry_cont"> 10519 <td class="entry_details" colspan="5"> 10520 <p>If variable focus not supported,<wbr/> can still report 10521fixed depth of field range</p> 10522 </td> 10523 </tr> 10524 10525 10526 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10527 <!-- end of entry --> 10528 10529 10530 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 10531 <td class="entry_name 10532 " rowspan="3"> 10533 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 10534 </td> 10535 <td class="entry_type"> 10536 <span class="entry_type_name entry_type_name_enum">byte</span> 10537 10538 <span class="entry_type_visibility"> [public]</span> 10539 10540 10541 10542 10543 <ul class="entry_type_enum"> 10544 <li> 10545 <span class="entry_type_enum_name">OFF</span> 10546 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 10547 </li> 10548 <li> 10549 <span class="entry_type_enum_name">ON</span> 10550 <span class="entry_type_enum_optional">optional</span> 10551 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 10552 </li> 10553 </ul> 10554 10555 </td> <!-- entry_type --> 10556 10557 <td class="entry_description"> 10558 <p>Sets whether the camera device uses optical image stabilization (OIS) 10559when capturing images.<wbr/></p> 10560 </td> 10561 10562 <td class="entry_units"> 10563 </td> 10564 10565 <td class="entry_range"> 10566 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 10567 </td> 10568 10569 <td class="entry_tags"> 10570 <ul class="entry_tags"> 10571 <li><a href="#tag_V1">V1</a></li> 10572 </ul> 10573 </td> 10574 10575 </tr> 10576 <tr class="entries_header"> 10577 <th class="th_details" colspan="5">Details</th> 10578 </tr> 10579 <tr class="entry_cont"> 10580 <td class="entry_details" colspan="5"> 10581 <p>OIS is used to compensate for motion blur due to small movements of 10582the camera during capture.<wbr/> Unlike digital image stabilization,<wbr/> OIS makes 10583use of mechanical elements to stabilize the camera sensor,<wbr/> and thus 10584allows for longer exposure times before camera shake becomes 10585apparent.<wbr/></p> 10586<p>This is not expected to be supported on most devices.<wbr/></p> 10587 </td> 10588 </tr> 10589 10590 10591 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10592 <!-- end of entry --> 10593 10594 10595 <tr class="entry" id="dynamic_android.lens.state"> 10596 <td class="entry_name 10597 " rowspan="3"> 10598 android.<wbr/>lens.<wbr/>state 10599 </td> 10600 <td class="entry_type"> 10601 <span class="entry_type_name entry_type_name_enum">byte</span> 10602 10603 <span class="entry_type_visibility"> [public]</span> 10604 10605 10606 10607 10608 <ul class="entry_type_enum"> 10609 <li> 10610 <span class="entry_type_enum_name">STATIONARY</span> 10611 <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/> 10612<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> 10613 </li> 10614 <li> 10615 <span class="entry_type_enum_name">MOVING</span> 10616 <span class="entry_type_enum_notes"><p>Any of 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/> 10617<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 changing.<wbr/></p></span> 10618 </li> 10619 </ul> 10620 10621 </td> <!-- entry_type --> 10622 10623 <td class="entry_description"> 10624 <p>Current lens status.<wbr/></p> 10625 </td> 10626 10627 <td class="entry_units"> 10628 </td> 10629 10630 <td class="entry_range"> 10631 </td> 10632 10633 <td class="entry_tags"> 10634 <ul class="entry_tags"> 10635 <li><a href="#tag_V1">V1</a></li> 10636 </ul> 10637 </td> 10638 10639 </tr> 10640 <tr class="entries_header"> 10641 <th class="th_details" colspan="5">Details</th> 10642 </tr> 10643 <tr class="entry_cont"> 10644 <td class="entry_details" colspan="5"> 10645 <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/> 10646<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/> 10647they may take several frames to reach the requested values.<wbr/> This state indicates 10648the current status of the lens parameters.<wbr/></p> 10649<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 10650either because the parameters are all fixed,<wbr/> or because the lens has had enough 10651time to reach the most recently-requested values.<wbr/> 10652If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> 10653<ul> 10654<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 10655<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 10656<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/> 10657which means the optical zoom is not supported.<wbr/></li> 10658<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> 10659<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> 10660</ul> 10661<p>Then this state will always be STATIONARY.<wbr/></p> 10662<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 10663is changing.<wbr/></p> 10664 </td> 10665 </tr> 10666 10667 10668 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10669 <!-- end of entry --> 10670 10671 10672 10673 <!-- end of kind --> 10674 </tbody> 10675 10676 <!-- end of section --> 10677 <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr> 10678 10679 10680 <tr><td colspan="6" class="kind">controls</td></tr> 10681 10682 <thead class="entries_header"> 10683 <tr> 10684 <th class="th_name">Property Name</th> 10685 <th class="th_type">Type</th> 10686 <th class="th_description">Description</th> 10687 <th class="th_units">Units</th> 10688 <th class="th_range">Range</th> 10689 <th class="th_tags">Tags</th> 10690 </tr> 10691 </thead> 10692 10693 <tbody> 10694 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704 <tr class="entry" id="controls_android.noiseReduction.mode"> 10705 <td class="entry_name 10706 " rowspan="3"> 10707 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 10708 </td> 10709 <td class="entry_type"> 10710 <span class="entry_type_name entry_type_name_enum">byte</span> 10711 10712 <span class="entry_type_visibility"> [public]</span> 10713 10714 10715 10716 10717 <ul class="entry_type_enum"> 10718 <li> 10719 <span class="entry_type_enum_name">OFF</span> 10720 <span class="entry_type_enum_notes"><p>No noise reduction is applied</p></span> 10721 </li> 10722 <li> 10723 <span class="entry_type_enum_name">FAST</span> 10724 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor 10725output</p></span> 10726 </li> 10727 <li> 10728 <span class="entry_type_enum_name">HIGH_QUALITY</span> 10729 <span class="entry_type_enum_notes"><p>May slow down frame rate to provide highest 10730quality</p></span> 10731 </li> 10732 </ul> 10733 10734 </td> <!-- entry_type --> 10735 10736 <td class="entry_description"> 10737 <p>Mode of operation for the noise reduction 10738algorithm</p> 10739 </td> 10740 10741 <td class="entry_units"> 10742 </td> 10743 10744 <td class="entry_range"> 10745 </td> 10746 10747 <td class="entry_tags"> 10748 <ul class="entry_tags"> 10749 <li><a href="#tag_V1">V1</a></li> 10750 </ul> 10751 </td> 10752 10753 </tr> 10754 <tr class="entries_header"> 10755 <th class="th_details" colspan="5">Details</th> 10756 </tr> 10757 <tr class="entry_cont"> 10758 <td class="entry_details" colspan="5"> 10759 <p>Noise filtering control.<wbr/> OFF means no noise reduction 10760will be applied by the camera device.<wbr/></p> 10761<p>This must be set to a valid mode in 10762<a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a>.<wbr/></p> 10763<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 10764will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 10765will use the highest-quality noise filtering algorithms,<wbr/> 10766even if it slows down capture rate.<wbr/> FAST means the camera device should not 10767slow down capture rate when applying noise filtering.<wbr/></p> 10768 </td> 10769 </tr> 10770 10771 10772 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10773 <!-- end of entry --> 10774 10775 10776 <tr class="entry" id="controls_android.noiseReduction.strength"> 10777 <td class="entry_name 10778 " rowspan="1"> 10779 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 10780 </td> 10781 <td class="entry_type"> 10782 <span class="entry_type_name">byte</span> 10783 10784 <span class="entry_type_visibility"> [system]</span> 10785 10786 10787 10788 10789 10790 </td> <!-- entry_type --> 10791 10792 <td class="entry_description"> 10793 <p>Control the amount of noise reduction 10794applied to the images</p> 10795 </td> 10796 10797 <td class="entry_units"> 10798 1-10; 10 is max noise reduction 10799 </td> 10800 10801 <td class="entry_range"> 10802 <p>1 - 10</p> 10803 </td> 10804 10805 <td class="entry_tags"> 10806 <ul class="entry_tags"> 10807 <li><a href="#tag_FUTURE">FUTURE</a></li> 10808 </ul> 10809 </td> 10810 10811 </tr> 10812 10813 10814 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10815 <!-- end of entry --> 10816 10817 10818 10819 <!-- end of kind --> 10820 </tbody> 10821 <tr><td colspan="6" class="kind">static</td></tr> 10822 10823 <thead class="entries_header"> 10824 <tr> 10825 <th class="th_name">Property Name</th> 10826 <th class="th_type">Type</th> 10827 <th class="th_description">Description</th> 10828 <th class="th_units">Units</th> 10829 <th class="th_range">Range</th> 10830 <th class="th_tags">Tags</th> 10831 </tr> 10832 </thead> 10833 10834 <tbody> 10835 10836 10837 10838 10839 10840 10841 10842 10843 10844 10845 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> 10846 <td class="entry_name 10847 " rowspan="3"> 10848 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes 10849 </td> 10850 <td class="entry_type"> 10851 <span class="entry_type_name">byte</span> 10852 <span class="entry_type_container">x</span> 10853 10854 <span class="entry_type_array"> 10855 n 10856 </span> 10857 <span class="entry_type_visibility"> [public as enumList]</span> 10858 10859 10860 10861 <div class="entry_type_notes">list of enums</div> 10862 10863 10864 </td> <!-- entry_type --> 10865 10866 <td class="entry_description"> 10867 <p>The set of noise reduction modes supported by this camera device.<wbr/></p> 10868 </td> 10869 10870 <td class="entry_units"> 10871 </td> 10872 10873 <td class="entry_range"> 10874 </td> 10875 10876 <td class="entry_tags"> 10877 <ul class="entry_tags"> 10878 <li><a href="#tag_V1">V1</a></li> 10879 </ul> 10880 </td> 10881 10882 </tr> 10883 <tr class="entries_header"> 10884 <th class="th_details" colspan="5">Details</th> 10885 </tr> 10886 <tr class="entry_cont"> 10887 <td class="entry_details" colspan="5"> 10888 <p>This tag lists the valid modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>.<wbr/></p> 10889<p>Full-capability camera devices must laways support OFF and FAST.<wbr/></p> 10890 </td> 10891 </tr> 10892 10893 10894 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10895 <!-- end of entry --> 10896 10897 10898 10899 <!-- end of kind --> 10900 </tbody> 10901 <tr><td colspan="6" class="kind">dynamic</td></tr> 10902 10903 <thead class="entries_header"> 10904 <tr> 10905 <th class="th_name">Property Name</th> 10906 <th class="th_type">Type</th> 10907 <th class="th_description">Description</th> 10908 <th class="th_units">Units</th> 10909 <th class="th_range">Range</th> 10910 <th class="th_tags">Tags</th> 10911 </tr> 10912 </thead> 10913 10914 <tbody> 10915 10916 10917 10918 10919 10920 10921 10922 10923 10924 10925 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 10926 <td class="entry_name 10927 " rowspan="3"> 10928 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 10929 </td> 10930 <td class="entry_type"> 10931 <span class="entry_type_name entry_type_name_enum">byte</span> 10932 10933 <span class="entry_type_visibility"> [public]</span> 10934 10935 10936 10937 10938 <ul class="entry_type_enum"> 10939 <li> 10940 <span class="entry_type_enum_name">OFF</span> 10941 <span class="entry_type_enum_notes"><p>No noise reduction is applied</p></span> 10942 </li> 10943 <li> 10944 <span class="entry_type_enum_name">FAST</span> 10945 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor 10946output</p></span> 10947 </li> 10948 <li> 10949 <span class="entry_type_enum_name">HIGH_QUALITY</span> 10950 <span class="entry_type_enum_notes"><p>May slow down frame rate to provide highest 10951quality</p></span> 10952 </li> 10953 </ul> 10954 10955 </td> <!-- entry_type --> 10956 10957 <td class="entry_description"> 10958 <p>Mode of operation for the noise reduction 10959algorithm</p> 10960 </td> 10961 10962 <td class="entry_units"> 10963 </td> 10964 10965 <td class="entry_range"> 10966 </td> 10967 10968 <td class="entry_tags"> 10969 <ul class="entry_tags"> 10970 <li><a href="#tag_V1">V1</a></li> 10971 </ul> 10972 </td> 10973 10974 </tr> 10975 <tr class="entries_header"> 10976 <th class="th_details" colspan="5">Details</th> 10977 </tr> 10978 <tr class="entry_cont"> 10979 <td class="entry_details" colspan="5"> 10980 <p>Noise filtering control.<wbr/> OFF means no noise reduction 10981will be applied by the camera device.<wbr/></p> 10982<p>This must be set to a valid mode in 10983<a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a>.<wbr/></p> 10984<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 10985will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 10986will use the highest-quality noise filtering algorithms,<wbr/> 10987even if it slows down capture rate.<wbr/> FAST means the camera device should not 10988slow down capture rate when applying noise filtering.<wbr/></p> 10989 </td> 10990 </tr> 10991 10992 10993 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10994 <!-- end of entry --> 10995 10996 10997 10998 <!-- end of kind --> 10999 </tbody> 11000 11001 <!-- end of section --> 11002 <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr> 11003 11004 11005 <tr><td colspan="6" class="kind">static</td></tr> 11006 11007 <thead class="entries_header"> 11008 <tr> 11009 <th class="th_name">Property Name</th> 11010 <th class="th_type">Type</th> 11011 <th class="th_description">Description</th> 11012 <th class="th_units">Units</th> 11013 <th class="th_range">Range</th> 11014 <th class="th_tags">Tags</th> 11015 </tr> 11016 </thead> 11017 11018 <tbody> 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 11030 <td class="entry_name 11031 entry_name_deprecated 11032 " rowspan="3"> 11033 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 11034 </td> 11035 <td class="entry_type"> 11036 <span class="entry_type_name">byte</span> 11037 11038 <span class="entry_type_visibility"> [system]</span> 11039 11040 11041 <span class="entry_type_deprecated">[deprecated] </span> 11042 11043 11044 11045 </td> <!-- entry_type --> 11046 11047 <td class="entry_description"> 11048 <p>If set to 1,<wbr/> the camera service does not 11049scale 'normalized' coordinates with respect to the crop 11050region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 11051and output (face rectangles).<wbr/></p> 11052 </td> 11053 11054 <td class="entry_units"> 11055 </td> 11056 11057 <td class="entry_range"> 11058 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 11059 </td> 11060 11061 <td class="entry_tags"> 11062 </td> 11063 11064 </tr> 11065 <tr class="entries_header"> 11066 <th class="th_details" colspan="5">Details</th> 11067 </tr> 11068 <tr class="entry_cont"> 11069 <td class="entry_details" colspan="5"> 11070 <p>Normalized coordinates refer to those in the 11071(-1000,<wbr/>1000) range mentioned in the 11072android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 11073<p>HAL implementations should instead always use and emit 11074sensor array-relative coordinates for all region data.<wbr/> Does 11075not need to be listed in static metadata.<wbr/> Support will be 11076removed in future versions of camera service.<wbr/></p> 11077 </td> 11078 </tr> 11079 11080 11081 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11082 <!-- end of entry --> 11083 11084 11085 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 11086 <td class="entry_name 11087 entry_name_deprecated 11088 " rowspan="3"> 11089 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 11090 </td> 11091 <td class="entry_type"> 11092 <span class="entry_type_name">byte</span> 11093 11094 <span class="entry_type_visibility"> [system]</span> 11095 11096 11097 <span class="entry_type_deprecated">[deprecated] </span> 11098 11099 11100 11101 </td> <!-- entry_type --> 11102 11103 <td class="entry_description"> 11104 <p>If set to 1,<wbr/> then the camera service always 11105switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 11106trigger.<wbr/></p> 11107 </td> 11108 11109 <td class="entry_units"> 11110 </td> 11111 11112 <td class="entry_range"> 11113 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 11114 </td> 11115 11116 <td class="entry_tags"> 11117 </td> 11118 11119 </tr> 11120 <tr class="entries_header"> 11121 <th class="th_details" colspan="5">Details</th> 11122 </tr> 11123 <tr class="entry_cont"> 11124 <td class="entry_details" colspan="5"> 11125 <p>HAL implementations should implement AF trigger 11126modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 11127CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 11128not need to be listed in static metadata.<wbr/> Support will be 11129removed in future versions of camera service</p> 11130 </td> 11131 </tr> 11132 11133 11134 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11135 <!-- end of entry --> 11136 11137 11138 <tr class="entry" id="static_android.quirks.useZslFormat"> 11139 <td class="entry_name 11140 entry_name_deprecated 11141 " rowspan="3"> 11142 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 11143 </td> 11144 <td class="entry_type"> 11145 <span class="entry_type_name">byte</span> 11146 11147 <span class="entry_type_visibility"> [system]</span> 11148 11149 11150 <span class="entry_type_deprecated">[deprecated] </span> 11151 11152 11153 11154 </td> <!-- entry_type --> 11155 11156 <td class="entry_description"> 11157 <p>If set to 1,<wbr/> the camera service uses 11158CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 11159HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 11160shutter lag stream</p> 11161 </td> 11162 11163 <td class="entry_units"> 11164 </td> 11165 11166 <td class="entry_range"> 11167 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 11168 </td> 11169 11170 <td class="entry_tags"> 11171 </td> 11172 11173 </tr> 11174 <tr class="entries_header"> 11175 <th class="th_details" colspan="5">Details</th> 11176 </tr> 11177 <tr class="entry_cont"> 11178 <td class="entry_details" colspan="5"> 11179 <p>HAL implementations should use gralloc usage flags 11180to determine that a stream will be used for 11181zero-shutter-lag,<wbr/> instead of relying on an explicit 11182format setting.<wbr/> Does not need to be listed in static 11183metadata.<wbr/> Support will be removed in future versions of 11184camera service.<wbr/></p> 11185 </td> 11186 </tr> 11187 11188 11189 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11190 <!-- end of entry --> 11191 11192 11193 <tr class="entry" id="static_android.quirks.usePartialResult"> 11194 <td class="entry_name 11195 entry_name_deprecated 11196 " rowspan="5"> 11197 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 11198 </td> 11199 <td class="entry_type"> 11200 <span class="entry_type_name">byte</span> 11201 11202 <span class="entry_type_visibility"> [hidden]</span> 11203 11204 11205 <span class="entry_type_deprecated">[deprecated] </span> 11206 11207 11208 11209 </td> <!-- entry_type --> 11210 11211 <td class="entry_description"> 11212 <p>If set to 1,<wbr/> the HAL will always split result 11213metadata for a single capture into multiple buffers,<wbr/> 11214returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 11215 </td> 11216 11217 <td class="entry_units"> 11218 </td> 11219 11220 <td class="entry_range"> 11221 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 11222 </td> 11223 11224 <td class="entry_tags"> 11225 </td> 11226 11227 </tr> 11228 <tr class="entries_header"> 11229 <th class="th_details" colspan="5">Details</th> 11230 </tr> 11231 <tr class="entry_cont"> 11232 <td class="entry_details" colspan="5"> 11233 <p>Does not need to be listed in static 11234metadata.<wbr/> Support for partial results will be reworked in 11235future versions of camera service.<wbr/> This quirk will stop 11236working at that point; DO NOT USE without careful 11237consideration of future support.<wbr/></p> 11238 </td> 11239 </tr> 11240 11241 <tr class="entries_header"> 11242 <th class="th_details" colspan="5">HAL Implementation Details</th> 11243 </tr> 11244 <tr class="entry_cont"> 11245 <td class="entry_details" colspan="5"> 11246 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 11247for information on how to implement partial results.<wbr/></p> 11248 </td> 11249 </tr> 11250 11251 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11252 <!-- end of entry --> 11253 11254 11255 11256 <!-- end of kind --> 11257 </tbody> 11258 <tr><td colspan="6" class="kind">dynamic</td></tr> 11259 11260 <thead class="entries_header"> 11261 <tr> 11262 <th class="th_name">Property Name</th> 11263 <th class="th_type">Type</th> 11264 <th class="th_description">Description</th> 11265 <th class="th_units">Units</th> 11266 <th class="th_range">Range</th> 11267 <th class="th_tags">Tags</th> 11268 </tr> 11269 </thead> 11270 11271 <tbody> 11272 11273 11274 11275 11276 11277 11278 11279 11280 11281 11282 <tr class="entry" id="dynamic_android.quirks.partialResult"> 11283 <td class="entry_name 11284 entry_name_deprecated 11285 " rowspan="5"> 11286 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 11287 </td> 11288 <td class="entry_type"> 11289 <span class="entry_type_name entry_type_name_enum">byte</span> 11290 11291 <span class="entry_type_visibility"> [hidden as boolean]</span> 11292 11293 11294 <span class="entry_type_deprecated">[deprecated] </span> 11295 11296 11297 <ul class="entry_type_enum"> 11298 <li> 11299 <span class="entry_type_enum_name">FINAL</span> 11300 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 11301for this capture.<wbr/></p></span> 11302 </li> 11303 <li> 11304 <span class="entry_type_enum_name">PARTIAL</span> 11305 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 11306capture.<wbr/> More result buffers for this capture will be sent 11307by the camera device,<wbr/> the last of which will be marked 11308FINAL.<wbr/></p></span> 11309 </li> 11310 </ul> 11311 11312 </td> <!-- entry_type --> 11313 11314 <td class="entry_description"> 11315 <p>Whether a result given to the framework is the 11316final one for the capture,<wbr/> or only a partial that contains a 11317subset of the full set of dynamic metadata 11318values.<wbr/></p> 11319 </td> 11320 11321 <td class="entry_units"> 11322 </td> 11323 11324 <td class="entry_range"> 11325 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 11326 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p> 11327 </td> 11328 11329 <td class="entry_tags"> 11330 </td> 11331 11332 </tr> 11333 <tr class="entries_header"> 11334 <th class="th_details" colspan="5">Details</th> 11335 </tr> 11336 <tr class="entry_cont"> 11337 <td class="entry_details" colspan="5"> 11338 <p>The entries in the result metadata buffers for a 11339single capture may not overlap,<wbr/> except for this entry.<wbr/> The 11340FINAL buffers must retain FIFO ordering relative to the 11341requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 11342always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 11343before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 11344in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 11345capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 11346only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 11347 </td> 11348 </tr> 11349 11350 <tr class="entries_header"> 11351 <th class="th_details" colspan="5">HAL Implementation Details</th> 11352 </tr> 11353 <tr class="entry_cont"> 11354 <td class="entry_details" colspan="5"> 11355 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 11356for information on how to implement partial results.<wbr/></p> 11357 </td> 11358 </tr> 11359 11360 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11361 <!-- end of entry --> 11362 11363 11364 11365 <!-- end of kind --> 11366 </tbody> 11367 11368 <!-- end of section --> 11369 <tr><td colspan="6" id="section_request" class="section">request</td></tr> 11370 11371 11372 <tr><td colspan="6" class="kind">controls</td></tr> 11373 11374 <thead class="entries_header"> 11375 <tr> 11376 <th class="th_name">Property Name</th> 11377 <th class="th_type">Type</th> 11378 <th class="th_description">Description</th> 11379 <th class="th_units">Units</th> 11380 <th class="th_range">Range</th> 11381 <th class="th_tags">Tags</th> 11382 </tr> 11383 </thead> 11384 11385 <tbody> 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 11396 <tr class="entry" id="controls_android.request.frameCount"> 11397 <td class="entry_name 11398 entry_name_deprecated 11399 " rowspan="1"> 11400 android.<wbr/>request.<wbr/>frame<wbr/>Count 11401 </td> 11402 <td class="entry_type"> 11403 <span class="entry_type_name">int32</span> 11404 11405 <span class="entry_type_visibility"> [system]</span> 11406 11407 11408 <span class="entry_type_deprecated">[deprecated] </span> 11409 11410 11411 11412 </td> <!-- entry_type --> 11413 11414 <td class="entry_description"> 11415 <p>A frame counter set by the framework.<wbr/> Must 11416be maintained unchanged in output frame.<wbr/> This value monotonically 11417increases with every new result (that is,<wbr/> each new result has a unique 11418frameCount value).<wbr/></p> 11419 </td> 11420 11421 <td class="entry_units"> 11422 incrementing integer 11423 </td> 11424 11425 <td class="entry_range"> 11426 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 11427 <p>Any int.<wbr/></p> 11428 </td> 11429 11430 <td class="entry_tags"> 11431 </td> 11432 11433 </tr> 11434 11435 11436 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11437 <!-- end of entry --> 11438 11439 11440 <tr class="entry" id="controls_android.request.id"> 11441 <td class="entry_name 11442 " rowspan="1"> 11443 android.<wbr/>request.<wbr/>id 11444 </td> 11445 <td class="entry_type"> 11446 <span class="entry_type_name">int32</span> 11447 11448 <span class="entry_type_visibility"> [hidden]</span> 11449 11450 11451 11452 11453 11454 </td> <!-- entry_type --> 11455 11456 <td class="entry_description"> 11457 <p>An application-specified ID for the current 11458request.<wbr/> Must be maintained unchanged in output 11459frame</p> 11460 </td> 11461 11462 <td class="entry_units"> 11463 arbitrary integer assigned by application 11464 </td> 11465 11466 <td class="entry_range"> 11467 <p>Any int</p> 11468 </td> 11469 11470 <td class="entry_tags"> 11471 <ul class="entry_tags"> 11472 <li><a href="#tag_V1">V1</a></li> 11473 </ul> 11474 </td> 11475 11476 </tr> 11477 11478 11479 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11480 <!-- end of entry --> 11481 11482 11483 <tr class="entry" id="controls_android.request.inputStreams"> 11484 <td class="entry_name 11485 entry_name_deprecated 11486 " rowspan="3"> 11487 android.<wbr/>request.<wbr/>input<wbr/>Streams 11488 </td> 11489 <td class="entry_type"> 11490 <span class="entry_type_name">int32</span> 11491 <span class="entry_type_container">x</span> 11492 11493 <span class="entry_type_array"> 11494 n 11495 </span> 11496 <span class="entry_type_visibility"> [system]</span> 11497 11498 11499 <span class="entry_type_deprecated">[deprecated] </span> 11500 11501 11502 11503 </td> <!-- entry_type --> 11504 11505 <td class="entry_description"> 11506 <p>List which camera reprocess stream is used 11507for the source of reprocessing data.<wbr/></p> 11508 </td> 11509 11510 <td class="entry_units"> 11511 List of camera reprocess stream IDs 11512 </td> 11513 11514 <td class="entry_range"> 11515 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 11516 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 11517 </td> 11518 11519 <td class="entry_tags"> 11520 <ul class="entry_tags"> 11521 <li><a href="#tag_HAL2">HAL2</a></li> 11522 </ul> 11523 </td> 11524 11525 </tr> 11526 <tr class="entries_header"> 11527 <th class="th_details" colspan="5">Details</th> 11528 </tr> 11529 <tr class="entry_cont"> 11530 <td class="entry_details" colspan="5"> 11531 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 11532REPROCESS.<wbr/> Ignored otherwise</p> 11533 </td> 11534 </tr> 11535 11536 11537 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11538 <!-- end of entry --> 11539 11540 11541 <tr class="entry" id="controls_android.request.metadataMode"> 11542 <td class="entry_name 11543 " rowspan="1"> 11544 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 11545 </td> 11546 <td class="entry_type"> 11547 <span class="entry_type_name entry_type_name_enum">byte</span> 11548 11549 <span class="entry_type_visibility"> [system]</span> 11550 11551 11552 11553 11554 <ul class="entry_type_enum"> 11555 <li> 11556 <span class="entry_type_enum_name">NONE</span> 11557 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 11558for application-bound buffer data.<wbr/> If no 11559application-bound streams exist,<wbr/> no frame should be 11560placed in the output frame queue.<wbr/> If such streams 11561exist,<wbr/> a frame should be placed on the output queue 11562with null metadata but with the necessary output buffer 11563information.<wbr/> Timestamp information should still be 11564included with any output stream buffers</p></span> 11565 </li> 11566 <li> 11567 <span class="entry_type_enum_name">FULL</span> 11568 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 11569only be produced if they are separately 11570enabled</p></span> 11571 </li> 11572 </ul> 11573 11574 </td> <!-- entry_type --> 11575 11576 <td class="entry_description"> 11577 <p>How much metadata to produce on 11578output</p> 11579 </td> 11580 11581 <td class="entry_units"> 11582 </td> 11583 11584 <td class="entry_range"> 11585 </td> 11586 11587 <td class="entry_tags"> 11588 <ul class="entry_tags"> 11589 <li><a href="#tag_FUTURE">FUTURE</a></li> 11590 </ul> 11591 </td> 11592 11593 </tr> 11594 11595 11596 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11597 <!-- end of entry --> 11598 11599 11600 <tr class="entry" id="controls_android.request.outputStreams"> 11601 <td class="entry_name 11602 entry_name_deprecated 11603 " rowspan="3"> 11604 android.<wbr/>request.<wbr/>output<wbr/>Streams 11605 </td> 11606 <td class="entry_type"> 11607 <span class="entry_type_name">int32</span> 11608 <span class="entry_type_container">x</span> 11609 11610 <span class="entry_type_array"> 11611 n 11612 </span> 11613 <span class="entry_type_visibility"> [system]</span> 11614 11615 11616 <span class="entry_type_deprecated">[deprecated] </span> 11617 11618 11619 11620 </td> <!-- entry_type --> 11621 11622 <td class="entry_description"> 11623 <p>Lists which camera output streams image data 11624from this capture must be sent to</p> 11625 </td> 11626 11627 <td class="entry_units"> 11628 List of camera stream IDs 11629 </td> 11630 11631 <td class="entry_range"> 11632 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 11633 <p>List must only include streams that have been 11634created</p> 11635 </td> 11636 11637 <td class="entry_tags"> 11638 <ul class="entry_tags"> 11639 <li><a href="#tag_HAL2">HAL2</a></li> 11640 </ul> 11641 </td> 11642 11643 </tr> 11644 <tr class="entries_header"> 11645 <th class="th_details" colspan="5">Details</th> 11646 </tr> 11647 <tr class="entry_cont"> 11648 <td class="entry_details" colspan="5"> 11649 <p>If no output streams are listed,<wbr/> then the image 11650data should simply be discarded.<wbr/> The image data must 11651still be captured for metadata and statistics production,<wbr/> 11652and the lens and flash must operate as requested.<wbr/></p> 11653 </td> 11654 </tr> 11655 11656 11657 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11658 <!-- end of entry --> 11659 11660 11661 <tr class="entry" id="controls_android.request.type"> 11662 <td class="entry_name 11663 entry_name_deprecated 11664 " rowspan="1"> 11665 android.<wbr/>request.<wbr/>type 11666 </td> 11667 <td class="entry_type"> 11668 <span class="entry_type_name entry_type_name_enum">byte</span> 11669 11670 <span class="entry_type_visibility"> [system]</span> 11671 11672 11673 <span class="entry_type_deprecated">[deprecated] </span> 11674 11675 11676 <ul class="entry_type_enum"> 11677 <li> 11678 <span class="entry_type_enum_name">CAPTURE</span> 11679 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 11680and process it according to the 11681settings</p></span> 11682 </li> 11683 <li> 11684 <span class="entry_type_enum_name">REPROCESS</span> 11685 <span class="entry_type_enum_notes"><p>Process previously captured data; the 11686<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the 11687source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 11688needed for reprocessing with [RP]</p></span> 11689 </li> 11690 </ul> 11691 11692 </td> <!-- entry_type --> 11693 11694 <td class="entry_description"> 11695 <p>The type of the request; either CAPTURE or 11696REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p> 11697 </td> 11698 11699 <td class="entry_units"> 11700 </td> 11701 11702 <td class="entry_range"> 11703 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 11704 </td> 11705 11706 <td class="entry_tags"> 11707 <ul class="entry_tags"> 11708 <li><a href="#tag_HAL2">HAL2</a></li> 11709 </ul> 11710 </td> 11711 11712 </tr> 11713 11714 11715 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11716 <!-- end of entry --> 11717 11718 11719 11720 <!-- end of kind --> 11721 </tbody> 11722 <tr><td colspan="6" class="kind">static</td></tr> 11723 11724 <thead class="entries_header"> 11725 <tr> 11726 <th class="th_name">Property Name</th> 11727 <th class="th_type">Type</th> 11728 <th class="th_description">Description</th> 11729 <th class="th_units">Units</th> 11730 <th class="th_range">Range</th> 11731 <th class="th_tags">Tags</th> 11732 </tr> 11733 </thead> 11734 11735 <tbody> 11736 11737 11738 11739 11740 11741 11742 11743 11744 11745 11746 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 11747 <td class="entry_name 11748 " rowspan="3"> 11749 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 11750 </td> 11751 <td class="entry_type"> 11752 <span class="entry_type_name">int32</span> 11753 <span class="entry_type_container">x</span> 11754 11755 <span class="entry_type_array"> 11756 3 11757 </span> 11758 <span class="entry_type_visibility"> [hidden]</span> 11759 11760 11761 11762 11763 11764 </td> <!-- entry_type --> 11765 11766 <td class="entry_description"> 11767 <p>The maximum numbers of different types of output streams 11768that can be configured and used simultaneously by a camera device.<wbr/></p> 11769 </td> 11770 11771 <td class="entry_units"> 11772 </td> 11773 11774 <td class="entry_range"> 11775 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p> 11776<p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p> 11777<p>For processed (but not stalling) format streams,<wbr/> >= 3 11778for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 11779>= 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> 11780 </td> 11781 11782 <td class="entry_tags"> 11783 <ul class="entry_tags"> 11784 <li><a href="#tag_BC">BC</a></li> 11785 </ul> 11786 </td> 11787 11788 </tr> 11789 <tr class="entries_header"> 11790 <th class="th_details" colspan="5">Details</th> 11791 </tr> 11792 <tr class="entry_cont"> 11793 <td class="entry_details" colspan="5"> 11794 <p>This is a 3 element tuple that contains the max number of output simultaneous 11795streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) 11796formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and 11797stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 11798number 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> 11799<p>This lists the upper bound of the number of output streams supported by 11800the camera device.<wbr/> Using more streams simultaneously may require more hardware and 11801CPU resources that will consume more power.<wbr/> The image format for an output stream can 11802be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 11803The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized 11804into the 3 stream types as below:</p> 11805<ul> 11806<li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/> 11807Typically JPEG format (ImageFormat#JPEG).<wbr/></li> 11808<li>Raw formats: ImageFormat#RAW_<wbr/>SENSOR and ImageFormat#RAW_<wbr/>OPAQUE.<wbr/></li> 11809<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> 11810Typically Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888,<wbr/> ImageFormat#NV21,<wbr/> ImageFormat#YV12.<wbr/></li> 11811</ul> 11812 </td> 11813 </tr> 11814 11815 11816 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11817 <!-- end of entry --> 11818 11819 11820 <tr class="entry" id="static_android.request.maxNumOutputRaw"> 11821 <td class="entry_name 11822 " rowspan="3"> 11823 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw 11824 </td> 11825 <td class="entry_type"> 11826 <span class="entry_type_name">int32</span> 11827 11828 <span class="entry_type_visibility"> [public]</span> 11829 11830 <span class="entry_type_synthetic">[synthetic] </span> 11831 11832 11833 11834 11835 </td> <!-- entry_type --> 11836 11837 <td class="entry_description"> 11838 <p>The maximum numbers of different types of output streams 11839that can be configured and used simultaneously by a camera device 11840for any <code>RAW</code> formats.<wbr/></p> 11841 </td> 11842 11843 <td class="entry_units"> 11844 </td> 11845 11846 <td class="entry_range"> 11847 <p>>= 0</p> 11848 </td> 11849 11850 <td class="entry_tags"> 11851 </td> 11852 11853 </tr> 11854 <tr class="entries_header"> 11855 <th class="th_details" colspan="5">Details</th> 11856 </tr> 11857 <tr class="entry_cont"> 11858 <td class="entry_details" colspan="5"> 11859 <p>This value contains the max number of output simultaneous 11860streams from the raw sensor.<wbr/></p> 11861<p>This lists the upper bound of the number of output streams supported by 11862the camera device.<wbr/> Using more streams simultaneously may require more hardware and 11863CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 11864be 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> 11865<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p> 11866<ul> 11867<li>ImageFormat#RAW_<wbr/>SENSOR</li> 11868<li>Opaque <code>RAW</code></li> 11869</ul> 11870 </td> 11871 </tr> 11872 11873 11874 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11875 <!-- end of entry --> 11876 11877 11878 <tr class="entry" id="static_android.request.maxNumOutputProc"> 11879 <td class="entry_name 11880 " rowspan="3"> 11881 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc 11882 </td> 11883 <td class="entry_type"> 11884 <span class="entry_type_name">int32</span> 11885 11886 <span class="entry_type_visibility"> [public]</span> 11887 11888 <span class="entry_type_synthetic">[synthetic] </span> 11889 11890 11891 11892 11893 </td> <!-- entry_type --> 11894 11895 <td class="entry_description"> 11896 <p>The maximum numbers of different types of output streams 11897that can be configured and used simultaneously by a camera device 11898for any processed (but not-stalling) formats.<wbr/></p> 11899 </td> 11900 11901 <td class="entry_units"> 11902 </td> 11903 11904 <td class="entry_range"> 11905 <p>>= 3 11906for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 11907>= 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> 11908 </td> 11909 11910 <td class="entry_tags"> 11911 </td> 11912 11913 </tr> 11914 <tr class="entries_header"> 11915 <th class="th_details" colspan="5">Details</th> 11916 </tr> 11917 <tr class="entry_cont"> 11918 <td class="entry_details" colspan="5"> 11919 <p>This value contains the max number of output simultaneous 11920streams for any processed (but not-stalling) formats.<wbr/></p> 11921<p>This lists the upper bound of the number of output streams supported by 11922the camera device.<wbr/> Using more streams simultaneously may require more hardware and 11923CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 11924be 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> 11925<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/> 11926Typically:</p> 11927<ul> 11928<li>Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</li> 11929<li>ImageFormat#NV21</li> 11930<li>ImageFormat#YV12</li> 11931<li>Implementation-defined formats,<wbr/> i.<wbr/>e.<wbr/> StreamConfiguration#isOutputSupportedFor(Class)</li> 11932</ul> 11933<p>For full guarantees,<wbr/> query StreamConfigurationMap#getOutputStallDuration with 11934a processed format -- it will return 0 for a non-stalling stream.<wbr/></p> 11935 </td> 11936 </tr> 11937 11938 11939 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11940 <!-- end of entry --> 11941 11942 11943 <tr class="entry" id="static_android.request.maxNumOutputProcStalling"> 11944 <td class="entry_name 11945 " rowspan="3"> 11946 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling 11947 </td> 11948 <td class="entry_type"> 11949 <span class="entry_type_name">int32</span> 11950 11951 <span class="entry_type_visibility"> [public]</span> 11952 11953 <span class="entry_type_synthetic">[synthetic] </span> 11954 11955 11956 11957 11958 </td> <!-- entry_type --> 11959 11960 <td class="entry_description"> 11961 <p>The maximum numbers of different types of output streams 11962that can be configured and used simultaneously by a camera device 11963for any processed (and stalling) formats.<wbr/></p> 11964 </td> 11965 11966 <td class="entry_units"> 11967 </td> 11968 11969 <td class="entry_range"> 11970 <p>>= 1</p> 11971 </td> 11972 11973 <td class="entry_tags"> 11974 </td> 11975 11976 </tr> 11977 <tr class="entries_header"> 11978 <th class="th_details" colspan="5">Details</th> 11979 </tr> 11980 <tr class="entry_cont"> 11981 <td class="entry_details" colspan="5"> 11982 <p>This value contains the max number of output simultaneous 11983streams for any processed (but not-stalling) formats.<wbr/></p> 11984<p>This lists the upper bound of the number of output streams supported by 11985the camera device.<wbr/> Using more streams simultaneously may require more hardware and 11986CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 11987be 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> 11988<p>A processed and stalling format is defined as any non-RAW format with a stallDurations > 0.<wbr/> 11989Typically only the <code>JPEG</code> format (ImageFormat#JPEG)</p> 11990<p>For full guarantees,<wbr/> query StreamConfigurationMap#getOutputStallDuration with 11991a processed format -- it will return a non-0 value for a stalling stream.<wbr/></p> 11992 </td> 11993 </tr> 11994 11995 11996 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11997 <!-- end of entry --> 11998 11999 12000 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 12001 <td class="entry_name 12002 entry_name_deprecated 12003 " rowspan="3"> 12004 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 12005 </td> 12006 <td class="entry_type"> 12007 <span class="entry_type_name">int32</span> 12008 <span class="entry_type_container">x</span> 12009 12010 <span class="entry_type_array"> 12011 1 12012 </span> 12013 <span class="entry_type_visibility"> [system]</span> 12014 12015 12016 <span class="entry_type_deprecated">[deprecated] </span> 12017 12018 12019 12020 </td> <!-- entry_type --> 12021 12022 <td class="entry_description"> 12023 <p>How many reprocessing streams of any type 12024can be allocated at the same time.<wbr/></p> 12025 </td> 12026 12027 <td class="entry_units"> 12028 </td> 12029 12030 <td class="entry_range"> 12031 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 12032 <p>>= 0</p> 12033 </td> 12034 12035 <td class="entry_tags"> 12036 <ul class="entry_tags"> 12037 <li><a href="#tag_HAL2">HAL2</a></li> 12038 </ul> 12039 </td> 12040 12041 </tr> 12042 <tr class="entries_header"> 12043 <th class="th_details" colspan="5">Details</th> 12044 </tr> 12045 <tr class="entry_cont"> 12046 <td class="entry_details" colspan="5"> 12047 <p>Only used by HAL2.<wbr/>x.<wbr/></p> 12048<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 12049 </td> 12050 </tr> 12051 12052 12053 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12054 <!-- end of entry --> 12055 12056 12057 <tr class="entry" id="static_android.request.maxNumInputStreams"> 12058 <td class="entry_name 12059 " rowspan="3"> 12060 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 12061 </td> 12062 <td class="entry_type"> 12063 <span class="entry_type_name">int32</span> 12064 12065 <span class="entry_type_visibility"> [hidden]</span> 12066 12067 12068 12069 12070 12071 </td> <!-- entry_type --> 12072 12073 <td class="entry_description"> 12074 <p>The maximum numbers of any type of input streams 12075that can be configured and used simultaneously by a camera device.<wbr/></p> 12076 </td> 12077 12078 <td class="entry_units"> 12079 </td> 12080 12081 <td class="entry_range"> 12082 <p>>= 0 for LIMITED mode device (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>).<wbr/> 12083>= 1 for FULL mode device (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>).<wbr/></p> 12084 </td> 12085 12086 <td class="entry_tags"> 12087 </td> 12088 12089 </tr> 12090 <tr class="entries_header"> 12091 <th class="th_details" colspan="5">Details</th> 12092 </tr> 12093 <tr class="entry_cont"> 12094 <td class="entry_details" colspan="5"> 12095 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 12096<p>The image format for a input stream can be any supported 12097format provided by 12098<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/> When using an 12099input stream,<wbr/> there must be at least one output stream 12100configured to to receive the reprocessed images.<wbr/></p> 12101<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 12102stream image format will be RAW_<wbr/>OPAQUE,<wbr/> the associated output stream image format 12103should be JPEG.<wbr/></p> 12104 </td> 12105 </tr> 12106 12107 12108 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12109 <!-- end of entry --> 12110 12111 12112 <tr class="entry" id="static_android.request.pipelineMaxDepth"> 12113 <td class="entry_name 12114 " rowspan="5"> 12115 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 12116 </td> 12117 <td class="entry_type"> 12118 <span class="entry_type_name">byte</span> 12119 12120 <span class="entry_type_visibility"> [public]</span> 12121 12122 12123 12124 12125 12126 </td> <!-- entry_type --> 12127 12128 <td class="entry_description"> 12129 <p>Specifies the number of maximum pipeline stages a frame 12130has to go through from when it's exposed to when it's available 12131to the framework.<wbr/></p> 12132 </td> 12133 12134 <td class="entry_units"> 12135 </td> 12136 12137 <td class="entry_range"> 12138 </td> 12139 12140 <td class="entry_tags"> 12141 </td> 12142 12143 </tr> 12144 <tr class="entries_header"> 12145 <th class="th_details" colspan="5">Details</th> 12146 </tr> 12147 <tr class="entry_cont"> 12148 <td class="entry_details" colspan="5"> 12149 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 12150one stage to readout) from the sensor.<wbr/> The ISP then usually adds 12151its own stages to do custom HW processing.<wbr/> Further stages may be 12152added by SW processing.<wbr/></p> 12153<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 12154processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 12155depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 12156the max pipeline depth.<wbr/></p> 12157<p>A pipeline depth of X stages is equivalent to a pipeline latency of 12158X frame intervals.<wbr/></p> 12159<p>This value will be 8 or less.<wbr/></p> 12160 </td> 12161 </tr> 12162 12163 <tr class="entries_header"> 12164 <th class="th_details" colspan="5">HAL Implementation Details</th> 12165 </tr> 12166 <tr class="entry_cont"> 12167 <td class="entry_details" colspan="5"> 12168 <p>This value should be 4 or less.<wbr/></p> 12169 </td> 12170 </tr> 12171 12172 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12173 <!-- end of entry --> 12174 12175 12176 <tr class="entry" id="static_android.request.partialResultCount"> 12177 <td class="entry_name 12178 " rowspan="3"> 12179 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 12180 </td> 12181 <td class="entry_type"> 12182 <span class="entry_type_name">int32</span> 12183 12184 <span class="entry_type_visibility"> [public]</span> 12185 12186 12187 12188 12189 12190 </td> <!-- entry_type --> 12191 12192 <td class="entry_description"> 12193 <p>Optional.<wbr/> Defaults to 1.<wbr/> Defines how many sub-components 12194a result will be composed of.<wbr/></p> 12195 </td> 12196 12197 <td class="entry_units"> 12198 </td> 12199 12200 <td class="entry_range"> 12201 <p>>= 1</p> 12202 </td> 12203 12204 <td class="entry_tags"> 12205 </td> 12206 12207 </tr> 12208 <tr class="entries_header"> 12209 <th class="th_details" colspan="5">Details</th> 12210 </tr> 12211 <tr class="entry_cont"> 12212 <td class="entry_details" colspan="5"> 12213 <p>In order to combat the pipeline latency,<wbr/> partial results 12214may be delivered to the application layer from the camera device as 12215soon as they are available.<wbr/></p> 12216<p>A value of 1 means that partial results are not supported.<wbr/></p> 12217<p>A typical use case for this might be: after requesting an AF lock the 12218new AF state might be available 50% of the way through the pipeline.<wbr/> 12219The camera device could then immediately dispatch this state via a 12220partial result to the framework/<wbr/>application layer,<wbr/> and the rest of 12221the metadata via later partial results.<wbr/></p> 12222 </td> 12223 </tr> 12224 12225 12226 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12227 <!-- end of entry --> 12228 12229 12230 <tr class="entry" id="static_android.request.availableCapabilities"> 12231 <td class="entry_name 12232 " rowspan="5"> 12233 android.<wbr/>request.<wbr/>available<wbr/>Capabilities 12234 </td> 12235 <td class="entry_type"> 12236 <span class="entry_type_name entry_type_name_enum">byte</span> 12237 <span class="entry_type_container">x</span> 12238 12239 <span class="entry_type_array"> 12240 n 12241 </span> 12242 <span class="entry_type_visibility"> [public]</span> 12243 12244 12245 12246 12247 <ul class="entry_type_enum"> 12248 <li> 12249 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span> 12250 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera 12251device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 12252will support.<wbr/></p> 12253<p>The full set of features supported by this capability makes 12254the camera2 api backwards compatible with the camera1 12255(android.<wbr/>hardware.<wbr/>Camera) API.<wbr/></p> 12256<p>TODO: @hide this.<wbr/> Doesn't really mean anything except 12257act as a catch-all for all the 'base' functionality.<wbr/></p></span> 12258 </li> 12259 <li> 12260 <span class="entry_type_enum_name">OPTIONAL</span> 12261 <span class="entry_type_enum_notes"><p>This is a catch-all capability to include all other 12262tags or functionality not encapsulated by one of the other 12263capabilities.<wbr/></p> 12264<p>A typical example is all tags marked 'optional'.<wbr/></p> 12265<p>TODO: @hide.<wbr/> We may not need this if we @hide all the optional 12266tags not belonging to a capability.<wbr/></p></span> 12267 </li> 12268 <li> 12269 <span class="entry_type_enum_name">MANUAL_SENSOR</span> 12270 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such 12271as auto exposure,<wbr/> and auto focus can be bypassed).<wbr/> 12272The camera device supports basic manual control of the sensor image 12273acquisition related stages.<wbr/> This means the following controls are 12274guaranteed to be supported:</p> 12275<ul> 12276<li>Manual frame duration control<ul> 12277<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li> 12278<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 12279<li><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></li> 12280</ul> 12281</li> 12282<li>Manual exposure control<ul> 12283<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 12284<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 12285</ul> 12286</li> 12287<li>Manual sensitivity control<ul> 12288<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 12289<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 12290</ul> 12291</li> 12292<li>Manual lens control<ul> 12293<li>android.<wbr/>lens.<wbr/>*</li> 12294</ul> 12295</li> 12296<li>Manual flash control<ul> 12297<li>android.<wbr/>flash.<wbr/>*</li> 12298</ul> 12299</li> 12300<li>Manual black level locking<ul> 12301<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> 12302</ul> 12303</li> 12304</ul> 12305<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera 12306device will accurately report the values applied by 3A in the 12307result.<wbr/></p> 12308<p>A given camera device may also support additional manual sensor controls,<wbr/> 12309but this capability only covers the above list of controls.<wbr/></p></span> 12310 </li> 12311 <li> 12312 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span> 12313 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/> 12314The camera device supports basic manual control of the image post-processing 12315stages.<wbr/> This means the following controls are guaranteed to be supported:</p> 12316<ul> 12317<li>Manual tonemap control<ul> 12318<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li> 12319<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> 12320<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> 12321</ul> 12322</li> 12323<li>Manual white balance control<ul> 12324<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> 12325<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> 12326</ul> 12327</li> 12328<li>Lens shading map information<ul> 12329<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> 12330<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> 12331</ul> 12332</li> 12333</ul> 12334<p>If auto white balance is enabled,<wbr/> then the camera device 12335will accurately report the values applied by AWB in the result.<wbr/></p> 12336<p>The camera device will also support everything in MANUAL_<wbr/>SENSOR 12337except manual lens control and manual flash control.<wbr/></p> 12338<p>A given camera device may also support additional post-processing 12339controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span> 12340 </li> 12341 <li> 12342 <span class="entry_type_enum_name">ZSL</span> 12343 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag use case.<wbr/></p> 12344<ul> 12345<li>At least one input stream can be used.<wbr/></li> 12346<li>RAW_<wbr/>OPAQUE is supported as an output/<wbr/>input format</li> 12347<li>Using RAW_<wbr/>OPAQUE does not cause a frame rate drop 12348 relative to the sensor's maximum capture rate (at that 12349 resolution).<wbr/></li> 12350<li>RAW_<wbr/>OPAQUE will be reprocessable into both YUV_<wbr/>420_<wbr/>888 12351 and JPEG formats.<wbr/></li> 12352<li>The maximum available resolution for RAW_<wbr/>OPAQUE streams 12353 (both input/<wbr/>output) will match the maximum available 12354 resolution of JPEG streams.<wbr/></li> 12355</ul> 12356<p>@hide this,<wbr/> TODO: remove it when input related APIs are ready.<wbr/></p></span> 12357 </li> 12358 <li> 12359 <span class="entry_type_enum_name">DNG</span> 12360 <span class="entry_type_enum_optional">optional</span> 12361 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers that can be 12362saved offline into a DNG format.<wbr/> It can reprocess DNG 12363files (produced from the same camera device) back into YUV.<wbr/></p> 12364<ul> 12365<li>At least one input stream can be used.<wbr/></li> 12366<li>RAW16 is supported as output/<wbr/>input format.<wbr/></li> 12367<li>RAW16 is reprocessable into both YUV_<wbr/>420_<wbr/>888 and JPEG 12368 formats.<wbr/></li> 12369<li>The maximum available resolution for RAW16 streams (both 12370 input/<wbr/>output) will match the value in 12371 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></li> 12372<li>All DNG-related optional metadata entries are provided 12373 by the camera device.<wbr/></li> 12374</ul></span> 12375 </li> 12376 </ul> 12377 12378 </td> <!-- entry_type --> 12379 12380 <td class="entry_description"> 12381 <p>List of capabilities that the camera device 12382advertises as fully supporting.<wbr/></p> 12383 </td> 12384 12385 <td class="entry_units"> 12386 </td> 12387 12388 <td class="entry_range"> 12389 </td> 12390 12391 <td class="entry_tags"> 12392 </td> 12393 12394 </tr> 12395 <tr class="entries_header"> 12396 <th class="th_details" colspan="5">Details</th> 12397 </tr> 12398 <tr class="entry_cont"> 12399 <td class="entry_details" colspan="5"> 12400 <p>A capability is a contract that the camera device makes in order 12401to be able to satisfy one or more use cases.<wbr/></p> 12402<p>Listing a capability guarantees that the whole set of features 12403required to support a common use will all be available.<wbr/></p> 12404<p>Using a subset of the functionality provided by an unsupported 12405capability may be possible on a specific camera device implementation; 12406to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> 12407<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> 12408<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> 12409<p>XX: Maybe these should go into <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> 12410as a table instead?</p> 12411<p>The following capabilities are guaranteed to be available on 12412<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> 12413<ul> 12414<li>MANUAL_<wbr/>SENSOR</li> 12415<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li> 12416</ul> 12417<p>Other capabilities may be available on either FULL or LIMITED 12418devices,<wbr/> but the app.<wbr/> should query this field to be sure.<wbr/></p> 12419 </td> 12420 </tr> 12421 12422 <tr class="entries_header"> 12423 <th class="th_details" colspan="5">HAL Implementation Details</th> 12424 </tr> 12425 <tr class="entry_cont"> 12426 <td class="entry_details" colspan="5"> 12427 <p>Additional constraint details per-capability will be available 12428in the Compatibility Test Suite.<wbr/></p> 12429<p>BACKWARD_<wbr/>COMPATIBLE capability requirements are not explicitly listed.<wbr/> 12430Instead refer to "BC" tags and the camera CTS tests in the 12431android.<wbr/>hardware.<wbr/>cts package.<wbr/></p> 12432<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> 12433<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the 12434request and the result in order to be considered to be 12435capability-compliant.<wbr/></p> 12436<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 12437then exposure time must be configurable via the request <em>and</em> 12438the actual exposure applied must be available via 12439the result.<wbr/></p> 12440 </td> 12441 </tr> 12442 12443 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12444 <!-- end of entry --> 12445 12446 12447 <tr class="entry" id="static_android.request.availableRequestKeys"> 12448 <td class="entry_name 12449 " rowspan="5"> 12450 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys 12451 </td> 12452 <td class="entry_type"> 12453 <span class="entry_type_name">int32</span> 12454 <span class="entry_type_container">x</span> 12455 12456 <span class="entry_type_array"> 12457 n 12458 </span> 12459 <span class="entry_type_visibility"> [hidden]</span> 12460 12461 12462 12463 12464 12465 </td> <!-- entry_type --> 12466 12467 <td class="entry_description"> 12468 <p>A list of all keys that the camera device has available 12469to use with CaptureRequest.<wbr/></p> 12470 </td> 12471 12472 <td class="entry_units"> 12473 </td> 12474 12475 <td class="entry_range"> 12476 </td> 12477 12478 <td class="entry_tags"> 12479 </td> 12480 12481 </tr> 12482 <tr class="entries_header"> 12483 <th class="th_details" colspan="5">Details</th> 12484 </tr> 12485 <tr class="entry_cont"> 12486 <td class="entry_details" colspan="5"> 12487 <p>Attempting to set a key into a CaptureRequest that is not 12488listed here will result in an invalid request and will be rejected 12489by the camera device.<wbr/></p> 12490<p>This field can be used to query the feature set of a camera device 12491at a more granular level than capabilities.<wbr/> This is especially 12492important for optional keys that are not listed under any capability 12493in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 12494<p>TODO: This should be used by #getAvailableCaptureRequestKeys.<wbr/></p> 12495 </td> 12496 </tr> 12497 12498 <tr class="entries_header"> 12499 <th class="th_details" colspan="5">HAL Implementation Details</th> 12500 </tr> 12501 <tr class="entry_cont"> 12502 <td class="entry_details" colspan="5"> 12503 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 12504extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 12505<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 12506vendor extensions API and not against this field.<wbr/></p> 12507<p>The HAL must not consume any request tags that are not listed either 12508here or in the vendor tag list.<wbr/></p> 12509<p>The public camera2 API will always make the vendor tags visible 12510via CameraCharacteristics#getAvailableCaptureRequestKeys.<wbr/></p> 12511 </td> 12512 </tr> 12513 12514 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12515 <!-- end of entry --> 12516 12517 12518 <tr class="entry" id="static_android.request.availableResultKeys"> 12519 <td class="entry_name 12520 " rowspan="5"> 12521 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys 12522 </td> 12523 <td class="entry_type"> 12524 <span class="entry_type_name">int32</span> 12525 <span class="entry_type_container">x</span> 12526 12527 <span class="entry_type_array"> 12528 n 12529 </span> 12530 <span class="entry_type_visibility"> [hidden]</span> 12531 12532 12533 12534 12535 12536 </td> <!-- entry_type --> 12537 12538 <td class="entry_description"> 12539 <p>A list of all keys that the camera device has available 12540to use with CaptureResult.<wbr/></p> 12541 </td> 12542 12543 <td class="entry_units"> 12544 </td> 12545 12546 <td class="entry_range"> 12547 </td> 12548 12549 <td class="entry_tags"> 12550 </td> 12551 12552 </tr> 12553 <tr class="entries_header"> 12554 <th class="th_details" colspan="5">Details</th> 12555 </tr> 12556 <tr class="entry_cont"> 12557 <td class="entry_details" colspan="5"> 12558 <p>Attempting to get a key from a CaptureResult that is not 12559listed here will always return a <code>null</code> value.<wbr/> Getting a key from 12560a CaptureResult that is listed here must never return a <code>null</code> 12561value.<wbr/></p> 12562<p>The following keys may return <code>null</code> unless they are enabled:</p> 12563<ul> 12564<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> 12565</ul> 12566<p>(Those sometimes-null keys should nevertheless be listed here 12567if they are available.<wbr/>)</p> 12568<p>This field can be used to query the feature set of a camera device 12569at a more granular level than capabilities.<wbr/> This is especially 12570important for optional keys that are not listed under any capability 12571in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 12572<p>TODO: This should be used by #getAvailableCaptureResultKeys.<wbr/></p> 12573 </td> 12574 </tr> 12575 12576 <tr class="entries_header"> 12577 <th class="th_details" colspan="5">HAL Implementation Details</th> 12578 </tr> 12579 <tr class="entry_cont"> 12580 <td class="entry_details" colspan="5"> 12581 <p>Tags listed here must always have an entry in the result metadata,<wbr/> 12582even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 12583matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 12584<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 12585extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 12586<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 12587vendor extensions API and not against this field.<wbr/></p> 12588<p>The HAL must not produce any result tags that are not listed either 12589here or in the vendor tag list.<wbr/></p> 12590<p>The public camera2 API will always make the vendor tags visible 12591via CameraCharacteristics#getAvailableCaptureResultKeys.<wbr/></p> 12592 </td> 12593 </tr> 12594 12595 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12596 <!-- end of entry --> 12597 12598 12599 <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> 12600 <td class="entry_name 12601 " rowspan="5"> 12602 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys 12603 </td> 12604 <td class="entry_type"> 12605 <span class="entry_type_name">int32</span> 12606 <span class="entry_type_container">x</span> 12607 12608 <span class="entry_type_array"> 12609 n 12610 </span> 12611 <span class="entry_type_visibility"> [hidden]</span> 12612 12613 12614 12615 12616 12617 </td> <!-- entry_type --> 12618 12619 <td class="entry_description"> 12620 <p>A list of all keys that the camera device has available 12621to use with CameraCharacteristics.<wbr/></p> 12622 </td> 12623 12624 <td class="entry_units"> 12625 </td> 12626 12627 <td class="entry_range"> 12628 </td> 12629 12630 <td class="entry_tags"> 12631 </td> 12632 12633 </tr> 12634 <tr class="entries_header"> 12635 <th class="th_details" colspan="5">Details</th> 12636 </tr> 12637 <tr class="entry_cont"> 12638 <td class="entry_details" colspan="5"> 12639 <p>This entry follows the same rules as 12640<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for 12641CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 12642details.<wbr/></p> 12643<p>TODO: This should be used by CameraCharacteristics#getKeys.<wbr/></p> 12644 </td> 12645 </tr> 12646 12647 <tr class="entries_header"> 12648 <th class="th_details" colspan="5">HAL Implementation Details</th> 12649 </tr> 12650 <tr class="entry_cont"> 12651 <td class="entry_details" colspan="5"> 12652 <p>Tags listed here must always have an entry in the static info metadata,<wbr/> 12653even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 12654matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 12655<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 12656extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 12657<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 12658vendor extensions API and not against this field.<wbr/></p> 12659<p>The HAL must not have any tags in its static info that are not listed 12660either here or in the vendor tag list.<wbr/></p> 12661<p>The public camera2 API will always make the vendor tags visible 12662via CameraCharacteristics#getKeys.<wbr/></p> 12663 </td> 12664 </tr> 12665 12666 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12667 <!-- end of entry --> 12668 12669 12670 12671 <!-- end of kind --> 12672 </tbody> 12673 <tr><td colspan="6" class="kind">dynamic</td></tr> 12674 12675 <thead class="entries_header"> 12676 <tr> 12677 <th class="th_name">Property Name</th> 12678 <th class="th_type">Type</th> 12679 <th class="th_description">Description</th> 12680 <th class="th_units">Units</th> 12681 <th class="th_range">Range</th> 12682 <th class="th_tags">Tags</th> 12683 </tr> 12684 </thead> 12685 12686 <tbody> 12687 12688 12689 12690 12691 12692 12693 12694 12695 12696 12697 <tr class="entry" id="dynamic_android.request.frameCount"> 12698 <td class="entry_name 12699 " rowspan="3"> 12700 android.<wbr/>request.<wbr/>frame<wbr/>Count 12701 </td> 12702 <td class="entry_type"> 12703 <span class="entry_type_name">int32</span> 12704 12705 <span class="entry_type_visibility"> [public]</span> 12706 12707 12708 12709 12710 12711 </td> <!-- entry_type --> 12712 12713 <td class="entry_description"> 12714 <p>A frame counter set by the framework.<wbr/> This value monotonically 12715increases with every new result (that is,<wbr/> each new result has a unique 12716frameCount value).<wbr/></p> 12717 </td> 12718 12719 <td class="entry_units"> 12720 count of frames 12721 </td> 12722 12723 <td class="entry_range"> 12724 <p>> 0</p> 12725 </td> 12726 12727 <td class="entry_tags"> 12728 </td> 12729 12730 </tr> 12731 <tr class="entries_header"> 12732 <th class="th_details" colspan="5">Details</th> 12733 </tr> 12734 <tr class="entry_cont"> 12735 <td class="entry_details" colspan="5"> 12736 <p>Reset on release()</p> 12737 </td> 12738 </tr> 12739 12740 12741 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12742 <!-- end of entry --> 12743 12744 12745 <tr class="entry" id="dynamic_android.request.id"> 12746 <td class="entry_name 12747 " rowspan="1"> 12748 android.<wbr/>request.<wbr/>id 12749 </td> 12750 <td class="entry_type"> 12751 <span class="entry_type_name">int32</span> 12752 12753 <span class="entry_type_visibility"> [hidden]</span> 12754 12755 12756 12757 12758 12759 </td> <!-- entry_type --> 12760 12761 <td class="entry_description"> 12762 <p>An application-specified ID for the current 12763request.<wbr/> Must be maintained unchanged in output 12764frame</p> 12765 </td> 12766 12767 <td class="entry_units"> 12768 arbitrary integer assigned by application 12769 </td> 12770 12771 <td class="entry_range"> 12772 <p>Any int</p> 12773 </td> 12774 12775 <td class="entry_tags"> 12776 <ul class="entry_tags"> 12777 <li><a href="#tag_V1">V1</a></li> 12778 </ul> 12779 </td> 12780 12781 </tr> 12782 12783 12784 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12785 <!-- end of entry --> 12786 12787 12788 <tr class="entry" id="dynamic_android.request.metadataMode"> 12789 <td class="entry_name 12790 " rowspan="1"> 12791 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 12792 </td> 12793 <td class="entry_type"> 12794 <span class="entry_type_name entry_type_name_enum">byte</span> 12795 12796 <span class="entry_type_visibility"> [system]</span> 12797 12798 12799 12800 12801 <ul class="entry_type_enum"> 12802 <li> 12803 <span class="entry_type_enum_name">NONE</span> 12804 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 12805for application-bound buffer data.<wbr/> If no 12806application-bound streams exist,<wbr/> no frame should be 12807placed in the output frame queue.<wbr/> If such streams 12808exist,<wbr/> a frame should be placed on the output queue 12809with null metadata but with the necessary output buffer 12810information.<wbr/> Timestamp information should still be 12811included with any output stream buffers</p></span> 12812 </li> 12813 <li> 12814 <span class="entry_type_enum_name">FULL</span> 12815 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 12816only be produced if they are separately 12817enabled</p></span> 12818 </li> 12819 </ul> 12820 12821 </td> <!-- entry_type --> 12822 12823 <td class="entry_description"> 12824 <p>How much metadata to produce on 12825output</p> 12826 </td> 12827 12828 <td class="entry_units"> 12829 </td> 12830 12831 <td class="entry_range"> 12832 </td> 12833 12834 <td class="entry_tags"> 12835 <ul class="entry_tags"> 12836 <li><a href="#tag_FUTURE">FUTURE</a></li> 12837 </ul> 12838 </td> 12839 12840 </tr> 12841 12842 12843 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12844 <!-- end of entry --> 12845 12846 12847 <tr class="entry" id="dynamic_android.request.outputStreams"> 12848 <td class="entry_name 12849 entry_name_deprecated 12850 " rowspan="3"> 12851 android.<wbr/>request.<wbr/>output<wbr/>Streams 12852 </td> 12853 <td class="entry_type"> 12854 <span class="entry_type_name">int32</span> 12855 <span class="entry_type_container">x</span> 12856 12857 <span class="entry_type_array"> 12858 n 12859 </span> 12860 <span class="entry_type_visibility"> [system]</span> 12861 12862 12863 <span class="entry_type_deprecated">[deprecated] </span> 12864 12865 12866 12867 </td> <!-- entry_type --> 12868 12869 <td class="entry_description"> 12870 <p>Lists which camera output streams image data 12871from this capture must be sent to</p> 12872 </td> 12873 12874 <td class="entry_units"> 12875 List of camera stream IDs 12876 </td> 12877 12878 <td class="entry_range"> 12879 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 12880 <p>List must only include streams that have been 12881created</p> 12882 </td> 12883 12884 <td class="entry_tags"> 12885 <ul class="entry_tags"> 12886 <li><a href="#tag_HAL2">HAL2</a></li> 12887 </ul> 12888 </td> 12889 12890 </tr> 12891 <tr class="entries_header"> 12892 <th class="th_details" colspan="5">Details</th> 12893 </tr> 12894 <tr class="entry_cont"> 12895 <td class="entry_details" colspan="5"> 12896 <p>If no output streams are listed,<wbr/> then the image 12897data should simply be discarded.<wbr/> The image data must 12898still be captured for metadata and statistics production,<wbr/> 12899and the lens and flash must operate as requested.<wbr/></p> 12900 </td> 12901 </tr> 12902 12903 12904 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12905 <!-- end of entry --> 12906 12907 12908 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 12909 <td class="entry_name 12910 " rowspan="5"> 12911 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 12912 </td> 12913 <td class="entry_type"> 12914 <span class="entry_type_name">byte</span> 12915 12916 <span class="entry_type_visibility"> [public]</span> 12917 12918 12919 12920 12921 12922 </td> <!-- entry_type --> 12923 12924 <td class="entry_description"> 12925 <p>Specifies the number of pipeline stages the frame went 12926through from when it was exposed to when the final completed result 12927was available to the framework.<wbr/></p> 12928 </td> 12929 12930 <td class="entry_units"> 12931 </td> 12932 12933 <td class="entry_range"> 12934 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 12935 </td> 12936 12937 <td class="entry_tags"> 12938 </td> 12939 12940 </tr> 12941 <tr class="entries_header"> 12942 <th class="th_details" colspan="5">Details</th> 12943 </tr> 12944 <tr class="entry_cont"> 12945 <td class="entry_details" colspan="5"> 12946 <p>Depending on what settings are used in the request,<wbr/> and 12947what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 12948and some pipeline stages skipped.<wbr/></p> 12949<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 12950 </td> 12951 </tr> 12952 12953 <tr class="entries_header"> 12954 <th class="th_details" colspan="5">HAL Implementation Details</th> 12955 </tr> 12956 <tr class="entry_cont"> 12957 <td class="entry_details" colspan="5"> 12958 <p>This value must always represent the accurate count of how many 12959pipeline stages were actually used.<wbr/></p> 12960 </td> 12961 </tr> 12962 12963 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12964 <!-- end of entry --> 12965 12966 12967 12968 <!-- end of kind --> 12969 </tbody> 12970 12971 <!-- end of section --> 12972 <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr> 12973 12974 12975 <tr><td colspan="6" class="kind">controls</td></tr> 12976 12977 <thead class="entries_header"> 12978 <tr> 12979 <th class="th_name">Property Name</th> 12980 <th class="th_type">Type</th> 12981 <th class="th_description">Description</th> 12982 <th class="th_units">Units</th> 12983 <th class="th_range">Range</th> 12984 <th class="th_tags">Tags</th> 12985 </tr> 12986 </thead> 12987 12988 <tbody> 12989 12990 12991 12992 12993 12994 12995 12996 12997 12998 12999 <tr class="entry" id="controls_android.scaler.cropRegion"> 13000 <td class="entry_name 13001 " rowspan="3"> 13002 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 13003 </td> 13004 <td class="entry_type"> 13005 <span class="entry_type_name">int32</span> 13006 <span class="entry_type_container">x</span> 13007 13008 <span class="entry_type_array"> 13009 4 13010 </span> 13011 <span class="entry_type_visibility"> [public as rectangle]</span> 13012 13013 13014 13015 13016 13017 </td> <!-- entry_type --> 13018 13019 <td class="entry_description"> 13020 <p>(x,<wbr/> y,<wbr/> width,<wbr/> height).<wbr/></p> 13021<p>A rectangle with the top-level corner of (x,<wbr/>y) and size 13022(width,<wbr/> height).<wbr/> The region of the sensor that is used for 13023output.<wbr/> Each stream must use this rectangle to produce its 13024output,<wbr/> cropping to a smaller region if necessary to 13025maintain the stream's aspect ratio.<wbr/></p> 13026<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 13027 </td> 13028 13029 <td class="entry_units"> 13030 (x,<wbr/>y) of top-left corner,<wbr/> width and height of region 13031 in pixels; (0,<wbr/>0) is top-left corner of 13032 android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size 13033 </td> 13034 13035 <td class="entry_range"> 13036 </td> 13037 13038 <td class="entry_tags"> 13039 <ul class="entry_tags"> 13040 <li><a href="#tag_BC">BC</a></li> 13041 </ul> 13042 </td> 13043 13044 </tr> 13045 <tr class="entries_header"> 13046 <th class="th_details" colspan="5">Details</th> 13047 </tr> 13048 <tr class="entry_cont"> 13049 <td class="entry_details" colspan="5"> 13050 <p>The crop region is applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV) 13051conversion.<wbr/> Since raw streams (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> 13052it is not croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 13053<p>For non-raw streams,<wbr/> any additional per-stream cropping will 13054be done to maximize the final pixel area of the stream.<wbr/></p> 13055<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 13056ratio,<wbr/> then 4:3 streams should use the exact crop 13057region.<wbr/> 16:9 streams should further crop vertically 13058(letterbox).<wbr/></p> 13059<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 13060outputs should crop horizontally (pillarbox),<wbr/> and 16:9 13061streams should match exactly.<wbr/> These additional crops must 13062be centered within the crop region.<wbr/></p> 13063<p>The output streams must maintain square pixels at all 13064times,<wbr/> no matter what the relative aspect ratios of the 13065crop region and the stream are.<wbr/> Negative values for 13066corner are allowed for raw output if full pixel array is 13067larger than active pixel array.<wbr/> Width and height may be 13068rounded to nearest larger supportable width,<wbr/> especially 13069for raw output,<wbr/> where only a few fixed scales may be 13070possible.<wbr/> The width and height of the crop region cannot 13071be set to be smaller than floor( activeArraySize.<wbr/>width /<wbr/> 13072<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> ) and floor( 13073activeArraySize.<wbr/>height /<wbr/> 13074<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>),<wbr/> respectively.<wbr/></p> 13075 </td> 13076 </tr> 13077 13078 13079 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13080 <!-- end of entry --> 13081 13082 13083 13084 <!-- end of kind --> 13085 </tbody> 13086 <tr><td colspan="6" class="kind">static</td></tr> 13087 13088 <thead class="entries_header"> 13089 <tr> 13090 <th class="th_name">Property Name</th> 13091 <th class="th_type">Type</th> 13092 <th class="th_description">Description</th> 13093 <th class="th_units">Units</th> 13094 <th class="th_range">Range</th> 13095 <th class="th_tags">Tags</th> 13096 </tr> 13097 </thead> 13098 13099 <tbody> 13100 13101 13102 13103 13104 13105 13106 13107 13108 13109 13110 <tr class="entry" id="static_android.scaler.availableFormats"> 13111 <td class="entry_name 13112 entry_name_deprecated 13113 " rowspan="5"> 13114 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 13115 </td> 13116 <td class="entry_type"> 13117 <span class="entry_type_name entry_type_name_enum">int32</span> 13118 <span class="entry_type_container">x</span> 13119 13120 <span class="entry_type_array"> 13121 n 13122 </span> 13123 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 13124 13125 13126 <span class="entry_type_deprecated">[deprecated] </span> 13127 13128 13129 <ul class="entry_type_enum"> 13130 <li> 13131 <span class="entry_type_enum_name">RAW16</span> 13132 <span class="entry_type_enum_optional">optional</span> 13133 <span class="entry_type_enum_value">0x20</span> 13134 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image 13135buffers with 16-bit pixels.<wbr/> Buffers of this format are typically 13136expected to have a Bayer Color Filter Array (CFA) layout,<wbr/> which 13137is given in <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors 13138with CFAs that are not representable by a format in 13139<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not use this 13140format.<wbr/></p> 13141<p>Buffers of this format will also follow the constraints given for 13142RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> 13143<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for 13144the full set of performance guarantees.<wbr/></p></span> 13145 </li> 13146 <li> 13147 <span class="entry_type_enum_name">RAW_OPAQUE</span> 13148 <span class="entry_type_enum_optional">optional</span> 13149 <span class="entry_type_enum_value">0x24</span> 13150 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an 13151image sensor.<wbr/> The actual structure of buffers of this format is 13152platform-specific,<wbr/> but must follow several constraints:</p> 13153<ol> 13154<li>No image post-processing operations may have been applied to 13155buffers of this type.<wbr/> These buffers contain raw image data coming 13156directly from the image sensor.<wbr/></li> 13157<li>If a buffer of this format is passed to the camera device for 13158reprocessing,<wbr/> the resulting images will be identical to the images 13159produced if the buffer had come directly from the sensor and was 13160processed with the same settings.<wbr/></li> 13161</ol> 13162<p>The intended use for this format is to allow access to the native 13163raw format buffers coming directly from the camera sensor without 13164any additional conversions or decrease in framerate.<wbr/></p> 13165<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 13166performance guarantees.<wbr/></p></span> 13167 </li> 13168 <li> 13169 <span class="entry_type_enum_name">YV12</span> 13170 <span class="entry_type_enum_optional">optional</span> 13171 <span class="entry_type_enum_value">0x32315659</span> 13172 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 13173 </li> 13174 <li> 13175 <span class="entry_type_enum_name">YCrCb_420_SP</span> 13176 <span class="entry_type_enum_optional">optional</span> 13177 <span class="entry_type_enum_value">0x11</span> 13178 <span class="entry_type_enum_notes"><p>NV21</p></span> 13179 </li> 13180 <li> 13181 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span> 13182 <span class="entry_type_enum_value">0x22</span> 13183 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 13184 </li> 13185 <li> 13186 <span class="entry_type_enum_name">YCbCr_420_888</span> 13187 <span class="entry_type_enum_value">0x23</span> 13188 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 13189 </li> 13190 <li> 13191 <span class="entry_type_enum_name">BLOB</span> 13192 <span class="entry_type_enum_value">0x21</span> 13193 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 13194 </li> 13195 </ul> 13196 13197 </td> <!-- entry_type --> 13198 13199 <td class="entry_description"> 13200 <p>The list of image formats that are supported by this 13201camera device for output streams.<wbr/></p> 13202 </td> 13203 13204 <td class="entry_units"> 13205 </td> 13206 13207 <td class="entry_range"> 13208 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13209 </td> 13210 13211 <td class="entry_tags"> 13212 <ul class="entry_tags"> 13213 <li><a href="#tag_BC">BC</a></li> 13214 </ul> 13215 </td> 13216 13217 </tr> 13218 <tr class="entries_header"> 13219 <th class="th_details" colspan="5">Details</th> 13220 </tr> 13221 <tr class="entry_cont"> 13222 <td class="entry_details" colspan="5"> 13223 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 13224<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 13225 </td> 13226 </tr> 13227 13228 <tr class="entries_header"> 13229 <th class="th_details" colspan="5">HAL Implementation Details</th> 13230 </tr> 13231 <tr class="entry_cont"> 13232 <td class="entry_details" colspan="5"> 13233 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 13234system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 13235<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 13236gralloc module will select a format based on the usage flags provided 13237by the camera HAL device and the other endpoint of the stream.<wbr/> It is 13238usually used by preview and recording streams,<wbr/> where the application doesn't 13239need access the image data.<wbr/></p> 13240<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 13241needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p> 13242<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 13243<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly 13244recommended that any information used by the camera device when 13245processing images is fully expressed by the result metadata 13246for that image buffer.<wbr/></p> 13247 </td> 13248 </tr> 13249 13250 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13251 <!-- end of entry --> 13252 13253 13254 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 13255 <td class="entry_name 13256 entry_name_deprecated 13257 " rowspan="3"> 13258 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 13259 </td> 13260 <td class="entry_type"> 13261 <span class="entry_type_name">int64</span> 13262 <span class="entry_type_container">x</span> 13263 13264 <span class="entry_type_array"> 13265 n 13266 </span> 13267 <span class="entry_type_visibility"> [hidden]</span> 13268 13269 13270 <span class="entry_type_deprecated">[deprecated] </span> 13271 13272 13273 13274 </td> <!-- entry_type --> 13275 13276 <td class="entry_description"> 13277 <p>The minimum frame duration that is supported 13278for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 13279 </td> 13280 13281 <td class="entry_units"> 13282 ns 13283 </td> 13284 13285 <td class="entry_range"> 13286 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13287 <p>TODO: Remove property.<wbr/></p> 13288 </td> 13289 13290 <td class="entry_tags"> 13291 <ul class="entry_tags"> 13292 <li><a href="#tag_BC">BC</a></li> 13293 </ul> 13294 </td> 13295 13296 </tr> 13297 <tr class="entries_header"> 13298 <th class="th_details" colspan="5">Details</th> 13299 </tr> 13300 <tr class="entry_cont"> 13301 <td class="entry_details" colspan="5"> 13302 <p>This corresponds to the minimum steady-state frame duration when only 13303that JPEG stream is active and captured in a burst,<wbr/> with all 13304processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 13305<p>When multiple streams are configured,<wbr/> the minimum 13306frame duration will be >= max(individual stream min 13307durations)</p> 13308 </td> 13309 </tr> 13310 13311 13312 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13313 <!-- end of entry --> 13314 13315 13316 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 13317 <td class="entry_name 13318 entry_name_deprecated 13319 " rowspan="5"> 13320 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 13321 </td> 13322 <td class="entry_type"> 13323 <span class="entry_type_name">int32</span> 13324 <span class="entry_type_container">x</span> 13325 13326 <span class="entry_type_array"> 13327 n x 2 13328 </span> 13329 <span class="entry_type_visibility"> [hidden as size]</span> 13330 13331 13332 <span class="entry_type_deprecated">[deprecated] </span> 13333 13334 13335 13336 </td> <!-- entry_type --> 13337 13338 <td class="entry_description"> 13339 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 13340 </td> 13341 13342 <td class="entry_units"> 13343 </td> 13344 13345 <td class="entry_range"> 13346 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13347 <p>TODO: Remove property.<wbr/></p> 13348 </td> 13349 13350 <td class="entry_tags"> 13351 <ul class="entry_tags"> 13352 <li><a href="#tag_BC">BC</a></li> 13353 </ul> 13354 </td> 13355 13356 </tr> 13357 <tr class="entries_header"> 13358 <th class="th_details" colspan="5">Details</th> 13359 </tr> 13360 <tr class="entry_cont"> 13361 <td class="entry_details" colspan="5"> 13362 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 13363sensor 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> 13364 </td> 13365 </tr> 13366 13367 <tr class="entries_header"> 13368 <th class="th_details" colspan="5">HAL Implementation Details</th> 13369 </tr> 13370 <tr class="entry_cont"> 13371 <td class="entry_details" colspan="5"> 13372 <p>The HAL must include sensor maximum resolution 13373(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 13374and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 13375 </td> 13376 </tr> 13377 13378 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13379 <!-- end of entry --> 13380 13381 13382 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 13383 <td class="entry_name 13384 " rowspan="1"> 13385 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 13386 </td> 13387 <td class="entry_type"> 13388 <span class="entry_type_name">float</span> 13389 13390 <span class="entry_type_visibility"> [public]</span> 13391 13392 13393 13394 13395 13396 </td> <!-- entry_type --> 13397 13398 <td class="entry_description"> 13399 <p>The maximum ratio between active area width 13400and crop region width,<wbr/> or between active area height and 13401crop region height,<wbr/> if the crop region height is larger 13402than width</p> 13403 </td> 13404 13405 <td class="entry_units"> 13406 </td> 13407 13408 <td class="entry_range"> 13409 <p>>=1</p> 13410 </td> 13411 13412 <td class="entry_tags"> 13413 <ul class="entry_tags"> 13414 <li><a href="#tag_BC">BC</a></li> 13415 </ul> 13416 </td> 13417 13418 </tr> 13419 13420 13421 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13422 <!-- end of entry --> 13423 13424 13425 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 13426 <td class="entry_name 13427 entry_name_deprecated 13428 " rowspan="3"> 13429 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 13430 </td> 13431 <td class="entry_type"> 13432 <span class="entry_type_name">int64</span> 13433 <span class="entry_type_container">x</span> 13434 13435 <span class="entry_type_array"> 13436 n 13437 </span> 13438 <span class="entry_type_visibility"> [hidden]</span> 13439 13440 13441 <span class="entry_type_deprecated">[deprecated] </span> 13442 13443 13444 13445 </td> <!-- entry_type --> 13446 13447 <td class="entry_description"> 13448 <p>For each available processed output size (defined in 13449<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 13450minimum supportable frame duration for that size.<wbr/></p> 13451 </td> 13452 13453 <td class="entry_units"> 13454 ns 13455 </td> 13456 13457 <td class="entry_range"> 13458 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13459 <p>TODO: Remove property.<wbr/></p> 13460 </td> 13461 13462 <td class="entry_tags"> 13463 <ul class="entry_tags"> 13464 <li><a href="#tag_BC">BC</a></li> 13465 </ul> 13466 </td> 13467 13468 </tr> 13469 <tr class="entries_header"> 13470 <th class="th_details" colspan="5">Details</th> 13471 </tr> 13472 <tr class="entry_cont"> 13473 <td class="entry_details" colspan="5"> 13474 <p>This should correspond to the frame duration when only that processed 13475stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 13476set to FAST.<wbr/></p> 13477<p>When multiple streams are configured,<wbr/> the minimum frame duration will 13478be >= max(individual stream min durations).<wbr/></p> 13479 </td> 13480 </tr> 13481 13482 13483 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13484 <!-- end of entry --> 13485 13486 13487 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 13488 <td class="entry_name 13489 entry_name_deprecated 13490 " rowspan="5"> 13491 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 13492 </td> 13493 <td class="entry_type"> 13494 <span class="entry_type_name">int32</span> 13495 <span class="entry_type_container">x</span> 13496 13497 <span class="entry_type_array"> 13498 n x 2 13499 </span> 13500 <span class="entry_type_visibility"> [hidden as size]</span> 13501 13502 13503 <span class="entry_type_deprecated">[deprecated] </span> 13504 13505 13506 13507 </td> <!-- entry_type --> 13508 13509 <td class="entry_description"> 13510 <p>The resolutions available for use with 13511processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 13512platform opaque YUV/<wbr/>RGB streams to the GPU or video 13513encoders.<wbr/></p> 13514 </td> 13515 13516 <td class="entry_units"> 13517 </td> 13518 13519 <td class="entry_range"> 13520 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13521 <p>TODO: Remove property.<wbr/></p> 13522 </td> 13523 13524 <td class="entry_tags"> 13525 <ul class="entry_tags"> 13526 <li><a href="#tag_BC">BC</a></li> 13527 </ul> 13528 </td> 13529 13530 </tr> 13531 <tr class="entries_header"> 13532 <th class="th_details" colspan="5">Details</th> 13533 </tr> 13534 <tr class="entry_cont"> 13535 <td class="entry_details" colspan="5"> 13536 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 13537<p>For a given use case,<wbr/> the actual maximum supported resolution 13538may be lower than what is listed here,<wbr/> depending on the destination 13539Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 13540the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 13541smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 13542can provide.<wbr/></p> 13543<p>Please reference the documentation for the image data destination to 13544check if it limits the maximum size for image data.<wbr/></p> 13545 </td> 13546 </tr> 13547 13548 <tr class="entries_header"> 13549 <th class="th_details" colspan="5">HAL Implementation Details</th> 13550 </tr> 13551 <tr class="entry_cont"> 13552 <td class="entry_details" colspan="5"> 13553 <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/> 13554the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> 13555and each below resolution if it is smaller than or equal to the sensor 13556maximum resolution (if they are not listed in JPEG sizes already):</p> 13557<ul> 13558<li>240p (320 x 240)</li> 13559<li>480p (640 x 480)</li> 13560<li>720p (1280 x 720)</li> 13561<li>1080p (1920 x 1080)</li> 13562</ul> 13563<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/> 13564the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 13565 </td> 13566 </tr> 13567 13568 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13569 <!-- end of entry --> 13570 13571 13572 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 13573 <td class="entry_name 13574 entry_name_deprecated 13575 " rowspan="3"> 13576 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 13577 </td> 13578 <td class="entry_type"> 13579 <span class="entry_type_name">int64</span> 13580 <span class="entry_type_container">x</span> 13581 13582 <span class="entry_type_array"> 13583 n 13584 </span> 13585 <span class="entry_type_visibility"> [system]</span> 13586 13587 13588 <span class="entry_type_deprecated">[deprecated] </span> 13589 13590 13591 13592 </td> <!-- entry_type --> 13593 13594 <td class="entry_description"> 13595 <p>For each available raw output size (defined in 13596<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 13597supportable frame duration for that size.<wbr/></p> 13598 </td> 13599 13600 <td class="entry_units"> 13601 ns 13602 </td> 13603 13604 <td class="entry_range"> 13605 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13606 <p>TODO: Remove property.<wbr/></p> 13607 </td> 13608 13609 <td class="entry_tags"> 13610 <ul class="entry_tags"> 13611 <li><a href="#tag_BC">BC</a></li> 13612 </ul> 13613 </td> 13614 13615 </tr> 13616 <tr class="entries_header"> 13617 <th class="th_details" colspan="5">Details</th> 13618 </tr> 13619 <tr class="entry_cont"> 13620 <td class="entry_details" colspan="5"> 13621 <p>Should correspond to the frame duration when only the raw stream is 13622active.<wbr/></p> 13623<p>When multiple streams are configured,<wbr/> the minimum 13624frame duration will be >= max(individual stream min 13625durations)</p> 13626 </td> 13627 </tr> 13628 13629 13630 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13631 <!-- end of entry --> 13632 13633 13634 <tr class="entry" id="static_android.scaler.availableRawSizes"> 13635 <td class="entry_name 13636 entry_name_deprecated 13637 " rowspan="1"> 13638 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 13639 </td> 13640 <td class="entry_type"> 13641 <span class="entry_type_name">int32</span> 13642 <span class="entry_type_container">x</span> 13643 13644 <span class="entry_type_array"> 13645 n x 2 13646 </span> 13647 <span class="entry_type_visibility"> [system as size]</span> 13648 13649 13650 <span class="entry_type_deprecated">[deprecated] </span> 13651 13652 13653 13654 </td> <!-- entry_type --> 13655 13656 <td class="entry_description"> 13657 <p>The resolutions available for use with raw 13658sensor output streams,<wbr/> listed as width,<wbr/> 13659height</p> 13660 </td> 13661 13662 <td class="entry_units"> 13663 </td> 13664 13665 <td class="entry_range"> 13666 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13667 <p>TODO: Remove property.<wbr/> 13668Must include: - sensor maximum resolution.<wbr/></p> 13669 </td> 13670 13671 <td class="entry_tags"> 13672 </td> 13673 13674 </tr> 13675 13676 13677 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13678 <!-- end of entry --> 13679 13680 13681 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> 13682 <td class="entry_name 13683 " rowspan="5"> 13684 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 13685 </td> 13686 <td class="entry_type"> 13687 <span class="entry_type_name">int32</span> 13688 <span class="entry_type_container">x</span> 13689 13690 <span class="entry_type_array"> 13691 n 13692 </span> 13693 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 13694 13695 13696 13697 13698 13699 </td> <!-- entry_type --> 13700 13701 <td class="entry_description"> 13702 <p>The mapping of image formats that are supported by this 13703camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 13704 </td> 13705 13706 <td class="entry_units"> 13707 </td> 13708 13709 <td class="entry_range"> 13710 </td> 13711 13712 <td class="entry_tags"> 13713 </td> 13714 13715 </tr> 13716 <tr class="entries_header"> 13717 <th class="th_details" colspan="5">Details</th> 13718 </tr> 13719 <tr class="entry_cont"> 13720 <td class="entry_details" colspan="5"> 13721 <p>All camera devices with at least 1 13722<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one 13723available input format.<wbr/></p> 13724<p>The camera device will support the following map of formats,<wbr/> 13725if its dependent capability is supported:</p> 13726<table> 13727<thead> 13728<tr> 13729<th align="left">Input Format</th> 13730<th align="left">Output Format</th> 13731<th align="left">Capability</th> 13732</tr> 13733</thead> 13734<tbody> 13735<tr> 13736<td align="left">RAW_<wbr/>OPAQUE</td> 13737<td align="left">JPEG</td> 13738<td align="left">ZSL</td> 13739</tr> 13740<tr> 13741<td align="left">RAW_<wbr/>OPAQUE</td> 13742<td align="left">YUV_<wbr/>420_<wbr/>888</td> 13743<td align="left">ZSL</td> 13744</tr> 13745<tr> 13746<td align="left">RAW_<wbr/>OPAQUE</td> 13747<td align="left">RAW16</td> 13748<td align="left">DNG</td> 13749</tr> 13750<tr> 13751<td align="left">RAW16</td> 13752<td align="left">YUV_<wbr/>420_<wbr/>888</td> 13753<td align="left">DNG</td> 13754</tr> 13755<tr> 13756<td align="left">RAW16</td> 13757<td align="left">JPEG</td> 13758<td align="left">DNG</td> 13759</tr> 13760</tbody> 13761</table> 13762<p>For ZSL-capable camera devices,<wbr/> using the RAW_<wbr/>OPAQUE format 13763as either input or output will never hurt maximum frame rate (i.<wbr/>e.<wbr/> 13764Stream<wbr/>Configuration<wbr/>Map#get<wbr/>Output<wbr/>Stall<wbr/>Duration(int,<wbr/>Size) 13765for a <code>format =</code> RAW_<wbr/>OPAQUE is always 0).<wbr/></p> 13766<p>Attempting to configure an input stream with output streams not 13767listed as available in this map is not valid.<wbr/></p> 13768<p>TODO: typedef to ReprocessFormatMap</p> 13769 </td> 13770 </tr> 13771 13772 <tr class="entries_header"> 13773 <th class="th_details" colspan="5">HAL Implementation Details</th> 13774 </tr> 13775 <tr class="entry_cont"> 13776 <td class="entry_details" colspan="5"> 13777 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition 13778of the image format enumerations.<wbr/></p> 13779<p>This value is encoded as a variable-size array-of-arrays.<wbr/> 13780The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where 13781<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another 13782inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> 13783<p>A code sample to read/<wbr/>write this encoding (with a device that 13784supports reprocessing RAW_<wbr/>OPAQUE to RAW16,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 13785and reprocessing RAW16 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 13786<pre><code>//<wbr/> reading 13787int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 13788for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { 13789 int32_<wbr/>t format = contents[i++]; 13790 int32_<wbr/>t length = contents[i++]; 13791 int32_<wbr/>t output_<wbr/>formats[length]; 13792 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> 13793 length * sizeof(int32_<wbr/>t)); 13794 i += length; 13795} 13796 13797//<wbr/> writing (static example,<wbr/> DNG+ZSL) 13798int32_<wbr/>t[] contents = { 13799 RAW_<wbr/>OPAQUE,<wbr/> 3,<wbr/> RAW16,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 13800 RAW16,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 13801}; 13802update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> 13803 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); 13804</code></pre> 13805<p>If the HAL claims to support any of the capabilities listed in the 13806above details,<wbr/> then it must also support all the input-output 13807combinations listed for that capability.<wbr/> It can optionally support 13808additional formats if it so chooses.<wbr/></p> 13809<p>Refer to <a href="#static_android.scaler.availableFormats">android.<wbr/>scaler.<wbr/>available<wbr/>Formats</a> for the enum values 13810which correspond to HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 13811system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 13812 </td> 13813 </tr> 13814 13815 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13816 <!-- end of entry --> 13817 13818 13819 <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> 13820 <td class="entry_name 13821 " rowspan="5"> 13822 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations 13823 </td> 13824 <td class="entry_type"> 13825 <span class="entry_type_name entry_type_name_enum">int32</span> 13826 <span class="entry_type_container">x</span> 13827 13828 <span class="entry_type_array"> 13829 n x 4 13830 </span> 13831 <span class="entry_type_visibility"> [hidden as streamConfiguration]</span> 13832 13833 13834 13835 13836 <ul class="entry_type_enum"> 13837 <li> 13838 <span class="entry_type_enum_name">OUTPUT</span> 13839 </li> 13840 <li> 13841 <span class="entry_type_enum_name">INPUT</span> 13842 </li> 13843 </ul> 13844 13845 </td> <!-- entry_type --> 13846 13847 <td class="entry_description"> 13848 <p>The available stream configurations that this 13849camera device supports 13850(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 13851 </td> 13852 13853 <td class="entry_units"> 13854 </td> 13855 13856 <td class="entry_range"> 13857 </td> 13858 13859 <td class="entry_tags"> 13860 </td> 13861 13862 </tr> 13863 <tr class="entries_header"> 13864 <th class="th_details" colspan="5">Details</th> 13865 </tr> 13866 <tr class="entry_cont"> 13867 <td class="entry_details" colspan="5"> 13868 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> 13869tuples.<wbr/></p> 13870<p>For a given use case,<wbr/> the actual maximum supported resolution 13871may be lower than what is listed here,<wbr/> depending on the destination 13872Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 13873the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 13874smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 13875can provide.<wbr/></p> 13876<p>Please reference the documentation for the image data destination to 13877check if it limits the maximum size for image data.<wbr/></p> 13878<p>Not all output formats may be supported in a configuration with 13879an input stream of a particular format.<wbr/> For more details,<wbr/> see 13880<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 13881<p>The following table describes the minimum required output stream 13882configurations based on the hardware level 13883(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 13884<table> 13885<thead> 13886<tr> 13887<th align="center">Format</th> 13888<th align="center">Size</th> 13889<th align="center">Hardware Level</th> 13890<th align="center">Notes</th> 13891</tr> 13892</thead> 13893<tbody> 13894<tr> 13895<td align="center">JPEG</td> 13896<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 13897<td align="center">Any</td> 13898<td align="center"></td> 13899</tr> 13900<tr> 13901<td align="center">JPEG</td> 13902<td align="center">1920x1080 (1080p)</td> 13903<td align="center">Any</td> 13904<td align="center">if 1080p <= activeArraySize</td> 13905</tr> 13906<tr> 13907<td align="center">JPEG</td> 13908<td align="center">1280x720 (720)</td> 13909<td align="center">Any</td> 13910<td align="center">if 720p <= activeArraySize</td> 13911</tr> 13912<tr> 13913<td align="center">JPEG</td> 13914<td align="center">640x480 (480p)</td> 13915<td align="center">Any</td> 13916<td align="center">if 480p <= activeArraySize</td> 13917</tr> 13918<tr> 13919<td align="center">JPEG</td> 13920<td align="center">320x240 (240p)</td> 13921<td align="center">Any</td> 13922<td align="center">if 240p <= activeArraySize</td> 13923</tr> 13924<tr> 13925<td align="center">YUV_<wbr/>420_<wbr/>888</td> 13926<td align="center">all output sizes available for JPEG</td> 13927<td align="center">FULL</td> 13928<td align="center"></td> 13929</tr> 13930<tr> 13931<td align="center">YUV_<wbr/>420_<wbr/>888</td> 13932<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 13933<td align="center">LIMITED</td> 13934<td align="center"></td> 13935</tr> 13936<tr> 13937<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 13938<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 13939<td align="center">Any</td> 13940<td align="center"></td> 13941</tr> 13942</tbody> 13943</table> 13944<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 13945mandatory stream configurations on a per-capability basis.<wbr/></p> 13946 </td> 13947 </tr> 13948 13949 <tr class="entries_header"> 13950 <th class="th_details" colspan="5">HAL Implementation Details</th> 13951 </tr> 13952 <tr class="entry_cont"> 13953 <td class="entry_details" colspan="5"> 13954 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 13955of sensor maximum resolution for JPEG formats (regardless of hardware 13956level).<wbr/></p> 13957<p>(The following is a rewording of the above required table):</p> 13958<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 13959<ul> 13960<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 13961(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 13962(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/> 13963it does not have to be included in the supported JPEG sizes.<wbr/></li> 13964<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 13965the dimensions being a multiple of 16.<wbr/></li> 13966</ul> 13967<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 13968However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum 13969resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 13970additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 13971if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 13972ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 139733264x2448.<wbr/></p> 13974<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/> 13975the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 13976here as output streams.<wbr/></p> 13977<p>It must also include each below resolution if it is smaller than or 13978equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 13979formats),<wbr/> as output streams:</p> 13980<ul> 13981<li>240p (320 x 240)</li> 13982<li>480p (640 x 480)</li> 13983<li>720p (1280 x 720)</li> 13984<li>1080p (1920 x 1080)</li> 13985</ul> 13986<p>For LIMITED capability devices 13987(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 13988the HAL only has to list up to the maximum video size 13989supported by the device.<wbr/></p> 13990<p>Regardless of hardware level,<wbr/> every output resolution available for 13991YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 13992<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 13993<ul> 13994<li>availableFormats</li> 13995<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 13996</ul> 13997 </td> 13998 </tr> 13999 14000 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14001 <!-- end of entry --> 14002 14003 14004 <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> 14005 <td class="entry_name 14006 " rowspan="3"> 14007 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations 14008 </td> 14009 <td class="entry_type"> 14010 <span class="entry_type_name">int64</span> 14011 <span class="entry_type_container">x</span> 14012 14013 <span class="entry_type_array"> 14014 4 x n 14015 </span> 14016 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 14017 14018 14019 14020 14021 14022 </td> <!-- entry_type --> 14023 14024 <td class="entry_description"> 14025 <p>This lists the minimum frame duration for each 14026format/<wbr/>size combination.<wbr/></p> 14027 </td> 14028 14029 <td class="entry_units"> 14030 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 14031 </td> 14032 14033 <td class="entry_range"> 14034 </td> 14035 14036 <td class="entry_tags"> 14037 <ul class="entry_tags"> 14038 <li><a href="#tag_V1">V1</a></li> 14039 </ul> 14040 </td> 14041 14042 </tr> 14043 <tr class="entries_header"> 14044 <th class="th_details" colspan="5">Details</th> 14045 </tr> 14046 <tr class="entry_cont"> 14047 <td class="entry_details" colspan="5"> 14048 <p>This should correspond to the frame duration when only that 14049stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 14050set to either OFF or FAST.<wbr/></p> 14051<p>When multiple streams are used in a request,<wbr/> the minimum frame 14052duration will be max(individual stream min durations).<wbr/></p> 14053<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 14054is the same regardless of whether the stream is input or output.<wbr/></p> 14055<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 14056<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 14057calculating the max frame rate.<wbr/></p> 14058<p>(Keep in sync with 14059StreamConfigurationMap#getOutputMinFrameDuration)</p> 14060 </td> 14061 </tr> 14062 14063 14064 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14065 <!-- end of entry --> 14066 14067 14068 <tr class="entry" id="static_android.scaler.availableStallDurations"> 14069 <td class="entry_name 14070 " rowspan="5"> 14071 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations 14072 </td> 14073 <td class="entry_type"> 14074 <span class="entry_type_name">int64</span> 14075 <span class="entry_type_container">x</span> 14076 14077 <span class="entry_type_array"> 14078 4 x n 14079 </span> 14080 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 14081 14082 14083 14084 14085 14086 </td> <!-- entry_type --> 14087 14088 <td class="entry_description"> 14089 <p>This lists the maximum stall duration for each 14090format/<wbr/>size combination.<wbr/></p> 14091 </td> 14092 14093 <td class="entry_units"> 14094 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 14095 </td> 14096 14097 <td class="entry_range"> 14098 </td> 14099 14100 <td class="entry_tags"> 14101 <ul class="entry_tags"> 14102 <li><a href="#tag_V1">V1</a></li> 14103 </ul> 14104 </td> 14105 14106 </tr> 14107 <tr class="entries_header"> 14108 <th class="th_details" colspan="5">Details</th> 14109 </tr> 14110 <tr class="entry_cont"> 14111 <td class="entry_details" colspan="5"> 14112 <p>A stall duration is how much extra time would get added 14113to the normal minimum frame duration for a repeating request 14114that has streams with non-zero stall.<wbr/></p> 14115<p>For example,<wbr/> consider JPEG captures which have the following 14116characteristics:</p> 14117<ul> 14118<li>JPEG streams act like processed YUV streams in requests for which 14119they are not included; in requests in which they are directly 14120referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 14121JPEG stream requires the underlying YUV data to always be ready for 14122use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 14123frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 14124<li>The JPEG processor can run concurrently to the rest of the camera 14125pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 14126</ul> 14127<p>In other words,<wbr/> using a repeating YUV request would result 14128in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 14129JPEG request is submitted periodically,<wbr/> the frame rate will stay 14130at 30 FPS (as long as we wait for the previous JPEG to return each 14131time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 14132the frame rate will drop from 30 FPS.<wbr/></p> 14133<p>In general,<wbr/> submitting a new request with a non-0 stall time 14134stream will <em>not</em> cause a frame rate drop unless there are still 14135outstanding buffers for that stream from previous requests.<wbr/></p> 14136<p>Submitting a repeating request with streams (call this <code>S</code>) 14137is the same as setting the minimum frame duration from 14138the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 14139the maximum stall duration for <code>S</code>.<wbr/></p> 14140<p>If interleaving requests with and without a stall duration,<wbr/> 14141a request will stall by the maximum of the remaining times 14142for each can-stall stream with outstanding buffers.<wbr/></p> 14143<p>This means that a stalling request will not have an exposure start 14144until the stall has completed.<wbr/></p> 14145<p>This should correspond to the stall duration when only that stream is 14146active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 14147or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 14148effectively results in an indeterminate stall duration for all 14149streams in a request (the regular stall calculation rules are 14150ignored).<wbr/></p> 14151<p>The following formats may always have a stall duration:</p> 14152<ul> 14153<li>JPEG</li> 14154<li>RAW16</li> 14155</ul> 14156<p>The following formats will never have a stall duration:</p> 14157<ul> 14158<li>YUV_<wbr/>420_<wbr/>888</li> 14159<li>IMPLEMENTATION_<wbr/>DEFINED</li> 14160</ul> 14161<p>All other formats may or may not have an allowed stall duration on 14162a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 14163for more details.<wbr/></p> 14164<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about 14165calculating the max frame rate (absent stalls).<wbr/></p> 14166<p>(Keep up to date with 14167StreamConfigurationMap#getOutputStallDuration(int,<wbr/> Size) )</p> 14168 </td> 14169 </tr> 14170 14171 <tr class="entries_header"> 14172 <th class="th_details" colspan="5">HAL Implementation Details</th> 14173 </tr> 14174 <tr class="entry_cont"> 14175 <td class="entry_details" colspan="5"> 14176 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 14177(such as RAW16) should not have a stall duration.<wbr/></p> 14178 </td> 14179 </tr> 14180 14181 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14182 <!-- end of entry --> 14183 14184 14185 <tr class="entry" id="static_android.scaler.streamConfigurationMap"> 14186 <td class="entry_name 14187 " rowspan="5"> 14188 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map 14189 </td> 14190 <td class="entry_type"> 14191 <span class="entry_type_name">int32</span> 14192 14193 <span class="entry_type_visibility"> [public as streamConfigurationMap]</span> 14194 14195 <span class="entry_type_synthetic">[synthetic] </span> 14196 14197 14198 14199 14200 </td> <!-- entry_type --> 14201 14202 <td class="entry_description"> 14203 <p>The available stream configurations that this 14204camera device supports; also includes the minimum frame durations 14205and the stall durations for each format/<wbr/>size combination.<wbr/></p> 14206 </td> 14207 14208 <td class="entry_units"> 14209 </td> 14210 14211 <td class="entry_range"> 14212 </td> 14213 14214 <td class="entry_tags"> 14215 </td> 14216 14217 </tr> 14218 <tr class="entries_header"> 14219 <th class="th_details" colspan="5">Details</th> 14220 </tr> 14221 <tr class="entry_cont"> 14222 <td class="entry_details" colspan="5"> 14223 <p>All camera devices will support sensor maximum resolution (defined by 14224<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> 14225<p>For a given use case,<wbr/> the actual maximum supported resolution 14226may be lower than what is listed here,<wbr/> depending on the destination 14227Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 14228the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 14229smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 14230can provide.<wbr/></p> 14231<p>Please reference the documentation for the image data destination to 14232check if it limits the maximum size for image data.<wbr/></p> 14233<p>The following table describes the minimum required output stream 14234configurations based on the hardware level 14235(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 14236<table> 14237<thead> 14238<tr> 14239<th align="center">Format</th> 14240<th align="center">Size</th> 14241<th align="center">Hardware Level</th> 14242<th align="center">Notes</th> 14243</tr> 14244</thead> 14245<tbody> 14246<tr> 14247<td align="center">JPEG</td> 14248<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 14249<td align="center">Any</td> 14250<td align="center"></td> 14251</tr> 14252<tr> 14253<td align="center">JPEG</td> 14254<td align="center">1920x1080 (1080p)</td> 14255<td align="center">Any</td> 14256<td align="center">if 1080p <= activeArraySize</td> 14257</tr> 14258<tr> 14259<td align="center">JPEG</td> 14260<td align="center">1280x720 (720)</td> 14261<td align="center">Any</td> 14262<td align="center">if 720p <= activeArraySize</td> 14263</tr> 14264<tr> 14265<td align="center">JPEG</td> 14266<td align="center">640x480 (480p)</td> 14267<td align="center">Any</td> 14268<td align="center">if 480p <= activeArraySize</td> 14269</tr> 14270<tr> 14271<td align="center">JPEG</td> 14272<td align="center">320x240 (240p)</td> 14273<td align="center">Any</td> 14274<td align="center">if 240p <= activeArraySize</td> 14275</tr> 14276<tr> 14277<td align="center">YUV_<wbr/>420_<wbr/>888</td> 14278<td align="center">all output sizes available for JPEG</td> 14279<td align="center">FULL</td> 14280<td align="center"></td> 14281</tr> 14282<tr> 14283<td align="center">YUV_<wbr/>420_<wbr/>888</td> 14284<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 14285<td align="center">LIMITED</td> 14286<td align="center"></td> 14287</tr> 14288<tr> 14289<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 14290<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 14291<td align="center">Any</td> 14292<td align="center"></td> 14293</tr> 14294</tbody> 14295</table> 14296<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 14297mandatory stream configurations on a per-capability basis.<wbr/></p> 14298 </td> 14299 </tr> 14300 14301 <tr class="entries_header"> 14302 <th class="th_details" colspan="5">HAL Implementation Details</th> 14303 </tr> 14304 <tr class="entry_cont"> 14305 <td class="entry_details" colspan="5"> 14306 <p>Do not set this property directly 14307(it is synthetic and will not be available at the HAL layer); 14308set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p> 14309<p>Not all output formats may be supported in a configuration with 14310an input stream of a particular format.<wbr/> For more details,<wbr/> see 14311<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 14312<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 14313of sensor maximum resolution for JPEG formats (regardless of hardware 14314level).<wbr/></p> 14315<p>(The following is a rewording of the above required table):</p> 14316<p>The HAL must include sensor maximum resolution (defined by 14317<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 14318<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/> 14319the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 14320here as output streams.<wbr/></p> 14321<p>It must also include each below resolution if it is smaller than or 14322equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 14323formats),<wbr/> as output streams:</p> 14324<ul> 14325<li>240p (320 x 240)</li> 14326<li>480p (640 x 480)</li> 14327<li>720p (1280 x 720)</li> 14328<li>1080p (1920 x 1080)</li> 14329</ul> 14330<p>For LIMITED capability devices 14331(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 14332the HAL only has to list up to the maximum video size 14333supported by the device.<wbr/></p> 14334<p>Regardless of hardware level,<wbr/> every output resolution available for 14335YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 14336<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 14337<ul> 14338<li>availableFormats</li> 14339<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 14340</ul> 14341 </td> 14342 </tr> 14343 14344 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14345 <!-- end of entry --> 14346 14347 14348 <tr class="entry" id="static_android.scaler.croppingType"> 14349 <td class="entry_name 14350 " rowspan="3"> 14351 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type 14352 </td> 14353 <td class="entry_type"> 14354 <span class="entry_type_name entry_type_name_enum">byte</span> 14355 14356 <span class="entry_type_visibility"> [public]</span> 14357 14358 14359 14360 14361 <ul class="entry_type_enum"> 14362 <li> 14363 <span class="entry_type_enum_name">CENTER_ONLY</span> 14364 <span class="entry_type_enum_notes"><p>The camera device will only support centered crop regions.<wbr/></p></span> 14365 </li> 14366 <li> 14367 <span class="entry_type_enum_name">FREEFORM</span> 14368 <span class="entry_type_enum_notes"><p>The camera device will support arbitrarily chosen crop regions.<wbr/></p></span> 14369 </li> 14370 </ul> 14371 14372 </td> <!-- entry_type --> 14373 14374 <td class="entry_description"> 14375 <p>The crop type that this camera device supports.<wbr/></p> 14376 </td> 14377 14378 <td class="entry_units"> 14379 </td> 14380 14381 <td class="entry_range"> 14382 </td> 14383 14384 <td class="entry_tags"> 14385 </td> 14386 14387 </tr> 14388 <tr class="entries_header"> 14389 <th class="th_details" colspan="5">Details</th> 14390 </tr> 14391 <tr class="entry_cont"> 14392 <td class="entry_details" colspan="5"> 14393 <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 14394device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the 14395crop 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>) 14396and keep the crop region width and height unchanged.<wbr/> The camera device will return the 14397final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 14398<p>Camera devices that support FREEFORM cropping will support any crop region that 14399is inside of the active array.<wbr/> The camera device will apply the same crop region and 14400return 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> 14401<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 14402FREEFORM cropping.<wbr/></p> 14403 </td> 14404 </tr> 14405 14406 14407 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14408 <!-- end of entry --> 14409 14410 14411 14412 <!-- end of kind --> 14413 </tbody> 14414 <tr><td colspan="6" class="kind">dynamic</td></tr> 14415 14416 <thead class="entries_header"> 14417 <tr> 14418 <th class="th_name">Property Name</th> 14419 <th class="th_type">Type</th> 14420 <th class="th_description">Description</th> 14421 <th class="th_units">Units</th> 14422 <th class="th_range">Range</th> 14423 <th class="th_tags">Tags</th> 14424 </tr> 14425 </thead> 14426 14427 <tbody> 14428 14429 14430 14431 14432 14433 14434 14435 14436 14437 14438 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 14439 <td class="entry_name 14440 " rowspan="3"> 14441 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 14442 </td> 14443 <td class="entry_type"> 14444 <span class="entry_type_name">int32</span> 14445 <span class="entry_type_container">x</span> 14446 14447 <span class="entry_type_array"> 14448 4 14449 </span> 14450 <span class="entry_type_visibility"> [public as rectangle]</span> 14451 14452 14453 14454 14455 14456 </td> <!-- entry_type --> 14457 14458 <td class="entry_description"> 14459 <p>(x,<wbr/> y,<wbr/> width,<wbr/> height).<wbr/></p> 14460<p>A rectangle with the top-level corner of (x,<wbr/>y) and size 14461(width,<wbr/> height).<wbr/> The region of the sensor that is used for 14462output.<wbr/> Each stream must use this rectangle to produce its 14463output,<wbr/> cropping to a smaller region if necessary to 14464maintain the stream's aspect ratio.<wbr/></p> 14465<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 14466 </td> 14467 14468 <td class="entry_units"> 14469 (x,<wbr/>y) of top-left corner,<wbr/> width and height of region 14470 in pixels; (0,<wbr/>0) is top-left corner of 14471 android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size 14472 </td> 14473 14474 <td class="entry_range"> 14475 </td> 14476 14477 <td class="entry_tags"> 14478 <ul class="entry_tags"> 14479 <li><a href="#tag_BC">BC</a></li> 14480 </ul> 14481 </td> 14482 14483 </tr> 14484 <tr class="entries_header"> 14485 <th class="th_details" colspan="5">Details</th> 14486 </tr> 14487 <tr class="entry_cont"> 14488 <td class="entry_details" colspan="5"> 14489 <p>The crop region is applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV) 14490conversion.<wbr/> Since raw streams (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> 14491it is not croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 14492<p>For non-raw streams,<wbr/> any additional per-stream cropping will 14493be done to maximize the final pixel area of the stream.<wbr/></p> 14494<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 14495ratio,<wbr/> then 4:3 streams should use the exact crop 14496region.<wbr/> 16:9 streams should further crop vertically 14497(letterbox).<wbr/></p> 14498<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 14499outputs should crop horizontally (pillarbox),<wbr/> and 16:9 14500streams should match exactly.<wbr/> These additional crops must 14501be centered within the crop region.<wbr/></p> 14502<p>The output streams must maintain square pixels at all 14503times,<wbr/> no matter what the relative aspect ratios of the 14504crop region and the stream are.<wbr/> Negative values for 14505corner are allowed for raw output if full pixel array is 14506larger than active pixel array.<wbr/> Width and height may be 14507rounded to nearest larger supportable width,<wbr/> especially 14508for raw output,<wbr/> where only a few fixed scales may be 14509possible.<wbr/> The width and height of the crop region cannot 14510be set to be smaller than floor( activeArraySize.<wbr/>width /<wbr/> 14511<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> ) and floor( 14512activeArraySize.<wbr/>height /<wbr/> 14513<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>),<wbr/> respectively.<wbr/></p> 14514 </td> 14515 </tr> 14516 14517 14518 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14519 <!-- end of entry --> 14520 14521 14522 14523 <!-- end of kind --> 14524 </tbody> 14525 14526 <!-- end of section --> 14527 <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr> 14528 14529 14530 <tr><td colspan="6" class="kind">controls</td></tr> 14531 14532 <thead class="entries_header"> 14533 <tr> 14534 <th class="th_name">Property Name</th> 14535 <th class="th_type">Type</th> 14536 <th class="th_description">Description</th> 14537 <th class="th_units">Units</th> 14538 <th class="th_range">Range</th> 14539 <th class="th_tags">Tags</th> 14540 </tr> 14541 </thead> 14542 14543 <tbody> 14544 14545 14546 14547 14548 14549 14550 14551 14552 14553 14554 <tr class="entry" id="controls_android.sensor.exposureTime"> 14555 <td class="entry_name 14556 " rowspan="3"> 14557 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 14558 </td> 14559 <td class="entry_type"> 14560 <span class="entry_type_name">int64</span> 14561 14562 <span class="entry_type_visibility"> [public]</span> 14563 14564 14565 14566 14567 14568 </td> <!-- entry_type --> 14569 14570 <td class="entry_description"> 14571 <p>Duration each pixel is exposed to 14572light.<wbr/></p> 14573 </td> 14574 14575 <td class="entry_units"> 14576 nanoseconds 14577 </td> 14578 14579 <td class="entry_range"> 14580 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 14581 </td> 14582 14583 <td class="entry_tags"> 14584 <ul class="entry_tags"> 14585 <li><a href="#tag_V1">V1</a></li> 14586 </ul> 14587 </td> 14588 14589 </tr> 14590 <tr class="entries_header"> 14591 <th class="th_details" colspan="5">Details</th> 14592 </tr> 14593 <tr class="entry_cont"> 14594 <td class="entry_details" colspan="5"> 14595 <p>If the sensor can't expose this exact duration,<wbr/> it should shorten the 14596duration exposed to the nearest possible value (rather than expose longer).<wbr/></p> 14597 </td> 14598 </tr> 14599 14600 14601 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14602 <!-- end of entry --> 14603 14604 14605 <tr class="entry" id="controls_android.sensor.frameDuration"> 14606 <td class="entry_name 14607 " rowspan="5"> 14608 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 14609 </td> 14610 <td class="entry_type"> 14611 <span class="entry_type_name">int64</span> 14612 14613 <span class="entry_type_visibility"> [public]</span> 14614 14615 14616 14617 14618 14619 </td> <!-- entry_type --> 14620 14621 <td class="entry_description"> 14622 <p>Duration from start of frame exposure to 14623start of next frame exposure.<wbr/></p> 14624 </td> 14625 14626 <td class="entry_units"> 14627 nanoseconds 14628 </td> 14629 14630 <td class="entry_range"> 14631 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 14632<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 14633is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 14634 </td> 14635 14636 <td class="entry_tags"> 14637 <ul class="entry_tags"> 14638 <li><a href="#tag_V1">V1</a></li> 14639 </ul> 14640 </td> 14641 14642 </tr> 14643 <tr class="entries_header"> 14644 <th class="th_details" colspan="5">Details</th> 14645 </tr> 14646 <tr class="entry_cont"> 14647 <td class="entry_details" colspan="5"> 14648 <p>The maximum frame rate that can be supported by a camera subsystem is 14649a function of many factors:</p> 14650<ul> 14651<li>Requested resolutions of output image streams</li> 14652<li>Availability of binning /<wbr/> skipping modes on the imager</li> 14653<li>The bandwidth of the imager interface</li> 14654<li>The bandwidth of the various ISP processing blocks</li> 14655</ul> 14656<p>Since these factors can vary greatly between different ISPs and 14657sensors,<wbr/> the camera abstraction tries to represent the bandwidth 14658restrictions with as simple a model as possible.<wbr/></p> 14659<p>The model presented has the following characteristics:</p> 14660<ul> 14661<li>The image sensor is always configured to output the smallest 14662resolution possible given the application's requested output stream 14663sizes.<wbr/> The smallest resolution is defined as being at least as large 14664as the largest requested output stream size; the camera pipeline must 14665never digitally upsample sensor data when the crop region covers the 14666whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 14667resolutions are configured,<wbr/> the sensor can provide a higher frame 14668rate.<wbr/></li> 14669<li>Since any request may use any or all the currently configured 14670output streams,<wbr/> the sensor and ISP must be configured to support 14671scaling a single capture to all the streams at the same time.<wbr/> This 14672means the camera pipeline must be ready to produce the largest 14673requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 14674frame rate of a given configured stream set is governed only by the 14675largest requested stream resolution.<wbr/></li> 14676<li>Using more than one output stream in a request does not affect the 14677frame duration.<wbr/></li> 14678<li>Certain format-streams may need to do additional background processing 14679before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 14680can run concurrently to the rest of the camera pipeline,<wbr/> but 14681cannot process more than 1 capture at a time.<wbr/></li> 14682</ul> 14683<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 14684is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field 14685using StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/> 14686These are used to determine the maximum frame rate /<wbr/> minimum frame 14687duration that is possible for a given stream configuration.<wbr/></p> 14688<p>Specifically,<wbr/> the application can use the following rules to 14689determine the minimum frame duration it can request from the camera 14690device:</p> 14691<ol> 14692<li>Let the set of currently configured input/<wbr/>output streams 14693be called <code>S</code>.<wbr/></li> 14694<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by 14695looking it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using 14696StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size) (with 14697its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called 14698<code>F</code>.<wbr/></li> 14699<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 14700for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 14701used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 14702</ol> 14703<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in 14704StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size) using its 14705respective size/<wbr/>format),<wbr/> then the frame duration in 14706<code>F</code> determines the steady state frame rate that the application will 14707get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind 14708of request be called <code>Rsimple</code>.<wbr/></p> 14709<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 14710by a single capture of a new request <code>Rstall</code> (which has at least 14711one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 14712same minimum frame duration this will not cause a frame rate loss 14713if all buffers from the previous <code>Rstall</code> have already been 14714delivered.<wbr/></p> 14715<p>For more details about stalling,<wbr/> see 14716StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size).<wbr/></p> 14717 </td> 14718 </tr> 14719 14720 <tr class="entries_header"> 14721 <th class="th_details" colspan="5">HAL Implementation Details</th> 14722 </tr> 14723 <tr class="entry_cont"> 14724 <td class="entry_details" colspan="5"> 14725 <p>For more details about stalling,<wbr/> see 14726<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 14727 </td> 14728 </tr> 14729 14730 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14731 <!-- end of entry --> 14732 14733 14734 <tr class="entry" id="controls_android.sensor.sensitivity"> 14735 <td class="entry_name 14736 " rowspan="3"> 14737 android.<wbr/>sensor.<wbr/>sensitivity 14738 </td> 14739 <td class="entry_type"> 14740 <span class="entry_type_name">int32</span> 14741 14742 <span class="entry_type_visibility"> [public]</span> 14743 14744 14745 14746 14747 14748 </td> <!-- entry_type --> 14749 14750 <td class="entry_description"> 14751 <p>Gain applied to image data.<wbr/> Must be 14752implemented through analog gain only if set to values 14753below 'maximum analog sensitivity'.<wbr/></p> 14754<p>If the sensor can't apply this exact gain,<wbr/> it should lessen the 14755gain to the nearest possible value (rather than gain more).<wbr/></p> 14756 </td> 14757 14758 <td class="entry_units"> 14759 ISO arithmetic units 14760 </td> 14761 14762 <td class="entry_range"> 14763 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 14764 </td> 14765 14766 <td class="entry_tags"> 14767 <ul class="entry_tags"> 14768 <li><a href="#tag_V1">V1</a></li> 14769 </ul> 14770 </td> 14771 14772 </tr> 14773 <tr class="entries_header"> 14774 <th class="th_details" colspan="5">Details</th> 14775 </tr> 14776 <tr class="entry_cont"> 14777 <td class="entry_details" colspan="5"> 14778 <p>ISO 12232:2006 REI method</p> 14779 </td> 14780 </tr> 14781 14782 14783 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14784 <!-- end of entry --> 14785 14786 14787 <tr class="entry" id="controls_android.sensor.testPatternData"> 14788 <td class="entry_name 14789 " rowspan="5"> 14790 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 14791 </td> 14792 <td class="entry_type"> 14793 <span class="entry_type_name">int32</span> 14794 <span class="entry_type_container">x</span> 14795 14796 <span class="entry_type_array"> 14797 4 14798 </span> 14799 <span class="entry_type_visibility"> [public]</span> 14800 14801 14802 14803 14804 14805 </td> <!-- entry_type --> 14806 14807 <td class="entry_description"> 14808 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 14809when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 14810 </td> 14811 14812 <td class="entry_units"> 14813 </td> 14814 14815 <td class="entry_range"> 14816 <p>Optional.<wbr/> 14817Must be supported if <a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a> contains 14818SOLID_<wbr/>COLOR.<wbr/></p> 14819 </td> 14820 14821 <td class="entry_tags"> 14822 </td> 14823 14824 </tr> 14825 <tr class="entries_header"> 14826 <th class="th_details" colspan="5">Details</th> 14827 </tr> 14828 <tr class="entry_cont"> 14829 <td class="entry_details" colspan="5"> 14830 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 14831The camera device then uses the most significant X bits 14832that correspond to how many bits are in its Bayer raw sensor 14833output.<wbr/></p> 14834<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 1483510 most significant bits from each color channel.<wbr/></p> 14836 </td> 14837 </tr> 14838 14839 <tr class="entries_header"> 14840 <th class="th_details" colspan="5">HAL Implementation Details</th> 14841 </tr> 14842 <tr class="entry_cont"> 14843 <td class="entry_details" colspan="5"> 14844 14845 </td> 14846 </tr> 14847 14848 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14849 <!-- end of entry --> 14850 14851 14852 <tr class="entry" id="controls_android.sensor.testPatternMode"> 14853 <td class="entry_name 14854 " rowspan="5"> 14855 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 14856 </td> 14857 <td class="entry_type"> 14858 <span class="entry_type_name entry_type_name_enum">int32</span> 14859 14860 <span class="entry_type_visibility"> [public]</span> 14861 14862 14863 14864 14865 <ul class="entry_type_enum"> 14866 <li> 14867 <span class="entry_type_enum_name">OFF</span> 14868 <span class="entry_type_enum_notes"><p>Default.<wbr/> No test pattern mode is used,<wbr/> and the camera 14869device returns captures from the image sensor.<wbr/></p></span> 14870 </li> 14871 <li> 14872 <span class="entry_type_enum_name">SOLID_COLOR</span> 14873 <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 14874respective color channel provided in 14875<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 14876<p>For example:</p> 14877<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 14878</code></pre> 14879<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 14880<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 14881</code></pre> 14882<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 14883are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 14884 </li> 14885 <li> 14886 <span class="entry_type_enum_name">COLOR_BARS</span> 14887 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 14888<p>The vertical bars (left-to-right) are as follows:</p> 14889<ul> 14890<li>100% white</li> 14891<li>yellow</li> 14892<li>cyan</li> 14893<li>green</li> 14894<li>magenta</li> 14895<li>red</li> 14896<li>blue</li> 14897<li>black</li> 14898</ul> 14899<p>In general the image would look like the following:</p> 14900<pre><code>W Y C G M R B K 14901W Y C G M R B K 14902W Y C G M R B K 14903W Y C G M R B K 14904W Y C G M R B K 14905.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 14906.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 14907.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 14908 14909(B = Blue,<wbr/> K = Black) 14910</code></pre> 14911<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 14912When this is not possible,<wbr/> the bar size should be rounded 14913down to the nearest integer and the pattern can repeat 14914on the right side.<wbr/></p> 14915<p>Each bar's height must always take up the full sensor 14916pixel array height.<wbr/></p> 14917<p>Each pixel in this test pattern must be set to either 149180% intensity or 100% intensity.<wbr/></p></span> 14919 </li> 14920 <li> 14921 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 14922 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 14923each bar should start at its specified color at the top,<wbr/> 14924and fade to gray at the bottom.<wbr/></p> 14925<p>Furthermore each bar is further subdivided into a left and 14926right half.<wbr/> The left half should have a smooth gradient,<wbr/> 14927and the right half should have a quantized gradient.<wbr/></p> 14928<p>In particular,<wbr/> the right half's should consist of blocks of the 14929same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 14930<p>The least significant bits in the quantized gradient should 14931be copied from the most significant bits of the smooth gradient.<wbr/></p> 14932<p>The height of each bar should always be a multiple of 128.<wbr/> 14933When this is not the case,<wbr/> the pattern should repeat at the bottom 14934of the image.<wbr/></p></span> 14935 </li> 14936 <li> 14937 <span class="entry_type_enum_name">PN9</span> 14938 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 14939generated from a PN9 512-bit sequence (typically implemented 14940in hardware with a linear feedback shift register).<wbr/></p> 14941<p>The generator should be reset at the beginning of each frame,<wbr/> 14942and thus each subsequent raw frame with this test pattern should 14943be exactly the same as the last.<wbr/></p></span> 14944 </li> 14945 <li> 14946 <span class="entry_type_enum_name">CUSTOM1</span> 14947 <span class="entry_type_enum_value">256</span> 14948 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 14949available only on this camera device are at least this numeric 14950value.<wbr/></p> 14951<p>All of the custom test patterns will be static 14952(that is the raw image must not vary from frame to frame).<wbr/></p></span> 14953 </li> 14954 </ul> 14955 14956 </td> <!-- entry_type --> 14957 14958 <td class="entry_description"> 14959 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 14960doing a real exposure from the camera.<wbr/></p> 14961 </td> 14962 14963 <td class="entry_units"> 14964 </td> 14965 14966 <td class="entry_range"> 14967 <p>Optional.<wbr/> Defaults to OFF.<wbr/> Value must be one of 14968<a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 14969 </td> 14970 14971 <td class="entry_tags"> 14972 </td> 14973 14974 </tr> 14975 <tr class="entries_header"> 14976 <th class="th_details" colspan="5">Details</th> 14977 </tr> 14978 <tr class="entry_cont"> 14979 <td class="entry_details" colspan="5"> 14980 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 14981by android.<wbr/>sensor.<wbr/>* should be ignored.<wbr/> All other controls should 14982work as normal.<wbr/></p> 14983<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 14984occur (and that the test pattern remain unmodified,<wbr/> since the flash 14985would not actually affect it).<wbr/></p> 14986 </td> 14987 </tr> 14988 14989 <tr class="entries_header"> 14990 <th class="th_details" colspan="5">HAL Implementation Details</th> 14991 </tr> 14992 <tr class="entry_cont"> 14993 <td class="entry_details" colspan="5"> 14994 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 14995<p>The HAL may choose to substitute test patterns from the sensor 14996with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 14997indistinguishable to the ISP whether the data came from the 14998sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 14999 </td> 15000 </tr> 15001 15002 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15003 <!-- end of entry --> 15004 15005 15006 15007 <!-- end of kind --> 15008 </tbody> 15009 <tr><td colspan="6" class="kind">static</td></tr> 15010 15011 <thead class="entries_header"> 15012 <tr> 15013 <th class="th_name">Property Name</th> 15014 <th class="th_type">Type</th> 15015 <th class="th_description">Description</th> 15016 <th class="th_units">Units</th> 15017 <th class="th_range">Range</th> 15018 <th class="th_tags">Tags</th> 15019 </tr> 15020 </thead> 15021 15022 <tbody> 15023 15024 15025 15026 15027 15028 15029 15030 15031 15032 15033 15034 15035 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 15036 <td class="entry_name 15037 " rowspan="3"> 15038 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 15039 </td> 15040 <td class="entry_type"> 15041 <span class="entry_type_name">int32</span> 15042 <span class="entry_type_container">x</span> 15043 15044 <span class="entry_type_array"> 15045 4 15046 </span> 15047 <span class="entry_type_visibility"> [public as rectangle]</span> 15048 15049 15050 15051 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 15052 15053 15054 </td> <!-- entry_type --> 15055 15056 <td class="entry_description"> 15057 <p>Area of raw data which corresponds to only 15058active pixels.<wbr/></p> 15059 </td> 15060 15061 <td class="entry_units"> 15062 </td> 15063 15064 <td class="entry_range"> 15065 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 15066>= <code>(0,<wbr/>0)</code>.<wbr/> The <code>(width,<wbr/> height)</code> must be <= 15067<code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p> 15068 </td> 15069 15070 <td class="entry_tags"> 15071 <ul class="entry_tags"> 15072 <li><a href="#tag_DNG">DNG</a></li> 15073 </ul> 15074 </td> 15075 15076 </tr> 15077 <tr class="entries_header"> 15078 <th class="th_details" colspan="5">Details</th> 15079 </tr> 15080 <tr class="entry_cont"> 15081 <td class="entry_details" colspan="5"> 15082 <p>It is smaller or equal to 15083sensor full pixel array,<wbr/> which could include the black calibration pixels.<wbr/></p> 15084 </td> 15085 </tr> 15086 15087 15088 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15089 <!-- end of entry --> 15090 15091 15092 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 15093 <td class="entry_name 15094 " rowspan="1"> 15095 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 15096 </td> 15097 <td class="entry_type"> 15098 <span class="entry_type_name">int32</span> 15099 <span class="entry_type_container">x</span> 15100 15101 <span class="entry_type_array"> 15102 2 15103 </span> 15104 <span class="entry_type_visibility"> [public as rangeInt]</span> 15105 15106 15107 15108 <div class="entry_type_notes">Range of supported sensitivities</div> 15109 15110 15111 </td> <!-- entry_type --> 15112 15113 <td class="entry_description"> 15114 <p>Range of valid sensitivities</p> 15115 </td> 15116 15117 <td class="entry_units"> 15118 </td> 15119 15120 <td class="entry_range"> 15121 <p>Min <= 100,<wbr/> Max >= 1600</p> 15122 </td> 15123 15124 <td class="entry_tags"> 15125 <ul class="entry_tags"> 15126 <li><a href="#tag_BC">BC</a></li> 15127 <li><a href="#tag_V1">V1</a></li> 15128 </ul> 15129 </td> 15130 15131 </tr> 15132 15133 15134 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15135 <!-- end of entry --> 15136 15137 15138 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 15139 <td class="entry_name 15140 " rowspan="1"> 15141 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 15142 </td> 15143 <td class="entry_type"> 15144 <span class="entry_type_name entry_type_name_enum">byte</span> 15145 15146 <span class="entry_type_visibility"> [public]</span> 15147 15148 15149 15150 15151 <ul class="entry_type_enum"> 15152 <li> 15153 <span class="entry_type_enum_name">RGGB</span> 15154 </li> 15155 <li> 15156 <span class="entry_type_enum_name">GRBG</span> 15157 </li> 15158 <li> 15159 <span class="entry_type_enum_name">GBRG</span> 15160 </li> 15161 <li> 15162 <span class="entry_type_enum_name">BGGR</span> 15163 </li> 15164 <li> 15165 <span class="entry_type_enum_name">RGB</span> 15166 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 15167values for each pixel,<wbr/> instead of just 1 16-bit value 15168per pixel.<wbr/></p></span> 15169 </li> 15170 </ul> 15171 15172 </td> <!-- entry_type --> 15173 15174 <td class="entry_description"> 15175 <p>Arrangement of color filters on sensor; 15176represents the colors in the top-left 2x2 section of 15177the sensor,<wbr/> in reading order</p> 15178 </td> 15179 15180 <td class="entry_units"> 15181 </td> 15182 15183 <td class="entry_range"> 15184 </td> 15185 15186 <td class="entry_tags"> 15187 <ul class="entry_tags"> 15188 <li><a href="#tag_DNG">DNG</a></li> 15189 </ul> 15190 </td> 15191 15192 </tr> 15193 15194 15195 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15196 <!-- end of entry --> 15197 15198 15199 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 15200 <td class="entry_name 15201 " rowspan="3"> 15202 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 15203 </td> 15204 <td class="entry_type"> 15205 <span class="entry_type_name">int64</span> 15206 <span class="entry_type_container">x</span> 15207 15208 <span class="entry_type_array"> 15209 2 15210 </span> 15211 <span class="entry_type_visibility"> [public as rangeLong]</span> 15212 15213 15214 15215 <div class="entry_type_notes">nanoseconds</div> 15216 15217 15218 </td> <!-- entry_type --> 15219 15220 <td class="entry_description"> 15221 <p>Range of valid exposure 15222times used by <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>.<wbr/></p> 15223 </td> 15224 15225 <td class="entry_units"> 15226 </td> 15227 15228 <td class="entry_range"> 15229 <p>Min <= 100e3 (100 us).<wbr/> For FULL capability devices 15230(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> Max SHOULD be 15231>= 1e9 (1sec),<wbr/> MUST be >= 100e6 (100ms)</p> 15232 </td> 15233 15234 <td class="entry_tags"> 15235 <ul class="entry_tags"> 15236 <li><a href="#tag_V1">V1</a></li> 15237 </ul> 15238 </td> 15239 15240 </tr> 15241 15242 <tr class="entries_header"> 15243 <th class="th_details" colspan="5">HAL Implementation Details</th> 15244 </tr> 15245 <tr class="entry_cont"> 15246 <td class="entry_details" colspan="5"> 15247 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 15248The maximum of the range SHOULD be at least 152491 second (1e9),<wbr/> MUST be at least 100ms.<wbr/></p> 15250 </td> 15251 </tr> 15252 15253 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15254 <!-- end of entry --> 15255 15256 15257 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 15258 <td class="entry_name 15259 " rowspan="5"> 15260 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 15261 </td> 15262 <td class="entry_type"> 15263 <span class="entry_type_name">int64</span> 15264 15265 <span class="entry_type_visibility"> [public]</span> 15266 15267 15268 15269 15270 15271 </td> <!-- entry_type --> 15272 15273 <td class="entry_description"> 15274 <p>Maximum possible frame duration (minimum frame 15275rate).<wbr/></p> 15276 </td> 15277 15278 <td class="entry_units"> 15279 nanoseconds 15280 </td> 15281 15282 <td class="entry_range"> 15283 <p>For FULL capability devices 15284(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> Max SHOULD be 15285>= 1e9 (1sec),<wbr/> MUST be >= 100e6 (100ms)</p> 15286 </td> 15287 15288 <td class="entry_tags"> 15289 <ul class="entry_tags"> 15290 <li><a href="#tag_V1">V1</a></li> 15291 </ul> 15292 </td> 15293 15294 </tr> 15295 <tr class="entries_header"> 15296 <th class="th_details" colspan="5">Details</th> 15297 </tr> 15298 <tr class="entry_cont"> 15299 <td class="entry_details" colspan="5"> 15300 <p>The largest possible <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> 15301that will be accepted by the camera device.<wbr/> Attempting to use 15302frame durations beyond the maximum will result in the frame duration 15303being clipped to the maximum.<wbr/> See that control 15304for a full definition of frame durations.<wbr/></p> 15305<p>Refer to 15306StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/>Size) 15307for the minimum frame duration values.<wbr/></p> 15308 </td> 15309 </tr> 15310 15311 <tr class="entries_header"> 15312 <th class="th_details" colspan="5">HAL Implementation Details</th> 15313 </tr> 15314 <tr class="entry_cont"> 15315 <td class="entry_details" colspan="5"> 15316 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 15317The maximum of the range SHOULD be at least 153181 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> 15319<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or 15320equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 15321value (since exposure time overrides frame duration).<wbr/></p> 15322<p>Available minimum frame durations for JPEG must be no greater 15323than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 15324minimum frame durations (for that respective size).<wbr/></p> 15325<p>Since JPEG processing is considered offline and can take longer than 15326a single uncompressed capture,<wbr/> refer to 15327<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 15328for details about encoding this scenario.<wbr/></p> 15329 </td> 15330 </tr> 15331 15332 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15333 <!-- end of entry --> 15334 15335 15336 <tr class="entry" id="static_android.sensor.info.physicalSize"> 15337 <td class="entry_name 15338 " rowspan="3"> 15339 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 15340 </td> 15341 <td class="entry_type"> 15342 <span class="entry_type_name">float</span> 15343 <span class="entry_type_container">x</span> 15344 15345 <span class="entry_type_array"> 15346 2 15347 </span> 15348 <span class="entry_type_visibility"> [public as sizeF]</span> 15349 15350 15351 15352 <div class="entry_type_notes">width x height in millimeters</div> 15353 15354 15355 </td> <!-- entry_type --> 15356 15357 <td class="entry_description"> 15358 <p>The physical dimensions of the full pixel 15359array</p> 15360 </td> 15361 15362 <td class="entry_units"> 15363 </td> 15364 15365 <td class="entry_range"> 15366 </td> 15367 15368 <td class="entry_tags"> 15369 <ul class="entry_tags"> 15370 <li><a href="#tag_V1">V1</a></li> 15371 <li><a href="#tag_BC">BC</a></li> 15372 </ul> 15373 </td> 15374 15375 </tr> 15376 <tr class="entries_header"> 15377 <th class="th_details" colspan="5">Details</th> 15378 </tr> 15379 <tr class="entry_cont"> 15380 <td class="entry_details" colspan="5"> 15381 <p>Needed for FOV calculation for old API</p> 15382 </td> 15383 </tr> 15384 15385 15386 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15387 <!-- end of entry --> 15388 15389 15390 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 15391 <td class="entry_name 15392 " rowspan="3"> 15393 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 15394 </td> 15395 <td class="entry_type"> 15396 <span class="entry_type_name">int32</span> 15397 <span class="entry_type_container">x</span> 15398 15399 <span class="entry_type_array"> 15400 2 15401 </span> 15402 <span class="entry_type_visibility"> [public as size]</span> 15403 15404 15405 15406 15407 15408 </td> <!-- entry_type --> 15409 15410 <td class="entry_description"> 15411 <p>Dimensions of full pixel array,<wbr/> possibly 15412including black calibration pixels.<wbr/></p> 15413 </td> 15414 15415 <td class="entry_units"> 15416 </td> 15417 15418 <td class="entry_range"> 15419 </td> 15420 15421 <td class="entry_tags"> 15422 <ul class="entry_tags"> 15423 <li><a href="#tag_DNG">DNG</a></li> 15424 <li><a href="#tag_BC">BC</a></li> 15425 </ul> 15426 </td> 15427 15428 </tr> 15429 <tr class="entries_header"> 15430 <th class="th_details" colspan="5">Details</th> 15431 </tr> 15432 <tr class="entry_cont"> 15433 <td class="entry_details" colspan="5"> 15434 <p>Maximum output resolution for raw format must 15435match this in 15436<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p> 15437 </td> 15438 </tr> 15439 15440 15441 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15442 <!-- end of entry --> 15443 15444 15445 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 15446 <td class="entry_name 15447 " rowspan="5"> 15448 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 15449 </td> 15450 <td class="entry_type"> 15451 <span class="entry_type_name">int32</span> 15452 15453 <span class="entry_type_visibility"> [public]</span> 15454 15455 15456 15457 15458 15459 </td> <!-- entry_type --> 15460 15461 <td class="entry_description"> 15462 <p>Maximum raw value output by sensor.<wbr/></p> 15463 </td> 15464 15465 <td class="entry_units"> 15466 </td> 15467 15468 <td class="entry_range"> 15469 <p>> 255 (8-bit output)</p> 15470 </td> 15471 15472 <td class="entry_tags"> 15473 <ul class="entry_tags"> 15474 <li><a href="#tag_DNG">DNG</a></li> 15475 </ul> 15476 </td> 15477 15478 </tr> 15479 <tr class="entries_header"> 15480 <th class="th_details" colspan="5">Details</th> 15481 </tr> 15482 <tr class="entry_cont"> 15483 <td class="entry_details" colspan="5"> 15484 <p>This specifies the fully-saturated encoding level for the raw 15485sample values from the sensor.<wbr/> This is typically caused by the 15486sensor becoming highly non-linear or clipping.<wbr/> The minimum for 15487each channel is specified by the offset in the 15488<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> tag.<wbr/></p> 15489<p>The white level is typically determined either by sensor bit depth 15490(8-14 bits is expected),<wbr/> or by the point where the sensor response 15491becomes too non-linear to be useful.<wbr/> The default value for this is 15492maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> 15493 </td> 15494 </tr> 15495 15496 <tr class="entries_header"> 15497 <th class="th_details" colspan="5">HAL Implementation Details</th> 15498 </tr> 15499 <tr class="entry_cont"> 15500 <td class="entry_details" colspan="5"> 15501 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 15502so the value for linear sensors should not be significantly lower 15503than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 15504 </td> 15505 </tr> 15506 15507 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15508 <!-- end of entry --> 15509 15510 15511 15512 15513 15514 <tr class="entry" id="static_android.sensor.referenceIlluminant1"> 15515 <td class="entry_name 15516 " rowspan="5"> 15517 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 15518 </td> 15519 <td class="entry_type"> 15520 <span class="entry_type_name entry_type_name_enum">byte</span> 15521 15522 <span class="entry_type_visibility"> [public]</span> 15523 15524 15525 15526 15527 <ul class="entry_type_enum"> 15528 <li> 15529 <span class="entry_type_enum_name">DAYLIGHT</span> 15530 <span class="entry_type_enum_value">1</span> 15531 </li> 15532 <li> 15533 <span class="entry_type_enum_name">FLUORESCENT</span> 15534 <span class="entry_type_enum_value">2</span> 15535 </li> 15536 <li> 15537 <span class="entry_type_enum_name">TUNGSTEN</span> 15538 <span class="entry_type_enum_value">3</span> 15539 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 15540 </li> 15541 <li> 15542 <span class="entry_type_enum_name">FLASH</span> 15543 <span class="entry_type_enum_value">4</span> 15544 </li> 15545 <li> 15546 <span class="entry_type_enum_name">FINE_WEATHER</span> 15547 <span class="entry_type_enum_value">9</span> 15548 </li> 15549 <li> 15550 <span class="entry_type_enum_name">CLOUDY_WEATHER</span> 15551 <span class="entry_type_enum_value">10</span> 15552 </li> 15553 <li> 15554 <span class="entry_type_enum_name">SHADE</span> 15555 <span class="entry_type_enum_value">11</span> 15556 </li> 15557 <li> 15558 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span> 15559 <span class="entry_type_enum_value">12</span> 15560 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 15561 </li> 15562 <li> 15563 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span> 15564 <span class="entry_type_enum_value">13</span> 15565 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 15566 </li> 15567 <li> 15568 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span> 15569 <span class="entry_type_enum_value">14</span> 15570 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 15571 </li> 15572 <li> 15573 <span class="entry_type_enum_name">WHITE_FLUORESCENT</span> 15574 <span class="entry_type_enum_value">15</span> 15575 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 15576 </li> 15577 <li> 15578 <span class="entry_type_enum_name">STANDARD_A</span> 15579 <span class="entry_type_enum_value">17</span> 15580 </li> 15581 <li> 15582 <span class="entry_type_enum_name">STANDARD_B</span> 15583 <span class="entry_type_enum_value">18</span> 15584 </li> 15585 <li> 15586 <span class="entry_type_enum_name">STANDARD_C</span> 15587 <span class="entry_type_enum_value">19</span> 15588 </li> 15589 <li> 15590 <span class="entry_type_enum_name">D55</span> 15591 <span class="entry_type_enum_value">20</span> 15592 </li> 15593 <li> 15594 <span class="entry_type_enum_name">D65</span> 15595 <span class="entry_type_enum_value">21</span> 15596 </li> 15597 <li> 15598 <span class="entry_type_enum_name">D75</span> 15599 <span class="entry_type_enum_value">22</span> 15600 </li> 15601 <li> 15602 <span class="entry_type_enum_name">D50</span> 15603 <span class="entry_type_enum_value">23</span> 15604 </li> 15605 <li> 15606 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span> 15607 <span class="entry_type_enum_value">24</span> 15608 </li> 15609 </ul> 15610 15611 </td> <!-- entry_type --> 15612 15613 <td class="entry_description"> 15614 <p>The standard reference illuminant used as the scene light source when 15615calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 15616<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 15617<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p> 15618 </td> 15619 15620 <td class="entry_units"> 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_DNG">DNG</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>The values in this tag correspond to the values defined for the 15639EXIF LightSource tag.<wbr/> These illuminants are standard light sources 15640that are often used calibrating camera devices.<wbr/></p> 15641<p>If this tag is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 15642<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 15643<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p> 15644<p>Some devices may choose to provide a second set of calibration 15645information for improved quality,<wbr/> including 15646<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p> 15647 </td> 15648 </tr> 15649 15650 <tr class="entries_header"> 15651 <th class="th_details" colspan="5">HAL Implementation Details</th> 15652 </tr> 15653 <tr class="entry_cont"> 15654 <td class="entry_details" colspan="5"> 15655 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 15656and corresponding matrices must be present to support DNG output.<wbr/></p> 15657<p>When producing raw images with a color profile that has only been 15658calibrated against a single light source,<wbr/> it is valid to omit 15659<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the 15660<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/> 15661and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 15662<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be 15663chosen so that it is representative of typical scene lighting.<wbr/> In 15664general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p> 15665<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and 15666<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be 15667chosen to represent the typical range of scene lighting conditions.<wbr/> 15668In general,<wbr/> low color temperature illuminant such as Standard-A will 15669be chosen for the first reference illuminant and a higher color 15670temperature illuminant such as D65 will be chosen for the second 15671reference illuminant.<wbr/></p> 15672 </td> 15673 </tr> 15674 15675 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15676 <!-- end of entry --> 15677 15678 15679 <tr class="entry" id="static_android.sensor.referenceIlluminant2"> 15680 <td class="entry_name 15681 " rowspan="3"> 15682 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 15683 </td> 15684 <td class="entry_type"> 15685 <span class="entry_type_name">byte</span> 15686 15687 <span class="entry_type_visibility"> [public]</span> 15688 15689 15690 15691 15692 15693 </td> <!-- entry_type --> 15694 15695 <td class="entry_description"> 15696 <p>The standard reference illuminant used as the scene light source when 15697calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 15698<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 15699<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 15700 </td> 15701 15702 <td class="entry_units"> 15703 </td> 15704 15705 <td class="entry_range"> 15706 </td> 15707 15708 <td class="entry_tags"> 15709 <ul class="entry_tags"> 15710 <li><a href="#tag_DNG">DNG</a></li> 15711 </ul> 15712 </td> 15713 15714 </tr> 15715 <tr class="entries_header"> 15716 <th class="th_details" colspan="5">Details</th> 15717 </tr> 15718 <tr class="entry_cont"> 15719 <td class="entry_details" colspan="5"> 15720 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/> 15721Valid values for this are the same as those given for the first 15722reference illuminant.<wbr/></p> 15723<p>If this tag is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 15724<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 15725<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p> 15726 </td> 15727 </tr> 15728 15729 15730 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15731 <!-- end of entry --> 15732 15733 15734 <tr class="entry" id="static_android.sensor.calibrationTransform1"> 15735 <td class="entry_name 15736 " rowspan="3"> 15737 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 15738 </td> 15739 <td class="entry_type"> 15740 <span class="entry_type_name">rational</span> 15741 <span class="entry_type_container">x</span> 15742 15743 <span class="entry_type_array"> 15744 3 x 3 15745 </span> 15746 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 15747 15748 15749 15750 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 15751 15752 15753 </td> <!-- entry_type --> 15754 15755 <td class="entry_description"> 15756 <p>A per-device calibration transform matrix that maps from the 15757reference sensor colorspace to the actual device sensor colorspace.<wbr/></p> 15758 </td> 15759 15760 <td class="entry_units"> 15761 </td> 15762 15763 <td class="entry_range"> 15764 </td> 15765 15766 <td class="entry_tags"> 15767 <ul class="entry_tags"> 15768 <li><a href="#tag_DNG">DNG</a></li> 15769 </ul> 15770 </td> 15771 15772 </tr> 15773 <tr class="entries_header"> 15774 <th class="th_details" colspan="5">Details</th> 15775 </tr> 15776 <tr class="entry_cont"> 15777 <td class="entry_details" colspan="5"> 15778 <p>This matrix is used to correct for per-device variations in the 15779sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 15780<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 15781contains a per-device calibration transform that maps colors 15782from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 15783colorspace) into this camera device's native sensor color 15784space under the first reference illuminant 15785(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 15786 </td> 15787 </tr> 15788 15789 15790 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15791 <!-- end of entry --> 15792 15793 15794 <tr class="entry" id="static_android.sensor.calibrationTransform2"> 15795 <td class="entry_name 15796 " rowspan="3"> 15797 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 15798 </td> 15799 <td class="entry_type"> 15800 <span class="entry_type_name">rational</span> 15801 <span class="entry_type_container">x</span> 15802 15803 <span class="entry_type_array"> 15804 3 x 3 15805 </span> 15806 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 15807 15808 15809 15810 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 15811 15812 15813 </td> <!-- entry_type --> 15814 15815 <td class="entry_description"> 15816 <p>A per-device calibration transform matrix that maps from the 15817reference sensor colorspace to the actual device sensor colorspace 15818(this is the colorspace of the raw buffer data).<wbr/></p> 15819 </td> 15820 15821 <td class="entry_units"> 15822 </td> 15823 15824 <td class="entry_range"> 15825 </td> 15826 15827 <td class="entry_tags"> 15828 <ul class="entry_tags"> 15829 <li><a href="#tag_DNG">DNG</a></li> 15830 </ul> 15831 </td> 15832 15833 </tr> 15834 <tr class="entries_header"> 15835 <th class="th_details" colspan="5">Details</th> 15836 </tr> 15837 <tr class="entry_cont"> 15838 <td class="entry_details" colspan="5"> 15839 <p>This matrix is used to correct for per-device variations in the 15840sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 15841<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 15842contains a per-device calibration transform that maps colors 15843from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 15844colorspace) into this camera device's native sensor color 15845space under the second reference illuminant 15846(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 15847<p>This matrix will only be present if the second reference 15848illuminant is present.<wbr/></p> 15849 </td> 15850 </tr> 15851 15852 15853 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15854 <!-- end of entry --> 15855 15856 15857 <tr class="entry" id="static_android.sensor.colorTransform1"> 15858 <td class="entry_name 15859 " rowspan="3"> 15860 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 15861 </td> 15862 <td class="entry_type"> 15863 <span class="entry_type_name">rational</span> 15864 <span class="entry_type_container">x</span> 15865 15866 <span class="entry_type_array"> 15867 3 x 3 15868 </span> 15869 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 15870 15871 15872 15873 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 15874 15875 15876 </td> <!-- entry_type --> 15877 15878 <td class="entry_description"> 15879 <p>A matrix that transforms color values from CIE XYZ color space to 15880reference sensor color space.<wbr/></p> 15881 </td> 15882 15883 <td class="entry_units"> 15884 </td> 15885 15886 <td class="entry_range"> 15887 </td> 15888 15889 <td class="entry_tags"> 15890 <ul class="entry_tags"> 15891 <li><a href="#tag_DNG">DNG</a></li> 15892 </ul> 15893 </td> 15894 15895 </tr> 15896 <tr class="entries_header"> 15897 <th class="th_details" colspan="5">Details</th> 15898 </tr> 15899 <tr class="entry_cont"> 15900 <td class="entry_details" colspan="5"> 15901 <p>This matrix is used to convert from the standard CIE XYZ color 15902space to the reference sensor colorspace,<wbr/> and is used when processing 15903raw buffer data.<wbr/></p> 15904<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 15905contains a color transform matrix that maps colors from the CIE 15906XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 15907"golden module" colorspace) under the first reference illuminant 15908(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 15909<p>The white points chosen in both the reference sensor color space 15910and the CIE XYZ colorspace when calculating this transform will 15911match the standard white point for the first reference illuminant 15912(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 15913 </td> 15914 </tr> 15915 15916 15917 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15918 <!-- end of entry --> 15919 15920 15921 <tr class="entry" id="static_android.sensor.colorTransform2"> 15922 <td class="entry_name 15923 " rowspan="3"> 15924 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 15925 </td> 15926 <td class="entry_type"> 15927 <span class="entry_type_name">rational</span> 15928 <span class="entry_type_container">x</span> 15929 15930 <span class="entry_type_array"> 15931 3 x 3 15932 </span> 15933 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 15934 15935 15936 15937 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 15938 15939 15940 </td> <!-- entry_type --> 15941 15942 <td class="entry_description"> 15943 <p>A matrix that transforms color values from CIE XYZ color space to 15944reference sensor color space.<wbr/></p> 15945 </td> 15946 15947 <td class="entry_units"> 15948 </td> 15949 15950 <td class="entry_range"> 15951 </td> 15952 15953 <td class="entry_tags"> 15954 <ul class="entry_tags"> 15955 <li><a href="#tag_DNG">DNG</a></li> 15956 </ul> 15957 </td> 15958 15959 </tr> 15960 <tr class="entries_header"> 15961 <th class="th_details" colspan="5">Details</th> 15962 </tr> 15963 <tr class="entry_cont"> 15964 <td class="entry_details" colspan="5"> 15965 <p>This matrix is used to convert from the standard CIE XYZ color 15966space to the reference sensor colorspace,<wbr/> and is used when processing 15967raw buffer data.<wbr/></p> 15968<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 15969contains a color transform matrix that maps colors from the CIE 15970XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 15971"golden module" colorspace) under the second reference illuminant 15972(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 15973<p>The white points chosen in both the reference sensor color space 15974and the CIE XYZ colorspace when calculating this transform will 15975match the standard white point for the second reference illuminant 15976(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 15977<p>This matrix will only be present if the second reference 15978illuminant is present.<wbr/></p> 15979 </td> 15980 </tr> 15981 15982 15983 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15984 <!-- end of entry --> 15985 15986 15987 <tr class="entry" id="static_android.sensor.forwardMatrix1"> 15988 <td class="entry_name 15989 " rowspan="3"> 15990 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 15991 </td> 15992 <td class="entry_type"> 15993 <span class="entry_type_name">rational</span> 15994 <span class="entry_type_container">x</span> 15995 15996 <span class="entry_type_array"> 15997 3 x 3 15998 </span> 15999 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 16000 16001 16002 16003 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 16004 16005 16006 </td> <!-- entry_type --> 16007 16008 <td class="entry_description"> 16009 <p>A matrix that transforms white balanced camera colors from the reference 16010sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 16011 </td> 16012 16013 <td class="entry_units"> 16014 </td> 16015 16016 <td class="entry_range"> 16017 </td> 16018 16019 <td class="entry_tags"> 16020 <ul class="entry_tags"> 16021 <li><a href="#tag_DNG">DNG</a></li> 16022 </ul> 16023 </td> 16024 16025 </tr> 16026 <tr class="entries_header"> 16027 <th class="th_details" colspan="5">Details</th> 16028 </tr> 16029 <tr class="entry_cont"> 16030 <td class="entry_details" colspan="5"> 16031 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 16032is used when processing raw buffer data.<wbr/></p> 16033<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 16034a color transform matrix that maps white balanced colors from the 16035reference sensor color space to the CIE XYZ color space with a D50 white 16036point.<wbr/></p> 16037<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 16038this matrix is chosen so that the standard white point for this reference 16039illuminant in the reference sensor colorspace is mapped to D50 in the 16040CIE XYZ colorspace.<wbr/></p> 16041 </td> 16042 </tr> 16043 16044 16045 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16046 <!-- end of entry --> 16047 16048 16049 <tr class="entry" id="static_android.sensor.forwardMatrix2"> 16050 <td class="entry_name 16051 " rowspan="3"> 16052 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 16053 </td> 16054 <td class="entry_type"> 16055 <span class="entry_type_name">rational</span> 16056 <span class="entry_type_container">x</span> 16057 16058 <span class="entry_type_array"> 16059 3 x 3 16060 </span> 16061 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 16062 16063 16064 16065 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 16066 16067 16068 </td> <!-- entry_type --> 16069 16070 <td class="entry_description"> 16071 <p>A matrix that transforms white balanced camera colors from the reference 16072sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 16073 </td> 16074 16075 <td class="entry_units"> 16076 </td> 16077 16078 <td class="entry_range"> 16079 </td> 16080 16081 <td class="entry_tags"> 16082 <ul class="entry_tags"> 16083 <li><a href="#tag_DNG">DNG</a></li> 16084 </ul> 16085 </td> 16086 16087 </tr> 16088 <tr class="entries_header"> 16089 <th class="th_details" colspan="5">Details</th> 16090 </tr> 16091 <tr class="entry_cont"> 16092 <td class="entry_details" colspan="5"> 16093 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 16094is used when processing raw buffer data.<wbr/></p> 16095<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 16096a color transform matrix that maps white balanced colors from the 16097reference sensor color space to the CIE XYZ color space with a D50 white 16098point.<wbr/></p> 16099<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) 16100this matrix is chosen so that the standard white point for this reference 16101illuminant in the reference sensor colorspace is mapped to D50 in the 16102CIE XYZ colorspace.<wbr/></p> 16103<p>This matrix will only be present if the second reference 16104illuminant is present.<wbr/></p> 16105 </td> 16106 </tr> 16107 16108 16109 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16110 <!-- end of entry --> 16111 16112 16113 <tr class="entry" id="static_android.sensor.baseGainFactor"> 16114 <td class="entry_name 16115 " rowspan="1"> 16116 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 16117 </td> 16118 <td class="entry_type"> 16119 <span class="entry_type_name">rational</span> 16120 16121 <span class="entry_type_visibility"> [system]</span> 16122 16123 16124 16125 16126 16127 </td> <!-- entry_type --> 16128 16129 <td class="entry_description"> 16130 <p>Gain factor from electrons to raw units when 16131ISO=100</p> 16132 </td> 16133 16134 <td class="entry_units"> 16135 </td> 16136 16137 <td class="entry_range"> 16138 </td> 16139 16140 <td class="entry_tags"> 16141 <ul class="entry_tags"> 16142 <li><a href="#tag_FUTURE">FUTURE</a></li> 16143 </ul> 16144 </td> 16145 16146 </tr> 16147 16148 16149 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16150 <!-- end of entry --> 16151 16152 16153 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 16154 <td class="entry_name 16155 " rowspan="3"> 16156 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 16157 </td> 16158 <td class="entry_type"> 16159 <span class="entry_type_name">int32</span> 16160 <span class="entry_type_container">x</span> 16161 16162 <span class="entry_type_array"> 16163 4 16164 </span> 16165 <span class="entry_type_visibility"> [public]</span> 16166 16167 16168 16169 <div class="entry_type_notes">2x2 raw count block</div> 16170 16171 16172 </td> <!-- entry_type --> 16173 16174 <td class="entry_description"> 16175 <p>A fixed black level offset for each of the color filter arrangement 16176(CFA) mosaic channels.<wbr/></p> 16177 </td> 16178 16179 <td class="entry_units"> 16180 </td> 16181 16182 <td class="entry_range"> 16183 <p>>= 0 for each.<wbr/></p> 16184 </td> 16185 16186 <td class="entry_tags"> 16187 <ul class="entry_tags"> 16188 <li><a href="#tag_DNG">DNG</a></li> 16189 </ul> 16190 </td> 16191 16192 </tr> 16193 <tr class="entries_header"> 16194 <th class="th_details" colspan="5">Details</th> 16195 </tr> 16196 <tr class="entry_cont"> 16197 <td class="entry_details" colspan="5"> 16198 <p>This tag specifies the zero light value for each of the CFA mosaic 16199channels in the camera sensor.<wbr/> The maximal value output by the 16200sensor 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> 16201<p>The values are given in row-column scan order,<wbr/> with the first value 16202corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 16203 </td> 16204 </tr> 16205 16206 16207 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16208 <!-- end of entry --> 16209 16210 16211 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 16212 <td class="entry_name 16213 " rowspan="3"> 16214 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 16215 </td> 16216 <td class="entry_type"> 16217 <span class="entry_type_name">int32</span> 16218 16219 <span class="entry_type_visibility"> [public]</span> 16220 16221 16222 16223 16224 16225 </td> <!-- entry_type --> 16226 16227 <td class="entry_description"> 16228 <p>Maximum sensitivity that is implemented 16229purely through analog gain.<wbr/></p> 16230 </td> 16231 16232 <td class="entry_units"> 16233 </td> 16234 16235 <td class="entry_range"> 16236 </td> 16237 16238 <td class="entry_tags"> 16239 <ul class="entry_tags"> 16240 <li><a href="#tag_V1">V1</a></li> 16241 <li><a href="#tag_FULL">FULL</a></li> 16242 </ul> 16243 </td> 16244 16245 </tr> 16246 <tr class="entries_header"> 16247 <th class="th_details" colspan="5">Details</th> 16248 </tr> 16249 <tr class="entry_cont"> 16250 <td class="entry_details" colspan="5"> 16251 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 16252equal to this,<wbr/> all applied gain must be analog.<wbr/> For 16253values above this,<wbr/> the gain applied can be a mix of analog and 16254digital.<wbr/></p> 16255 </td> 16256 </tr> 16257 16258 16259 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16260 <!-- end of entry --> 16261 16262 16263 <tr class="entry" id="static_android.sensor.orientation"> 16264 <td class="entry_name 16265 " rowspan="1"> 16266 android.<wbr/>sensor.<wbr/>orientation 16267 </td> 16268 <td class="entry_type"> 16269 <span class="entry_type_name">int32</span> 16270 16271 <span class="entry_type_visibility"> [public]</span> 16272 16273 16274 16275 16276 16277 </td> <!-- entry_type --> 16278 16279 <td class="entry_description"> 16280 <p>Clockwise angle through which the output 16281image needs to be rotated to be upright on the device 16282screen in its native orientation.<wbr/> Also defines the 16283direction of rolling shutter readout,<wbr/> which is from top 16284to bottom in the sensor's coordinate system</p> 16285 </td> 16286 16287 <td class="entry_units"> 16288 degrees clockwise rotation,<wbr/> only multiples of 16289 90 16290 </td> 16291 16292 <td class="entry_range"> 16293 <p>0,<wbr/>90,<wbr/>180,<wbr/>270</p> 16294 </td> 16295 16296 <td class="entry_tags"> 16297 <ul class="entry_tags"> 16298 <li><a href="#tag_BC">BC</a></li> 16299 </ul> 16300 </td> 16301 16302 </tr> 16303 16304 16305 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16306 <!-- end of entry --> 16307 16308 16309 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> 16310 <td class="entry_name 16311 " rowspan="3"> 16312 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions 16313 </td> 16314 <td class="entry_type"> 16315 <span class="entry_type_name">int32</span> 16316 <span class="entry_type_container">x</span> 16317 16318 <span class="entry_type_array"> 16319 3 16320 </span> 16321 <span class="entry_type_visibility"> [system]</span> 16322 16323 16324 16325 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> 16326 16327 16328 </td> <!-- entry_type --> 16329 16330 <td class="entry_description"> 16331 <p>The number of input samples for each dimension of 16332<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> 16333 </td> 16334 16335 <td class="entry_units"> 16336 </td> 16337 16338 <td class="entry_range"> 16339 <p>Hue >= 1,<wbr/> 16340Saturation >= 2,<wbr/> 16341Value >= 1</p> 16342 </td> 16343 16344 <td class="entry_tags"> 16345 <ul class="entry_tags"> 16346 <li><a href="#tag_DNG">DNG</a></li> 16347 </ul> 16348 </td> 16349 16350 </tr> 16351 <tr class="entries_header"> 16352 <th class="th_details" colspan="5">Details</th> 16353 </tr> 16354 <tr class="entry_cont"> 16355 <td class="entry_details" colspan="5"> 16356 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value 16357dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the 16358dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 16359element.<wbr/></p> 16360 </td> 16361 </tr> 16362 16363 16364 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16365 <!-- end of entry --> 16366 16367 16368 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 16369 <td class="entry_name 16370 " rowspan="1"> 16371 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 16372 </td> 16373 <td class="entry_type"> 16374 <span class="entry_type_name">int32</span> 16375 <span class="entry_type_container">x</span> 16376 16377 <span class="entry_type_array"> 16378 n 16379 </span> 16380 <span class="entry_type_visibility"> [public]</span> 16381 16382 16383 16384 <div class="entry_type_notes">list of enums</div> 16385 16386 16387 </td> <!-- entry_type --> 16388 16389 <td class="entry_description"> 16390 <p>Optional.<wbr/> Defaults to [OFF].<wbr/> Lists the supported test 16391pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>.<wbr/></p> 16392 </td> 16393 16394 <td class="entry_units"> 16395 </td> 16396 16397 <td class="entry_range"> 16398 <p>Must include OFF.<wbr/> All custom modes must be >= CUSTOM1</p> 16399 </td> 16400 16401 <td class="entry_tags"> 16402 </td> 16403 16404 </tr> 16405 16406 16407 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16408 <!-- end of entry --> 16409 16410 16411 16412 <!-- end of kind --> 16413 </tbody> 16414 <tr><td colspan="6" class="kind">dynamic</td></tr> 16415 16416 <thead class="entries_header"> 16417 <tr> 16418 <th class="th_name">Property Name</th> 16419 <th class="th_type">Type</th> 16420 <th class="th_description">Description</th> 16421 <th class="th_units">Units</th> 16422 <th class="th_range">Range</th> 16423 <th class="th_tags">Tags</th> 16424 </tr> 16425 </thead> 16426 16427 <tbody> 16428 16429 16430 16431 16432 16433 16434 16435 16436 16437 16438 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 16439 <td class="entry_name 16440 " rowspan="3"> 16441 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 16442 </td> 16443 <td class="entry_type"> 16444 <span class="entry_type_name">int64</span> 16445 16446 <span class="entry_type_visibility"> [public]</span> 16447 16448 16449 16450 16451 16452 </td> <!-- entry_type --> 16453 16454 <td class="entry_description"> 16455 <p>Duration each pixel is exposed to 16456light.<wbr/></p> 16457 </td> 16458 16459 <td class="entry_units"> 16460 nanoseconds 16461 </td> 16462 16463 <td class="entry_range"> 16464 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 16465 </td> 16466 16467 <td class="entry_tags"> 16468 <ul class="entry_tags"> 16469 <li><a href="#tag_V1">V1</a></li> 16470 </ul> 16471 </td> 16472 16473 </tr> 16474 <tr class="entries_header"> 16475 <th class="th_details" colspan="5">Details</th> 16476 </tr> 16477 <tr class="entry_cont"> 16478 <td class="entry_details" colspan="5"> 16479 <p>If the sensor can't expose this exact duration,<wbr/> it should shorten the 16480duration exposed to the nearest possible value (rather than expose longer).<wbr/></p> 16481 </td> 16482 </tr> 16483 16484 16485 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16486 <!-- end of entry --> 16487 16488 16489 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 16490 <td class="entry_name 16491 " rowspan="5"> 16492 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 16493 </td> 16494 <td class="entry_type"> 16495 <span class="entry_type_name">int64</span> 16496 16497 <span class="entry_type_visibility"> [public]</span> 16498 16499 16500 16501 16502 16503 </td> <!-- entry_type --> 16504 16505 <td class="entry_description"> 16506 <p>Duration from start of frame exposure to 16507start of next frame exposure.<wbr/></p> 16508 </td> 16509 16510 <td class="entry_units"> 16511 nanoseconds 16512 </td> 16513 16514 <td class="entry_range"> 16515 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 16516<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 16517is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 16518 </td> 16519 16520 <td class="entry_tags"> 16521 <ul class="entry_tags"> 16522 <li><a href="#tag_V1">V1</a></li> 16523 </ul> 16524 </td> 16525 16526 </tr> 16527 <tr class="entries_header"> 16528 <th class="th_details" colspan="5">Details</th> 16529 </tr> 16530 <tr class="entry_cont"> 16531 <td class="entry_details" colspan="5"> 16532 <p>The maximum frame rate that can be supported by a camera subsystem is 16533a function of many factors:</p> 16534<ul> 16535<li>Requested resolutions of output image streams</li> 16536<li>Availability of binning /<wbr/> skipping modes on the imager</li> 16537<li>The bandwidth of the imager interface</li> 16538<li>The bandwidth of the various ISP processing blocks</li> 16539</ul> 16540<p>Since these factors can vary greatly between different ISPs and 16541sensors,<wbr/> the camera abstraction tries to represent the bandwidth 16542restrictions with as simple a model as possible.<wbr/></p> 16543<p>The model presented has the following characteristics:</p> 16544<ul> 16545<li>The image sensor is always configured to output the smallest 16546resolution possible given the application's requested output stream 16547sizes.<wbr/> The smallest resolution is defined as being at least as large 16548as the largest requested output stream size; the camera pipeline must 16549never digitally upsample sensor data when the crop region covers the 16550whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 16551resolutions are configured,<wbr/> the sensor can provide a higher frame 16552rate.<wbr/></li> 16553<li>Since any request may use any or all the currently configured 16554output streams,<wbr/> the sensor and ISP must be configured to support 16555scaling a single capture to all the streams at the same time.<wbr/> This 16556means the camera pipeline must be ready to produce the largest 16557requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 16558frame rate of a given configured stream set is governed only by the 16559largest requested stream resolution.<wbr/></li> 16560<li>Using more than one output stream in a request does not affect the 16561frame duration.<wbr/></li> 16562<li>Certain format-streams may need to do additional background processing 16563before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 16564can run concurrently to the rest of the camera pipeline,<wbr/> but 16565cannot process more than 1 capture at a time.<wbr/></li> 16566</ul> 16567<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 16568is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field 16569using StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/> 16570These are used to determine the maximum frame rate /<wbr/> minimum frame 16571duration that is possible for a given stream configuration.<wbr/></p> 16572<p>Specifically,<wbr/> the application can use the following rules to 16573determine the minimum frame duration it can request from the camera 16574device:</p> 16575<ol> 16576<li>Let the set of currently configured input/<wbr/>output streams 16577be called <code>S</code>.<wbr/></li> 16578<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by 16579looking it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using 16580StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size) (with 16581its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called 16582<code>F</code>.<wbr/></li> 16583<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 16584for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 16585used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 16586</ol> 16587<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in 16588StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size) using its 16589respective size/<wbr/>format),<wbr/> then the frame duration in 16590<code>F</code> determines the steady state frame rate that the application will 16591get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind 16592of request be called <code>Rsimple</code>.<wbr/></p> 16593<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 16594by a single capture of a new request <code>Rstall</code> (which has at least 16595one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 16596same minimum frame duration this will not cause a frame rate loss 16597if all buffers from the previous <code>Rstall</code> have already been 16598delivered.<wbr/></p> 16599<p>For more details about stalling,<wbr/> see 16600StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size).<wbr/></p> 16601 </td> 16602 </tr> 16603 16604 <tr class="entries_header"> 16605 <th class="th_details" colspan="5">HAL Implementation Details</th> 16606 </tr> 16607 <tr class="entry_cont"> 16608 <td class="entry_details" colspan="5"> 16609 <p>For more details about stalling,<wbr/> see 16610<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 16611 </td> 16612 </tr> 16613 16614 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16615 <!-- end of entry --> 16616 16617 16618 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 16619 <td class="entry_name 16620 " rowspan="3"> 16621 android.<wbr/>sensor.<wbr/>sensitivity 16622 </td> 16623 <td class="entry_type"> 16624 <span class="entry_type_name">int32</span> 16625 16626 <span class="entry_type_visibility"> [public]</span> 16627 16628 16629 16630 16631 16632 </td> <!-- entry_type --> 16633 16634 <td class="entry_description"> 16635 <p>Gain applied to image data.<wbr/> Must be 16636implemented through analog gain only if set to values 16637below 'maximum analog sensitivity'.<wbr/></p> 16638<p>If the sensor can't apply this exact gain,<wbr/> it should lessen the 16639gain to the nearest possible value (rather than gain more).<wbr/></p> 16640 </td> 16641 16642 <td class="entry_units"> 16643 ISO arithmetic units 16644 </td> 16645 16646 <td class="entry_range"> 16647 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 16648 </td> 16649 16650 <td class="entry_tags"> 16651 <ul class="entry_tags"> 16652 <li><a href="#tag_V1">V1</a></li> 16653 </ul> 16654 </td> 16655 16656 </tr> 16657 <tr class="entries_header"> 16658 <th class="th_details" colspan="5">Details</th> 16659 </tr> 16660 <tr class="entry_cont"> 16661 <td class="entry_details" colspan="5"> 16662 <p>ISO 12232:2006 REI method</p> 16663 </td> 16664 </tr> 16665 16666 16667 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16668 <!-- end of entry --> 16669 16670 16671 <tr class="entry" id="dynamic_android.sensor.timestamp"> 16672 <td class="entry_name 16673 " rowspan="3"> 16674 android.<wbr/>sensor.<wbr/>timestamp 16675 </td> 16676 <td class="entry_type"> 16677 <span class="entry_type_name">int64</span> 16678 16679 <span class="entry_type_visibility"> [public]</span> 16680 16681 16682 16683 16684 16685 </td> <!-- entry_type --> 16686 16687 <td class="entry_description"> 16688 <p>Time at start of exposure of first 16689row</p> 16690 </td> 16691 16692 <td class="entry_units"> 16693 nanoseconds 16694 </td> 16695 16696 <td class="entry_range"> 16697 <p>> 0</p> 16698 </td> 16699 16700 <td class="entry_tags"> 16701 <ul class="entry_tags"> 16702 <li><a href="#tag_BC">BC</a></li> 16703 </ul> 16704 </td> 16705 16706 </tr> 16707 <tr class="entries_header"> 16708 <th class="th_details" colspan="5">Details</th> 16709 </tr> 16710 <tr class="entry_cont"> 16711 <td class="entry_details" colspan="5"> 16712 <p>Monotonic,<wbr/> should be synced to other timestamps in 16713system</p> 16714 </td> 16715 </tr> 16716 16717 16718 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16719 <!-- end of entry --> 16720 16721 16722 <tr class="entry" id="dynamic_android.sensor.temperature"> 16723 <td class="entry_name 16724 " rowspan="1"> 16725 android.<wbr/>sensor.<wbr/>temperature 16726 </td> 16727 <td class="entry_type"> 16728 <span class="entry_type_name">float</span> 16729 16730 <span class="entry_type_visibility"> [system]</span> 16731 16732 16733 16734 16735 16736 </td> <!-- entry_type --> 16737 16738 <td class="entry_description"> 16739 <p>The temperature of the sensor,<wbr/> sampled at the time 16740exposure began for this frame.<wbr/></p> 16741<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 16742somewhere close to it.<wbr/></p> 16743 </td> 16744 16745 <td class="entry_units"> 16746 celsius 16747 </td> 16748 16749 <td class="entry_range"> 16750 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 16751 </td> 16752 16753 <td class="entry_tags"> 16754 <ul class="entry_tags"> 16755 <li><a href="#tag_FUTURE">FUTURE</a></li> 16756 </ul> 16757 </td> 16758 16759 </tr> 16760 16761 16762 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16763 <!-- end of entry --> 16764 16765 16766 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> 16767 <td class="entry_name 16768 " rowspan="3"> 16769 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point 16770 </td> 16771 <td class="entry_type"> 16772 <span class="entry_type_name">rational</span> 16773 <span class="entry_type_container">x</span> 16774 16775 <span class="entry_type_array"> 16776 3 16777 </span> 16778 <span class="entry_type_visibility"> [public]</span> 16779 16780 16781 16782 16783 16784 </td> <!-- entry_type --> 16785 16786 <td class="entry_description"> 16787 <p>The estimated camera neutral color in the native sensor colorspace at 16788the time of capture.<wbr/></p> 16789 </td> 16790 16791 <td class="entry_units"> 16792 </td> 16793 16794 <td class="entry_range"> 16795 </td> 16796 16797 <td class="entry_tags"> 16798 <ul class="entry_tags"> 16799 <li><a href="#tag_DNG">DNG</a></li> 16800 </ul> 16801 </td> 16802 16803 </tr> 16804 <tr class="entries_header"> 16805 <th class="th_details" colspan="5">Details</th> 16806 </tr> 16807 <tr class="entry_cont"> 16808 <td class="entry_details" colspan="5"> 16809 <p>This value gives the neutral color point encoded as an RGB value in the 16810native sensor color space.<wbr/> The neutral color point indicates the 16811currently estimated white point of the scene illumination.<wbr/> It can be 16812used to interpolate between the provided color transforms when 16813processing raw sensor data.<wbr/></p> 16814<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> 16815 </td> 16816 </tr> 16817 16818 16819 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16820 <!-- end of entry --> 16821 16822 16823 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> 16824 <td class="entry_name 16825 " rowspan="3"> 16826 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map 16827 </td> 16828 <td class="entry_type"> 16829 <span class="entry_type_name">float</span> 16830 <span class="entry_type_container">x</span> 16831 16832 <span class="entry_type_array"> 16833 hue_samples x saturation_samples x value_samples x 3 16834 </span> 16835 <span class="entry_type_visibility"> [system]</span> 16836 16837 16838 16839 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> 16840 16841 16842 </td> <!-- entry_type --> 16843 16844 <td class="entry_description"> 16845 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale 16846for each pixel.<wbr/></p> 16847 </td> 16848 16849 <td class="entry_units"> 16850 16851 Hue shift is given in degrees; saturation and value scale factors are 16852 unitless.<wbr/> 16853 16854 </td> 16855 16856 <td class="entry_range"> 16857 </td> 16858 16859 <td class="entry_tags"> 16860 <ul class="entry_tags"> 16861 <li><a href="#tag_DNG">DNG</a></li> 16862 </ul> 16863 </td> 16864 16865 </tr> 16866 <tr class="entries_header"> 16867 <th class="th_details" colspan="5">Details</th> 16868 </tr> 16869 <tr class="entry_cont"> 16870 <td class="entry_details" colspan="5"> 16871 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in 16872<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> 16873<p>Each entry of this map contains three floats corresponding to the 16874hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 16875hue shift has the lowest index.<wbr/> The map entries are stored in the tag 16876in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 16877hue divisions in the middle loop,<wbr/> and the saturation divisions in the 16878inner loop.<wbr/> All zero input saturation entries are required to have a 16879value scale factor of 1.<wbr/>0.<wbr/></p> 16880 </td> 16881 </tr> 16882 16883 16884 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16885 <!-- end of entry --> 16886 16887 16888 <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> 16889 <td class="entry_name 16890 " rowspan="3"> 16891 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve 16892 </td> 16893 <td class="entry_type"> 16894 <span class="entry_type_name">float</span> 16895 <span class="entry_type_container">x</span> 16896 16897 <span class="entry_type_array"> 16898 samples x 2 16899 </span> 16900 <span class="entry_type_visibility"> [system]</span> 16901 16902 16903 16904 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> 16905 16906 16907 </td> <!-- entry_type --> 16908 16909 <td class="entry_description"> 16910 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> 16911 </td> 16912 16913 <td class="entry_units"> 16914 </td> 16915 16916 <td class="entry_range"> 16917 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of 16918<code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last 16919sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> 16920 </td> 16921 16922 <td class="entry_tags"> 16923 <ul class="entry_tags"> 16924 <li><a href="#tag_DNG">DNG</a></li> 16925 </ul> 16926 </td> 16927 16928 </tr> 16929 <tr class="entries_header"> 16930 <th class="th_details" colspan="5">Details</th> 16931 </tr> 16932 <tr class="entry_cont"> 16933 <td class="entry_details" colspan="5"> 16934 <p>This tag contains a default tone curve that can be applied while 16935processing the image as a starting point for user adjustments.<wbr/> 16936The curve is specified as a list of value pairs in linear gamma.<wbr/> 16937The curve is interpolated using a cubic spline.<wbr/></p> 16938 </td> 16939 </tr> 16940 16941 16942 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16943 <!-- end of entry --> 16944 16945 16946 <tr class="entry" id="dynamic_android.sensor.greenSplit"> 16947 <td class="entry_name 16948 " rowspan="5"> 16949 android.<wbr/>sensor.<wbr/>green<wbr/>Split 16950 </td> 16951 <td class="entry_type"> 16952 <span class="entry_type_name">float</span> 16953 16954 <span class="entry_type_visibility"> [public]</span> 16955 16956 16957 16958 16959 16960 </td> <!-- entry_type --> 16961 16962 <td class="entry_description"> 16963 <p>The worst-case divergence between Bayer green channels.<wbr/></p> 16964 </td> 16965 16966 <td class="entry_units"> 16967 </td> 16968 16969 <td class="entry_range"> 16970 <p>>= 0</p> 16971 </td> 16972 16973 <td class="entry_tags"> 16974 <ul class="entry_tags"> 16975 <li><a href="#tag_DNG">DNG</a></li> 16976 </ul> 16977 </td> 16978 16979 </tr> 16980 <tr class="entries_header"> 16981 <th class="th_details" colspan="5">Details</th> 16982 </tr> 16983 <tr class="entry_cont"> 16984 <td class="entry_details" colspan="5"> 16985 <p>This value is an estimate of the worst case split between the 16986Bayer green channels in the red and blue rows in the sensor color 16987filter array.<wbr/></p> 16988<p>The green split is calculated as follows:</p> 16989<ol> 16990<li>A 5x5 pixel (or larger) window W within the active sensor array is 16991chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 16992mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 16993chosen is implementation defined,<wbr/> and should be chosen to provide a 16994green split estimate that is both representative of the entire image 16995for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 16996<li>The arithmetic mean of the green channels from the red 16997rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 16998<li>The arithmetic mean of the green channels from the blue 16999rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> 17000<li>The maximum ratio R of the two means is computed as follows: 17001<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> 17002</ol> 17003<p>The ratio R is the green split divergence reported for this property,<wbr/> 17004which represents how much the green channels differ in the mosaic 17005pattern.<wbr/> This value is typically used to determine the treatment of 17006the green mosaic channels when demosaicing.<wbr/></p> 17007<p>The green split value can be roughly interpreted as follows:</p> 17008<ul> 17009<li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> 17010<li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software 17011correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 17012<li>R > 1.<wbr/>20 will require strong software correction to produce 17013a usuable image (>20% divergence).<wbr/></li> 17014</ul> 17015 </td> 17016 </tr> 17017 17018 <tr class="entries_header"> 17019 <th class="th_details" colspan="5">HAL Implementation Details</th> 17020 </tr> 17021 <tr class="entry_cont"> 17022 <td class="entry_details" colspan="5"> 17023 <p>The green split given may be a static value based on prior 17024characterization of the camera sensor using the green split 17025calculation method given here over a large,<wbr/> representative,<wbr/> sample 17026set of images.<wbr/> Other methods of calculation that produce equivalent 17027results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> 17028 </td> 17029 </tr> 17030 17031 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17032 <!-- end of entry --> 17033 17034 17035 <tr class="entry" id="dynamic_android.sensor.testPatternData"> 17036 <td class="entry_name 17037 " rowspan="5"> 17038 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 17039 </td> 17040 <td class="entry_type"> 17041 <span class="entry_type_name">int32</span> 17042 <span class="entry_type_container">x</span> 17043 17044 <span class="entry_type_array"> 17045 4 17046 </span> 17047 <span class="entry_type_visibility"> [public]</span> 17048 17049 17050 17051 17052 17053 </td> <!-- entry_type --> 17054 17055 <td class="entry_description"> 17056 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 17057when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 17058 </td> 17059 17060 <td class="entry_units"> 17061 </td> 17062 17063 <td class="entry_range"> 17064 <p>Optional.<wbr/> 17065Must be supported if <a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a> contains 17066SOLID_<wbr/>COLOR.<wbr/></p> 17067 </td> 17068 17069 <td class="entry_tags"> 17070 </td> 17071 17072 </tr> 17073 <tr class="entries_header"> 17074 <th class="th_details" colspan="5">Details</th> 17075 </tr> 17076 <tr class="entry_cont"> 17077 <td class="entry_details" colspan="5"> 17078 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 17079The camera device then uses the most significant X bits 17080that correspond to how many bits are in its Bayer raw sensor 17081output.<wbr/></p> 17082<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 1708310 most significant bits from each color channel.<wbr/></p> 17084 </td> 17085 </tr> 17086 17087 <tr class="entries_header"> 17088 <th class="th_details" colspan="5">HAL Implementation Details</th> 17089 </tr> 17090 <tr class="entry_cont"> 17091 <td class="entry_details" colspan="5"> 17092 17093 </td> 17094 </tr> 17095 17096 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17097 <!-- end of entry --> 17098 17099 17100 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 17101 <td class="entry_name 17102 " rowspan="5"> 17103 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 17104 </td> 17105 <td class="entry_type"> 17106 <span class="entry_type_name entry_type_name_enum">int32</span> 17107 17108 <span class="entry_type_visibility"> [public]</span> 17109 17110 17111 17112 17113 <ul class="entry_type_enum"> 17114 <li> 17115 <span class="entry_type_enum_name">OFF</span> 17116 <span class="entry_type_enum_notes"><p>Default.<wbr/> No test pattern mode is used,<wbr/> and the camera 17117device returns captures from the image sensor.<wbr/></p></span> 17118 </li> 17119 <li> 17120 <span class="entry_type_enum_name">SOLID_COLOR</span> 17121 <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 17122respective color channel provided in 17123<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 17124<p>For example:</p> 17125<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 17126</code></pre> 17127<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 17128<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 17129</code></pre> 17130<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 17131are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 17132 </li> 17133 <li> 17134 <span class="entry_type_enum_name">COLOR_BARS</span> 17135 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 17136<p>The vertical bars (left-to-right) are as follows:</p> 17137<ul> 17138<li>100% white</li> 17139<li>yellow</li> 17140<li>cyan</li> 17141<li>green</li> 17142<li>magenta</li> 17143<li>red</li> 17144<li>blue</li> 17145<li>black</li> 17146</ul> 17147<p>In general the image would look like the following:</p> 17148<pre><code>W Y C G M R B K 17149W Y C G M R B K 17150W Y C G M R B K 17151W Y C G M R B K 17152W Y C G M R B K 17153.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 17154.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 17155.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 17156 17157(B = Blue,<wbr/> K = Black) 17158</code></pre> 17159<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 17160When this is not possible,<wbr/> the bar size should be rounded 17161down to the nearest integer and the pattern can repeat 17162on the right side.<wbr/></p> 17163<p>Each bar's height must always take up the full sensor 17164pixel array height.<wbr/></p> 17165<p>Each pixel in this test pattern must be set to either 171660% intensity or 100% intensity.<wbr/></p></span> 17167 </li> 17168 <li> 17169 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 17170 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 17171each bar should start at its specified color at the top,<wbr/> 17172and fade to gray at the bottom.<wbr/></p> 17173<p>Furthermore each bar is further subdivided into a left and 17174right half.<wbr/> The left half should have a smooth gradient,<wbr/> 17175and the right half should have a quantized gradient.<wbr/></p> 17176<p>In particular,<wbr/> the right half's should consist of blocks of the 17177same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 17178<p>The least significant bits in the quantized gradient should 17179be copied from the most significant bits of the smooth gradient.<wbr/></p> 17180<p>The height of each bar should always be a multiple of 128.<wbr/> 17181When this is not the case,<wbr/> the pattern should repeat at the bottom 17182of the image.<wbr/></p></span> 17183 </li> 17184 <li> 17185 <span class="entry_type_enum_name">PN9</span> 17186 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 17187generated from a PN9 512-bit sequence (typically implemented 17188in hardware with a linear feedback shift register).<wbr/></p> 17189<p>The generator should be reset at the beginning of each frame,<wbr/> 17190and thus each subsequent raw frame with this test pattern should 17191be exactly the same as the last.<wbr/></p></span> 17192 </li> 17193 <li> 17194 <span class="entry_type_enum_name">CUSTOM1</span> 17195 <span class="entry_type_enum_value">256</span> 17196 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 17197available only on this camera device are at least this numeric 17198value.<wbr/></p> 17199<p>All of the custom test patterns will be static 17200(that is the raw image must not vary from frame to frame).<wbr/></p></span> 17201 </li> 17202 </ul> 17203 17204 </td> <!-- entry_type --> 17205 17206 <td class="entry_description"> 17207 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 17208doing a real exposure from the camera.<wbr/></p> 17209 </td> 17210 17211 <td class="entry_units"> 17212 </td> 17213 17214 <td class="entry_range"> 17215 <p>Optional.<wbr/> Defaults to OFF.<wbr/> Value must be one of 17216<a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 17217 </td> 17218 17219 <td class="entry_tags"> 17220 </td> 17221 17222 </tr> 17223 <tr class="entries_header"> 17224 <th class="th_details" colspan="5">Details</th> 17225 </tr> 17226 <tr class="entry_cont"> 17227 <td class="entry_details" colspan="5"> 17228 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 17229by android.<wbr/>sensor.<wbr/>* should be ignored.<wbr/> All other controls should 17230work as normal.<wbr/></p> 17231<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 17232occur (and that the test pattern remain unmodified,<wbr/> since the flash 17233would not actually affect it).<wbr/></p> 17234 </td> 17235 </tr> 17236 17237 <tr class="entries_header"> 17238 <th class="th_details" colspan="5">HAL Implementation Details</th> 17239 </tr> 17240 <tr class="entry_cont"> 17241 <td class="entry_details" colspan="5"> 17242 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 17243<p>The HAL may choose to substitute test patterns from the sensor 17244with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 17245indistinguishable to the ISP whether the data came from the 17246sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 17247 </td> 17248 </tr> 17249 17250 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17251 <!-- end of entry --> 17252 17253 17254 17255 <!-- end of kind --> 17256 </tbody> 17257 17258 <!-- end of section --> 17259 <tr><td colspan="6" id="section_shading" class="section">shading</td></tr> 17260 17261 17262 <tr><td colspan="6" class="kind">controls</td></tr> 17263 17264 <thead class="entries_header"> 17265 <tr> 17266 <th class="th_name">Property Name</th> 17267 <th class="th_type">Type</th> 17268 <th class="th_description">Description</th> 17269 <th class="th_units">Units</th> 17270 <th class="th_range">Range</th> 17271 <th class="th_tags">Tags</th> 17272 </tr> 17273 </thead> 17274 17275 <tbody> 17276 17277 17278 17279 17280 17281 17282 17283 17284 17285 17286 <tr class="entry" id="controls_android.shading.mode"> 17287 <td class="entry_name 17288 " rowspan="3"> 17289 android.<wbr/>shading.<wbr/>mode 17290 </td> 17291 <td class="entry_type"> 17292 <span class="entry_type_name entry_type_name_enum">byte</span> 17293 17294 <span class="entry_type_visibility"> [public]</span> 17295 17296 17297 17298 17299 <ul class="entry_type_enum"> 17300 <li> 17301 <span class="entry_type_enum_name">OFF</span> 17302 <span class="entry_type_enum_notes"><p>No lens shading correction is applied</p></span> 17303 </li> 17304 <li> 17305 <span class="entry_type_enum_name">FAST</span> 17306 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor raw output</p></span> 17307 </li> 17308 <li> 17309 <span class="entry_type_enum_name">HIGH_QUALITY</span> 17310 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high quality</p></span> 17311 </li> 17312 </ul> 17313 17314 </td> <!-- entry_type --> 17315 17316 <td class="entry_description"> 17317 <p>Quality of lens shading correction applied 17318to the image data.<wbr/></p> 17319 </td> 17320 17321 <td class="entry_units"> 17322 </td> 17323 17324 <td class="entry_range"> 17325 </td> 17326 17327 <td class="entry_tags"> 17328 </td> 17329 17330 </tr> 17331 <tr class="entries_header"> 17332 <th class="th_details" colspan="5">Details</th> 17333 </tr> 17334 <tr class="entry_cont"> 17335 <td class="entry_details" colspan="5"> 17336 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 17337camera device,<wbr/> and an identity lens shading map data will be provided 17338if <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 17339shading map with size specified as <code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]</code>,<wbr/> 17340the output <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> for this case will be an identity map 17341shown below:</p> 17342<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/> 17343 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/> 17344 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/> 17345 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/> 17346 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/> 17347 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 ] 17348</code></pre> 17349<p>When set to other modes,<wbr/> lens shading correction will be applied by the 17350camera device.<wbr/> Applications can request lens shading map data by setting 17351<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 17352lens shading map data in <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a>,<wbr/> with size specified 17353by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>; the returned shading map data will be the one 17354applied by the camera device for this capture request.<wbr/></p> 17355<p>The shading map data may depend on the AE and AWB statistics,<wbr/> therefore the reliability 17356of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and AWB are in 17357AUTO 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> OFF),<wbr/> 17358to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB to 17359be converged before using the returned shading map data.<wbr/></p> 17360 </td> 17361 </tr> 17362 17363 17364 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17365 <!-- end of entry --> 17366 17367 17368 <tr class="entry" id="controls_android.shading.strength"> 17369 <td class="entry_name 17370 " rowspan="1"> 17371 android.<wbr/>shading.<wbr/>strength 17372 </td> 17373 <td class="entry_type"> 17374 <span class="entry_type_name">byte</span> 17375 17376 <span class="entry_type_visibility"> [system]</span> 17377 17378 17379 17380 17381 17382 </td> <!-- entry_type --> 17383 17384 <td class="entry_description"> 17385 <p>Control the amount of shading correction 17386applied to the images</p> 17387 </td> 17388 17389 <td class="entry_units"> 17390 unitless: 1-10; 10 is full shading 17391 compensation 17392 </td> 17393 17394 <td class="entry_range"> 17395 </td> 17396 17397 <td class="entry_tags"> 17398 <ul class="entry_tags"> 17399 <li><a href="#tag_FUTURE">FUTURE</a></li> 17400 </ul> 17401 </td> 17402 17403 </tr> 17404 17405 17406 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17407 <!-- end of entry --> 17408 17409 17410 17411 <!-- end of kind --> 17412 </tbody> 17413 <tr><td colspan="6" class="kind">dynamic</td></tr> 17414 17415 <thead class="entries_header"> 17416 <tr> 17417 <th class="th_name">Property Name</th> 17418 <th class="th_type">Type</th> 17419 <th class="th_description">Description</th> 17420 <th class="th_units">Units</th> 17421 <th class="th_range">Range</th> 17422 <th class="th_tags">Tags</th> 17423 </tr> 17424 </thead> 17425 17426 <tbody> 17427 17428 17429 17430 17431 17432 17433 17434 17435 17436 17437 <tr class="entry" id="dynamic_android.shading.mode"> 17438 <td class="entry_name 17439 " rowspan="3"> 17440 android.<wbr/>shading.<wbr/>mode 17441 </td> 17442 <td class="entry_type"> 17443 <span class="entry_type_name entry_type_name_enum">byte</span> 17444 17445 <span class="entry_type_visibility"> [public]</span> 17446 17447 17448 17449 17450 <ul class="entry_type_enum"> 17451 <li> 17452 <span class="entry_type_enum_name">OFF</span> 17453 <span class="entry_type_enum_notes"><p>No lens shading correction is applied</p></span> 17454 </li> 17455 <li> 17456 <span class="entry_type_enum_name">FAST</span> 17457 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor raw output</p></span> 17458 </li> 17459 <li> 17460 <span class="entry_type_enum_name">HIGH_QUALITY</span> 17461 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high quality</p></span> 17462 </li> 17463 </ul> 17464 17465 </td> <!-- entry_type --> 17466 17467 <td class="entry_description"> 17468 <p>Quality of lens shading correction applied 17469to the image data.<wbr/></p> 17470 </td> 17471 17472 <td class="entry_units"> 17473 </td> 17474 17475 <td class="entry_range"> 17476 </td> 17477 17478 <td class="entry_tags"> 17479 </td> 17480 17481 </tr> 17482 <tr class="entries_header"> 17483 <th class="th_details" colspan="5">Details</th> 17484 </tr> 17485 <tr class="entry_cont"> 17486 <td class="entry_details" colspan="5"> 17487 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 17488camera device,<wbr/> and an identity lens shading map data will be provided 17489if <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 17490shading map with size specified as <code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]</code>,<wbr/> 17491the output <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> for this case will be an identity map 17492shown below:</p> 17493<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/> 17494 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/> 17495 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/> 17496 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/> 17497 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/> 17498 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 ] 17499</code></pre> 17500<p>When set to other modes,<wbr/> lens shading correction will be applied by the 17501camera device.<wbr/> Applications can request lens shading map data by setting 17502<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 17503lens shading map data in <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a>,<wbr/> with size specified 17504by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>; the returned shading map data will be the one 17505applied by the camera device for this capture request.<wbr/></p> 17506<p>The shading map data may depend on the AE and AWB statistics,<wbr/> therefore the reliability 17507of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and AWB are in 17508AUTO 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> OFF),<wbr/> 17509to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB to 17510be converged before using the returned shading map data.<wbr/></p> 17511 </td> 17512 </tr> 17513 17514 17515 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17516 <!-- end of entry --> 17517 17518 17519 17520 <!-- end of kind --> 17521 </tbody> 17522 17523 <!-- end of section --> 17524 <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr> 17525 17526 17527 <tr><td colspan="6" class="kind">controls</td></tr> 17528 17529 <thead class="entries_header"> 17530 <tr> 17531 <th class="th_name">Property Name</th> 17532 <th class="th_type">Type</th> 17533 <th class="th_description">Description</th> 17534 <th class="th_units">Units</th> 17535 <th class="th_range">Range</th> 17536 <th class="th_tags">Tags</th> 17537 </tr> 17538 </thead> 17539 17540 <tbody> 17541 17542 17543 17544 17545 17546 17547 17548 17549 17550 17551 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 17552 <td class="entry_name 17553 " rowspan="3"> 17554 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 17555 </td> 17556 <td class="entry_type"> 17557 <span class="entry_type_name entry_type_name_enum">byte</span> 17558 17559 <span class="entry_type_visibility"> [public]</span> 17560 17561 17562 17563 17564 <ul class="entry_type_enum"> 17565 <li> 17566 <span class="entry_type_enum_name">OFF</span> 17567 </li> 17568 <li> 17569 <span class="entry_type_enum_name">SIMPLE</span> 17570 <span class="entry_type_enum_notes"><p>Optional Return rectangle and confidence 17571only</p></span> 17572 </li> 17573 <li> 17574 <span class="entry_type_enum_name">FULL</span> 17575 <span class="entry_type_enum_notes"><p>Optional Return all face 17576metadata</p></span> 17577 </li> 17578 </ul> 17579 17580 </td> <!-- entry_type --> 17581 17582 <td class="entry_description"> 17583 <p>State of the face detector 17584unit</p> 17585 </td> 17586 17587 <td class="entry_units"> 17588 </td> 17589 17590 <td class="entry_range"> 17591 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 17592 </td> 17593 17594 <td class="entry_tags"> 17595 <ul class="entry_tags"> 17596 <li><a href="#tag_BC">BC</a></li> 17597 </ul> 17598 </td> 17599 17600 </tr> 17601 <tr class="entries_header"> 17602 <th class="th_details" colspan="5">Details</th> 17603 </tr> 17604 <tr class="entry_cont"> 17605 <td class="entry_details" colspan="5"> 17606 <p>Whether face detection is enabled,<wbr/> and whether it 17607should output just the basic fields or the full set of 17608fields.<wbr/> Value must be one of the 17609<a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>.<wbr/></p> 17610 </td> 17611 </tr> 17612 17613 17614 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17615 <!-- end of entry --> 17616 17617 17618 <tr class="entry" id="controls_android.statistics.histogramMode"> 17619 <td class="entry_name 17620 " rowspan="1"> 17621 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 17622 </td> 17623 <td class="entry_type"> 17624 <span class="entry_type_name entry_type_name_enum">byte</span> 17625 17626 <span class="entry_type_visibility"> [system as boolean]</span> 17627 17628 17629 17630 17631 <ul class="entry_type_enum"> 17632 <li> 17633 <span class="entry_type_enum_name">OFF</span> 17634 </li> 17635 <li> 17636 <span class="entry_type_enum_name">ON</span> 17637 </li> 17638 </ul> 17639 17640 </td> <!-- entry_type --> 17641 17642 <td class="entry_description"> 17643 <p>Operating mode for histogram 17644generation</p> 17645 </td> 17646 17647 <td class="entry_units"> 17648 </td> 17649 17650 <td class="entry_range"> 17651 </td> 17652 17653 <td class="entry_tags"> 17654 <ul class="entry_tags"> 17655 <li><a href="#tag_FUTURE">FUTURE</a></li> 17656 </ul> 17657 </td> 17658 17659 </tr> 17660 17661 17662 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17663 <!-- end of entry --> 17664 17665 17666 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 17667 <td class="entry_name 17668 " rowspan="1"> 17669 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 17670 </td> 17671 <td class="entry_type"> 17672 <span class="entry_type_name entry_type_name_enum">byte</span> 17673 17674 <span class="entry_type_visibility"> [system as boolean]</span> 17675 17676 17677 17678 17679 <ul class="entry_type_enum"> 17680 <li> 17681 <span class="entry_type_enum_name">OFF</span> 17682 </li> 17683 <li> 17684 <span class="entry_type_enum_name">ON</span> 17685 </li> 17686 </ul> 17687 17688 </td> <!-- entry_type --> 17689 17690 <td class="entry_description"> 17691 <p>Operating mode for sharpness map 17692generation</p> 17693 </td> 17694 17695 <td class="entry_units"> 17696 </td> 17697 17698 <td class="entry_range"> 17699 </td> 17700 17701 <td class="entry_tags"> 17702 <ul class="entry_tags"> 17703 <li><a href="#tag_FUTURE">FUTURE</a></li> 17704 </ul> 17705 </td> 17706 17707 </tr> 17708 17709 17710 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17711 <!-- end of entry --> 17712 17713 17714 <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> 17715 <td class="entry_name 17716 " rowspan="3"> 17717 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 17718 </td> 17719 <td class="entry_type"> 17720 <span class="entry_type_name entry_type_name_enum">byte</span> 17721 17722 <span class="entry_type_visibility"> [public as boolean]</span> 17723 17724 17725 17726 17727 <ul class="entry_type_enum"> 17728 <li> 17729 <span class="entry_type_enum_name">OFF</span> 17730 </li> 17731 <li> 17732 <span class="entry_type_enum_name">ON</span> 17733 </li> 17734 </ul> 17735 17736 </td> <!-- entry_type --> 17737 17738 <td class="entry_description"> 17739 <p>Operating mode for hotpixel map generation.<wbr/></p> 17740 </td> 17741 17742 <td class="entry_units"> 17743 </td> 17744 17745 <td class="entry_range"> 17746 </td> 17747 17748 <td class="entry_tags"> 17749 <ul class="entry_tags"> 17750 <li><a href="#tag_V1">V1</a></li> 17751 <li><a href="#tag_DNG">DNG</a></li> 17752 </ul> 17753 </td> 17754 17755 </tr> 17756 <tr class="entries_header"> 17757 <th class="th_details" colspan="5">Details</th> 17758 </tr> 17759 <tr class="entry_cont"> 17760 <td class="entry_details" colspan="5"> 17761 <p>If set to ON,<wbr/> a hotpixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/> 17762If set to OFF,<wbr/> no hotpixel map should be returned.<wbr/></p> 17763<p>This must be set to a valid mode from <a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a>.<wbr/></p> 17764 </td> 17765 </tr> 17766 17767 17768 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17769 <!-- end of entry --> 17770 17771 17772 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 17773 <td class="entry_name 17774 " rowspan="3"> 17775 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 17776 </td> 17777 <td class="entry_type"> 17778 <span class="entry_type_name entry_type_name_enum">byte</span> 17779 17780 <span class="entry_type_visibility"> [public]</span> 17781 17782 17783 17784 17785 <ul class="entry_type_enum"> 17786 <li> 17787 <span class="entry_type_enum_name">OFF</span> 17788 </li> 17789 <li> 17790 <span class="entry_type_enum_name">ON</span> 17791 </li> 17792 </ul> 17793 17794 </td> <!-- entry_type --> 17795 17796 <td class="entry_description"> 17797 <p>Whether the camera device will output the lens 17798shading map in output result metadata.<wbr/></p> 17799 </td> 17800 17801 <td class="entry_units"> 17802 </td> 17803 17804 <td class="entry_range"> 17805 </td> 17806 17807 <td class="entry_tags"> 17808 </td> 17809 17810 </tr> 17811 <tr class="entries_header"> 17812 <th class="th_details" colspan="5">Details</th> 17813 </tr> 17814 <tr class="entry_cont"> 17815 <td class="entry_details" colspan="5"> 17816 <p>When set to ON,<wbr/> 17817<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> must be provided in 17818the output result metadata.<wbr/></p> 17819 </td> 17820 </tr> 17821 17822 17823 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17824 <!-- end of entry --> 17825 17826 17827 17828 <!-- end of kind --> 17829 </tbody> 17830 <tr><td colspan="6" class="kind">static</td></tr> 17831 17832 <thead class="entries_header"> 17833 <tr> 17834 <th class="th_name">Property Name</th> 17835 <th class="th_type">Type</th> 17836 <th class="th_description">Description</th> 17837 <th class="th_units">Units</th> 17838 <th class="th_range">Range</th> 17839 <th class="th_tags">Tags</th> 17840 </tr> 17841 </thead> 17842 17843 <tbody> 17844 17845 17846 17847 17848 17849 17850 17851 17852 17853 17854 17855 17856 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 17857 <td class="entry_name 17858 " rowspan="3"> 17859 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 17860 </td> 17861 <td class="entry_type"> 17862 <span class="entry_type_name">byte</span> 17863 <span class="entry_type_container">x</span> 17864 17865 <span class="entry_type_array"> 17866 n 17867 </span> 17868 <span class="entry_type_visibility"> [public as enumList]</span> 17869 17870 17871 17872 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 17873 17874 17875 </td> <!-- entry_type --> 17876 17877 <td class="entry_description"> 17878 <p>Which face detection modes are available,<wbr/> 17879if any</p> 17880 </td> 17881 17882 <td class="entry_units"> 17883 List of enum: 17884 OFF 17885 SIMPLE 17886 FULL 17887 </td> 17888 17889 <td class="entry_range"> 17890 </td> 17891 17892 <td class="entry_tags"> 17893 </td> 17894 17895 </tr> 17896 <tr class="entries_header"> 17897 <th class="th_details" colspan="5">Details</th> 17898 </tr> 17899 <tr class="entry_cont"> 17900 <td class="entry_details" colspan="5"> 17901 <p>OFF means face detection is disabled,<wbr/> it must 17902be included in the list.<wbr/></p> 17903<p>SIMPLE means the device supports the 17904<a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 17905<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a> outputs.<wbr/></p> 17906<p>FULL means the device additionally supports the 17907<a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a> and 17908<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a> outputs.<wbr/></p> 17909 </td> 17910 </tr> 17911 17912 17913 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17914 <!-- end of entry --> 17915 17916 17917 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 17918 <td class="entry_name 17919 " rowspan="1"> 17920 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 17921 </td> 17922 <td class="entry_type"> 17923 <span class="entry_type_name">int32</span> 17924 17925 <span class="entry_type_visibility"> [system]</span> 17926 17927 17928 17929 17930 17931 </td> <!-- entry_type --> 17932 17933 <td class="entry_description"> 17934 <p>Number of histogram buckets 17935supported</p> 17936 </td> 17937 17938 <td class="entry_units"> 17939 </td> 17940 17941 <td class="entry_range"> 17942 <p>>= 64</p> 17943 </td> 17944 17945 <td class="entry_tags"> 17946 <ul class="entry_tags"> 17947 <li><a href="#tag_FUTURE">FUTURE</a></li> 17948 </ul> 17949 </td> 17950 17951 </tr> 17952 17953 17954 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17955 <!-- end of entry --> 17956 17957 17958 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 17959 <td class="entry_name 17960 " rowspan="1"> 17961 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 17962 </td> 17963 <td class="entry_type"> 17964 <span class="entry_type_name">int32</span> 17965 17966 <span class="entry_type_visibility"> [public]</span> 17967 17968 17969 17970 17971 17972 </td> <!-- entry_type --> 17973 17974 <td class="entry_description"> 17975 <p>Maximum number of simultaneously detectable 17976faces</p> 17977 </td> 17978 17979 <td class="entry_units"> 17980 </td> 17981 17982 <td class="entry_range"> 17983 <p>>= 4 if <a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a> lists 17984modes besides OFF,<wbr/> otherwise 0</p> 17985 </td> 17986 17987 <td class="entry_tags"> 17988 <ul class="entry_tags"> 17989 <li><a href="#tag_BC">BC</a></li> 17990 </ul> 17991 </td> 17992 17993 </tr> 17994 17995 17996 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17997 <!-- end of entry --> 17998 17999 18000 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 18001 <td class="entry_name 18002 " rowspan="1"> 18003 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 18004 </td> 18005 <td class="entry_type"> 18006 <span class="entry_type_name">int32</span> 18007 18008 <span class="entry_type_visibility"> [system]</span> 18009 18010 18011 18012 18013 18014 </td> <!-- entry_type --> 18015 18016 <td class="entry_description"> 18017 <p>Maximum value possible for a histogram 18018bucket</p> 18019 </td> 18020 18021 <td class="entry_units"> 18022 </td> 18023 18024 <td class="entry_range"> 18025 </td> 18026 18027 <td class="entry_tags"> 18028 <ul class="entry_tags"> 18029 <li><a href="#tag_FUTURE">FUTURE</a></li> 18030 </ul> 18031 </td> 18032 18033 </tr> 18034 18035 18036 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18037 <!-- end of entry --> 18038 18039 18040 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 18041 <td class="entry_name 18042 " rowspan="1"> 18043 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 18044 </td> 18045 <td class="entry_type"> 18046 <span class="entry_type_name">int32</span> 18047 18048 <span class="entry_type_visibility"> [system]</span> 18049 18050 18051 18052 18053 18054 </td> <!-- entry_type --> 18055 18056 <td class="entry_description"> 18057 <p>Maximum value possible for a sharpness map 18058region.<wbr/></p> 18059 </td> 18060 18061 <td class="entry_units"> 18062 </td> 18063 18064 <td class="entry_range"> 18065 </td> 18066 18067 <td class="entry_tags"> 18068 <ul class="entry_tags"> 18069 <li><a href="#tag_FUTURE">FUTURE</a></li> 18070 </ul> 18071 </td> 18072 18073 </tr> 18074 18075 18076 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18077 <!-- end of entry --> 18078 18079 18080 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 18081 <td class="entry_name 18082 " rowspan="1"> 18083 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 18084 </td> 18085 <td class="entry_type"> 18086 <span class="entry_type_name">int32</span> 18087 <span class="entry_type_container">x</span> 18088 18089 <span class="entry_type_array"> 18090 2 18091 </span> 18092 <span class="entry_type_visibility"> [system as size]</span> 18093 18094 18095 18096 <div class="entry_type_notes">width x height</div> 18097 18098 18099 </td> <!-- entry_type --> 18100 18101 <td class="entry_description"> 18102 <p>Dimensions of the sharpness 18103map</p> 18104 </td> 18105 18106 <td class="entry_units"> 18107 </td> 18108 18109 <td class="entry_range"> 18110 <p>Must be at least 32 x 32</p> 18111 </td> 18112 18113 <td class="entry_tags"> 18114 <ul class="entry_tags"> 18115 <li><a href="#tag_FUTURE">FUTURE</a></li> 18116 </ul> 18117 </td> 18118 18119 </tr> 18120 18121 18122 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18123 <!-- end of entry --> 18124 18125 18126 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> 18127 <td class="entry_name 18128 " rowspan="3"> 18129 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes 18130 </td> 18131 <td class="entry_type"> 18132 <span class="entry_type_name">byte</span> 18133 <span class="entry_type_container">x</span> 18134 18135 <span class="entry_type_array"> 18136 n 18137 </span> 18138 <span class="entry_type_visibility"> [public as boolean]</span> 18139 18140 18141 18142 <div class="entry_type_notes">list of enums</div> 18143 18144 18145 </td> <!-- entry_type --> 18146 18147 <td class="entry_description"> 18148 <p>The set of hot pixel map output modes supported by this camera device.<wbr/></p> 18149 </td> 18150 18151 <td class="entry_units"> 18152 </td> 18153 18154 <td class="entry_range"> 18155 </td> 18156 18157 <td class="entry_tags"> 18158 <ul class="entry_tags"> 18159 <li><a href="#tag_V1">V1</a></li> 18160 <li><a href="#tag_DNG">DNG</a></li> 18161 </ul> 18162 </td> 18163 18164 </tr> 18165 <tr class="entries_header"> 18166 <th class="th_details" colspan="5">Details</th> 18167 </tr> 18168 <tr class="entry_cont"> 18169 <td class="entry_details" colspan="5"> 18170 <p>This tag lists valid output modes for <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a>.<wbr/></p> 18171<p>If no hotpixel map is available for this camera device,<wbr/> this will contain 18172only OFF.<wbr/> If the hotpixel map is available,<wbr/> this should include both 18173the ON and OFF options.<wbr/></p> 18174 </td> 18175 </tr> 18176 18177 18178 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18179 <!-- end of entry --> 18180 18181 18182 18183 18184 18185 18186 <!-- end of kind --> 18187 </tbody> 18188 <tr><td colspan="6" class="kind">dynamic</td></tr> 18189 18190 <thead class="entries_header"> 18191 <tr> 18192 <th class="th_name">Property Name</th> 18193 <th class="th_type">Type</th> 18194 <th class="th_description">Description</th> 18195 <th class="th_units">Units</th> 18196 <th class="th_range">Range</th> 18197 <th class="th_tags">Tags</th> 18198 </tr> 18199 </thead> 18200 18201 <tbody> 18202 18203 18204 18205 18206 18207 18208 18209 18210 18211 18212 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 18213 <td class="entry_name 18214 " rowspan="3"> 18215 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 18216 </td> 18217 <td class="entry_type"> 18218 <span class="entry_type_name entry_type_name_enum">byte</span> 18219 18220 <span class="entry_type_visibility"> [public]</span> 18221 18222 18223 18224 18225 <ul class="entry_type_enum"> 18226 <li> 18227 <span class="entry_type_enum_name">OFF</span> 18228 </li> 18229 <li> 18230 <span class="entry_type_enum_name">SIMPLE</span> 18231 <span class="entry_type_enum_notes"><p>Optional Return rectangle and confidence 18232only</p></span> 18233 </li> 18234 <li> 18235 <span class="entry_type_enum_name">FULL</span> 18236 <span class="entry_type_enum_notes"><p>Optional Return all face 18237metadata</p></span> 18238 </li> 18239 </ul> 18240 18241 </td> <!-- entry_type --> 18242 18243 <td class="entry_description"> 18244 <p>State of the face detector 18245unit</p> 18246 </td> 18247 18248 <td class="entry_units"> 18249 </td> 18250 18251 <td class="entry_range"> 18252 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 18253 </td> 18254 18255 <td class="entry_tags"> 18256 <ul class="entry_tags"> 18257 <li><a href="#tag_BC">BC</a></li> 18258 </ul> 18259 </td> 18260 18261 </tr> 18262 <tr class="entries_header"> 18263 <th class="th_details" colspan="5">Details</th> 18264 </tr> 18265 <tr class="entry_cont"> 18266 <td class="entry_details" colspan="5"> 18267 <p>Whether face detection is enabled,<wbr/> and whether it 18268should output just the basic fields or the full set of 18269fields.<wbr/> Value must be one of the 18270<a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>.<wbr/></p> 18271 </td> 18272 </tr> 18273 18274 18275 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18276 <!-- end of entry --> 18277 18278 18279 <tr class="entry" id="dynamic_android.statistics.faceIds"> 18280 <td class="entry_name 18281 " rowspan="3"> 18282 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 18283 </td> 18284 <td class="entry_type"> 18285 <span class="entry_type_name">int32</span> 18286 <span class="entry_type_container">x</span> 18287 18288 <span class="entry_type_array"> 18289 n 18290 </span> 18291 <span class="entry_type_visibility"> [hidden]</span> 18292 18293 18294 18295 18296 18297 </td> <!-- entry_type --> 18298 18299 <td class="entry_description"> 18300 <p>List of unique IDs for detected 18301faces</p> 18302 </td> 18303 18304 <td class="entry_units"> 18305 </td> 18306 18307 <td class="entry_range"> 18308 </td> 18309 18310 <td class="entry_tags"> 18311 <ul class="entry_tags"> 18312 <li><a href="#tag_BC">BC</a></li> 18313 </ul> 18314 </td> 18315 18316 </tr> 18317 <tr class="entries_header"> 18318 <th class="th_details" colspan="5">Details</th> 18319 </tr> 18320 <tr class="entry_cont"> 18321 <td class="entry_details" colspan="5"> 18322 <p>Only available if faceDetectMode == FULL</p> 18323 </td> 18324 </tr> 18325 18326 18327 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18328 <!-- end of entry --> 18329 18330 18331 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 18332 <td class="entry_name 18333 " rowspan="3"> 18334 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 18335 </td> 18336 <td class="entry_type"> 18337 <span class="entry_type_name">int32</span> 18338 <span class="entry_type_container">x</span> 18339 18340 <span class="entry_type_array"> 18341 n x 6 18342 </span> 18343 <span class="entry_type_visibility"> [hidden]</span> 18344 18345 18346 18347 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 18348 18349 18350 </td> <!-- entry_type --> 18351 18352 <td class="entry_description"> 18353 <p>List of landmarks for detected 18354faces</p> 18355 </td> 18356 18357 <td class="entry_units"> 18358 </td> 18359 18360 <td class="entry_range"> 18361 </td> 18362 18363 <td class="entry_tags"> 18364 <ul class="entry_tags"> 18365 <li><a href="#tag_BC">BC</a></li> 18366 </ul> 18367 </td> 18368 18369 </tr> 18370 <tr class="entries_header"> 18371 <th class="th_details" colspan="5">Details</th> 18372 </tr> 18373 <tr class="entry_cont"> 18374 <td class="entry_details" colspan="5"> 18375 <p>Only available if faceDetectMode == FULL</p> 18376 </td> 18377 </tr> 18378 18379 18380 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18381 <!-- end of entry --> 18382 18383 18384 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 18385 <td class="entry_name 18386 " rowspan="3"> 18387 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 18388 </td> 18389 <td class="entry_type"> 18390 <span class="entry_type_name">int32</span> 18391 <span class="entry_type_container">x</span> 18392 18393 <span class="entry_type_array"> 18394 n x 4 18395 </span> 18396 <span class="entry_type_visibility"> [hidden as rectangle]</span> 18397 18398 18399 18400 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 18401 18402 18403 </td> <!-- entry_type --> 18404 18405 <td class="entry_description"> 18406 <p>List of the bounding rectangles for detected 18407faces</p> 18408 </td> 18409 18410 <td class="entry_units"> 18411 </td> 18412 18413 <td class="entry_range"> 18414 </td> 18415 18416 <td class="entry_tags"> 18417 <ul class="entry_tags"> 18418 <li><a href="#tag_BC">BC</a></li> 18419 </ul> 18420 </td> 18421 18422 </tr> 18423 <tr class="entries_header"> 18424 <th class="th_details" colspan="5">Details</th> 18425 </tr> 18426 <tr class="entry_cont"> 18427 <td class="entry_details" colspan="5"> 18428 <p>Only available if faceDetectMode != OFF</p> 18429 </td> 18430 </tr> 18431 18432 18433 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18434 <!-- end of entry --> 18435 18436 18437 <tr class="entry" id="dynamic_android.statistics.faceScores"> 18438 <td class="entry_name 18439 " rowspan="3"> 18440 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 18441 </td> 18442 <td class="entry_type"> 18443 <span class="entry_type_name">byte</span> 18444 <span class="entry_type_container">x</span> 18445 18446 <span class="entry_type_array"> 18447 n 18448 </span> 18449 <span class="entry_type_visibility"> [hidden]</span> 18450 18451 18452 18453 18454 18455 </td> <!-- entry_type --> 18456 18457 <td class="entry_description"> 18458 <p>List of the face confidence scores for 18459detected faces</p> 18460 </td> 18461 18462 <td class="entry_units"> 18463 </td> 18464 18465 <td class="entry_range"> 18466 <p>1-100</p> 18467 </td> 18468 18469 <td class="entry_tags"> 18470 <ul class="entry_tags"> 18471 <li><a href="#tag_BC">BC</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>Only available if faceDetectMode != OFF.<wbr/> The value should be 18482meaningful (for example,<wbr/> setting 100 at all times is illegal).<wbr/></p> 18483 </td> 18484 </tr> 18485 18486 18487 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18488 <!-- end of entry --> 18489 18490 18491 <tr class="entry" id="dynamic_android.statistics.faces"> 18492 <td class="entry_name 18493 " rowspan="3"> 18494 android.<wbr/>statistics.<wbr/>faces 18495 </td> 18496 <td class="entry_type"> 18497 <span class="entry_type_name">int32</span> 18498 <span class="entry_type_container">x</span> 18499 18500 <span class="entry_type_array"> 18501 n 18502 </span> 18503 <span class="entry_type_visibility"> [public as face]</span> 18504 18505 <span class="entry_type_synthetic">[synthetic] </span> 18506 18507 18508 18509 18510 </td> <!-- entry_type --> 18511 18512 <td class="entry_description"> 18513 <p>List of the faces detected through camera face detection 18514in this result.<wbr/></p> 18515 </td> 18516 18517 <td class="entry_units"> 18518 </td> 18519 18520 <td class="entry_range"> 18521 </td> 18522 18523 <td class="entry_tags"> 18524 </td> 18525 18526 </tr> 18527 <tr class="entries_header"> 18528 <th class="th_details" colspan="5">Details</th> 18529 </tr> 18530 <tr class="entry_cont"> 18531 <td class="entry_details" colspan="5"> 18532 <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> 18533 </td> 18534 </tr> 18535 18536 18537 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18538 <!-- end of entry --> 18539 18540 18541 <tr class="entry" id="dynamic_android.statistics.histogram"> 18542 <td class="entry_name 18543 " rowspan="3"> 18544 android.<wbr/>statistics.<wbr/>histogram 18545 </td> 18546 <td class="entry_type"> 18547 <span class="entry_type_name">int32</span> 18548 <span class="entry_type_container">x</span> 18549 18550 <span class="entry_type_array"> 18551 n x 3 18552 </span> 18553 <span class="entry_type_visibility"> [system]</span> 18554 18555 18556 18557 <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> 18558 18559 18560 </td> <!-- entry_type --> 18561 18562 <td class="entry_description"> 18563 <p>A 3-channel histogram based on the raw 18564sensor data</p> 18565 </td> 18566 18567 <td class="entry_units"> 18568 </td> 18569 18570 <td class="entry_range"> 18571 </td> 18572 18573 <td class="entry_tags"> 18574 <ul class="entry_tags"> 18575 <li><a href="#tag_FUTURE">FUTURE</a></li> 18576 </ul> 18577 </td> 18578 18579 </tr> 18580 <tr class="entries_header"> 18581 <th class="th_details" colspan="5">Details</th> 18582 </tr> 18583 <tr class="entry_cont"> 18584 <td class="entry_details" colspan="5"> 18585 <p>The k'th bucket (0-based) covers the input range 18586(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/> 18587(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 18588supported,<wbr/> all channels should have the same data</p> 18589 </td> 18590 </tr> 18591 18592 18593 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18594 <!-- end of entry --> 18595 18596 18597 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 18598 <td class="entry_name 18599 " rowspan="1"> 18600 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 18601 </td> 18602 <td class="entry_type"> 18603 <span class="entry_type_name entry_type_name_enum">byte</span> 18604 18605 <span class="entry_type_visibility"> [system as boolean]</span> 18606 18607 18608 18609 18610 <ul class="entry_type_enum"> 18611 <li> 18612 <span class="entry_type_enum_name">OFF</span> 18613 </li> 18614 <li> 18615 <span class="entry_type_enum_name">ON</span> 18616 </li> 18617 </ul> 18618 18619 </td> <!-- entry_type --> 18620 18621 <td class="entry_description"> 18622 <p>Operating mode for histogram 18623generation</p> 18624 </td> 18625 18626 <td class="entry_units"> 18627 </td> 18628 18629 <td class="entry_range"> 18630 </td> 18631 18632 <td class="entry_tags"> 18633 <ul class="entry_tags"> 18634 <li><a href="#tag_FUTURE">FUTURE</a></li> 18635 </ul> 18636 </td> 18637 18638 </tr> 18639 18640 18641 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18642 <!-- end of entry --> 18643 18644 18645 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 18646 <td class="entry_name 18647 " rowspan="3"> 18648 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 18649 </td> 18650 <td class="entry_type"> 18651 <span class="entry_type_name">int32</span> 18652 <span class="entry_type_container">x</span> 18653 18654 <span class="entry_type_array"> 18655 n x m x 3 18656 </span> 18657 <span class="entry_type_visibility"> [system]</span> 18658 18659 18660 18661 <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> 18662 18663 18664 </td> <!-- entry_type --> 18665 18666 <td class="entry_description"> 18667 <p>A 3-channel sharpness map,<wbr/> based on the raw 18668sensor data</p> 18669 </td> 18670 18671 <td class="entry_units"> 18672 </td> 18673 18674 <td class="entry_range"> 18675 </td> 18676 18677 <td class="entry_tags"> 18678 <ul class="entry_tags"> 18679 <li><a href="#tag_FUTURE">FUTURE</a></li> 18680 </ul> 18681 </td> 18682 18683 </tr> 18684 <tr class="entries_header"> 18685 <th class="th_details" colspan="5">Details</th> 18686 </tr> 18687 <tr class="entry_cont"> 18688 <td class="entry_details" colspan="5"> 18689 <p>If only a monochrome sharpness map is supported,<wbr/> 18690all channels should have the same data</p> 18691 </td> 18692 </tr> 18693 18694 18695 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18696 <!-- end of entry --> 18697 18698 18699 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> 18700 <td class="entry_name 18701 " rowspan="1"> 18702 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 18703 </td> 18704 <td class="entry_type"> 18705 <span class="entry_type_name entry_type_name_enum">byte</span> 18706 18707 <span class="entry_type_visibility"> [system as boolean]</span> 18708 18709 18710 18711 18712 <ul class="entry_type_enum"> 18713 <li> 18714 <span class="entry_type_enum_name">OFF</span> 18715 </li> 18716 <li> 18717 <span class="entry_type_enum_name">ON</span> 18718 </li> 18719 </ul> 18720 18721 </td> <!-- entry_type --> 18722 18723 <td class="entry_description"> 18724 <p>Operating mode for sharpness map 18725generation</p> 18726 </td> 18727 18728 <td class="entry_units"> 18729 </td> 18730 18731 <td class="entry_range"> 18732 </td> 18733 18734 <td class="entry_tags"> 18735 <ul class="entry_tags"> 18736 <li><a href="#tag_FUTURE">FUTURE</a></li> 18737 </ul> 18738 </td> 18739 18740 </tr> 18741 18742 18743 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18744 <!-- end of entry --> 18745 18746 18747 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap"> 18748 <td class="entry_name 18749 " rowspan="3"> 18750 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map 18751 </td> 18752 <td class="entry_type"> 18753 <span class="entry_type_name">byte</span> 18754 18755 <span class="entry_type_visibility"> [public as lensShadingMap]</span> 18756 18757 18758 18759 18760 18761 </td> <!-- entry_type --> 18762 18763 <td class="entry_description"> 18764 <p>The shading map is a low-resolution floating-point map 18765that lists the coefficients used to correct for vignetting,<wbr/> for each 18766Bayer color channel.<wbr/></p> 18767 </td> 18768 18769 <td class="entry_units"> 18770 </td> 18771 18772 <td class="entry_range"> 18773 <p>Each gain factor is >= 1</p> 18774 </td> 18775 18776 <td class="entry_tags"> 18777 </td> 18778 18779 </tr> 18780 <tr class="entries_header"> 18781 <th class="th_details" colspan="5">Details</th> 18782 </tr> 18783 <tr class="entry_cont"> 18784 <td class="entry_details" colspan="5"> 18785 <p>The least shaded section of the image should have a gain factor 18786of 1; all other sections should have gains above 1.<wbr/></p> 18787<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 18788must take into account the colorCorrection settings.<wbr/></p> 18789<p>The shading map is for the entire active pixel array,<wbr/> and is not 18790affected by the crop region specified in the request.<wbr/> Each shading map 18791entry is the value of the shading compensation map over a specific 18792pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 18793map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 18794(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 18795pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 18796The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 18797<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 18798channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 18799The shading map is stored in a fully interleaved format.<wbr/></p> 18800<p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 18801and must be smaller than 64x64.<wbr/></p> 18802<p>As an example,<wbr/> given a very small map defined as:</p> 18803<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ] 18804values = 18805[ 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/> 18806 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/> 18807 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/> 18808 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/> 18809 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/> 18810 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 ] 18811</code></pre> 18812<p>The low-resolution scaling map images for each channel are 18813(displayed using nearest-neighbor interpolation):</p> 18814<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 18815<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 18816<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 18817<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 18818<p>As a visualization only,<wbr/> inverting the full-color map to recover an 18819image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 18820<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 18821 </td> 18822 </tr> 18823 18824 18825 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18826 <!-- end of entry --> 18827 18828 18829 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 18830 <td class="entry_name 18831 " rowspan="5"> 18832 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 18833 </td> 18834 <td class="entry_type"> 18835 <span class="entry_type_name">float</span> 18836 <span class="entry_type_container">x</span> 18837 18838 <span class="entry_type_array"> 18839 4 x n x m 18840 </span> 18841 <span class="entry_type_visibility"> [hidden]</span> 18842 18843 18844 18845 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 18846 18847 18848 </td> <!-- entry_type --> 18849 18850 <td class="entry_description"> 18851 <p>The shading map is a low-resolution floating-point map 18852that lists the coefficients used to correct for vignetting,<wbr/> for each 18853Bayer color channel.<wbr/></p> 18854 </td> 18855 18856 <td class="entry_units"> 18857 </td> 18858 18859 <td class="entry_range"> 18860 <p>Each gain factor is >= 1</p> 18861 </td> 18862 18863 <td class="entry_tags"> 18864 </td> 18865 18866 </tr> 18867 <tr class="entries_header"> 18868 <th class="th_details" colspan="5">Details</th> 18869 </tr> 18870 <tr class="entry_cont"> 18871 <td class="entry_details" colspan="5"> 18872 <p>The least shaded section of the image should have a gain factor 18873of 1; all other sections should have gains above 1.<wbr/></p> 18874<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 18875must take into account the colorCorrection settings.<wbr/></p> 18876<p>The shading map is for the entire active pixel array,<wbr/> and is not 18877affected by the crop region specified in the request.<wbr/> Each shading map 18878entry is the value of the shading compensation map over a specific 18879pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 18880map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 18881(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 18882pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 18883The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 18884<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 18885channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 18886The shading map is stored in a fully interleaved format,<wbr/> and its size 18887is 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> 18888<p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 18889and must be smaller than 64x64.<wbr/></p> 18890<p>As an example,<wbr/> given a very small map defined as:</p> 18891<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 18892<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 18893[ 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/> 18894 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/> 18895 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/> 18896 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/> 18897 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/> 18898 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 ] 18899</code></pre> 18900<p>The low-resolution scaling map images for each channel are 18901(displayed using nearest-neighbor interpolation):</p> 18902<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 18903<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 18904<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 18905<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 18906<p>As a visualization only,<wbr/> inverting the full-color map to recover an 18907image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 18908<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 18909 </td> 18910 </tr> 18911 18912 <tr class="entries_header"> 18913 <th class="th_details" colspan="5">HAL Implementation Details</th> 18914 </tr> 18915 <tr class="entry_cont"> 18916 <td class="entry_details" colspan="5"> 18917 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/> 18918When AE and AWB are in AUTO modes 18919(<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 18920may have all the information it need to generate most accurate lens shading map.<wbr/> When 18921AE or AWB are in manual mode 18922(<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 18923may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid 18924generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with 18925the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p> 18926 </td> 18927 </tr> 18928 18929 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18930 <!-- end of entry --> 18931 18932 18933 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 18934 <td class="entry_name 18935 entry_name_deprecated 18936 " rowspan="3"> 18937 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 18938 </td> 18939 <td class="entry_type"> 18940 <span class="entry_type_name">float</span> 18941 <span class="entry_type_container">x</span> 18942 18943 <span class="entry_type_array"> 18944 4 18945 </span> 18946 <span class="entry_type_visibility"> [hidden]</span> 18947 18948 18949 <span class="entry_type_deprecated">[deprecated] </span> 18950 18951 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 18952 18953 18954 </td> <!-- entry_type --> 18955 18956 <td class="entry_description"> 18957 <p>The best-fit color channel gains calculated 18958by the camera device's statistics units for the current output frame.<wbr/></p> 18959 </td> 18960 18961 <td class="entry_units"> 18962 </td> 18963 18964 <td class="entry_range"> 18965 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18966 </td> 18967 18968 <td class="entry_tags"> 18969 </td> 18970 18971 </tr> 18972 <tr class="entries_header"> 18973 <th class="th_details" colspan="5">Details</th> 18974 </tr> 18975 <tr class="entry_cont"> 18976 <td class="entry_details" colspan="5"> 18977 <p>This may be different than the gains used for this frame,<wbr/> 18978since statistics processing on data from a new frame 18979typically completes after the transform has already been 18980applied to that frame.<wbr/></p> 18981<p>The 4 channel gains are defined in Bayer domain,<wbr/> 18982see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 18983<p>This value should always be calculated by the AWB block,<wbr/> 18984regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 18985 </td> 18986 </tr> 18987 18988 18989 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18990 <!-- end of entry --> 18991 18992 18993 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 18994 <td class="entry_name 18995 entry_name_deprecated 18996 " rowspan="3"> 18997 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 18998 </td> 18999 <td class="entry_type"> 19000 <span class="entry_type_name">rational</span> 19001 <span class="entry_type_container">x</span> 19002 19003 <span class="entry_type_array"> 19004 3 x 3 19005 </span> 19006 <span class="entry_type_visibility"> [hidden]</span> 19007 19008 19009 <span class="entry_type_deprecated">[deprecated] </span> 19010 19011 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 19012 19013 19014 </td> <!-- entry_type --> 19015 19016 <td class="entry_description"> 19017 <p>The best-fit color transform matrix estimate 19018calculated by the camera device's statistics units for the current 19019output frame.<wbr/></p> 19020 </td> 19021 19022 <td class="entry_units"> 19023 </td> 19024 19025 <td class="entry_range"> 19026 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 19027 </td> 19028 19029 <td class="entry_tags"> 19030 </td> 19031 19032 </tr> 19033 <tr class="entries_header"> 19034 <th class="th_details" colspan="5">Details</th> 19035 </tr> 19036 <tr class="entry_cont"> 19037 <td class="entry_details" colspan="5"> 19038 <p>The camera device will provide the estimate from its 19039statistics unit on the white balance transforms to use 19040for the next frame.<wbr/> These are the values the camera device believes 19041are the best fit for the current output frame.<wbr/> This may 19042be different than the transform used for this frame,<wbr/> since 19043statistics processing on data from a new frame typically 19044completes after the transform has already been applied to 19045that frame.<wbr/></p> 19046<p>These estimates must be provided for all frames,<wbr/> even if 19047capture settings and color transforms are set by the application.<wbr/></p> 19048<p>This value should always be calculated by the AWB block,<wbr/> 19049regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 19050 </td> 19051 </tr> 19052 19053 19054 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19055 <!-- end of entry --> 19056 19057 19058 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 19059 <td class="entry_name 19060 " rowspan="3"> 19061 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 19062 </td> 19063 <td class="entry_type"> 19064 <span class="entry_type_name entry_type_name_enum">byte</span> 19065 19066 <span class="entry_type_visibility"> [public]</span> 19067 19068 19069 19070 19071 <ul class="entry_type_enum"> 19072 <li> 19073 <span class="entry_type_enum_name">NONE</span> 19074 </li> 19075 <li> 19076 <span class="entry_type_enum_name">50HZ</span> 19077 </li> 19078 <li> 19079 <span class="entry_type_enum_name">60HZ</span> 19080 </li> 19081 </ul> 19082 19083 </td> <!-- entry_type --> 19084 19085 <td class="entry_description"> 19086 <p>The camera device estimated scene illumination lighting 19087frequency.<wbr/></p> 19088 </td> 19089 19090 <td class="entry_units"> 19091 </td> 19092 19093 <td class="entry_range"> 19094 </td> 19095 19096 <td class="entry_tags"> 19097 </td> 19098 19099 </tr> 19100 <tr class="entries_header"> 19101 <th class="th_details" colspan="5">Details</th> 19102 </tr> 19103 <tr class="entry_cont"> 19104 <td class="entry_details" colspan="5"> 19105 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 19106that depends on the local utility power standards.<wbr/> This flicker must be 19107accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 19108The camera device uses this entry to tell the application what the scene 19109illuminant frequency is.<wbr/></p> 19110<p>When manual exposure control is enabled 19111(<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> == OFF</code>),<wbr/> 19112the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't do the antibanding,<wbr/> and the 19113application can ensure it selects exposure times that do not cause banding 19114issues by looking into this metadata field.<wbr/> See <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> 19115for more details.<wbr/></p> 19116<p>Report NONE if there doesn't appear to be flickering illumination.<wbr/></p> 19117 </td> 19118 </tr> 19119 19120 19121 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19122 <!-- end of entry --> 19123 19124 19125 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> 19126 <td class="entry_name 19127 " rowspan="3"> 19128 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 19129 </td> 19130 <td class="entry_type"> 19131 <span class="entry_type_name entry_type_name_enum">byte</span> 19132 19133 <span class="entry_type_visibility"> [public as boolean]</span> 19134 19135 19136 19137 19138 <ul class="entry_type_enum"> 19139 <li> 19140 <span class="entry_type_enum_name">OFF</span> 19141 </li> 19142 <li> 19143 <span class="entry_type_enum_name">ON</span> 19144 </li> 19145 </ul> 19146 19147 </td> <!-- entry_type --> 19148 19149 <td class="entry_description"> 19150 <p>Operating mode for hotpixel map generation.<wbr/></p> 19151 </td> 19152 19153 <td class="entry_units"> 19154 </td> 19155 19156 <td class="entry_range"> 19157 </td> 19158 19159 <td class="entry_tags"> 19160 <ul class="entry_tags"> 19161 <li><a href="#tag_V1">V1</a></li> 19162 <li><a href="#tag_DNG">DNG</a></li> 19163 </ul> 19164 </td> 19165 19166 </tr> 19167 <tr class="entries_header"> 19168 <th class="th_details" colspan="5">Details</th> 19169 </tr> 19170 <tr class="entry_cont"> 19171 <td class="entry_details" colspan="5"> 19172 <p>If set to ON,<wbr/> a hotpixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/> 19173If set to OFF,<wbr/> no hotpixel map should be returned.<wbr/></p> 19174<p>This must be set to a valid mode from <a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a>.<wbr/></p> 19175 </td> 19176 </tr> 19177 19178 19179 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19180 <!-- end of entry --> 19181 19182 19183 <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> 19184 <td class="entry_name 19185 " rowspan="5"> 19186 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map 19187 </td> 19188 <td class="entry_type"> 19189 <span class="entry_type_name">int32</span> 19190 <span class="entry_type_container">x</span> 19191 19192 <span class="entry_type_array"> 19193 2 x n 19194 </span> 19195 <span class="entry_type_visibility"> [public as point]</span> 19196 19197 19198 19199 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 19200 19201 19202 </td> <!-- entry_type --> 19203 19204 <td class="entry_description"> 19205 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> 19206 </td> 19207 19208 <td class="entry_units"> 19209 </td> 19210 19211 <td class="entry_range"> 19212 <p>n <= number of pixels on the sensor.<wbr/> 19213The <code>(x,<wbr/> y)</code> coordinates must be bounded by 19214<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19215 </td> 19216 19217 <td class="entry_tags"> 19218 <ul class="entry_tags"> 19219 <li><a href="#tag_V1">V1</a></li> 19220 <li><a href="#tag_DNG">DNG</a></li> 19221 </ul> 19222 </td> 19223 19224 </tr> 19225 <tr class="entries_header"> 19226 <th class="th_details" colspan="5">Details</th> 19227 </tr> 19228 <tr class="entry_cont"> 19229 <td class="entry_details" colspan="5"> 19230 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and 19231<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and 19232bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 19233height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> 19234This may include hot pixels that lie outside of the active array 19235bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19236 </td> 19237 </tr> 19238 19239 <tr class="entries_header"> 19240 <th class="th_details" colspan="5">HAL Implementation Details</th> 19241 </tr> 19242 <tr class="entry_cont"> 19243 <td class="entry_details" colspan="5"> 19244 <p>A hotpixel map contains the coordinates of pixels on the camera 19245sensor that do report valid values (usually due to defects in 19246the camera sensor).<wbr/> This includes pixels that are stuck at certain 19247values,<wbr/> or have a response that does not accuractly encode the 19248incoming light from the scene.<wbr/></p> 19249<p>To avoid performance issues,<wbr/> there should be significantly fewer hot 19250pixels than actual pixels on the camera sensor.<wbr/></p> 19251 </td> 19252 </tr> 19253 19254 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19255 <!-- end of entry --> 19256 19257 19258 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode"> 19259 <td class="entry_name 19260 " rowspan="3"> 19261 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 19262 </td> 19263 <td class="entry_type"> 19264 <span class="entry_type_name entry_type_name_enum">byte</span> 19265 19266 <span class="entry_type_visibility"> [public]</span> 19267 19268 19269 19270 19271 <ul class="entry_type_enum"> 19272 <li> 19273 <span class="entry_type_enum_name">OFF</span> 19274 </li> 19275 <li> 19276 <span class="entry_type_enum_name">ON</span> 19277 </li> 19278 </ul> 19279 19280 </td> <!-- entry_type --> 19281 19282 <td class="entry_description"> 19283 <p>Whether the camera device will output the lens 19284shading map in output result metadata.<wbr/></p> 19285 </td> 19286 19287 <td class="entry_units"> 19288 </td> 19289 19290 <td class="entry_range"> 19291 </td> 19292 19293 <td class="entry_tags"> 19294 </td> 19295 19296 </tr> 19297 <tr class="entries_header"> 19298 <th class="th_details" colspan="5">Details</th> 19299 </tr> 19300 <tr class="entry_cont"> 19301 <td class="entry_details" colspan="5"> 19302 <p>When set to ON,<wbr/> 19303<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> must be provided in 19304the output result metadata.<wbr/></p> 19305 </td> 19306 </tr> 19307 19308 19309 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19310 <!-- end of entry --> 19311 19312 19313 19314 <!-- end of kind --> 19315 </tbody> 19316 19317 <!-- end of section --> 19318 <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr> 19319 19320 19321 <tr><td colspan="6" class="kind">controls</td></tr> 19322 19323 <thead class="entries_header"> 19324 <tr> 19325 <th class="th_name">Property Name</th> 19326 <th class="th_type">Type</th> 19327 <th class="th_description">Description</th> 19328 <th class="th_units">Units</th> 19329 <th class="th_range">Range</th> 19330 <th class="th_tags">Tags</th> 19331 </tr> 19332 </thead> 19333 19334 <tbody> 19335 19336 19337 19338 19339 19340 19341 19342 19343 19344 19345 <tr class="entry" id="controls_android.tonemap.curveBlue"> 19346 <td class="entry_name 19347 " rowspan="3"> 19348 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 19349 </td> 19350 <td class="entry_type"> 19351 <span class="entry_type_name">float</span> 19352 <span class="entry_type_container">x</span> 19353 19354 <span class="entry_type_array"> 19355 n x 2 19356 </span> 19357 <span class="entry_type_visibility"> [hidden]</span> 19358 19359 19360 19361 <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> 19362 19363 19364 </td> <!-- entry_type --> 19365 19366 <td class="entry_description"> 19367 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 19368channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 19369CONTRAST_<wbr/>CURVE.<wbr/></p> 19370 </td> 19371 19372 <td class="entry_units"> 19373 same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 19374 </td> 19375 19376 <td class="entry_range"> 19377 <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> 19378 </td> 19379 19380 <td class="entry_tags"> 19381 </td> 19382 19383 </tr> 19384 <tr class="entries_header"> 19385 <th class="th_details" colspan="5">Details</th> 19386 </tr> 19387 <tr class="entry_cont"> 19388 <td class="entry_details" colspan="5"> 19389 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 19390 </td> 19391 </tr> 19392 19393 19394 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19395 <!-- end of entry --> 19396 19397 19398 <tr class="entry" id="controls_android.tonemap.curveGreen"> 19399 <td class="entry_name 19400 " rowspan="3"> 19401 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 19402 </td> 19403 <td class="entry_type"> 19404 <span class="entry_type_name">float</span> 19405 <span class="entry_type_container">x</span> 19406 19407 <span class="entry_type_array"> 19408 n x 2 19409 </span> 19410 <span class="entry_type_visibility"> [hidden]</span> 19411 19412 19413 19414 <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> 19415 19416 19417 </td> <!-- entry_type --> 19418 19419 <td class="entry_description"> 19420 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 19421channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 19422CONTRAST_<wbr/>CURVE.<wbr/></p> 19423 </td> 19424 19425 <td class="entry_units"> 19426 same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 19427 </td> 19428 19429 <td class="entry_range"> 19430 <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> 19431 </td> 19432 19433 <td class="entry_tags"> 19434 </td> 19435 19436 </tr> 19437 <tr class="entries_header"> 19438 <th class="th_details" colspan="5">Details</th> 19439 </tr> 19440 <tr class="entry_cont"> 19441 <td class="entry_details" colspan="5"> 19442 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 19443 </td> 19444 </tr> 19445 19446 19447 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19448 <!-- end of entry --> 19449 19450 19451 <tr class="entry" id="controls_android.tonemap.curveRed"> 19452 <td class="entry_name 19453 " rowspan="5"> 19454 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 19455 </td> 19456 <td class="entry_type"> 19457 <span class="entry_type_name">float</span> 19458 <span class="entry_type_container">x</span> 19459 19460 <span class="entry_type_array"> 19461 n x 2 19462 </span> 19463 <span class="entry_type_visibility"> [hidden]</span> 19464 19465 19466 19467 <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> 19468 19469 19470 </td> <!-- entry_type --> 19471 19472 <td class="entry_description"> 19473 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 19474channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 19475CONTRAST_<wbr/>CURVE.<wbr/></p> 19476 </td> 19477 19478 <td class="entry_units"> 19479 </td> 19480 19481 <td class="entry_range"> 19482 <p>0-1 on both input and output coordinates,<wbr/> normalized 19483as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 19484 </td> 19485 19486 <td class="entry_tags"> 19487 </td> 19488 19489 </tr> 19490 <tr class="entries_header"> 19491 <th class="th_details" colspan="5">Details</th> 19492 </tr> 19493 <tr class="entry_cont"> 19494 <td class="entry_details" colspan="5"> 19495 <p>Each channel's curve is defined by an array of control points:</p> 19496<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 19497 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 194982 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 19499<p>These are sorted in order of increasing <code>Pin</code>; it is always 19500guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 19501define a complete mapping.<wbr/> For input values between control points,<wbr/> 19502the camera device must linearly interpolate between the control 19503points.<wbr/></p> 19504<p>Each curve can have an independent number of points,<wbr/> and the number 19505of points can be less than max (that is,<wbr/> the request doesn't have to 19506always provide a curve with number of points equivalent to 19507<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 19508<p>A few examples,<wbr/> and their corresponding graphical mappings; these 19509only specify the red channel and the precision is limited to 4 19510digits,<wbr/> for conciseness.<wbr/></p> 19511<p>Linear mapping:</p> 19512<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 ] 19513</code></pre> 19514<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 19515<p>Invert mapping:</p> 19516<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 ] 19517</code></pre> 19518<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 19519<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 19520<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 19521 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/> 19522 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/> 19523 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/> 19524 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 ] 19525</code></pre> 19526<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 19527<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 19528<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 19529 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/> 19530 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/> 19531 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/> 19532 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 ] 19533</code></pre> 19534<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 19535 </td> 19536 </tr> 19537 19538 <tr class="entries_header"> 19539 <th class="th_details" colspan="5">HAL Implementation Details</th> 19540 </tr> 19541 <tr class="entry_cont"> 19542 <td class="entry_details" colspan="5"> 19543 <p>For good quality of mapping,<wbr/> at least 128 control points are 19544preferred.<wbr/></p> 19545<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 19546control points used as are available.<wbr/></p> 19547 </td> 19548 </tr> 19549 19550 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19551 <!-- end of entry --> 19552 19553 19554 <tr class="entry" id="controls_android.tonemap.curve"> 19555 <td class="entry_name 19556 " rowspan="5"> 19557 android.<wbr/>tonemap.<wbr/>curve 19558 </td> 19559 <td class="entry_type"> 19560 <span class="entry_type_name">float</span> 19561 19562 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 19563 19564 <span class="entry_type_synthetic">[synthetic] </span> 19565 19566 19567 19568 19569 </td> <!-- entry_type --> 19570 19571 <td class="entry_description"> 19572 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 19573is CONTRAST_<wbr/>CURVE.<wbr/></p> 19574 </td> 19575 19576 <td class="entry_units"> 19577 </td> 19578 19579 <td class="entry_range"> 19580 </td> 19581 19582 <td class="entry_tags"> 19583 </td> 19584 19585 </tr> 19586 <tr class="entries_header"> 19587 <th class="th_details" colspan="5">Details</th> 19588 </tr> 19589 <tr class="entry_cont"> 19590 <td class="entry_details" colspan="5"> 19591 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 19592channels respectively.<wbr/> The following example uses the red channel as an 19593example.<wbr/> The same logic applies to green and blue channel.<wbr/> 19594Each channel's curve is defined by an array of control points:</p> 19595<pre><code>curveRed = 19596 [ 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) ] 195972 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 19598<p>These are sorted in order of increasing <code>Pin</code>; it is always 19599guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 19600define a complete mapping.<wbr/> For input values between control points,<wbr/> 19601the camera device must linearly interpolate between the control 19602points.<wbr/></p> 19603<p>Each curve can have an independent number of points,<wbr/> and the number 19604of points can be less than max (that is,<wbr/> the request doesn't have to 19605always provide a curve with number of points equivalent to 19606<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 19607<p>A few examples,<wbr/> and their corresponding graphical mappings; these 19608only specify the red channel and the precision is limited to 4 19609digits,<wbr/> for conciseness.<wbr/></p> 19610<p>Linear mapping:</p> 19611<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 19612</code></pre> 19613<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 19614<p>Invert mapping:</p> 19615<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 19616</code></pre> 19617<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 19618<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 19619<pre><code>curveRed = [ 19620 (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/> 19621 (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/> 19622 (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/> 19623 (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) ] 19624</code></pre> 19625<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 19626<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 19627<pre><code>curveRed = [ 19628 (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/> 19629 (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/> 19630 (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/> 19631 (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) ] 19632</code></pre> 19633<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 19634 </td> 19635 </tr> 19636 19637 <tr class="entries_header"> 19638 <th class="th_details" colspan="5">HAL Implementation Details</th> 19639 </tr> 19640 <tr class="entry_cont"> 19641 <td class="entry_details" colspan="5"> 19642 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 19643curveBlue entries.<wbr/></p> 19644 </td> 19645 </tr> 19646 19647 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19648 <!-- end of entry --> 19649 19650 19651 <tr class="entry" id="controls_android.tonemap.mode"> 19652 <td class="entry_name 19653 " rowspan="3"> 19654 android.<wbr/>tonemap.<wbr/>mode 19655 </td> 19656 <td class="entry_type"> 19657 <span class="entry_type_name entry_type_name_enum">byte</span> 19658 19659 <span class="entry_type_visibility"> [public]</span> 19660 19661 19662 19663 19664 <ul class="entry_type_enum"> 19665 <li> 19666 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 19667 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 19668the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 19669<p>All color enhancement and tonemapping must be disabled,<wbr/> except 19670for applying the tonemapping curve specified by 19671<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 19672<p>Must not slow down frame rate relative to raw 19673sensor output.<wbr/></p></span> 19674 </li> 19675 <li> 19676 <span class="entry_type_enum_name">FAST</span> 19677 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> 19678<p>Should not slow down frame rate relative to raw sensor output.<wbr/></p></span> 19679 </li> 19680 <li> 19681 <span class="entry_type_enum_name">HIGH_QUALITY</span> 19682 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> 19683<p>May slow down frame rate relative to raw sensor output.<wbr/></p></span> 19684 </li> 19685 </ul> 19686 19687 </td> <!-- entry_type --> 19688 19689 <td class="entry_description"> 19690 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 19691 </td> 19692 19693 <td class="entry_units"> 19694 </td> 19695 19696 <td class="entry_range"> 19697 </td> 19698 19699 <td class="entry_tags"> 19700 </td> 19701 19702 </tr> 19703 <tr class="entries_header"> 19704 <th class="th_details" colspan="5">Details</th> 19705 </tr> 19706 <tr class="entry_cont"> 19707 <td class="entry_details" colspan="5"> 19708 <p>When switching to an application-defined contrast curve by setting 19709<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 19710per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 19711mapping from input high-bit-depth pixel value to the output 19712low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 19713and output may change depending on the camera pipeline,<wbr/> the values 19714are specified by normalized floating-point numbers.<wbr/></p> 19715<p>More-complex color mapping operations such as 3D color look-up 19716tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 19717transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 19718CONTRAST_<wbr/>CURVE.<wbr/></p> 19719<p>This must be set to a valid mode in 19720<a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a>.<wbr/></p> 19721<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 19722emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 19723These values are always available,<wbr/> and as close as possible to the 19724actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 19725<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 19726provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 19727roughly the same.<wbr/></p> 19728 </td> 19729 </tr> 19730 19731 19732 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19733 <!-- end of entry --> 19734 19735 19736 19737 <!-- end of kind --> 19738 </tbody> 19739 <tr><td colspan="6" class="kind">static</td></tr> 19740 19741 <thead class="entries_header"> 19742 <tr> 19743 <th class="th_name">Property Name</th> 19744 <th class="th_type">Type</th> 19745 <th class="th_description">Description</th> 19746 <th class="th_units">Units</th> 19747 <th class="th_range">Range</th> 19748 <th class="th_tags">Tags</th> 19749 </tr> 19750 </thead> 19751 19752 <tbody> 19753 19754 19755 19756 19757 19758 19759 19760 19761 19762 19763 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 19764 <td class="entry_name 19765 " rowspan="5"> 19766 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 19767 </td> 19768 <td class="entry_type"> 19769 <span class="entry_type_name">int32</span> 19770 19771 <span class="entry_type_visibility"> [public]</span> 19772 19773 19774 19775 19776 19777 </td> <!-- entry_type --> 19778 19779 <td class="entry_description"> 19780 <p>Maximum number of supported points in the 19781tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 19782 </td> 19783 19784 <td class="entry_units"> 19785 </td> 19786 19787 <td class="entry_range"> 19788 <p>>= 64</p> 19789 </td> 19790 19791 <td class="entry_tags"> 19792 </td> 19793 19794 </tr> 19795 <tr class="entries_header"> 19796 <th class="th_details" colspan="5">Details</th> 19797 </tr> 19798 <tr class="entry_cont"> 19799 <td class="entry_details" colspan="5"> 19800 <p>If the actual number of points provided by the application (in 19801<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>*) is less than max,<wbr/> the camera device will 19802resample the curve to its internal representation,<wbr/> using linear 19803interpolation.<wbr/></p> 19804<p>The output curves in the result metadata may have a different number 19805of points than the input curves,<wbr/> and will represent the actual 19806hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 19807 </td> 19808 </tr> 19809 19810 <tr class="entries_header"> 19811 <th class="th_details" colspan="5">HAL Implementation Details</th> 19812 </tr> 19813 <tr class="entry_cont"> 19814 <td class="entry_details" colspan="5"> 19815 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 19816 </td> 19817 </tr> 19818 19819 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19820 <!-- end of entry --> 19821 19822 19823 <tr class="entry" id="static_android.tonemap.availableToneMapModes"> 19824 <td class="entry_name 19825 " rowspan="3"> 19826 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes 19827 </td> 19828 <td class="entry_type"> 19829 <span class="entry_type_name">byte</span> 19830 <span class="entry_type_container">x</span> 19831 19832 <span class="entry_type_array"> 19833 n 19834 </span> 19835 <span class="entry_type_visibility"> [public as enumList]</span> 19836 19837 19838 19839 <div class="entry_type_notes">list of enums</div> 19840 19841 19842 </td> <!-- entry_type --> 19843 19844 <td class="entry_description"> 19845 <p>The set of tonemapping modes supported by this camera device.<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 </td> 19856 19857 </tr> 19858 <tr class="entries_header"> 19859 <th class="th_details" colspan="5">Details</th> 19860 </tr> 19861 <tr class="entry_cont"> 19862 <td class="entry_details" colspan="5"> 19863 <p>This tag lists the valid modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>.<wbr/></p> 19864<p>Full-capability camera devices must always support CONTRAST_<wbr/>CURVE and 19865FAST.<wbr/></p> 19866 </td> 19867 </tr> 19868 19869 19870 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19871 <!-- end of entry --> 19872 19873 19874 19875 <!-- end of kind --> 19876 </tbody> 19877 <tr><td colspan="6" class="kind">dynamic</td></tr> 19878 19879 <thead class="entries_header"> 19880 <tr> 19881 <th class="th_name">Property Name</th> 19882 <th class="th_type">Type</th> 19883 <th class="th_description">Description</th> 19884 <th class="th_units">Units</th> 19885 <th class="th_range">Range</th> 19886 <th class="th_tags">Tags</th> 19887 </tr> 19888 </thead> 19889 19890 <tbody> 19891 19892 19893 19894 19895 19896 19897 19898 19899 19900 19901 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 19902 <td class="entry_name 19903 " rowspan="3"> 19904 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 19905 </td> 19906 <td class="entry_type"> 19907 <span class="entry_type_name">float</span> 19908 <span class="entry_type_container">x</span> 19909 19910 <span class="entry_type_array"> 19911 n x 2 19912 </span> 19913 <span class="entry_type_visibility"> [hidden]</span> 19914 19915 19916 19917 <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> 19918 19919 19920 </td> <!-- entry_type --> 19921 19922 <td class="entry_description"> 19923 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 19924channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 19925CONTRAST_<wbr/>CURVE.<wbr/></p> 19926 </td> 19927 19928 <td class="entry_units"> 19929 same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 19930 </td> 19931 19932 <td class="entry_range"> 19933 <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> 19934 </td> 19935 19936 <td class="entry_tags"> 19937 </td> 19938 19939 </tr> 19940 <tr class="entries_header"> 19941 <th class="th_details" colspan="5">Details</th> 19942 </tr> 19943 <tr class="entry_cont"> 19944 <td class="entry_details" colspan="5"> 19945 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 19946 </td> 19947 </tr> 19948 19949 19950 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19951 <!-- end of entry --> 19952 19953 19954 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 19955 <td class="entry_name 19956 " rowspan="3"> 19957 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 19958 </td> 19959 <td class="entry_type"> 19960 <span class="entry_type_name">float</span> 19961 <span class="entry_type_container">x</span> 19962 19963 <span class="entry_type_array"> 19964 n x 2 19965 </span> 19966 <span class="entry_type_visibility"> [hidden]</span> 19967 19968 19969 19970 <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> 19971 19972 19973 </td> <!-- entry_type --> 19974 19975 <td class="entry_description"> 19976 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 19977channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 19978CONTRAST_<wbr/>CURVE.<wbr/></p> 19979 </td> 19980 19981 <td class="entry_units"> 19982 same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 19983 </td> 19984 19985 <td class="entry_range"> 19986 <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> 19987 </td> 19988 19989 <td class="entry_tags"> 19990 </td> 19991 19992 </tr> 19993 <tr class="entries_header"> 19994 <th class="th_details" colspan="5">Details</th> 19995 </tr> 19996 <tr class="entry_cont"> 19997 <td class="entry_details" colspan="5"> 19998 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 19999 </td> 20000 </tr> 20001 20002 20003 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20004 <!-- end of entry --> 20005 20006 20007 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 20008 <td class="entry_name 20009 " rowspan="5"> 20010 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 20011 </td> 20012 <td class="entry_type"> 20013 <span class="entry_type_name">float</span> 20014 <span class="entry_type_container">x</span> 20015 20016 <span class="entry_type_array"> 20017 n x 2 20018 </span> 20019 <span class="entry_type_visibility"> [hidden]</span> 20020 20021 20022 20023 <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> 20024 20025 20026 </td> <!-- entry_type --> 20027 20028 <td class="entry_description"> 20029 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 20030channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 20031CONTRAST_<wbr/>CURVE.<wbr/></p> 20032 </td> 20033 20034 <td class="entry_units"> 20035 </td> 20036 20037 <td class="entry_range"> 20038 <p>0-1 on both input and output coordinates,<wbr/> normalized 20039as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 20040 </td> 20041 20042 <td class="entry_tags"> 20043 </td> 20044 20045 </tr> 20046 <tr class="entries_header"> 20047 <th class="th_details" colspan="5">Details</th> 20048 </tr> 20049 <tr class="entry_cont"> 20050 <td class="entry_details" colspan="5"> 20051 <p>Each channel's curve is defined by an array of control points:</p> 20052<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 20053 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 200542 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 20055<p>These are sorted in order of increasing <code>Pin</code>; it is always 20056guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 20057define a complete mapping.<wbr/> For input values between control points,<wbr/> 20058the camera device must linearly interpolate between the control 20059points.<wbr/></p> 20060<p>Each curve can have an independent number of points,<wbr/> and the number 20061of points can be less than max (that is,<wbr/> the request doesn't have to 20062always provide a curve with number of points equivalent to 20063<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 20064<p>A few examples,<wbr/> and their corresponding graphical mappings; these 20065only specify the red channel and the precision is limited to 4 20066digits,<wbr/> for conciseness.<wbr/></p> 20067<p>Linear mapping:</p> 20068<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 ] 20069</code></pre> 20070<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 20071<p>Invert mapping:</p> 20072<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 ] 20073</code></pre> 20074<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 20075<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 20076<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 20077 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/> 20078 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/> 20079 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/> 20080 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 ] 20081</code></pre> 20082<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 20083<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 20084<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 20085 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/> 20086 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/> 20087 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/> 20088 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 ] 20089</code></pre> 20090<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 20091 </td> 20092 </tr> 20093 20094 <tr class="entries_header"> 20095 <th class="th_details" colspan="5">HAL Implementation Details</th> 20096 </tr> 20097 <tr class="entry_cont"> 20098 <td class="entry_details" colspan="5"> 20099 <p>For good quality of mapping,<wbr/> at least 128 control points are 20100preferred.<wbr/></p> 20101<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 20102control points used as are available.<wbr/></p> 20103 </td> 20104 </tr> 20105 20106 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20107 <!-- end of entry --> 20108 20109 20110 <tr class="entry" id="dynamic_android.tonemap.curve"> 20111 <td class="entry_name 20112 " rowspan="5"> 20113 android.<wbr/>tonemap.<wbr/>curve 20114 </td> 20115 <td class="entry_type"> 20116 <span class="entry_type_name">float</span> 20117 20118 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 20119 20120 <span class="entry_type_synthetic">[synthetic] </span> 20121 20122 20123 20124 20125 </td> <!-- entry_type --> 20126 20127 <td class="entry_description"> 20128 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 20129is CONTRAST_<wbr/>CURVE.<wbr/></p> 20130 </td> 20131 20132 <td class="entry_units"> 20133 </td> 20134 20135 <td class="entry_range"> 20136 </td> 20137 20138 <td class="entry_tags"> 20139 </td> 20140 20141 </tr> 20142 <tr class="entries_header"> 20143 <th class="th_details" colspan="5">Details</th> 20144 </tr> 20145 <tr class="entry_cont"> 20146 <td class="entry_details" colspan="5"> 20147 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 20148channels respectively.<wbr/> The following example uses the red channel as an 20149example.<wbr/> The same logic applies to green and blue channel.<wbr/> 20150Each channel's curve is defined by an array of control points:</p> 20151<pre><code>curveRed = 20152 [ 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) ] 201532 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 20154<p>These are sorted in order of increasing <code>Pin</code>; it is always 20155guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 20156define a complete mapping.<wbr/> For input values between control points,<wbr/> 20157the camera device must linearly interpolate between the control 20158points.<wbr/></p> 20159<p>Each curve can have an independent number of points,<wbr/> and the number 20160of points can be less than max (that is,<wbr/> the request doesn't have to 20161always provide a curve with number of points equivalent to 20162<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 20163<p>A few examples,<wbr/> and their corresponding graphical mappings; these 20164only specify the red channel and the precision is limited to 4 20165digits,<wbr/> for conciseness.<wbr/></p> 20166<p>Linear mapping:</p> 20167<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 20168</code></pre> 20169<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 20170<p>Invert mapping:</p> 20171<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 20172</code></pre> 20173<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 20174<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 20175<pre><code>curveRed = [ 20176 (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/> 20177 (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/> 20178 (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/> 20179 (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) ] 20180</code></pre> 20181<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 20182<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 20183<pre><code>curveRed = [ 20184 (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/> 20185 (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/> 20186 (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/> 20187 (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) ] 20188</code></pre> 20189<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 20190 </td> 20191 </tr> 20192 20193 <tr class="entries_header"> 20194 <th class="th_details" colspan="5">HAL Implementation Details</th> 20195 </tr> 20196 <tr class="entry_cont"> 20197 <td class="entry_details" colspan="5"> 20198 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 20199curveBlue entries.<wbr/></p> 20200 </td> 20201 </tr> 20202 20203 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20204 <!-- end of entry --> 20205 20206 20207 <tr class="entry" id="dynamic_android.tonemap.mode"> 20208 <td class="entry_name 20209 " rowspan="3"> 20210 android.<wbr/>tonemap.<wbr/>mode 20211 </td> 20212 <td class="entry_type"> 20213 <span class="entry_type_name entry_type_name_enum">byte</span> 20214 20215 <span class="entry_type_visibility"> [public]</span> 20216 20217 20218 20219 20220 <ul class="entry_type_enum"> 20221 <li> 20222 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 20223 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 20224the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 20225<p>All color enhancement and tonemapping must be disabled,<wbr/> except 20226for applying the tonemapping curve specified by 20227<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 20228<p>Must not slow down frame rate relative to raw 20229sensor output.<wbr/></p></span> 20230 </li> 20231 <li> 20232 <span class="entry_type_enum_name">FAST</span> 20233 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> 20234<p>Should not slow down frame rate relative to raw sensor output.<wbr/></p></span> 20235 </li> 20236 <li> 20237 <span class="entry_type_enum_name">HIGH_QUALITY</span> 20238 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> 20239<p>May slow down frame rate relative to raw sensor output.<wbr/></p></span> 20240 </li> 20241 </ul> 20242 20243 </td> <!-- entry_type --> 20244 20245 <td class="entry_description"> 20246 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 20247 </td> 20248 20249 <td class="entry_units"> 20250 </td> 20251 20252 <td class="entry_range"> 20253 </td> 20254 20255 <td class="entry_tags"> 20256 </td> 20257 20258 </tr> 20259 <tr class="entries_header"> 20260 <th class="th_details" colspan="5">Details</th> 20261 </tr> 20262 <tr class="entry_cont"> 20263 <td class="entry_details" colspan="5"> 20264 <p>When switching to an application-defined contrast curve by setting 20265<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 20266per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 20267mapping from input high-bit-depth pixel value to the output 20268low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 20269and output may change depending on the camera pipeline,<wbr/> the values 20270are specified by normalized floating-point numbers.<wbr/></p> 20271<p>More-complex color mapping operations such as 3D color look-up 20272tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 20273transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 20274CONTRAST_<wbr/>CURVE.<wbr/></p> 20275<p>This must be set to a valid mode in 20276<a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a>.<wbr/></p> 20277<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 20278emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 20279These values are always available,<wbr/> and as close as possible to the 20280actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 20281<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 20282provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 20283roughly the same.<wbr/></p> 20284 </td> 20285 </tr> 20286 20287 20288 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20289 <!-- end of entry --> 20290 20291 20292 20293 <!-- end of kind --> 20294 </tbody> 20295 20296 <!-- end of section --> 20297 <tr><td colspan="6" id="section_led" class="section">led</td></tr> 20298 20299 20300 <tr><td colspan="6" class="kind">controls</td></tr> 20301 20302 <thead class="entries_header"> 20303 <tr> 20304 <th class="th_name">Property Name</th> 20305 <th class="th_type">Type</th> 20306 <th class="th_description">Description</th> 20307 <th class="th_units">Units</th> 20308 <th class="th_range">Range</th> 20309 <th class="th_tags">Tags</th> 20310 </tr> 20311 </thead> 20312 20313 <tbody> 20314 20315 20316 20317 20318 20319 20320 20321 20322 20323 20324 <tr class="entry" id="controls_android.led.transmit"> 20325 <td class="entry_name 20326 " rowspan="1"> 20327 android.<wbr/>led.<wbr/>transmit 20328 </td> 20329 <td class="entry_type"> 20330 <span class="entry_type_name entry_type_name_enum">byte</span> 20331 20332 <span class="entry_type_visibility"> [hidden as boolean]</span> 20333 20334 20335 20336 20337 <ul class="entry_type_enum"> 20338 <li> 20339 <span class="entry_type_enum_name">OFF</span> 20340 </li> 20341 <li> 20342 <span class="entry_type_enum_name">ON</span> 20343 </li> 20344 </ul> 20345 20346 </td> <!-- entry_type --> 20347 20348 <td class="entry_description"> 20349 <p>This LED is nominally used to indicate to the user 20350that the camera is powered on and may be streaming images back to the 20351Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 20352disable this when video is processed locally and not transmitted to 20353any untrusted applications.<wbr/></p> 20354<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 20355transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 20356data is stored locally on the device.<wbr/></p> 20357<p>The LED <em>may</em> be off if a trusted application is using the data that 20358doesn't violate the above rules.<wbr/></p> 20359 </td> 20360 20361 <td class="entry_units"> 20362 </td> 20363 20364 <td class="entry_range"> 20365 </td> 20366 20367 <td class="entry_tags"> 20368 </td> 20369 20370 </tr> 20371 20372 20373 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20374 <!-- end of entry --> 20375 20376 20377 20378 <!-- end of kind --> 20379 </tbody> 20380 <tr><td colspan="6" class="kind">dynamic</td></tr> 20381 20382 <thead class="entries_header"> 20383 <tr> 20384 <th class="th_name">Property Name</th> 20385 <th class="th_type">Type</th> 20386 <th class="th_description">Description</th> 20387 <th class="th_units">Units</th> 20388 <th class="th_range">Range</th> 20389 <th class="th_tags">Tags</th> 20390 </tr> 20391 </thead> 20392 20393 <tbody> 20394 20395 20396 20397 20398 20399 20400 20401 20402 20403 20404 <tr class="entry" id="dynamic_android.led.transmit"> 20405 <td class="entry_name 20406 " rowspan="1"> 20407 android.<wbr/>led.<wbr/>transmit 20408 </td> 20409 <td class="entry_type"> 20410 <span class="entry_type_name entry_type_name_enum">byte</span> 20411 20412 <span class="entry_type_visibility"> [hidden as boolean]</span> 20413 20414 20415 20416 20417 <ul class="entry_type_enum"> 20418 <li> 20419 <span class="entry_type_enum_name">OFF</span> 20420 </li> 20421 <li> 20422 <span class="entry_type_enum_name">ON</span> 20423 </li> 20424 </ul> 20425 20426 </td> <!-- entry_type --> 20427 20428 <td class="entry_description"> 20429 <p>This LED is nominally used to indicate to the user 20430that the camera is powered on and may be streaming images back to the 20431Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 20432disable this when video is processed locally and not transmitted to 20433any untrusted applications.<wbr/></p> 20434<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 20435transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 20436data is stored locally on the device.<wbr/></p> 20437<p>The LED <em>may</em> be off if a trusted application is using the data that 20438doesn't violate the above rules.<wbr/></p> 20439 </td> 20440 20441 <td class="entry_units"> 20442 </td> 20443 20444 <td class="entry_range"> 20445 </td> 20446 20447 <td class="entry_tags"> 20448 </td> 20449 20450 </tr> 20451 20452 20453 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20454 <!-- end of entry --> 20455 20456 20457 20458 <!-- end of kind --> 20459 </tbody> 20460 <tr><td colspan="6" class="kind">static</td></tr> 20461 20462 <thead class="entries_header"> 20463 <tr> 20464 <th class="th_name">Property Name</th> 20465 <th class="th_type">Type</th> 20466 <th class="th_description">Description</th> 20467 <th class="th_units">Units</th> 20468 <th class="th_range">Range</th> 20469 <th class="th_tags">Tags</th> 20470 </tr> 20471 </thead> 20472 20473 <tbody> 20474 20475 20476 20477 20478 20479 20480 20481 20482 20483 20484 <tr class="entry" id="static_android.led.availableLeds"> 20485 <td class="entry_name 20486 " rowspan="1"> 20487 android.<wbr/>led.<wbr/>available<wbr/>Leds 20488 </td> 20489 <td class="entry_type"> 20490 <span class="entry_type_name entry_type_name_enum">byte</span> 20491 <span class="entry_type_container">x</span> 20492 20493 <span class="entry_type_array"> 20494 n 20495 </span> 20496 <span class="entry_type_visibility"> [hidden]</span> 20497 20498 20499 20500 20501 <ul class="entry_type_enum"> 20502 <li> 20503 <span class="entry_type_enum_name">TRANSMIT</span> 20504 <span class="entry_type_enum_notes"><p><a href="#controls_android.led.transmit">android.<wbr/>led.<wbr/>transmit</a> control is used</p></span> 20505 </li> 20506 </ul> 20507 20508 </td> <!-- entry_type --> 20509 20510 <td class="entry_description"> 20511 <p>A list of camera LEDs that are available on this system.<wbr/></p> 20512 </td> 20513 20514 <td class="entry_units"> 20515 </td> 20516 20517 <td class="entry_range"> 20518 </td> 20519 20520 <td class="entry_tags"> 20521 </td> 20522 20523 </tr> 20524 20525 20526 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20527 <!-- end of entry --> 20528 20529 20530 20531 <!-- end of kind --> 20532 </tbody> 20533 20534 <!-- end of section --> 20535 <tr><td colspan="6" id="section_info" class="section">info</td></tr> 20536 20537 20538 <tr><td colspan="6" class="kind">static</td></tr> 20539 20540 <thead class="entries_header"> 20541 <tr> 20542 <th class="th_name">Property Name</th> 20543 <th class="th_type">Type</th> 20544 <th class="th_description">Description</th> 20545 <th class="th_units">Units</th> 20546 <th class="th_range">Range</th> 20547 <th class="th_tags">Tags</th> 20548 </tr> 20549 </thead> 20550 20551 <tbody> 20552 20553 20554 20555 20556 20557 20558 20559 20560 20561 20562 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 20563 <td class="entry_name 20564 " rowspan="5"> 20565 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 20566 </td> 20567 <td class="entry_type"> 20568 <span class="entry_type_name entry_type_name_enum">byte</span> 20569 20570 <span class="entry_type_visibility"> [public]</span> 20571 20572 20573 20574 20575 <ul class="entry_type_enum"> 20576 <li> 20577 <span class="entry_type_enum_name">LIMITED</span> 20578 </li> 20579 <li> 20580 <span class="entry_type_enum_name">FULL</span> 20581 </li> 20582 </ul> 20583 20584 </td> <!-- entry_type --> 20585 20586 <td class="entry_description"> 20587 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> 20588 </td> 20589 20590 <td class="entry_units"> 20591 </td> 20592 20593 <td class="entry_range"> 20594 <p>Optional.<wbr/> Default value is LIMITED.<wbr/></p> 20595 </td> 20596 20597 <td class="entry_tags"> 20598 </td> 20599 20600 </tr> 20601 <tr class="entries_header"> 20602 <th class="th_details" colspan="5">Details</th> 20603 </tr> 20604 <tr class="entry_cont"> 20605 <td class="entry_details" colspan="5"> 20606 <p>Camera devices will come in two flavors: LIMITED and FULL.<wbr/></p> 20607<p>A FULL device has the most support possible and will enable the 20608widest range of use cases such as:</p> 20609<ul> 20610<li>30fps at maximum resolution (== sensor resolution) is preferred,<wbr/> more than 20fps is required.<wbr/></li> 20611<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> 20612<li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li> 20613<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li> 20614</ul> 20615<p>A LIMITED device may have some or none of the above characteristics.<wbr/> 20616To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 20617 </td> 20618 </tr> 20619 20620 <tr class="entries_header"> 20621 <th class="th_details" colspan="5">HAL Implementation Details</th> 20622 </tr> 20623 <tr class="entry_cont"> 20624 <td class="entry_details" colspan="5"> 20625 <p>The camera 3 HAL device can implement one of two possible 20626operational modes; limited and full.<wbr/> Full support is 20627expected from new higher-end devices.<wbr/> Limited mode has 20628hardware requirements roughly in line with those for a 20629camera HAL device v1 implementation,<wbr/> and is expected from 20630older or inexpensive devices.<wbr/> Full is a strict superset of 20631limited,<wbr/> and they share the same essential operational flow.<wbr/></p> 20632<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 20633 </td> 20634 </tr> 20635 20636 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20637 <!-- end of entry --> 20638 20639 20640 20641 <!-- end of kind --> 20642 </tbody> 20643 20644 <!-- end of section --> 20645 <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr> 20646 20647 20648 <tr><td colspan="6" class="kind">controls</td></tr> 20649 20650 <thead class="entries_header"> 20651 <tr> 20652 <th class="th_name">Property Name</th> 20653 <th class="th_type">Type</th> 20654 <th class="th_description">Description</th> 20655 <th class="th_units">Units</th> 20656 <th class="th_range">Range</th> 20657 <th class="th_tags">Tags</th> 20658 </tr> 20659 </thead> 20660 20661 <tbody> 20662 20663 20664 20665 20666 20667 20668 20669 20670 20671 20672 <tr class="entry" id="controls_android.blackLevel.lock"> 20673 <td class="entry_name 20674 " rowspan="5"> 20675 android.<wbr/>black<wbr/>Level.<wbr/>lock 20676 </td> 20677 <td class="entry_type"> 20678 <span class="entry_type_name entry_type_name_enum">byte</span> 20679 20680 <span class="entry_type_visibility"> [public as boolean]</span> 20681 20682 20683 20684 20685 <ul class="entry_type_enum"> 20686 <li> 20687 <span class="entry_type_enum_name">OFF</span> 20688 </li> 20689 <li> 20690 <span class="entry_type_enum_name">ON</span> 20691 </li> 20692 </ul> 20693 20694 </td> <!-- entry_type --> 20695 20696 <td class="entry_description"> 20697 <p>Whether black-level compensation is locked 20698to its current values,<wbr/> or is free to vary.<wbr/></p> 20699 </td> 20700 20701 <td class="entry_units"> 20702 </td> 20703 20704 <td class="entry_range"> 20705 </td> 20706 20707 <td class="entry_tags"> 20708 <ul class="entry_tags"> 20709 <li><a href="#tag_HAL2">HAL2</a></li> 20710 </ul> 20711 </td> 20712 20713 </tr> 20714 <tr class="entries_header"> 20715 <th class="th_details" colspan="5">Details</th> 20716 </tr> 20717 <tr class="entry_cont"> 20718 <td class="entry_details" colspan="5"> 20719 <p>When set to ON,<wbr/> the values used for black-level 20720compensation will not change until the lock is set to 20721OFF.<wbr/></p> 20722<p>Since changes to certain capture parameters (such as 20723exposure time) may require resetting of black level 20724compensation,<wbr/> the camera device must report whether setting 20725the black level lock was successful in the output result 20726metadata.<wbr/></p> 20727<p>For example,<wbr/> if a sequence of requests is as follows:</p> 20728<ul> 20729<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 20730<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 20731<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 20732<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 20733<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 20734<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 20735</ul> 20736<p>And the exposure change in Request 4 requires the camera 20737device to reset the black level offsets,<wbr/> then the output 20738result metadata is expected to be:</p> 20739<ul> 20740<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 20741<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 20742<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 20743<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 20744<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 20745<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 20746</ul> 20747<p>This indicates to the application that on frame 4,<wbr/> black 20748levels were reset due to exposure value changes,<wbr/> and pixel 20749values may not be consistent across captures.<wbr/></p> 20750<p>The camera device will maintain the lock to the extent 20751possible,<wbr/> only overriding the lock to OFF when changes to 20752other request parameters require a black level recalculation 20753or reset.<wbr/></p> 20754 </td> 20755 </tr> 20756 20757 <tr class="entries_header"> 20758 <th class="th_details" colspan="5">HAL Implementation Details</th> 20759 </tr> 20760 <tr class="entry_cont"> 20761 <td class="entry_details" colspan="5"> 20762 <p>If for some reason black level locking is no longer possible 20763(for example,<wbr/> the analog gain has changed,<wbr/> which forces 20764black level offsets to be recalculated),<wbr/> then the HAL must 20765override this request (and it must report 'OFF' when this 20766does happen) until the next capture for which locking is 20767possible again.<wbr/></p> 20768 </td> 20769 </tr> 20770 20771 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20772 <!-- end of entry --> 20773 20774 20775 20776 <!-- end of kind --> 20777 </tbody> 20778 <tr><td colspan="6" class="kind">dynamic</td></tr> 20779 20780 <thead class="entries_header"> 20781 <tr> 20782 <th class="th_name">Property Name</th> 20783 <th class="th_type">Type</th> 20784 <th class="th_description">Description</th> 20785 <th class="th_units">Units</th> 20786 <th class="th_range">Range</th> 20787 <th class="th_tags">Tags</th> 20788 </tr> 20789 </thead> 20790 20791 <tbody> 20792 20793 20794 20795 20796 20797 20798 20799 20800 20801 20802 <tr class="entry" id="dynamic_android.blackLevel.lock"> 20803 <td class="entry_name 20804 " rowspan="5"> 20805 android.<wbr/>black<wbr/>Level.<wbr/>lock 20806 </td> 20807 <td class="entry_type"> 20808 <span class="entry_type_name entry_type_name_enum">byte</span> 20809 20810 <span class="entry_type_visibility"> [public as boolean]</span> 20811 20812 20813 20814 20815 <ul class="entry_type_enum"> 20816 <li> 20817 <span class="entry_type_enum_name">OFF</span> 20818 </li> 20819 <li> 20820 <span class="entry_type_enum_name">ON</span> 20821 </li> 20822 </ul> 20823 20824 </td> <!-- entry_type --> 20825 20826 <td class="entry_description"> 20827 <p>Whether black-level compensation is locked 20828to its current values,<wbr/> or is free to vary.<wbr/></p> 20829 </td> 20830 20831 <td class="entry_units"> 20832 </td> 20833 20834 <td class="entry_range"> 20835 </td> 20836 20837 <td class="entry_tags"> 20838 <ul class="entry_tags"> 20839 <li><a href="#tag_HAL2">HAL2</a></li> 20840 </ul> 20841 </td> 20842 20843 </tr> 20844 <tr class="entries_header"> 20845 <th class="th_details" colspan="5">Details</th> 20846 </tr> 20847 <tr class="entry_cont"> 20848 <td class="entry_details" colspan="5"> 20849 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 20850ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 20851a change in other capture settings forced the camera device to 20852perform a black level reset.<wbr/></p> 20853 </td> 20854 </tr> 20855 20856 <tr class="entries_header"> 20857 <th class="th_details" colspan="5">HAL Implementation Details</th> 20858 </tr> 20859 <tr class="entry_cont"> 20860 <td class="entry_details" colspan="5"> 20861 <p>If for some reason black level locking is no longer possible 20862(for example,<wbr/> the analog gain has changed,<wbr/> which forces 20863black level offsets to be recalculated),<wbr/> then the HAL must 20864override this request (and it must report 'OFF' when this 20865does happen) until the next capture for which locking is 20866possible again.<wbr/></p> 20867 </td> 20868 </tr> 20869 20870 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20871 <!-- end of entry --> 20872 20873 20874 20875 <!-- end of kind --> 20876 </tbody> 20877 20878 <!-- end of section --> 20879 <tr><td colspan="6" id="section_sync" class="section">sync</td></tr> 20880 20881 20882 <tr><td colspan="6" class="kind">dynamic</td></tr> 20883 20884 <thead class="entries_header"> 20885 <tr> 20886 <th class="th_name">Property Name</th> 20887 <th class="th_type">Type</th> 20888 <th class="th_description">Description</th> 20889 <th class="th_units">Units</th> 20890 <th class="th_range">Range</th> 20891 <th class="th_tags">Tags</th> 20892 </tr> 20893 </thead> 20894 20895 <tbody> 20896 20897 20898 20899 20900 20901 20902 20903 20904 20905 20906 <tr class="entry" id="dynamic_android.sync.frameNumber"> 20907 <td class="entry_name 20908 " rowspan="5"> 20909 android.<wbr/>sync.<wbr/>frame<wbr/>Number 20910 </td> 20911 <td class="entry_type"> 20912 <span class="entry_type_name entry_type_name_enum">int64</span> 20913 20914 <span class="entry_type_visibility"> [hidden]</span> 20915 20916 20917 20918 20919 <ul class="entry_type_enum"> 20920 <li> 20921 <span class="entry_type_enum_name">CONVERGING</span> 20922 <span class="entry_type_enum_value">-1</span> 20923 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/> 20924Synchronization is in progress,<wbr/> and reading metadata from this 20925result may include a mix of data that have taken effect since the 20926last synchronization time.<wbr/></p> 20927<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 20928this value will update to the actual frame number frame number 20929the result is guaranteed to be synchronized to (as long as the 20930request settings remain constant).<wbr/></p></span> 20931 </li> 20932 <li> 20933 <span class="entry_type_enum_name">UNKNOWN</span> 20934 <span class="entry_type_enum_value">-2</span> 20935 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/> The 20936result may have already converged,<wbr/> or it may be in progress.<wbr/> 20937Reading from this result may include some mix of settings from 20938past requests.<wbr/></p> 20939<p>After a settings change,<wbr/> the new settings will eventually all 20940take effect for the output buffers and results.<wbr/> However,<wbr/> this 20941value will not change when that happens.<wbr/> Altering settings 20942rapidly may provide outcomes using mixes of settings from recent 20943requests.<wbr/></p> 20944<p>This value is intended primarily for backwards compatibility with 20945the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 20946 </li> 20947 </ul> 20948 20949 </td> <!-- entry_type --> 20950 20951 <td class="entry_description"> 20952 <p>The frame number corresponding to the last request 20953with which the output result (metadata + buffers) has been fully 20954synchronized.<wbr/></p> 20955 </td> 20956 20957 <td class="entry_units"> 20958 </td> 20959 20960 <td class="entry_range"> 20961 <p>Either a non-negative value corresponding to a 20962<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 20963 </td> 20964 20965 <td class="entry_tags"> 20966 <ul class="entry_tags"> 20967 <li><a href="#tag_V1">V1</a></li> 20968 </ul> 20969 </td> 20970 20971 </tr> 20972 <tr class="entries_header"> 20973 <th class="th_details" colspan="5">Details</th> 20974 </tr> 20975 <tr class="entry_cont"> 20976 <td class="entry_details" colspan="5"> 20977 <p>When a request is submitted to the camera device,<wbr/> there is usually a 20978delay of several frames before the controls get applied.<wbr/> A camera 20979device may either choose to account for this delay by implementing a 20980pipeline and carefully submit well-timed atomic control updates,<wbr/> or 20981it may start streaming control changes that span over several frame 20982boundaries.<wbr/></p> 20983<p>In the latter case,<wbr/> whenever a request's settings change relative to 20984the previous submitted request,<wbr/> the full set of changes may take 20985multiple frame durations to fully take effect.<wbr/> Some settings may 20986take effect sooner (in less frame durations) than others.<wbr/></p> 20987<p>While a set of control changes are being propagated,<wbr/> this value 20988will be CONVERGING.<wbr/></p> 20989<p>Once it is fully known that a set of control changes have been 20990finished propagating,<wbr/> and the resulting updated control settings 20991have been read back by the camera device,<wbr/> this value will be set 20992to a non-negative frame number (corresponding to the request to 20993which the results have synchronized to).<wbr/></p> 20994<p>Older camera device implementations may not have a way to detect 20995when all camera controls have been applied,<wbr/> and will always set this 20996value to UNKNOWN.<wbr/></p> 20997<p>FULL capability devices will always have this value set to the 20998frame number of the request corresponding to this result.<wbr/></p> 20999<p><em>Further details</em>:</p> 21000<ul> 21001<li>Whenever a request differs from the last request,<wbr/> any future 21002results not yet returned may have this value set to CONVERGING (this 21003could include any in-progress captures not yet returned by the camera 21004device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 21005<li>Submitting a series of multiple requests that differ from the 21006previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 21007moves the new synchronization frame to the last non-repeating 21008request (using the smallest frame number from the contiguous list of 21009repeating requests).<wbr/></li> 21010<li>Submitting the same request repeatedly will not change this value 21011to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 21012<li>When this value changes to non-negative,<wbr/> that means that all of the 21013metadata controls from the request have been applied,<wbr/> all of the 21014metadata controls from the camera device have been read to the 21015updated values (into the result),<wbr/> and all of the graphics buffers 21016corresponding to this result are also synchronized to the request.<wbr/></li> 21017</ul> 21018<p><em>Pipeline considerations</em>:</p> 21019<p>Submitting a request with updated controls relative to the previously 21020submitted requests may also invalidate the synchronization state 21021of all the results corresponding to currently in-flight requests.<wbr/></p> 21022<p>In other words,<wbr/> results for this current request and up to 21023<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 21024<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 21025 </td> 21026 </tr> 21027 21028 <tr class="entries_header"> 21029 <th class="th_details" colspan="5">HAL Implementation Details</th> 21030 </tr> 21031 <tr class="entry_cont"> 21032 <td class="entry_details" colspan="5"> 21033 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> 21034is also UNKNOWN.<wbr/></p> 21035<p>FULL capability devices should simply set this value to the 21036<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 21037 </td> 21038 </tr> 21039 21040 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21041 <!-- end of entry --> 21042 21043 21044 21045 <!-- end of kind --> 21046 </tbody> 21047 <tr><td colspan="6" class="kind">static</td></tr> 21048 21049 <thead class="entries_header"> 21050 <tr> 21051 <th class="th_name">Property Name</th> 21052 <th class="th_type">Type</th> 21053 <th class="th_description">Description</th> 21054 <th class="th_units">Units</th> 21055 <th class="th_range">Range</th> 21056 <th class="th_tags">Tags</th> 21057 </tr> 21058 </thead> 21059 21060 <tbody> 21061 21062 21063 21064 21065 21066 21067 21068 21069 21070 21071 <tr class="entry" id="static_android.sync.maxLatency"> 21072 <td class="entry_name 21073 " rowspan="5"> 21074 android.<wbr/>sync.<wbr/>max<wbr/>Latency 21075 </td> 21076 <td class="entry_type"> 21077 <span class="entry_type_name entry_type_name_enum">int32</span> 21078 21079 <span class="entry_type_visibility"> [public]</span> 21080 21081 21082 21083 21084 <ul class="entry_type_enum"> 21085 <li> 21086 <span class="entry_type_enum_name">PER_FRAME_CONTROL</span> 21087 <span class="entry_type_enum_value">0</span> 21088 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/> 21089(and furthermore for all results,<wbr/> 21090<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a></code>)</p> 21091<p>Changing controls over multiple requests one after another will 21092produce results that have those controls applied atomically 21093each frame.<wbr/></p> 21094<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 21095 </li> 21096 <li> 21097 <span class="entry_type_enum_name">UNKNOWN</span> 21098 <span class="entry_type_enum_value">-1</span> 21099 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 21100of the past requests applied to the camera settings.<wbr/></p> 21101<p>By submitting a series of identical requests,<wbr/> the camera device 21102will eventually have the camera settings applied,<wbr/> but it is 21103unknown when that exact point will be.<wbr/></p></span> 21104 </li> 21105 </ul> 21106 21107 </td> <!-- entry_type --> 21108 21109 <td class="entry_description"> 21110 <p>The maximum number of frames that can occur after a request 21111(different than the previous) has been submitted,<wbr/> and before the 21112result's state becomes synchronized (by setting 21113<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> to a non-negative value).<wbr/></p> 21114 </td> 21115 21116 <td class="entry_units"> 21117 number of processed requests 21118 </td> 21119 21120 <td class="entry_range"> 21121 <p>>= -1</p> 21122 </td> 21123 21124 <td class="entry_tags"> 21125 <ul class="entry_tags"> 21126 <li><a href="#tag_V1">V1</a></li> 21127 </ul> 21128 </td> 21129 21130 </tr> 21131 <tr class="entries_header"> 21132 <th class="th_details" colspan="5">Details</th> 21133 </tr> 21134 <tr class="entry_cont"> 21135 <td class="entry_details" colspan="5"> 21136 <p>This defines the maximum distance (in number of metadata results),<wbr/> 21137between <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> and the equivalent 21138<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a>.<wbr/></p> 21139<p>In other words this acts as an upper boundary for how many frames 21140must occur before the camera device knows for a fact that the new 21141submitted camera settings have been applied in outgoing frames.<wbr/></p> 21142<p>For example if the distance was 2,<wbr/></p> 21143<pre><code>initial request = X (repeating) 21144request1 = X 21145request2 = Y 21146request3 = Y 21147request4 = Y 21148 21149where requestN has frameNumber N,<wbr/> and the first of the repeating 21150initial request's has frameNumber F (and F < 1).<wbr/> 21151 21152initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 21153result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 21154result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 21155result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 21156result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 21157 21158where resultN has frameNumber N.<wbr/> 21159</code></pre> 21160<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 21161<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 21162<code>4 - 2 = 2</code>.<wbr/></p> 21163 </td> 21164 </tr> 21165 21166 <tr class="entries_header"> 21167 <th class="th_details" colspan="5">HAL Implementation Details</th> 21168 </tr> 21169 <tr class="entry_cont"> 21170 <td class="entry_details" colspan="5"> 21171 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 21172<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a>.<wbr/></p> 21173<p>LIMITED devices are strongly encouraged to use a non-negative 21174value.<wbr/> If UNKNOWN is used here then app developers do not have a way 21175to know when sensor settings have been applied.<wbr/></p> 21176 </td> 21177 </tr> 21178 21179 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21180 <!-- end of entry --> 21181 21182 21183 21184 <!-- end of kind --> 21185 </tbody> 21186 21187 <!-- end of section --> 21188<!-- </namespace> --> 21189 </table> 21190 21191 <div class="tags" id="tag_index"> 21192 <h2>Tags</h2> 21193 <ul> 21194 <li id="tag_BC">BC - 21195 Needed for backwards compatibility with old Java API 21196 21197 <ul class="tags_entries"> 21198 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 21199 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 21200 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 21201 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 21202 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 21203 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 21204 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 21205 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 21206 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 21207 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 21208 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 21209 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 21210 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 21211 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 21212 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 21213 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 21214 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 21215 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 21216 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li> 21217 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 21218 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li> 21219 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 21220 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 21221 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 21222 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 21223 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 21224 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 21225 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 21226 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 21227 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 21228 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 21229 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 21230 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 21231 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 21232 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 21233 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 21234 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 21235 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 21236 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 21237 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 21238 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 21239 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 21240 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 21241 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 21242 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 21243 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 21244 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 21245 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 21246 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 21247 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 21248 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 21249 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 21250 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 21251 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 21252 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 21253 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 21254 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 21255 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 21256 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li> 21257 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 21258 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 21259 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 21260 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 21261 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 21262 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 21263 </ul> 21264 </li> <!-- tag_BC --> 21265 <li id="tag_V1">V1 - 21266 New features for first camera 2 release (API1) 21267 21268 <ul class="tags_entries"> 21269 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 21270 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 21271 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 21272 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 21273 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 21274 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 21275 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 21276 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 21277 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 21278 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 21279 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 21280 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 21281 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 21282 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 21283 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 21284 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 21285 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 21286 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 21287 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 21288 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 21289 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> 21290 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> 21291 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 21292 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 21293 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 21294 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 21295 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 21296 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 21297 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 21298 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 21299 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 21300 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 21301 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 21302 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 21303 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 21304 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 21305 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 21306 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 21307 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 21308 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 21309 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 21310 </ul> 21311 </li> <!-- tag_V1 --> 21312 <li id="tag_DNG">DNG - 21313 Needed for DNG file support 21314 21315 <ul class="tags_entries"> 21316 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 21317 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 21318 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 21319 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 21320 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 21321 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 21322 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 21323 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li> 21324 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> 21325 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> 21326 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> 21327 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> 21328 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> 21329 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> 21330 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 21331 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> 21332 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> 21333 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> 21334 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> 21335 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> 21336 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 21337 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 21338 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 21339 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 21340 </ul> 21341 </li> <!-- tag_DNG --> 21342 <li id="tag_HAL2">HAL2 - 21343 Entry is only used by camera device HAL 2.x 21344 21345 <ul class="tags_entries"> 21346 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 21347 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 21348 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 21349 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 21350 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 21351 </ul> 21352 </li> <!-- tag_HAL2 --> 21353 <li id="tag_FULL">FULL - 21354 Entry is required for full hardware level devices, and optional for other hardware levels 21355 21356 <ul class="tags_entries"> 21357 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 21358 </ul> 21359 </li> <!-- tag_FULL --> 21360 <li id="tag_FUTURE">FUTURE - 21361 Entry is under-specified and is not required for now. This is for book-keeping purpose, 21362 do not implement or use it, it may be revised for future. 21363 21364 <ul class="tags_entries"> 21365 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 21366 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> 21367 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 21368 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 21369 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 21370 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 21371 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 21372 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li> 21373 <li><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a> (static)</li> 21374 <li><a href="#static_android.lens.position">android.lens.position</a> (static)</li> 21375 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li> 21376 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li> 21377 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 21378 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 21379 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 21380 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 21381 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 21382 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li> 21383 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li> 21384 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li> 21385 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li> 21386 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 21387 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 21388 </ul> 21389 </li> <!-- tag_FUTURE --> 21390 </ul> 21391 </div> 21392 21393 [ <a href="#">top</a> ] 21394 21395</body> 21396</html> 21397