docs.html revision e713fa64f77bdb9895415e0fa031b7c6c2668907
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 38 /* table column sizes */ 39 table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word } 40 td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em } 41 .th_name { width: 20% } 42 .th_units { width: 10% } 43 .th_tags { width: 5% } 44 .th_details { width: 25% } 45 .th_type { width: 20% } 46 .th_description { width: 20% } 47 .th_range { width: 10% } 48 td { font-size: 0.9em; } 49 50 /* hide the first thead, we need it there only to enforce column sizes */ 51 .thead_dummy { visibility: hidden; } 52 53 /* Entry flair */ 54 .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; } 55 56 /* Entry type flair */ 57 .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;} 58 .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" } 59 .entry_type_visibility { font-weight: bolder; padding-left:1em} 60 .entry_type_enum_name { font-family: monospace; font-weight: bolder; } 61 .entry_type_enum_notes:before { content:" - " } 62 .entry_type_enum_notes>p:first-child { display:inline; } 63 .entry_type_enum_value:before { content:" = " } 64 .entry_type_enum_value { font-family: monospace; } 65 .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; } 66 .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;} 67 68 /* Entry tags flair */ 69 .entry_tags ul { list-style-type: none; } 70 71 /* Entry details (full docs) flair */ 72 .entry_details_header { font-weight: bold; background-color: #dddddd; 73 text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; } 74 75 /* Entry spacer flair */ 76 .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; } 77 78 /* TODO: generate abbr element for each tag link? */ 79 /* TODO for each x.y.z try to link it to the entry */ 80 81 </style> 82 83 <style> 84 85 { 86 /* broken... 87 supposedly there is a bug in chrome that it lays out tables before 88 it knows its being printed, so the page-break-* styles are ignored 89 */ 90 tr { page-break-after: always; page-break-inside: avoid; } 91 } 92 93 </style> 94</head> 95 96 97 98<body> 99 <h1>Android Camera HAL3.2 Properties</h1> 100 101 102 <h2>Table of Contents</h2> 103 <ul class="toc"> 104 <li><a href="#tag_index" class="toc_section_header">Tags</a></li> 105 <li> 106 <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span> 107 <ul class="toc_section"> 108 <li> 109 <span class="toc_kind_header">controls</span> 110 <ul class="toc_section"> 111 <li><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 112 <li><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 113 <li><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 114 </ul> 115 </li> 116 <li> 117 <span class="toc_kind_header">dynamic</span> 118 <ul class="toc_section"> 119 <li><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 120 <li><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 121 </ul> 122 </li> 123 </ul> <!-- toc_section --> 124 </li> 125 <li> 126 <span class="toc_section_header"><a href="#section_control">control</a></span> 127 <ul class="toc_section"> 128 <li> 129 <span class="toc_kind_header">controls</span> 130 <ul class="toc_section"> 131 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 132 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 133 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a></li> 134 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a></li> 135 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li> 136 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 137 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 138 <li><a href="#controls_android.control.afMode">android.control.afMode</a></li> 139 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a></li> 140 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li> 141 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a></li> 142 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a></li> 143 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li> 144 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li> 145 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a></li> 146 <li><a href="#controls_android.control.mode">android.control.mode</a></li> 147 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li> 148 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 149 </ul> 150 </li> 151 <li> 152 <span class="toc_kind_header">static</span> 153 <ul class="toc_section"> 154 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li> 155 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li> 156 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li> 157 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li> 158 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li> 159 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li> 160 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li> 161 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li> 162 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li> 163 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li> 164 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li> 165 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li> 166 </ul> 167 </li> 168 <li> 169 <span class="toc_kind_header">dynamic</span> 170 <ul class="toc_section"> 171 <li><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li> 172 <li><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li> 173 <li><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li> 174 <li><a href="#dynamic_android.control.aeState">android.control.aeState</a></li> 175 <li><a href="#dynamic_android.control.afMode">android.control.afMode</a></li> 176 <li><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li> 177 <li><a href="#dynamic_android.control.afState">android.control.afState</a></li> 178 <li><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li> 179 <li><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li> 180 <li><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li> 181 <li><a href="#dynamic_android.control.awbState">android.control.awbState</a></li> 182 <li><a href="#dynamic_android.control.mode">android.control.mode</a></li> 183 </ul> 184 </li> 185 </ul> <!-- toc_section --> 186 </li> 187 <li> 188 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span> 189 <ul class="toc_section"> 190 <li> 191 <span class="toc_kind_header">controls</span> 192 <ul class="toc_section"> 193 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li> 194 </ul> 195 </li> 196 </ul> <!-- toc_section --> 197 </li> 198 <li> 199 <span class="toc_section_header"><a href="#section_edge">edge</a></span> 200 <ul class="toc_section"> 201 <li> 202 <span class="toc_kind_header">controls</span> 203 <ul class="toc_section"> 204 <li><a href="#controls_android.edge.mode">android.edge.mode</a></li> 205 <li><a href="#controls_android.edge.strength">android.edge.strength</a></li> 206 </ul> 207 </li> 208 <li> 209 <span class="toc_kind_header">static</span> 210 <ul class="toc_section"> 211 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li> 212 </ul> 213 </li> 214 <li> 215 <span class="toc_kind_header">dynamic</span> 216 <ul class="toc_section"> 217 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a></li> 218 </ul> 219 </li> 220 </ul> <!-- toc_section --> 221 </li> 222 <li> 223 <span class="toc_section_header"><a href="#section_flash">flash</a></span> 224 <ul class="toc_section"> 225 <li> 226 <span class="toc_kind_header">controls</span> 227 <ul class="toc_section"> 228 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li> 229 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li> 230 <li><a href="#controls_android.flash.mode">android.flash.mode</a></li> 231 </ul> 232 </li> 233 <li> 234 <span class="toc_kind_header">static</span> 235 <ul class="toc_section"> 236 237 <li><a href="#static_android.flash.info.available">android.flash.info.available</a></li> 238 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li> 239 240 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li> 241 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li> 242 </ul> 243 </li> 244 <li> 245 <span class="toc_kind_header">dynamic</span> 246 <ul class="toc_section"> 247 <li><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li> 248 <li><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li> 249 <li><a href="#dynamic_android.flash.mode">android.flash.mode</a></li> 250 <li><a href="#dynamic_android.flash.state">android.flash.state</a></li> 251 </ul> 252 </li> 253 </ul> <!-- toc_section --> 254 </li> 255 <li> 256 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span> 257 <ul class="toc_section"> 258 <li> 259 <span class="toc_kind_header">controls</span> 260 <ul class="toc_section"> 261 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li> 262 </ul> 263 </li> 264 <li> 265 <span class="toc_kind_header">static</span> 266 <ul class="toc_section"> 267 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li> 268 </ul> 269 </li> 270 <li> 271 <span class="toc_kind_header">dynamic</span> 272 <ul class="toc_section"> 273 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li> 274 </ul> 275 </li> 276 </ul> <!-- toc_section --> 277 </li> 278 <li> 279 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span> 280 <ul class="toc_section"> 281 <li> 282 <span class="toc_kind_header">controls</span> 283 <ul class="toc_section"> 284 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 285 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 286 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 287 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li> 288 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li> 289 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 290 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 291 </ul> 292 </li> 293 <li> 294 <span class="toc_kind_header">static</span> 295 <ul class="toc_section"> 296 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li> 297 <li><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li> 298 </ul> 299 </li> 300 <li> 301 <span class="toc_kind_header">dynamic</span> 302 <ul class="toc_section"> 303 <li><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 304 <li><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 305 <li><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 306 <li><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li> 307 <li><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li> 308 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li> 309 <li><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 310 <li><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 311 </ul> 312 </li> 313 </ul> <!-- toc_section --> 314 </li> 315 <li> 316 <span class="toc_section_header"><a href="#section_lens">lens</a></span> 317 <ul class="toc_section"> 318 <li> 319 <span class="toc_kind_header">controls</span> 320 <ul class="toc_section"> 321 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a></li> 322 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li> 323 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li> 324 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li> 325 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 326 </ul> 327 </li> 328 <li> 329 <span class="toc_kind_header">static</span> 330 <ul class="toc_section"> 331 332 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li> 333 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li> 334 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li> 335 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li> 336 <li><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li> 337 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li> 338 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li> 339 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li> 340 341 <li><a href="#static_android.lens.facing">android.lens.facing</a></li> 342 <li><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a></li> 343 <li><a href="#static_android.lens.position">android.lens.position</a></li> 344 </ul> 345 </li> 346 <li> 347 <span class="toc_kind_header">dynamic</span> 348 <ul class="toc_section"> 349 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li> 350 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li> 351 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li> 352 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li> 353 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li> 354 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 355 <li><a href="#dynamic_android.lens.state">android.lens.state</a></li> 356 </ul> 357 </li> 358 </ul> <!-- toc_section --> 359 </li> 360 <li> 361 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span> 362 <ul class="toc_section"> 363 <li> 364 <span class="toc_kind_header">controls</span> 365 <ul class="toc_section"> 366 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 367 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li> 368 </ul> 369 </li> 370 <li> 371 <span class="toc_kind_header">static</span> 372 <ul class="toc_section"> 373 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li> 374 </ul> 375 </li> 376 <li> 377 <span class="toc_kind_header">dynamic</span> 378 <ul class="toc_section"> 379 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 380 </ul> 381 </li> 382 </ul> <!-- toc_section --> 383 </li> 384 <li> 385 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span> 386 <ul class="toc_section"> 387 <li> 388 <span class="toc_kind_header">static</span> 389 <ul class="toc_section"> 390 <li><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li> 391 <li><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li> 392 <li><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li> 393 <li><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li> 394 </ul> 395 </li> 396 <li> 397 <span class="toc_kind_header">dynamic</span> 398 <ul class="toc_section"> 399 <li><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li> 400 </ul> 401 </li> 402 </ul> <!-- toc_section --> 403 </li> 404 <li> 405 <span class="toc_section_header"><a href="#section_request">request</a></span> 406 <ul class="toc_section"> 407 <li> 408 <span class="toc_kind_header">controls</span> 409 <ul class="toc_section"> 410 <li><a href="#controls_android.request.frameCount">android.request.frameCount</a></li> 411 <li><a href="#controls_android.request.id">android.request.id</a></li> 412 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li> 413 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li> 414 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li> 415 <li><a href="#controls_android.request.type">android.request.type</a></li> 416 </ul> 417 </li> 418 <li> 419 <span class="toc_kind_header">static</span> 420 <ul class="toc_section"> 421 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li> 422 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li> 423 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li> 424 <li><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li> 425 <li><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li> 426 <li><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li> 427 <li><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li> 428 <li><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li> 429 <li><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li> 430 </ul> 431 </li> 432 <li> 433 <span class="toc_kind_header">dynamic</span> 434 <ul class="toc_section"> 435 <li><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li> 436 <li><a href="#dynamic_android.request.id">android.request.id</a></li> 437 <li><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li> 438 <li><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li> 439 <li><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li> 440 </ul> 441 </li> 442 </ul> <!-- toc_section --> 443 </li> 444 <li> 445 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span> 446 <ul class="toc_section"> 447 <li> 448 <span class="toc_kind_header">controls</span> 449 <ul class="toc_section"> 450 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 451 </ul> 452 </li> 453 <li> 454 <span class="toc_kind_header">static</span> 455 <ul class="toc_section"> 456 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li> 457 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li> 458 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li> 459 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li> 460 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li> 461 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li> 462 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li> 463 <li><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li> 464 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li> 465 <li><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li> 466 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li> 467 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li> 468 </ul> 469 </li> 470 <li> 471 <span class="toc_kind_header">dynamic</span> 472 <ul class="toc_section"> 473 <li><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 474 </ul> 475 </li> 476 </ul> <!-- toc_section --> 477 </li> 478 <li> 479 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span> 480 <ul class="toc_section"> 481 <li> 482 <span class="toc_kind_header">controls</span> 483 <ul class="toc_section"> 484 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 485 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 486 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 487 <li><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 488 <li><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 489 </ul> 490 </li> 491 <li> 492 <span class="toc_kind_header">static</span> 493 <ul class="toc_section"> 494 495 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li> 496 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li> 497 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li> 498 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li> 499 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li> 500 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li> 501 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li> 502 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li> 503 504 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> 505 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li> 506 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> 507 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li> 508 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li> 509 <li><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li> 510 </ul> 511 </li> 512 <li> 513 <span class="toc_kind_header">dynamic</span> 514 <ul class="toc_section"> 515 <li><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 516 <li><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 517 <li><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 518 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> 519 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> 520 <li><a href="#dynamic_android.sensor.referenceIlluminant">android.sensor.referenceIlluminant</a></li> 521 <li><a href="#dynamic_android.sensor.calibrationTransform">android.sensor.calibrationTransform</a></li> 522 <li><a href="#dynamic_android.sensor.colorTransform">android.sensor.colorTransform</a></li> 523 <li><a href="#dynamic_android.sensor.forwardMatrix">android.sensor.forwardMatrix</a></li> 524 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li> 525 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li> 526 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li> 527 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li> 528 <li><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 529 </ul> 530 </li> 531 </ul> <!-- toc_section --> 532 </li> 533 <li> 534 <span class="toc_section_header"><a href="#section_shading">shading</a></span> 535 <ul class="toc_section"> 536 <li> 537 <span class="toc_kind_header">controls</span> 538 <ul class="toc_section"> 539 <li><a href="#controls_android.shading.mode">android.shading.mode</a></li> 540 <li><a href="#controls_android.shading.strength">android.shading.strength</a></li> 541 </ul> 542 </li> 543 <li> 544 <span class="toc_kind_header">dynamic</span> 545 <ul class="toc_section"> 546 <li><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> 547 </ul> 548 </li> 549 </ul> <!-- toc_section --> 550 </li> 551 <li> 552 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span> 553 <ul class="toc_section"> 554 <li> 555 <span class="toc_kind_header">controls</span> 556 <ul class="toc_section"> 557 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 558 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 559 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 560 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 561 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 562 </ul> 563 </li> 564 <li> 565 <span class="toc_kind_header">static</span> 566 <ul class="toc_section"> 567 568 <li><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> 569 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> 570 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> 571 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> 572 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> 573 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> 574 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li> 575 576 </ul> 577 </li> 578 <li> 579 <span class="toc_kind_header">dynamic</span> 580 <ul class="toc_section"> 581 <li><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 582 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> 583 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> 584 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> 585 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> 586 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> 587 <li><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 588 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> 589 <li><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 590 <li><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> 591 <li><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> 592 <li><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> 593 <li><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> 594 <li><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 595 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li> 596 </ul> 597 </li> 598 </ul> <!-- toc_section --> 599 </li> 600 <li> 601 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> 602 <ul class="toc_section"> 603 <li> 604 <span class="toc_kind_header">controls</span> 605 <ul class="toc_section"> 606 <li><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 607 <li><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 608 <li><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 609 <li><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> 610 </ul> 611 </li> 612 <li> 613 <span class="toc_kind_header">static</span> 614 <ul class="toc_section"> 615 <li><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> 616 <li><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li> 617 </ul> 618 </li> 619 <li> 620 <span class="toc_kind_header">dynamic</span> 621 <ul class="toc_section"> 622 <li><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 623 <li><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 624 <li><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 625 <li><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> 626 </ul> 627 </li> 628 </ul> <!-- toc_section --> 629 </li> 630 <li> 631 <span class="toc_section_header"><a href="#section_led">led</a></span> 632 <ul class="toc_section"> 633 <li> 634 <span class="toc_kind_header">controls</span> 635 <ul class="toc_section"> 636 <li><a href="#controls_android.led.transmit">android.led.transmit</a></li> 637 </ul> 638 </li> 639 <li> 640 <span class="toc_kind_header">dynamic</span> 641 <ul class="toc_section"> 642 <li><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> 643 </ul> 644 </li> 645 <li> 646 <span class="toc_kind_header">static</span> 647 <ul class="toc_section"> 648 <li><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> 649 </ul> 650 </li> 651 </ul> <!-- toc_section --> 652 </li> 653 <li> 654 <span class="toc_section_header"><a href="#section_info">info</a></span> 655 <ul class="toc_section"> 656 <li> 657 <span class="toc_kind_header">static</span> 658 <ul class="toc_section"> 659 <li><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> 660 </ul> 661 </li> 662 </ul> <!-- toc_section --> 663 </li> 664 <li> 665 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> 666 <ul class="toc_section"> 667 <li> 668 <span class="toc_kind_header">controls</span> 669 <ul class="toc_section"> 670 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> 671 </ul> 672 </li> 673 <li> 674 <span class="toc_kind_header">dynamic</span> 675 <ul class="toc_section"> 676 <li><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> 677 </ul> 678 </li> 679 </ul> <!-- toc_section --> 680 </li> 681 <li> 682 <span class="toc_section_header"><a href="#section_sync">sync</a></span> 683 <ul class="toc_section"> 684 <li> 685 <span class="toc_kind_header">dynamic</span> 686 <ul class="toc_section"> 687 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> 688 </ul> 689 </li> 690 <li> 691 <span class="toc_kind_header">static</span> 692 <ul class="toc_section"> 693 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> 694 </ul> 695 </li> 696 </ul> <!-- toc_section --> 697 </li> 698 </ul> 699 700 701 <h1>Properties</h1> 702 <table class="properties"> 703 704 <thead class="thead_dummy"> 705 <tr> 706 <th class="th_name">Property Name</th> 707 <th class="th_type">Type</th> 708 <th class="th_description">Description</th> 709 <th class="th_units">Units</th> 710 <th class="th_range">Range</th> 711 <th class="th_tags">Tags</th> 712 </tr> 713 </thead> <!-- so that the first occurrence of thead is not 714 above the first occurrence of tr --> 715<!-- <namespace name="android"> --> 716 <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr> 717 718 719 <tr><td colspan="6" class="kind">controls</td></tr> 720 721 <thead class="entries_header"> 722 <tr> 723 <th class="th_name">Property Name</th> 724 <th class="th_type">Type</th> 725 <th class="th_description">Description</th> 726 <th class="th_units">Units</th> 727 <th class="th_range">Range</th> 728 <th class="th_tags">Tags</th> 729 </tr> 730 </thead> 731 732 <tbody> 733 734 735 736 737 738 739 740 741 742 743 <tr class="entry" id="controls_android.colorCorrection.mode"> 744 <td class="entry_name" rowspan="3"> 745 android.<wbr/>color<wbr/>Correction.<wbr/>mode 746 </td> 747 <td class="entry_type"> 748 <span class="entry_type_name entry_type_name_enum">byte</span> 749 750 <span class="entry_type_visibility"> [public]</span> 751 752 <ul class="entry_type_enum"> 753 <li> 754 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 755 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 756and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 757<p>All advanced white balance adjustments (not specified 758by our white balance pipeline) must be disabled.<wbr/></p> 759<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 760TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 761this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 762 </li> 763 <li> 764 <span class="entry_type_enum_name">FAST</span> 765 <span class="entry_type_enum_notes"><p>Must not slow down capture rate relative to sensor raw 766output.<wbr/></p> 767<p>Advanced white balance adjustments above and beyond 768the specified white balance pipeline may be applied.<wbr/></p> 769<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 770the camera device uses the last frame's AWB values 771(or defaults if AWB has never been run).<wbr/></p></span> 772 </li> 773 <li> 774 <span class="entry_type_enum_name">HIGH_QUALITY</span> 775 <span class="entry_type_enum_notes"><p>Capture rate (relative to sensor raw output) 776may be reduced by high quality.<wbr/></p> 777<p>Advanced white balance adjustments above and beyond 778the specified white balance pipeline may be applied.<wbr/></p> 779<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 780the camera device uses the last frame's AWB values 781(or defaults if AWB has never been run).<wbr/></p></span> 782 </li> 783 </ul> 784 785 </td> <!-- entry_type --> 786 787 <td class="entry_description"> 788 <p>The mode control selects how the image data is converted from the 789sensor's native color into linear sRGB color.<wbr/></p> 790 </td> 791 792 <td class="entry_units"> 793 </td> 794 795 <td class="entry_range"> 796 </td> 797 798 <td class="entry_tags"> 799 </td> 800 801 </tr> 802 <tr class="entries_header"> 803 <th class="th_details" colspan="5">Details</th> 804 </tr> 805 <tr class="entry_cont"> 806 <td class="entry_details" colspan="5"> 807 <p>When auto-white balance is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this 808control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 809application controls how the color mapping is performed.<wbr/></p> 810<p>We define the expected processing pipeline below.<wbr/> For consistency 811across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 812<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 813do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 814<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 815camera device (in the results) and be roughly correct.<wbr/></p> 816<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 817FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 818as what was produced by the camera device in the earlier frame.<wbr/></p> 819<p>The expected processing pipeline is as follows:</p> 820<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 821<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 822gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 823matrix (applied after demosaic).<wbr/></p> 824<p>The 4-channel white-balance gains are defined as:</p> 825<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 826</code></pre> 827<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 828output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 829These may be identical for a given camera device implementation; if 830the camera device does not support a separate gain for even/<wbr/>odd green 831channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 832<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 833<p>The matrices for color transforms are defined as a 9-entry vector:</p> 834<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 ] 835</code></pre> 836<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 837to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 838<p>with colors as follows:</p> 839<pre><code>r' = I0r + I1g + I2b 840g' = I3r + I4g + I5b 841b' = I6r + I7g + I8b 842</code></pre> 843<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 844values are clipped to fit within the range.<wbr/></p> 845 </td> 846 </tr> 847 848 849 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 850 <!-- end of entry --> 851 852 853 <tr class="entry" id="controls_android.colorCorrection.transform"> 854 <td class="entry_name" rowspan="3"> 855 android.<wbr/>color<wbr/>Correction.<wbr/>transform 856 </td> 857 <td class="entry_type"> 858 <span class="entry_type_name">rational</span> 859 <span class="entry_type_container">x</span> 860 861 <span class="entry_type_array"> 862 3 x 3 863 </span> 864 <span class="entry_type_visibility"> [public]</span> 865 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 866 867 868 </td> <!-- entry_type --> 869 870 <td class="entry_description"> 871 <p>A color transform matrix to use to transform 872from sensor RGB color space to output linear sRGB color space</p> 873 </td> 874 875 <td class="entry_units"> 876 </td> 877 878 <td class="entry_range"> 879 </td> 880 881 <td class="entry_tags"> 882 </td> 883 884 </tr> 885 <tr class="entries_header"> 886 <th class="th_details" colspan="5">Details</th> 887 </tr> 888 <tr class="entry_cont"> 889 <td class="entry_details" colspan="5"> 890 <p>This matrix is either set by the camera device when the request 891<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 892directly by the application in the request when the 893<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 894<p>In the latter case,<wbr/> the camera device may round the matrix to account 895for precision issues; the final rounded matrix should be reported back 896in this matrix result metadata.<wbr/> The transform should keep the magnitude 897of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 898values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 899 </td> 900 </tr> 901 902 903 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 904 <!-- end of entry --> 905 906 907 <tr class="entry" id="controls_android.colorCorrection.gains"> 908 <td class="entry_name" rowspan="3"> 909 android.<wbr/>color<wbr/>Correction.<wbr/>gains 910 </td> 911 <td class="entry_type"> 912 <span class="entry_type_name">float</span> 913 <span class="entry_type_container">x</span> 914 915 <span class="entry_type_array"> 916 4 917 </span> 918 <span class="entry_type_visibility"> [public]</span> 919 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 920 921 922 </td> <!-- entry_type --> 923 924 <td class="entry_description"> 925 <p>Gains applying to Bayer raw color channels for 926white-balance.<wbr/></p> 927 </td> 928 929 <td class="entry_units"> 930 </td> 931 932 <td class="entry_range"> 933 </td> 934 935 <td class="entry_tags"> 936 </td> 937 938 </tr> 939 <tr class="entries_header"> 940 <th class="th_details" colspan="5">Details</th> 941 </tr> 942 <tr class="entry_cont"> 943 <td class="entry_details" colspan="5"> 944 <p>The 4-channel white-balance gains are defined in 945the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 946for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 947is the gain for green pixels on the odd rows.<wbr/> if a HAL 948does not support a separate gain for even/<wbr/>odd green channels,<wbr/> 949it should use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 950<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 951<p>This array is either set by the camera device when the request 952<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 953directly by the application in the request when the 954<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 955<p>The output should be the gains actually applied by the camera device to 956the current frame.<wbr/></p> 957 </td> 958 </tr> 959 960 961 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 962 <!-- end of entry --> 963 964 965 966 <!-- end of kind --> 967 </tbody> 968 <tr><td colspan="6" class="kind">dynamic</td></tr> 969 970 <thead class="entries_header"> 971 <tr> 972 <th class="th_name">Property Name</th> 973 <th class="th_type">Type</th> 974 <th class="th_description">Description</th> 975 <th class="th_units">Units</th> 976 <th class="th_range">Range</th> 977 <th class="th_tags">Tags</th> 978 </tr> 979 </thead> 980 981 <tbody> 982 983 984 985 986 987 988 989 990 991 992 <tr class="entry" id="dynamic_android.colorCorrection.transform"> 993 <td class="entry_name" rowspan="3"> 994 android.<wbr/>color<wbr/>Correction.<wbr/>transform 995 </td> 996 <td class="entry_type"> 997 <span class="entry_type_name">rational</span> 998 <span class="entry_type_container">x</span> 999 1000 <span class="entry_type_array"> 1001 3 x 3 1002 </span> 1003 <span class="entry_type_visibility"> [public]</span> 1004 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1005 1006 1007 </td> <!-- entry_type --> 1008 1009 <td class="entry_description"> 1010 <p>A color transform matrix to use to transform 1011from sensor RGB color space to output linear sRGB color space</p> 1012 </td> 1013 1014 <td class="entry_units"> 1015 </td> 1016 1017 <td class="entry_range"> 1018 </td> 1019 1020 <td class="entry_tags"> 1021 </td> 1022 1023 </tr> 1024 <tr class="entries_header"> 1025 <th class="th_details" colspan="5">Details</th> 1026 </tr> 1027 <tr class="entry_cont"> 1028 <td class="entry_details" colspan="5"> 1029 <p>This matrix is either set by the camera device when the request 1030<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1031directly by the application in the request when the 1032<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1033<p>In the latter case,<wbr/> the camera device may round the matrix to account 1034for precision issues; the final rounded matrix should be reported back 1035in this matrix result metadata.<wbr/> The transform should keep the magnitude 1036of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1037values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1038 </td> 1039 </tr> 1040 1041 1042 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1043 <!-- end of entry --> 1044 1045 1046 <tr class="entry" id="dynamic_android.colorCorrection.gains"> 1047 <td class="entry_name" rowspan="3"> 1048 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1049 </td> 1050 <td class="entry_type"> 1051 <span class="entry_type_name">float</span> 1052 <span class="entry_type_container">x</span> 1053 1054 <span class="entry_type_array"> 1055 4 1056 </span> 1057 <span class="entry_type_visibility"> [public]</span> 1058 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1059 1060 1061 </td> <!-- entry_type --> 1062 1063 <td class="entry_description"> 1064 <p>Gains applying to Bayer raw color channels for 1065white-balance.<wbr/></p> 1066 </td> 1067 1068 <td class="entry_units"> 1069 </td> 1070 1071 <td class="entry_range"> 1072 </td> 1073 1074 <td class="entry_tags"> 1075 </td> 1076 1077 </tr> 1078 <tr class="entries_header"> 1079 <th class="th_details" colspan="5">Details</th> 1080 </tr> 1081 <tr class="entry_cont"> 1082 <td class="entry_details" colspan="5"> 1083 <p>The 4-channel white-balance gains are defined in 1084the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1085for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1086is the gain for green pixels on the odd rows.<wbr/> if a HAL 1087does not support a separate gain for even/<wbr/>odd green channels,<wbr/> 1088it should use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1089<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1090<p>This array is either set by the camera device when the request 1091<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1092directly by the application in the request when the 1093<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1094<p>The output should be the gains actually applied by the camera device to 1095the current frame.<wbr/></p> 1096 </td> 1097 </tr> 1098 1099 1100 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1101 <!-- end of entry --> 1102 1103 1104 1105 <!-- end of kind --> 1106 </tbody> 1107 1108 <!-- end of section --> 1109 <tr><td colspan="6" id="section_control" class="section">control</td></tr> 1110 1111 1112 <tr><td colspan="6" class="kind">controls</td></tr> 1113 1114 <thead class="entries_header"> 1115 <tr> 1116 <th class="th_name">Property Name</th> 1117 <th class="th_type">Type</th> 1118 <th class="th_description">Description</th> 1119 <th class="th_units">Units</th> 1120 <th class="th_range">Range</th> 1121 <th class="th_tags">Tags</th> 1122 </tr> 1123 </thead> 1124 1125 <tbody> 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 <tr class="entry" id="controls_android.control.aeAntibandingMode"> 1137 <td class="entry_name" rowspan="5"> 1138 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 1139 </td> 1140 <td class="entry_type"> 1141 <span class="entry_type_name entry_type_name_enum">byte</span> 1142 1143 <span class="entry_type_visibility"> [public]</span> 1144 1145 <ul class="entry_type_enum"> 1146 <li> 1147 <span class="entry_type_enum_name">OFF</span> 1148 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 1149avoid banding problems.<wbr/></p></span> 1150 </li> 1151 <li> 1152 <span class="entry_type_enum_name">50HZ</span> 1153 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 1154avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 1155 </li> 1156 <li> 1157 <span class="entry_type_enum_name">60HZ</span> 1158 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 1159avoid banding problems with 60Hz illumination 1160sources.<wbr/></p></span> 1161 </li> 1162 <li> 1163 <span class="entry_type_enum_name">AUTO</span> 1164 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 1165antibanding routine to the current illumination 1166conditions.<wbr/> This is the default.<wbr/></p></span> 1167 </li> 1168 </ul> 1169 1170 </td> <!-- entry_type --> 1171 1172 <td class="entry_description"> 1173 <p>The desired setting for the camera device's auto-exposure 1174algorithm's antibanding compensation.<wbr/></p> 1175 </td> 1176 1177 <td class="entry_units"> 1178 </td> 1179 1180 <td class="entry_range"> 1181 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 1182 </td> 1183 1184 <td class="entry_tags"> 1185 <ul class="entry_tags"> 1186 <li><a href="#tag_BC">BC</a></li> 1187 </ul> 1188 </td> 1189 1190 </tr> 1191 <tr class="entries_header"> 1192 <th class="th_details" colspan="5">Details</th> 1193 </tr> 1194 <tr class="entry_cont"> 1195 <td class="entry_details" colspan="5"> 1196 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 1197lights,<wbr/> flicker at the rate of the power supply frequency 1198(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 1199typically not noticeable to a person,<wbr/> it can be visible to 1200a camera device.<wbr/> If a camera sets its exposure time to the 1201wrong value,<wbr/> the flicker may become visible in the 1202viewfinder as flicker or in a final captured image,<wbr/> as a 1203set of variable-brightness bands across the image.<wbr/></p> 1204<p>Therefore,<wbr/> the auto-exposure routines of camera devices 1205include antibanding routines that ensure that the chosen 1206exposure value will not cause such banding.<wbr/> The choice of 1207exposure time depends on the rate of flicker,<wbr/> which the 1208camera device can detect automatically,<wbr/> or the expected 1209rate can be selected by the application using this 1210control.<wbr/></p> 1211<p>A given camera device may not support all of the possible 1212options for the antibanding mode.<wbr/> The 1213<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 1214the available modes for a given camera device.<wbr/></p> 1215<p>The default mode is AUTO,<wbr/> which must be supported by all 1216camera devices.<wbr/></p> 1217<p>If manual exposure control is enabled (by setting 1218<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/> 1219then this setting has no effect,<wbr/> and the application must 1220ensure it selects exposure times that do not cause banding 1221issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 1222the application in this.<wbr/></p> 1223 </td> 1224 </tr> 1225 1226 <tr class="entries_header"> 1227 <th class="th_details" colspan="5">HAL Implementation Details</th> 1228 </tr> 1229 <tr class="entry_cont"> 1230 <td class="entry_details" colspan="5"> 1231 <p>For all capture request templates,<wbr/> this field must be set 1232to AUTO.<wbr/> AUTO is the only mode that must supported; 1233OFF,<wbr/> 50HZ,<wbr/> 60HZ are all optional.<wbr/></p> 1234<p>If manual exposure control is enabled (by setting 1235<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/> 1236then the exposure values provided by the application must not be 1237adjusted for antibanding.<wbr/></p> 1238 </td> 1239 </tr> 1240 1241 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1242 <!-- end of entry --> 1243 1244 1245 <tr class="entry" id="controls_android.control.aeExposureCompensation"> 1246 <td class="entry_name" rowspan="3"> 1247 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 1248 </td> 1249 <td class="entry_type"> 1250 <span class="entry_type_name">int32</span> 1251 1252 <span class="entry_type_visibility"> [public]</span> 1253 1254 1255 </td> <!-- entry_type --> 1256 1257 <td class="entry_description"> 1258 <p>Adjustment to AE target image 1259brightness</p> 1260 </td> 1261 1262 <td class="entry_units"> 1263 count of positive/<wbr/>negative EV steps 1264 </td> 1265 1266 <td class="entry_range"> 1267 </td> 1268 1269 <td class="entry_tags"> 1270 <ul class="entry_tags"> 1271 <li><a href="#tag_BC">BC</a></li> 1272 </ul> 1273 </td> 1274 1275 </tr> 1276 <tr class="entries_header"> 1277 <th class="th_details" colspan="5">Details</th> 1278 </tr> 1279 <tr class="entry_cont"> 1280 <td class="entry_details" colspan="5"> 1281 <p>For example,<wbr/> if EV step is 0.<wbr/>333,<wbr/> '6' will mean an 1282exposure compensation of +2 EV; -3 will mean an exposure 1283compensation of -1</p> 1284 </td> 1285 </tr> 1286 1287 1288 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1289 <!-- end of entry --> 1290 1291 1292 <tr class="entry" id="controls_android.control.aeLock"> 1293 <td class="entry_name" rowspan="3"> 1294 android.<wbr/>control.<wbr/>ae<wbr/>Lock 1295 </td> 1296 <td class="entry_type"> 1297 <span class="entry_type_name entry_type_name_enum">byte</span> 1298 1299 <span class="entry_type_visibility"> [public as boolean]</span> 1300 1301 <ul class="entry_type_enum"> 1302 <li> 1303 <span class="entry_type_enum_name">OFF</span> 1304 <span class="entry_type_enum_notes"><p>Autoexposure lock is disabled; the AE algorithm 1305is free to update its parameters.<wbr/></p></span> 1306 </li> 1307 <li> 1308 <span class="entry_type_enum_name">ON</span> 1309 <span class="entry_type_enum_notes"><p>Autoexposure lock is enabled; the AE algorithm 1310must not update the exposure and sensitivity parameters 1311while the lock is active</p></span> 1312 </li> 1313 </ul> 1314 1315 </td> <!-- entry_type --> 1316 1317 <td class="entry_description"> 1318 <p>Whether AE is currently locked to its latest 1319calculated values.<wbr/></p> 1320 </td> 1321 1322 <td class="entry_units"> 1323 </td> 1324 1325 <td class="entry_range"> 1326 </td> 1327 1328 <td class="entry_tags"> 1329 <ul class="entry_tags"> 1330 <li><a href="#tag_BC">BC</a></li> 1331 </ul> 1332 </td> 1333 1334 </tr> 1335 <tr class="entries_header"> 1336 <th class="th_details" colspan="5">Details</th> 1337 </tr> 1338 <tr class="entry_cont"> 1339 <td class="entry_details" colspan="5"> 1340 <p>Note that even when AE is locked,<wbr/> the flash may be 1341fired 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/> 1342ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 1343<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 1344when AE is already locked,<wbr/> the camera device will not change the exposure time 1345(<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>) 1346parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 1347is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 1348<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> 1349<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> 1350 </td> 1351 </tr> 1352 1353 1354 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1355 <!-- end of entry --> 1356 1357 1358 <tr class="entry" id="controls_android.control.aeMode"> 1359 <td class="entry_name" rowspan="3"> 1360 android.<wbr/>control.<wbr/>ae<wbr/>Mode 1361 </td> 1362 <td class="entry_type"> 1363 <span class="entry_type_name entry_type_name_enum">byte</span> 1364 1365 <span class="entry_type_visibility"> [public]</span> 1366 1367 <ul class="entry_type_enum"> 1368 <li> 1369 <span class="entry_type_enum_name">OFF</span> 1370 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled; 1371the application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 1372<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 1373<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 1374device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 1375a flash unit for this camera device.<wbr/></p></span> 1376 </li> 1377 <li> 1378 <span class="entry_type_enum_name">ON</span> 1379 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 1380with no flash control.<wbr/> The application's values for 1381<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 1382<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 1383<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 1384application has control over the various 1385android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 1386 </li> 1387 <li> 1388 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 1389 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 1390the camera's flash unit,<wbr/> firing it in low-light 1391conditions.<wbr/> The flash may be fired during a 1392precapture sequence (triggered by 1393<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and may be fired 1394for captures for which the 1395<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 1396STILL_<wbr/>CAPTURE</p></span> 1397 </li> 1398 <li> 1399 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 1400 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 1401the camera's flash unit,<wbr/> always firing it for still 1402captures.<wbr/> The flash may be fired during a precapture 1403sequence (triggered by 1404<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and will always 1405be fired for captures for which the 1406<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 1407STILL_<wbr/>CAPTURE</p></span> 1408 </li> 1409 <li> 1410 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 1411 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 1412reduction.<wbr/> If deemed necessary by the camera device,<wbr/> 1413a red eye reduction flash will fire during the 1414precapture sequence.<wbr/></p></span> 1415 </li> 1416 </ul> 1417 1418 </td> <!-- entry_type --> 1419 1420 <td class="entry_description"> 1421 <p>The desired mode for the camera device's 1422auto-exposure routine.<wbr/></p> 1423 </td> 1424 1425 <td class="entry_units"> 1426 </td> 1427 1428 <td class="entry_range"> 1429 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 1430 </td> 1431 1432 <td class="entry_tags"> 1433 <ul class="entry_tags"> 1434 <li><a href="#tag_BC">BC</a></li> 1435 </ul> 1436 </td> 1437 1438 </tr> 1439 <tr class="entries_header"> 1440 <th class="th_details" colspan="5">Details</th> 1441 </tr> 1442 <tr class="entry_cont"> 1443 <td class="entry_details" colspan="5"> 1444 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 1445AUTO.<wbr/></p> 1446<p>When set to any of the ON modes,<wbr/> the camera device's 1447auto-exposure routine is enabled,<wbr/> overriding the 1448application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 1449and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 1450<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 1451<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 1452is selected,<wbr/> the camera device's flash unit controls are 1453also overridden.<wbr/></p> 1454<p>The FLASH modes are only available if the camera device 1455has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 1456<p>If flash TORCH mode is desired,<wbr/> this field must be set to 1457ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 1458<p>When set to any of the ON modes,<wbr/> the values chosen by the 1459camera device auto-exposure routine for the overridden 1460fields for a given capture will be available in its 1461CaptureResult.<wbr/></p> 1462 </td> 1463 </tr> 1464 1465 1466 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1467 <!-- end of entry --> 1468 1469 1470 <tr class="entry" id="controls_android.control.aeRegions"> 1471 <td class="entry_name" rowspan="3"> 1472 android.<wbr/>control.<wbr/>ae<wbr/>Regions 1473 </td> 1474 <td class="entry_type"> 1475 <span class="entry_type_name">int32</span> 1476 <span class="entry_type_container">x</span> 1477 1478 <span class="entry_type_array"> 1479 5 x area_count 1480 </span> 1481 <span class="entry_type_visibility"> [public]</span> 1482 1483 1484 </td> <!-- entry_type --> 1485 1486 <td class="entry_description"> 1487 <p>List of areas to use for 1488metering.<wbr/></p> 1489 </td> 1490 1491 <td class="entry_units"> 1492 </td> 1493 1494 <td class="entry_range"> 1495 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[0]</code></p> 1496 </td> 1497 1498 <td class="entry_tags"> 1499 <ul class="entry_tags"> 1500 <li><a href="#tag_BC">BC</a></li> 1501 </ul> 1502 </td> 1503 1504 </tr> 1505 <tr class="entries_header"> 1506 <th class="th_details" colspan="5">Details</th> 1507 </tr> 1508 <tr class="entry_cont"> 1509 <td class="entry_details" colspan="5"> 1510 <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> 1511xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the 1512specified coordinates.<wbr/></p> 1513<p>The coordinate system is based on the active pixel array,<wbr/> 1514with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 1515(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 1516<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 1517bottom-right pixel in the active pixel array.<wbr/> The weight 1518should be nonnegative.<wbr/></p> 1519<p>If all regions have 0 weight,<wbr/> then no specific metering area 1520needs to be used by the camera device.<wbr/> If the metering region is 1521outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the camera device 1522will ignore the sections outside the region and output the 1523used sections in the frame metadata.<wbr/></p> 1524 </td> 1525 </tr> 1526 1527 1528 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1529 <!-- end of entry --> 1530 1531 1532 <tr class="entry" id="controls_android.control.aeTargetFpsRange"> 1533 <td class="entry_name" rowspan="3"> 1534 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 1535 </td> 1536 <td class="entry_type"> 1537 <span class="entry_type_name">int32</span> 1538 <span class="entry_type_container">x</span> 1539 1540 <span class="entry_type_array"> 1541 2 1542 </span> 1543 <span class="entry_type_visibility"> [public]</span> 1544 1545 1546 </td> <!-- entry_type --> 1547 1548 <td class="entry_description"> 1549 <p>Range over which fps can be adjusted to 1550maintain exposure</p> 1551 </td> 1552 1553 <td class="entry_units"> 1554 </td> 1555 1556 <td class="entry_range"> 1557 <p><a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p> 1558 </td> 1559 1560 <td class="entry_tags"> 1561 <ul class="entry_tags"> 1562 <li><a href="#tag_BC">BC</a></li> 1563 </ul> 1564 </td> 1565 1566 </tr> 1567 <tr class="entries_header"> 1568 <th class="th_details" colspan="5">Details</th> 1569 </tr> 1570 <tr class="entry_cont"> 1571 <td class="entry_details" colspan="5"> 1572 <p>Only constrains AE algorithm,<wbr/> not manual control 1573of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></p> 1574 </td> 1575 </tr> 1576 1577 1578 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1579 <!-- end of entry --> 1580 1581 1582 <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> 1583 <td class="entry_name" rowspan="3"> 1584 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 1585 </td> 1586 <td class="entry_type"> 1587 <span class="entry_type_name entry_type_name_enum">byte</span> 1588 1589 <span class="entry_type_visibility"> [public]</span> 1590 1591 <ul class="entry_type_enum"> 1592 <li> 1593 <span class="entry_type_enum_name">IDLE</span> 1594 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 1595 </li> 1596 <li> 1597 <span class="entry_type_enum_name">START</span> 1598 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 1599by the camera device.<wbr/> The exact effect of the precapture 1600trigger depends on the current AE mode and state.<wbr/></p></span> 1601 </li> 1602 </ul> 1603 1604 </td> <!-- entry_type --> 1605 1606 <td class="entry_description"> 1607 <p>Whether the camera device will trigger a precapture 1608metering sequence when it processes this request.<wbr/></p> 1609 </td> 1610 1611 <td class="entry_units"> 1612 </td> 1613 1614 <td class="entry_range"> 1615 </td> 1616 1617 <td class="entry_tags"> 1618 <ul class="entry_tags"> 1619 <li><a href="#tag_BC">BC</a></li> 1620 </ul> 1621 </td> 1622 1623 </tr> 1624 <tr class="entries_header"> 1625 <th class="th_details" colspan="5">Details</th> 1626 </tr> 1627 <tr class="entry_cont"> 1628 <td class="entry_details" colspan="5"> 1629 <p>This entry is normally set to IDLE,<wbr/> or is not 1630included at all in the request settings.<wbr/> When included and 1631set to START,<wbr/> the camera device will trigger the autoexposure 1632precapture metering sequence.<wbr/></p> 1633<p>The effect of AE precapture trigger depends on the current 1634AE mode and state; see <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture 1635state transition details.<wbr/></p> 1636 </td> 1637 </tr> 1638 1639 1640 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1641 <!-- end of entry --> 1642 1643 1644 <tr class="entry" id="controls_android.control.afMode"> 1645 <td class="entry_name" rowspan="3"> 1646 android.<wbr/>control.<wbr/>af<wbr/>Mode 1647 </td> 1648 <td class="entry_type"> 1649 <span class="entry_type_name entry_type_name_enum">byte</span> 1650 1651 <span class="entry_type_visibility"> [public]</span> 1652 1653 <ul class="entry_type_enum"> 1654 <li> 1655 <span class="entry_type_enum_name">OFF</span> 1656 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 1657<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 1658application</p></span> 1659 </li> 1660 <li> 1661 <span class="entry_type_enum_name">AUTO</span> 1662 <span class="entry_type_enum_notes"><p>If lens is not fixed focus.<wbr/></p> 1663<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 1664is fixed-focus.<wbr/> In this mode,<wbr/> the lens does not move unless 1665the autofocus trigger action is called.<wbr/> When that trigger 1666is activated,<wbr/> AF must transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 1667the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 1668<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 1669and sets the AF state to INACTIVE.<wbr/></p></span> 1670 </li> 1671 <li> 1672 <span class="entry_type_enum_name">MACRO</span> 1673 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the lens does not move unless the 1674autofocus trigger action is called.<wbr/></p> 1675<p>When that trigger is activated,<wbr/> AF must transition to 1676ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 1677NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 1678position to default,<wbr/> and sets the AF state to 1679INACTIVE.<wbr/></p></span> 1680 </li> 1681 <li> 1682 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 1683 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 1684position continually to attempt to provide a 1685constantly-in-focus image stream.<wbr/></p> 1686<p>The focusing behavior should be suitable for good quality 1687video recording; typically this means slower focus 1688movement and no overshoots.<wbr/> When the AF trigger is not 1689involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 1690and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 1691states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 1692the algorithm should immediately transition into 1693AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 1694lens position until a cancel AF trigger is received.<wbr/></p> 1695<p>Once cancel is received,<wbr/> the algorithm should transition 1696back to INACTIVE and resume passive scan.<wbr/> Note that this 1697behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 1698ongoing PASSIVE_<wbr/>SCAN must immediately be 1699canceled.<wbr/></p></span> 1700 </li> 1701 <li> 1702 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 1703 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 1704position continually to attempt to provide a 1705constantly-in-focus image stream.<wbr/></p> 1706<p>The focusing behavior should be suitable for still image 1707capture; typically this means focusing as fast as 1708possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 1709algorithm should start in INACTIVE state,<wbr/> and then 1710transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 1711appropriate as it attempts to maintain focus.<wbr/> When the AF 1712trigger is activated,<wbr/> the algorithm should finish its 1713PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 1714AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 1715lens position until a cancel AF trigger is received.<wbr/></p> 1716<p>When the AF cancel trigger is activated,<wbr/> the algorithm 1717should transition back to INACTIVE and then act as if it 1718has just been started.<wbr/></p></span> 1719 </li> 1720 <li> 1721 <span class="entry_type_enum_name">EDOF</span> 1722 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus).<wbr/> AF 1723trigger is ignored,<wbr/> AF state should always be 1724INACTIVE.<wbr/></p></span> 1725 </li> 1726 </ul> 1727 1728 </td> <!-- entry_type --> 1729 1730 <td class="entry_description"> 1731 <p>Whether AF is currently enabled,<wbr/> and what 1732mode it is set to</p> 1733 </td> 1734 1735 <td class="entry_units"> 1736 </td> 1737 1738 <td class="entry_range"> 1739 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 1740 </td> 1741 1742 <td class="entry_tags"> 1743 <ul class="entry_tags"> 1744 <li><a href="#tag_BC">BC</a></li> 1745 </ul> 1746 </td> 1747 1748 </tr> 1749 <tr class="entries_header"> 1750 <th class="th_details" colspan="5">Details</th> 1751 </tr> 1752 <tr class="entry_cont"> 1753 <td class="entry_details" colspan="5"> 1754 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 1755(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> 1756<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 1757the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 1758in result metadata.<wbr/></p> 1759 </td> 1760 </tr> 1761 1762 1763 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1764 <!-- end of entry --> 1765 1766 1767 <tr class="entry" id="controls_android.control.afRegions"> 1768 <td class="entry_name" rowspan="3"> 1769 android.<wbr/>control.<wbr/>af<wbr/>Regions 1770 </td> 1771 <td class="entry_type"> 1772 <span class="entry_type_name">int32</span> 1773 <span class="entry_type_container">x</span> 1774 1775 <span class="entry_type_array"> 1776 5 x area_count 1777 </span> 1778 <span class="entry_type_visibility"> [public]</span> 1779 1780 1781 </td> <!-- entry_type --> 1782 1783 <td class="entry_description"> 1784 <p>List of areas to use for focus 1785estimation.<wbr/></p> 1786 </td> 1787 1788 <td class="entry_units"> 1789 </td> 1790 1791 <td class="entry_range"> 1792 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[2]</code></p> 1793 </td> 1794 1795 <td class="entry_tags"> 1796 <ul class="entry_tags"> 1797 <li><a href="#tag_BC">BC</a></li> 1798 </ul> 1799 </td> 1800 1801 </tr> 1802 <tr class="entries_header"> 1803 <th class="th_details" colspan="5">Details</th> 1804 </tr> 1805 <tr class="entry_cont"> 1806 <td class="entry_details" colspan="5"> 1807 <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> 1808xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the 1809specified coordinates.<wbr/></p> 1810<p>The coordinate system is based on the active pixel array,<wbr/> 1811with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 1812(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 1813<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 1814bottom-right pixel in the active pixel array.<wbr/> The weight 1815should be nonnegative.<wbr/></p> 1816<p>If all regions have 0 weight,<wbr/> then no specific focus area 1817needs to be used by the camera device.<wbr/> If the focusing region is 1818outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the camera device 1819will ignore the sections outside the region and output the 1820used sections in the frame metadata.<wbr/></p> 1821 </td> 1822 </tr> 1823 1824 1825 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1826 <!-- end of entry --> 1827 1828 1829 <tr class="entry" id="controls_android.control.afTrigger"> 1830 <td class="entry_name" rowspan="3"> 1831 android.<wbr/>control.<wbr/>af<wbr/>Trigger 1832 </td> 1833 <td class="entry_type"> 1834 <span class="entry_type_name entry_type_name_enum">byte</span> 1835 1836 <span class="entry_type_visibility"> [public]</span> 1837 1838 <ul class="entry_type_enum"> 1839 <li> 1840 <span class="entry_type_enum_name">IDLE</span> 1841 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 1842 </li> 1843 <li> 1844 <span class="entry_type_enum_name">START</span> 1845 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 1846 </li> 1847 <li> 1848 <span class="entry_type_enum_name">CANCEL</span> 1849 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 1850state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 1851 </li> 1852 </ul> 1853 1854 </td> <!-- entry_type --> 1855 1856 <td class="entry_description"> 1857 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 1858 </td> 1859 1860 <td class="entry_units"> 1861 </td> 1862 1863 <td class="entry_range"> 1864 </td> 1865 1866 <td class="entry_tags"> 1867 <ul class="entry_tags"> 1868 <li><a href="#tag_BC">BC</a></li> 1869 </ul> 1870 </td> 1871 1872 </tr> 1873 <tr class="entries_header"> 1874 <th class="th_details" colspan="5">Details</th> 1875 </tr> 1876 <tr class="entry_cont"> 1877 <td class="entry_details" colspan="5"> 1878 <p>This entry is normally set to IDLE,<wbr/> or is not 1879included at all in the request settings.<wbr/></p> 1880<p>When included and set to START,<wbr/> the camera device will trigger the 1881autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 1882<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 1883and return to its initial AF state.<wbr/></p> 1884<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> 1885 </td> 1886 </tr> 1887 1888 1889 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1890 <!-- end of entry --> 1891 1892 1893 <tr class="entry" id="controls_android.control.awbLock"> 1894 <td class="entry_name" rowspan="3"> 1895 android.<wbr/>control.<wbr/>awb<wbr/>Lock 1896 </td> 1897 <td class="entry_type"> 1898 <span class="entry_type_name entry_type_name_enum">byte</span> 1899 1900 <span class="entry_type_visibility"> [public as boolean]</span> 1901 1902 <ul class="entry_type_enum"> 1903 <li> 1904 <span class="entry_type_enum_name">OFF</span> 1905 <span class="entry_type_enum_notes"><p>Auto-whitebalance lock is disabled; the AWB 1906algorithm is free to update its parameters if in AUTO 1907mode.<wbr/></p></span> 1908 </li> 1909 <li> 1910 <span class="entry_type_enum_name">ON</span> 1911 <span class="entry_type_enum_notes"><p>Auto-whitebalance lock is enabled; the AWB 1912algorithm must not update its parameters while the lock 1913is active.<wbr/></p></span> 1914 </li> 1915 </ul> 1916 1917 </td> <!-- entry_type --> 1918 1919 <td class="entry_description"> 1920 <p>Whether AWB is currently locked to its 1921latest calculated values.<wbr/></p> 1922 </td> 1923 1924 <td class="entry_units"> 1925 </td> 1926 1927 <td class="entry_range"> 1928 </td> 1929 1930 <td class="entry_tags"> 1931 <ul class="entry_tags"> 1932 <li><a href="#tag_BC">BC</a></li> 1933 </ul> 1934 </td> 1935 1936 </tr> 1937 <tr class="entries_header"> 1938 <th class="th_details" colspan="5">Details</th> 1939 </tr> 1940 <tr class="entry_cont"> 1941 <td class="entry_details" colspan="5"> 1942 <p>Note that AWB lock is only meaningful for AUTO 1943mode; in other modes,<wbr/> AWB is already fixed to a specific 1944setting.<wbr/></p> 1945 </td> 1946 </tr> 1947 1948 1949 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1950 <!-- end of entry --> 1951 1952 1953 <tr class="entry" id="controls_android.control.awbMode"> 1954 <td class="entry_name" rowspan="3"> 1955 android.<wbr/>control.<wbr/>awb<wbr/>Mode 1956 </td> 1957 <td class="entry_type"> 1958 <span class="entry_type_name entry_type_name_enum">byte</span> 1959 1960 <span class="entry_type_visibility"> [public]</span> 1961 1962 <ul class="entry_type_enum"> 1963 <li> 1964 <span class="entry_type_enum_name">OFF</span> 1965 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 1966the application-selected color transform matrix 1967(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 1968(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 1969device for manual white balance control.<wbr/></p></span> 1970 </li> 1971 <li> 1972 <span class="entry_type_enum_name">AUTO</span> 1973 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is active; 1974the application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 1975and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/></p></span> 1976 </li> 1977 <li> 1978 <span class="entry_type_enum_name">INCANDESCENT</span> 1979 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 1980the camera device uses incandescent light as the assumed scene 1981illumination for white balance.<wbr/> While the exact white balance 1982transforms are up to the camera device,<wbr/> they will approximately 1983match the CIE standard illuminant A.<wbr/></p></span> 1984 </li> 1985 <li> 1986 <span class="entry_type_enum_name">FLUORESCENT</span> 1987 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 1988the camera device uses fluorescent light as the assumed scene 1989illumination for white balance.<wbr/> While the exact white balance 1990transforms are up to the camera device,<wbr/> they will approximately 1991match the CIE standard illuminant F2.<wbr/></p></span> 1992 </li> 1993 <li> 1994 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 1995 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 1996the camera device uses warm fluorescent light as the assumed scene 1997illumination for white balance.<wbr/> While the exact white balance 1998transforms are up to the camera device,<wbr/> they will approximately 1999match the CIE standard illuminant F4.<wbr/></p></span> 2000 </li> 2001 <li> 2002 <span class="entry_type_enum_name">DAYLIGHT</span> 2003 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2004the camera device uses daylight light as the assumed scene 2005illumination for white balance.<wbr/> While the exact white balance 2006transforms are up to the camera device,<wbr/> they will approximately 2007match the CIE standard illuminant D65.<wbr/></p></span> 2008 </li> 2009 <li> 2010 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 2011 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2012the camera device uses cloudy daylight light as the assumed scene 2013illumination for white balance.<wbr/></p></span> 2014 </li> 2015 <li> 2016 <span class="entry_type_enum_name">TWILIGHT</span> 2017 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2018the camera device uses twilight light as the assumed scene 2019illumination for white balance.<wbr/></p></span> 2020 </li> 2021 <li> 2022 <span class="entry_type_enum_name">SHADE</span> 2023 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2024the camera device uses shade light as the assumed scene 2025illumination for white balance.<wbr/></p></span> 2026 </li> 2027 </ul> 2028 2029 </td> <!-- entry_type --> 2030 2031 <td class="entry_description"> 2032 <p>Whether AWB is currently setting the color 2033transform fields,<wbr/> and what its illumination target 2034is.<wbr/></p> 2035 </td> 2036 2037 <td class="entry_units"> 2038 </td> 2039 2040 <td class="entry_range"> 2041 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 2042 </td> 2043 2044 <td class="entry_tags"> 2045 <ul class="entry_tags"> 2046 <li><a href="#tag_BC">BC</a></li> 2047 <li><a href="#tag_AWB">AWB</a></li> 2048 </ul> 2049 </td> 2050 2051 </tr> 2052 <tr class="entries_header"> 2053 <th class="th_details" colspan="5">Details</th> 2054 </tr> 2055 <tr class="entry_cont"> 2056 <td class="entry_details" colspan="5"> 2057 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 2058<p>When set to the ON mode,<wbr/> the camera device's auto white balance 2059routine is enabled,<wbr/> overriding the application's selected 2060<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 2061<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 2062<p>When set to the OFF mode,<wbr/> the camera device's auto white balance 2063routine is disabled.<wbr/> The application manually controls the white 2064balance 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> 2065and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 2066<p>When set to any other modes,<wbr/> the camera device's auto white balance 2067routine is disabled.<wbr/> The camera device uses each particular illumination 2068target for white balance adjustment.<wbr/></p> 2069 </td> 2070 </tr> 2071 2072 2073 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2074 <!-- end of entry --> 2075 2076 2077 <tr class="entry" id="controls_android.control.awbRegions"> 2078 <td class="entry_name" rowspan="3"> 2079 android.<wbr/>control.<wbr/>awb<wbr/>Regions 2080 </td> 2081 <td class="entry_type"> 2082 <span class="entry_type_name">int32</span> 2083 <span class="entry_type_container">x</span> 2084 2085 <span class="entry_type_array"> 2086 5 x area_count 2087 </span> 2088 <span class="entry_type_visibility"> [public]</span> 2089 2090 2091 </td> <!-- entry_type --> 2092 2093 <td class="entry_description"> 2094 <p>List of areas to use for illuminant 2095estimation.<wbr/></p> 2096 </td> 2097 2098 <td class="entry_units"> 2099 </td> 2100 2101 <td class="entry_range"> 2102 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[1]</code></p> 2103 </td> 2104 2105 <td class="entry_tags"> 2106 <ul class="entry_tags"> 2107 <li><a href="#tag_BC">BC</a></li> 2108 </ul> 2109 </td> 2110 2111 </tr> 2112 <tr class="entries_header"> 2113 <th class="th_details" colspan="5">Details</th> 2114 </tr> 2115 <tr class="entry_cont"> 2116 <td class="entry_details" colspan="5"> 2117 <p>Only used in AUTO mode.<wbr/></p> 2118<p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> 2119xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the 2120specified coordinates.<wbr/></p> 2121<p>The coordinate system is based on the active pixel array,<wbr/> 2122with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2123(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2124<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2125bottom-right pixel in the active pixel array.<wbr/> The weight 2126should be nonnegative.<wbr/></p> 2127<p>If all regions have 0 weight,<wbr/> then no specific auto-white balance (AWB) area 2128needs to be used by the camera device.<wbr/> If the AWB region is 2129outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the camera device 2130will ignore the sections outside the region and output the 2131used sections in the frame metadata.<wbr/></p> 2132 </td> 2133 </tr> 2134 2135 2136 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2137 <!-- end of entry --> 2138 2139 2140 <tr class="entry" id="controls_android.control.captureIntent"> 2141 <td class="entry_name" rowspan="3"> 2142 android.<wbr/>control.<wbr/>capture<wbr/>Intent 2143 </td> 2144 <td class="entry_type"> 2145 <span class="entry_type_name entry_type_name_enum">byte</span> 2146 2147 <span class="entry_type_visibility"> [public]</span> 2148 2149 <ul class="entry_type_enum"> 2150 <li> 2151 <span class="entry_type_enum_name">CUSTOM</span> 2152 <span class="entry_type_enum_notes"><p>This request doesn't fall into the other 2153categories.<wbr/> Default to preview-like 2154behavior.<wbr/></p></span> 2155 </li> 2156 <li> 2157 <span class="entry_type_enum_name">PREVIEW</span> 2158 <span class="entry_type_enum_notes"><p>This request is for a preview-like usecase.<wbr/> The 2159precapture trigger may be used to start off a metering 2160w/<wbr/>flash sequence</p></span> 2161 </li> 2162 <li> 2163 <span class="entry_type_enum_name">STILL_CAPTURE</span> 2164 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 2165usecase.<wbr/></p></span> 2166 </li> 2167 <li> 2168 <span class="entry_type_enum_name">VIDEO_RECORD</span> 2169 <span class="entry_type_enum_notes"><p>This request is for a video recording 2170usecase.<wbr/></p></span> 2171 </li> 2172 <li> 2173 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 2174 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 2175image while recording video) usecase</p></span> 2176 </li> 2177 <li> 2178 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 2179 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 2180application will stream full-resolution images and 2181reprocess one or several later for a final 2182capture</p></span> 2183 </li> 2184 <li> 2185 <span class="entry_type_enum_name">MANUAL</span> 2186 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 2187the applications want to directly control the capture parameters 2188(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> 2189 </li> 2190 </ul> 2191 2192 </td> <!-- entry_type --> 2193 2194 <td class="entry_description"> 2195 <p>Information to the camera device 3A (auto-exposure,<wbr/> 2196auto-focus,<wbr/> auto-white balance) routines about the purpose 2197of this capture,<wbr/> to help the camera device to decide optimal 3A 2198strategy.<wbr/></p> 2199 </td> 2200 2201 <td class="entry_units"> 2202 </td> 2203 2204 <td class="entry_range"> 2205 <p>All must be supported except for ZERO_<wbr/>SHUTTER_<wbr/>LAG and MANUAL.<wbr/></p> 2206 </td> 2207 2208 <td class="entry_tags"> 2209 <ul class="entry_tags"> 2210 <li><a href="#tag_BC">BC</a></li> 2211 </ul> 2212 </td> 2213 2214 </tr> 2215 <tr class="entries_header"> 2216 <th class="th_details" colspan="5">Details</th> 2217 </tr> 2218 <tr class="entry_cont"> 2219 <td class="entry_details" colspan="5"> 2220 <p>This control (except for MANUAL) is only effective if 2221<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 2222<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG must be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 2223contains ZSL.<wbr/> MANUAL must be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 2224contains MANUAL_<wbr/>SENSOR.<wbr/></p> 2225 </td> 2226 </tr> 2227 2228 2229 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2230 <!-- end of entry --> 2231 2232 2233 <tr class="entry" id="controls_android.control.effectMode"> 2234 <td class="entry_name" rowspan="3"> 2235 android.<wbr/>control.<wbr/>effect<wbr/>Mode 2236 </td> 2237 <td class="entry_type"> 2238 <span class="entry_type_name entry_type_name_enum">byte</span> 2239 2240 <span class="entry_type_visibility"> [public]</span> 2241 2242 <ul class="entry_type_enum"> 2243 <li> 2244 <span class="entry_type_enum_name">OFF</span> 2245 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 2246 </li> 2247 <li> 2248 <span class="entry_type_enum_name">MONO</span> 2249 <span class="entry_type_enum_optional">optional</span> 2250 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 2251a single color.<wbr/> This will typically be grayscale.<wbr/></p></span> 2252 </li> 2253 <li> 2254 <span class="entry_type_enum_name">NEGATIVE</span> 2255 <span class="entry_type_enum_optional">optional</span> 2256 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 2257are inverted.<wbr/></p></span> 2258 </li> 2259 <li> 2260 <span class="entry_type_enum_name">SOLARIZE</span> 2261 <span class="entry_type_enum_optional">optional</span> 2262 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 2263image is wholly or partially reversed in 2264tone.<wbr/></p></span> 2265 </li> 2266 <li> 2267 <span class="entry_type_enum_name">SEPIA</span> 2268 <span class="entry_type_enum_optional">optional</span> 2269 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 2270gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 2271 </li> 2272 <li> 2273 <span class="entry_type_enum_name">POSTERIZE</span> 2274 <span class="entry_type_enum_optional">optional</span> 2275 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 2276discrete regions of tone rather than a continuous 2277gradient of tones.<wbr/></p></span> 2278 </li> 2279 <li> 2280 <span class="entry_type_enum_name">WHITEBOARD</span> 2281 <span class="entry_type_enum_optional">optional</span> 2282 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 2283as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 2284 </li> 2285 <li> 2286 <span class="entry_type_enum_name">BLACKBOARD</span> 2287 <span class="entry_type_enum_optional">optional</span> 2288 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 2289as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 2290 </li> 2291 <li> 2292 <span class="entry_type_enum_name">AQUA</span> 2293 <span class="entry_type_enum_optional">optional</span> 2294 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 2295 </li> 2296 </ul> 2297 2298 </td> <!-- entry_type --> 2299 2300 <td class="entry_description"> 2301 <p>A special color effect to apply.<wbr/></p> 2302 </td> 2303 2304 <td class="entry_units"> 2305 </td> 2306 2307 <td class="entry_range"> 2308 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 2309 </td> 2310 2311 <td class="entry_tags"> 2312 <ul class="entry_tags"> 2313 <li><a href="#tag_BC">BC</a></li> 2314 </ul> 2315 </td> 2316 2317 </tr> 2318 <tr class="entries_header"> 2319 <th class="th_details" colspan="5">Details</th> 2320 </tr> 2321 <tr class="entry_cont"> 2322 <td class="entry_details" colspan="5"> 2323 <p>When this mode is set,<wbr/> a color effect will be applied 2324to images produced by the camera device.<wbr/> The interpretation 2325and implementation of these color effects is left to the 2326implementor of the camera device,<wbr/> and should not be 2327depended on to be consistent (or present) across all 2328devices.<wbr/></p> 2329<p>A color effect will only be applied if 2330<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/></p> 2331 </td> 2332 </tr> 2333 2334 2335 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2336 <!-- end of entry --> 2337 2338 2339 <tr class="entry" id="controls_android.control.mode"> 2340 <td class="entry_name" rowspan="3"> 2341 android.<wbr/>control.<wbr/>mode 2342 </td> 2343 <td class="entry_type"> 2344 <span class="entry_type_name entry_type_name_enum">byte</span> 2345 2346 <span class="entry_type_visibility"> [public]</span> 2347 2348 <ul class="entry_type_enum"> 2349 <li> 2350 <span class="entry_type_enum_name">OFF</span> 2351 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/> All 3A 2352routines are disabled,<wbr/> no other settings in 2353android.<wbr/>control.<wbr/>* have any effect</p></span> 2354 </li> 2355 <li> 2356 <span class="entry_type_enum_name">AUTO</span> 2357 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/> 2358Manual control of capture parameters is disabled.<wbr/> All 2359controls in android.<wbr/>control.<wbr/>* besides sceneMode take 2360effect</p></span> 2361 </li> 2362 <li> 2363 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 2364 <span class="entry_type_enum_notes"><p>Use specific scene mode.<wbr/> Enabling this disables 2365control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and control.<wbr/>afMode 2366controls; the camera device will ignore those settings while 2367USE_<wbr/>SCENE_<wbr/>MODE is active (except for FACE_<wbr/>PRIORITY 2368scene mode).<wbr/> Other control entries are still active.<wbr/> 2369This setting can only be used if scene mode is supported 2370(i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> contain some modes 2371other than DISABLED).<wbr/></p></span> 2372 </li> 2373 <li> 2374 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 2375 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 2376used by camera device background auto-exposure,<wbr/> auto-white balance and 2377auto-focus algorithms to update their statistics.<wbr/></p></span> 2378 </li> 2379 </ul> 2380 2381 </td> <!-- entry_type --> 2382 2383 <td class="entry_description"> 2384 <p>Overall mode of 3A control 2385routines.<wbr/></p> 2386 </td> 2387 2388 <td class="entry_units"> 2389 </td> 2390 2391 <td class="entry_range"> 2392 <p>all must be supported</p> 2393 </td> 2394 2395 <td class="entry_tags"> 2396 <ul class="entry_tags"> 2397 <li><a href="#tag_BC">BC</a></li> 2398 </ul> 2399 </td> 2400 2401 </tr> 2402 <tr class="entries_header"> 2403 <th class="th_details" colspan="5">Details</th> 2404 </tr> 2405 <tr class="entry_cont"> 2406 <td class="entry_details" colspan="5"> 2407 <p>High-level 3A control.<wbr/> When set to OFF,<wbr/> all 3A control 2408by the camera device is disabled.<wbr/> The application must set the fields for 2409capture parameters itself.<wbr/></p> 2410<p>When set to AUTO,<wbr/> the individual algorithm controls in 2411android.<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> 2412<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 2413android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 2414one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 2415as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 2416<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 2417<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 2418is that this frame will not be used by camera device background 3A statistics 2419update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 2420where the application doesn't want a 3A manual control capture to affect 2421the subsequent auto 3A capture results.<wbr/></p> 2422 </td> 2423 </tr> 2424 2425 2426 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2427 <!-- end of entry --> 2428 2429 2430 <tr class="entry" id="controls_android.control.sceneMode"> 2431 <td class="entry_name" rowspan="5"> 2432 android.<wbr/>control.<wbr/>scene<wbr/>Mode 2433 </td> 2434 <td class="entry_type"> 2435 <span class="entry_type_name entry_type_name_enum">byte</span> 2436 2437 <span class="entry_type_visibility"> [public]</span> 2438 2439 <ul class="entry_type_enum"> 2440 <li> 2441 <span class="entry_type_enum_name">DISABLED</span> 2442 <span class="entry_type_enum_value">0</span> 2443 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 2444 </li> 2445 <li> 2446 <span class="entry_type_enum_name">FACE_PRIORITY</span> 2447 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 2448detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 2449auto-exposure routines.<wbr/> If face detection statistics are 2450disabled (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/> 2451this should still operate correctly (but will not return 2452face detection statistics to the framework).<wbr/></p> 2453<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 2454<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> 2455remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 2456 </li> 2457 <li> 2458 <span class="entry_type_enum_name">ACTION</span> 2459 <span class="entry_type_enum_optional">optional</span> 2460 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/> 2461Similar to SPORTS.<wbr/></p></span> 2462 </li> 2463 <li> 2464 <span class="entry_type_enum_name">PORTRAIT</span> 2465 <span class="entry_type_enum_optional">optional</span> 2466 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 2467 </li> 2468 <li> 2469 <span class="entry_type_enum_name">LANDSCAPE</span> 2470 <span class="entry_type_enum_optional">optional</span> 2471 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 2472 </li> 2473 <li> 2474 <span class="entry_type_enum_name">NIGHT</span> 2475 <span class="entry_type_enum_optional">optional</span> 2476 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 2477 </li> 2478 <li> 2479 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 2480 <span class="entry_type_enum_optional">optional</span> 2481 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 2482settings.<wbr/></p></span> 2483 </li> 2484 <li> 2485 <span class="entry_type_enum_name">THEATRE</span> 2486 <span class="entry_type_enum_optional">optional</span> 2487 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 2488remain off.<wbr/></p></span> 2489 </li> 2490 <li> 2491 <span class="entry_type_enum_name">BEACH</span> 2492 <span class="entry_type_enum_optional">optional</span> 2493 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 2494 </li> 2495 <li> 2496 <span class="entry_type_enum_name">SNOW</span> 2497 <span class="entry_type_enum_optional">optional</span> 2498 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 2499 </li> 2500 <li> 2501 <span class="entry_type_enum_name">SUNSET</span> 2502 <span class="entry_type_enum_optional">optional</span> 2503 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 2504 </li> 2505 <li> 2506 <span class="entry_type_enum_name">STEADYPHOTO</span> 2507 <span class="entry_type_enum_optional">optional</span> 2508 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 2509device motion (for example: due to hand shake).<wbr/></p></span> 2510 </li> 2511 <li> 2512 <span class="entry_type_enum_name">FIREWORKS</span> 2513 <span class="entry_type_enum_optional">optional</span> 2514 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 2515 </li> 2516 <li> 2517 <span class="entry_type_enum_name">SPORTS</span> 2518 <span class="entry_type_enum_optional">optional</span> 2519 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/> 2520Similar to ACTION.<wbr/></p></span> 2521 </li> 2522 <li> 2523 <span class="entry_type_enum_name">PARTY</span> 2524 <span class="entry_type_enum_optional">optional</span> 2525 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 2526people.<wbr/></p></span> 2527 </li> 2528 <li> 2529 <span class="entry_type_enum_name">CANDLELIGHT</span> 2530 <span class="entry_type_enum_optional">optional</span> 2531 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 2532is a flame.<wbr/></p></span> 2533 </li> 2534 <li> 2535 <span class="entry_type_enum_name">BARCODE</span> 2536 <span class="entry_type_enum_optional">optional</span> 2537 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 2538for use by camera applications that wish to read the 2539barcode value.<wbr/></p></span> 2540 </li> 2541 </ul> 2542 2543 </td> <!-- entry_type --> 2544 2545 <td class="entry_description"> 2546 <p>A camera mode optimized for conditions typical in a particular 2547capture setting.<wbr/></p> 2548 </td> 2549 2550 <td class="entry_units"> 2551 </td> 2552 2553 <td class="entry_range"> 2554 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 2555 </td> 2556 2557 <td class="entry_tags"> 2558 <ul class="entry_tags"> 2559 <li><a href="#tag_BC">BC</a></li> 2560 </ul> 2561 </td> 2562 2563 </tr> 2564 <tr class="entries_header"> 2565 <th class="th_details" colspan="5">Details</th> 2566 </tr> 2567 <tr class="entry_cont"> 2568 <td class="entry_details" colspan="5"> 2569 <p>This is the mode that that is active when 2570<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/> 2571these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 2572<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> 2573<p>The interpretation and implementation of these scene modes is left 2574to the implementor of the camera device.<wbr/> Their behavior will not be 2575consistent across all devices,<wbr/> and any given device may only implement 2576a subset of these modes.<wbr/></p> 2577 </td> 2578 </tr> 2579 2580 <tr class="entries_header"> 2581 <th class="th_details" colspan="5">HAL Implementation Details</th> 2582 </tr> 2583 <tr class="entry_cont"> 2584 <td class="entry_details" colspan="5"> 2585 <p>HAL implementations that include scene modes are expected to provide 2586the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 2587<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 2588<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 2589 </td> 2590 </tr> 2591 2592 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2593 <!-- end of entry --> 2594 2595 2596 <tr class="entry" id="controls_android.control.videoStabilizationMode"> 2597 <td class="entry_name" rowspan="3"> 2598 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 2599 </td> 2600 <td class="entry_type"> 2601 <span class="entry_type_name entry_type_name_enum">byte</span> 2602 2603 <span class="entry_type_visibility"> [public as boolean]</span> 2604 2605 <ul class="entry_type_enum"> 2606 <li> 2607 <span class="entry_type_enum_name">OFF</span> 2608 </li> 2609 <li> 2610 <span class="entry_type_enum_name">ON</span> 2611 </li> 2612 </ul> 2613 2614 </td> <!-- entry_type --> 2615 2616 <td class="entry_description"> 2617 <p>Whether video stabilization is 2618active</p> 2619 </td> 2620 2621 <td class="entry_units"> 2622 </td> 2623 2624 <td class="entry_range"> 2625 </td> 2626 2627 <td class="entry_tags"> 2628 <ul class="entry_tags"> 2629 <li><a href="#tag_BC">BC</a></li> 2630 </ul> 2631 </td> 2632 2633 </tr> 2634 <tr class="entries_header"> 2635 <th class="th_details" colspan="5">Details</th> 2636 </tr> 2637 <tr class="entry_cont"> 2638 <td class="entry_details" colspan="5"> 2639 <p>If enabled,<wbr/> video stabilization can modify the 2640<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream 2641stabilized</p> 2642 </td> 2643 </tr> 2644 2645 2646 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2647 <!-- end of entry --> 2648 2649 2650 2651 <!-- end of kind --> 2652 </tbody> 2653 <tr><td colspan="6" class="kind">static</td></tr> 2654 2655 <thead class="entries_header"> 2656 <tr> 2657 <th class="th_name">Property Name</th> 2658 <th class="th_type">Type</th> 2659 <th class="th_description">Description</th> 2660 <th class="th_units">Units</th> 2661 <th class="th_range">Range</th> 2662 <th class="th_tags">Tags</th> 2663 </tr> 2664 </thead> 2665 2666 <tbody> 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> 2678 <td class="entry_name" rowspan="3"> 2679 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes 2680 </td> 2681 <td class="entry_type"> 2682 <span class="entry_type_name">byte</span> 2683 <span class="entry_type_container">x</span> 2684 2685 <span class="entry_type_array"> 2686 n 2687 </span> 2688 <span class="entry_type_visibility"> [public]</span> 2689 <div class="entry_type_notes">list of enums</div> 2690 2691 2692 </td> <!-- entry_type --> 2693 2694 <td class="entry_description"> 2695 <p>The set of auto-exposure antibanding modes that are 2696supported by this camera device.<wbr/></p> 2697 </td> 2698 2699 <td class="entry_units"> 2700 </td> 2701 2702 <td class="entry_range"> 2703 </td> 2704 2705 <td class="entry_tags"> 2706 </td> 2707 2708 </tr> 2709 <tr class="entries_header"> 2710 <th class="th_details" colspan="5">Details</th> 2711 </tr> 2712 <tr class="entry_cont"> 2713 <td class="entry_details" colspan="5"> 2714 <p>Not all of the auto-exposure anti-banding modes may be 2715supported by a given camera device.<wbr/> This field lists the 2716valid anti-banding modes that the application may request 2717for this camera device; they must include AUTO.<wbr/></p> 2718 </td> 2719 </tr> 2720 2721 2722 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2723 <!-- end of entry --> 2724 2725 2726 <tr class="entry" id="static_android.control.aeAvailableModes"> 2727 <td class="entry_name" rowspan="3"> 2728 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes 2729 </td> 2730 <td class="entry_type"> 2731 <span class="entry_type_name">byte</span> 2732 <span class="entry_type_container">x</span> 2733 2734 <span class="entry_type_array"> 2735 n 2736 </span> 2737 <span class="entry_type_visibility"> [public]</span> 2738 <div class="entry_type_notes">list of enums</div> 2739 2740 2741 </td> <!-- entry_type --> 2742 2743 <td class="entry_description"> 2744 <p>The set of auto-exposure modes that are supported by this 2745camera device.<wbr/></p> 2746 </td> 2747 2748 <td class="entry_units"> 2749 </td> 2750 2751 <td class="entry_range"> 2752 </td> 2753 2754 <td class="entry_tags"> 2755 <ul class="entry_tags"> 2756 <li><a href="#tag_BC">BC</a></li> 2757 </ul> 2758 </td> 2759 2760 </tr> 2761 <tr class="entries_header"> 2762 <th class="th_details" colspan="5">Details</th> 2763 </tr> 2764 <tr class="entry_cont"> 2765 <td class="entry_details" colspan="5"> 2766 <p>Not all the auto-exposure modes may be supported by a 2767given camera device,<wbr/> especially if no flash unit is 2768available.<wbr/> This entry lists the valid modes for 2769<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> 2770<p>All camera devices support ON,<wbr/> and all camera devices with 2771flash units support ON_<wbr/>AUTO_<wbr/>FLASH and 2772ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> 2773<p>FULL mode camera devices always support OFF mode,<wbr/> 2774which enables application control of camera exposure time,<wbr/> 2775sensitivity,<wbr/> and frame duration.<wbr/></p> 2776 </td> 2777 </tr> 2778 2779 2780 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2781 <!-- end of entry --> 2782 2783 2784 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> 2785 <td class="entry_name" rowspan="1"> 2786 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges 2787 </td> 2788 <td class="entry_type"> 2789 <span class="entry_type_name">int32</span> 2790 <span class="entry_type_container">x</span> 2791 2792 <span class="entry_type_array"> 2793 2 x n 2794 </span> 2795 <span class="entry_type_visibility"> [public]</span> 2796 <div class="entry_type_notes">list of pairs of frame rates</div> 2797 2798 2799 </td> <!-- entry_type --> 2800 2801 <td class="entry_description"> 2802 <p>List of frame rate ranges supported by the 2803AE algorithm/<wbr/>hardware</p> 2804 </td> 2805 2806 <td class="entry_units"> 2807 </td> 2808 2809 <td class="entry_range"> 2810 </td> 2811 2812 <td class="entry_tags"> 2813 </td> 2814 2815 </tr> 2816 2817 2818 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2819 <!-- end of entry --> 2820 2821 2822 <tr class="entry" id="static_android.control.aeCompensationRange"> 2823 <td class="entry_name" rowspan="1"> 2824 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 2825 </td> 2826 <td class="entry_type"> 2827 <span class="entry_type_name">int32</span> 2828 <span class="entry_type_container">x</span> 2829 2830 <span class="entry_type_array"> 2831 2 2832 </span> 2833 <span class="entry_type_visibility"> [public]</span> 2834 2835 2836 </td> <!-- entry_type --> 2837 2838 <td class="entry_description"> 2839 <p>Maximum and minimum exposure compensation 2840setting,<wbr/> in counts of 2841<a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a>.<wbr/></p> 2842 </td> 2843 2844 <td class="entry_units"> 2845 </td> 2846 2847 <td class="entry_range"> 2848 <p>At least (-2,<wbr/>2)/<wbr/>(exp compensation step 2849size)</p> 2850 </td> 2851 2852 <td class="entry_tags"> 2853 <ul class="entry_tags"> 2854 <li><a href="#tag_BC">BC</a></li> 2855 </ul> 2856 </td> 2857 2858 </tr> 2859 2860 2861 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2862 <!-- end of entry --> 2863 2864 2865 <tr class="entry" id="static_android.control.aeCompensationStep"> 2866 <td class="entry_name" rowspan="1"> 2867 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 2868 </td> 2869 <td class="entry_type"> 2870 <span class="entry_type_name">rational</span> 2871 2872 <span class="entry_type_visibility"> [public]</span> 2873 2874 2875 </td> <!-- entry_type --> 2876 2877 <td class="entry_description"> 2878 <p>Smallest step by which exposure compensation 2879can be changed</p> 2880 </td> 2881 2882 <td class="entry_units"> 2883 </td> 2884 2885 <td class="entry_range"> 2886 <p><= 1/<wbr/>2</p> 2887 </td> 2888 2889 <td class="entry_tags"> 2890 <ul class="entry_tags"> 2891 <li><a href="#tag_BC">BC</a></li> 2892 </ul> 2893 </td> 2894 2895 </tr> 2896 2897 2898 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2899 <!-- end of entry --> 2900 2901 2902 <tr class="entry" id="static_android.control.afAvailableModes"> 2903 <td class="entry_name" rowspan="3"> 2904 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 2905 </td> 2906 <td class="entry_type"> 2907 <span class="entry_type_name">byte</span> 2908 <span class="entry_type_container">x</span> 2909 2910 <span class="entry_type_array"> 2911 n 2912 </span> 2913 <span class="entry_type_visibility"> [public]</span> 2914 <div class="entry_type_notes">List of enums</div> 2915 2916 2917 </td> <!-- entry_type --> 2918 2919 <td class="entry_description"> 2920 <p>List of AF modes that can be 2921selected with <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p> 2922 </td> 2923 2924 <td class="entry_units"> 2925 </td> 2926 2927 <td class="entry_range"> 2928 </td> 2929 2930 <td class="entry_tags"> 2931 <ul class="entry_tags"> 2932 <li><a href="#tag_BC">BC</a></li> 2933 </ul> 2934 </td> 2935 2936 </tr> 2937 <tr class="entries_header"> 2938 <th class="th_details" colspan="5">Details</th> 2939 </tr> 2940 <tr class="entry_cont"> 2941 <td class="entry_details" colspan="5"> 2942 <p>Not all the auto-focus modes may be supported by a 2943given camera device.<wbr/> This entry lists the valid modes for 2944<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 2945<p>All camera devices will support OFF mode,<wbr/> and all camera devices with 2946adjustable focuser units (<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>) 2947will support AUTO mode.<wbr/></p> 2948 </td> 2949 </tr> 2950 2951 2952 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2953 <!-- end of entry --> 2954 2955 2956 <tr class="entry" id="static_android.control.availableEffects"> 2957 <td class="entry_name" rowspan="3"> 2958 android.<wbr/>control.<wbr/>available<wbr/>Effects 2959 </td> 2960 <td class="entry_type"> 2961 <span class="entry_type_name">byte</span> 2962 <span class="entry_type_container">x</span> 2963 2964 <span class="entry_type_array"> 2965 n 2966 </span> 2967 <span class="entry_type_visibility"> [public]</span> 2968 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 2969 2970 2971 </td> <!-- entry_type --> 2972 2973 <td class="entry_description"> 2974 <p>List containing the subset of color effects 2975specified in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a> that is supported by 2976this device.<wbr/></p> 2977 </td> 2978 2979 <td class="entry_units"> 2980 </td> 2981 2982 <td class="entry_range"> 2983 <p>Any subset of enums from those specified in 2984<a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a>.<wbr/> OFF must be included in any subset.<wbr/></p> 2985 </td> 2986 2987 <td class="entry_tags"> 2988 <ul class="entry_tags"> 2989 <li><a href="#tag_BC">BC</a></li> 2990 </ul> 2991 </td> 2992 2993 </tr> 2994 <tr class="entries_header"> 2995 <th class="th_details" colspan="5">Details</th> 2996 </tr> 2997 <tr class="entry_cont"> 2998 <td class="entry_details" colspan="5"> 2999 <p>This list contains the color effect modes that can be applied to 3000images produced by the camera device.<wbr/> Only modes that have 3001been fully implemented for the current device may be included here.<wbr/> 3002Implementations are not expected to be consistent across all devices.<wbr/> 3003If no color effect modes are available for a device,<wbr/> this should 3004simply be set to OFF.<wbr/></p> 3005<p>A color effect will only be applied if 3006<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/></p> 3007 </td> 3008 </tr> 3009 3010 3011 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3012 <!-- end of entry --> 3013 3014 3015 <tr class="entry" id="static_android.control.availableSceneModes"> 3016 <td class="entry_name" rowspan="3"> 3017 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 3018 </td> 3019 <td class="entry_type"> 3020 <span class="entry_type_name">byte</span> 3021 <span class="entry_type_container">x</span> 3022 3023 <span class="entry_type_array"> 3024 n 3025 </span> 3026 <span class="entry_type_visibility"> [public]</span> 3027 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 3028 3029 3030 </td> <!-- entry_type --> 3031 3032 <td class="entry_description"> 3033 <p>List containing a subset of scene modes 3034specified in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a>.<wbr/></p> 3035 </td> 3036 3037 <td class="entry_units"> 3038 </td> 3039 3040 <td class="entry_range"> 3041 <p>Any subset of the enums specified in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> 3042not including DISABLED,<wbr/> or solely DISABLED if no 3043scene modes are available.<wbr/> FACE_<wbr/>PRIORITY must be included 3044if 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> 3045 </td> 3046 3047 <td class="entry_tags"> 3048 <ul class="entry_tags"> 3049 <li><a href="#tag_BC">BC</a></li> 3050 </ul> 3051 </td> 3052 3053 </tr> 3054 <tr class="entries_header"> 3055 <th class="th_details" colspan="5">Details</th> 3056 </tr> 3057 <tr class="entry_cont"> 3058 <td class="entry_details" colspan="5"> 3059 <p>This list contains scene modes that can be set for the camera device.<wbr/> 3060Only scene modes that have been fully implemented for the 3061camera device may be included here.<wbr/> Implementations are not expected 3062to be consistent across all devices.<wbr/> If no scene modes are supported 3063by the camera device,<wbr/> this will be set to <code>[DISABLED]</code>.<wbr/></p> 3064 </td> 3065 </tr> 3066 3067 3068 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3069 <!-- end of entry --> 3070 3071 3072 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 3073 <td class="entry_name" rowspan="1"> 3074 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 3075 </td> 3076 <td class="entry_type"> 3077 <span class="entry_type_name">byte</span> 3078 <span class="entry_type_container">x</span> 3079 3080 <span class="entry_type_array"> 3081 n 3082 </span> 3083 <span class="entry_type_visibility"> [public]</span> 3084 <div class="entry_type_notes">List of enums.<wbr/></div> 3085 3086 3087 </td> <!-- entry_type --> 3088 3089 <td class="entry_description"> 3090 <p>List of video stabilization modes that can 3091be supported</p> 3092 </td> 3093 3094 <td class="entry_units"> 3095 </td> 3096 3097 <td class="entry_range"> 3098 <p>OFF must be included</p> 3099 </td> 3100 3101 <td class="entry_tags"> 3102 <ul class="entry_tags"> 3103 <li><a href="#tag_BC">BC</a></li> 3104 </ul> 3105 </td> 3106 3107 </tr> 3108 3109 3110 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3111 <!-- end of entry --> 3112 3113 3114 <tr class="entry" id="static_android.control.awbAvailableModes"> 3115 <td class="entry_name" rowspan="3"> 3116 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 3117 </td> 3118 <td class="entry_type"> 3119 <span class="entry_type_name">byte</span> 3120 <span class="entry_type_container">x</span> 3121 3122 <span class="entry_type_array"> 3123 n 3124 </span> 3125 <span class="entry_type_visibility"> [public]</span> 3126 <div class="entry_type_notes">List of enums</div> 3127 3128 3129 </td> <!-- entry_type --> 3130 3131 <td class="entry_description"> 3132 <p>The set of auto-white-balance modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) 3133that are supported by this camera device.<wbr/></p> 3134 </td> 3135 3136 <td class="entry_units"> 3137 </td> 3138 3139 <td class="entry_range"> 3140 </td> 3141 3142 <td class="entry_tags"> 3143 <ul class="entry_tags"> 3144 <li><a href="#tag_BC">BC</a></li> 3145 </ul> 3146 </td> 3147 3148 </tr> 3149 <tr class="entries_header"> 3150 <th class="th_details" colspan="5">Details</th> 3151 </tr> 3152 <tr class="entry_cont"> 3153 <td class="entry_details" colspan="5"> 3154 <p>Not all the auto-white-balance modes may be supported by a 3155given camera device.<wbr/> This entry lists the valid modes for 3156<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 3157<p>All camera devices will support ON mode.<wbr/></p> 3158<p>FULL mode camera devices will always support OFF mode,<wbr/> 3159which enables application control of white balance,<wbr/> by using 3160<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> 3161 </td> 3162 </tr> 3163 3164 3165 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3166 <!-- end of entry --> 3167 3168 3169 <tr class="entry" id="static_android.control.maxRegions"> 3170 <td class="entry_name" rowspan="1"> 3171 android.<wbr/>control.<wbr/>max<wbr/>Regions 3172 </td> 3173 <td class="entry_type"> 3174 <span class="entry_type_name">int32</span> 3175 <span class="entry_type_container">x</span> 3176 3177 <span class="entry_type_array"> 3178 3 3179 </span> 3180 <span class="entry_type_visibility"> [public]</span> 3181 3182 3183 </td> <!-- entry_type --> 3184 3185 <td class="entry_description"> 3186 <p>List of the maximum number of regions that can be used for metering in 3187auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 3188this corresponds to the the maximum number of elements in 3189<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/> 3190and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 3191 </td> 3192 3193 <td class="entry_units"> 3194 </td> 3195 3196 <td class="entry_range"> 3197 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 3198this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 3199<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 3200 </td> 3201 3202 <td class="entry_tags"> 3203 <ul class="entry_tags"> 3204 <li><a href="#tag_BC">BC</a></li> 3205 </ul> 3206 </td> 3207 3208 </tr> 3209 3210 3211 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3212 <!-- end of entry --> 3213 3214 3215 <tr class="entry" id="static_android.control.sceneModeOverrides"> 3216 <td class="entry_name" rowspan="5"> 3217 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 3218 </td> 3219 <td class="entry_type"> 3220 <span class="entry_type_name">byte</span> 3221 <span class="entry_type_container">x</span> 3222 3223 <span class="entry_type_array"> 3224 3 x length(availableSceneModes) 3225 </span> 3226 <span class="entry_type_visibility"> [system]</span> 3227 3228 3229 </td> <!-- entry_type --> 3230 3231 <td class="entry_description"> 3232 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 3233settings to use with each available scene mode.<wbr/></p> 3234 </td> 3235 3236 <td class="entry_units"> 3237 </td> 3238 3239 <td class="entry_range"> 3240 <p>For each available scene mode,<wbr/> the list must contain three 3241entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3242<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 3243by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 3244where aeMode has the lowest index position.<wbr/></p> 3245 </td> 3246 3247 <td class="entry_tags"> 3248 <ul class="entry_tags"> 3249 <li><a href="#tag_BC">BC</a></li> 3250 </ul> 3251 </td> 3252 3253 </tr> 3254 <tr class="entries_header"> 3255 <th class="th_details" colspan="5">Details</th> 3256 </tr> 3257 <tr class="entry_cont"> 3258 <td class="entry_details" colspan="5"> 3259 <p>When a scene mode is enabled,<wbr/> the camera device is expected 3260to 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/> 3261and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 3262that scene mode.<wbr/></p> 3263<p>The order of this list matches that of availableSceneModes,<wbr/> 3264with 3 entries for each mode.<wbr/> The overrides listed 3265for FACE_<wbr/>PRIORITY are ignored,<wbr/> since for that 3266mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3267<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 3268used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 3269is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY 3270overrides should be set to 0.<wbr/></p> 3271<p>For example,<wbr/> if availableSceneModes contains 3272<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 3273expects sceneModeOverrides to have 9 entries formatted like: 3274<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 3275ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 3276 </td> 3277 </tr> 3278 3279 <tr class="entries_header"> 3280 <th class="th_details" colspan="5">HAL Implementation Details</th> 3281 </tr> 3282 <tr class="entry_cont"> 3283 <td class="entry_details" colspan="5"> 3284 <p>To maintain backward compatibility,<wbr/> this list will be made available 3285in the static metadata of the camera service.<wbr/> The camera service will 3286use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3287<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 3288mode other than FACE_<wbr/>PRIORITY.<wbr/></p> 3289 </td> 3290 </tr> 3291 3292 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3293 <!-- end of entry --> 3294 3295 3296 3297 <!-- end of kind --> 3298 </tbody> 3299 <tr><td colspan="6" class="kind">dynamic</td></tr> 3300 3301 <thead class="entries_header"> 3302 <tr> 3303 <th class="th_name">Property Name</th> 3304 <th class="th_type">Type</th> 3305 <th class="th_description">Description</th> 3306 <th class="th_units">Units</th> 3307 <th class="th_range">Range</th> 3308 <th class="th_tags">Tags</th> 3309 </tr> 3310 </thead> 3311 3312 <tbody> 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 3324 <td class="entry_name" rowspan="3"> 3325 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 3326 </td> 3327 <td class="entry_type"> 3328 <span class="entry_type_name">int32</span> 3329 3330 <span class="entry_type_visibility"> [hidden]</span> 3331 3332 3333 </td> <!-- entry_type --> 3334 3335 <td class="entry_description"> 3336 <p>The ID sent with the latest 3337CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 3338 </td> 3339 3340 <td class="entry_units"> 3341 </td> 3342 3343 <td class="entry_range"> 3344 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 3345 </td> 3346 3347 <td class="entry_tags"> 3348 </td> 3349 3350 </tr> 3351 <tr class="entries_header"> 3352 <th class="th_details" colspan="5">Details</th> 3353 </tr> 3354 <tr class="entry_cont"> 3355 <td class="entry_details" colspan="5"> 3356 <p>Must be 0 if no 3357CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 3358by HAL.<wbr/> Always updated even if AE algorithm ignores the 3359trigger</p> 3360 </td> 3361 </tr> 3362 3363 3364 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3365 <!-- end of entry --> 3366 3367 3368 <tr class="entry" id="dynamic_android.control.aeMode"> 3369 <td class="entry_name" rowspan="3"> 3370 android.<wbr/>control.<wbr/>ae<wbr/>Mode 3371 </td> 3372 <td class="entry_type"> 3373 <span class="entry_type_name entry_type_name_enum">byte</span> 3374 3375 <span class="entry_type_visibility"> [public]</span> 3376 3377 <ul class="entry_type_enum"> 3378 <li> 3379 <span class="entry_type_enum_name">OFF</span> 3380 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled; 3381the application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 3382<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 3383<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 3384device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 3385a flash unit for this camera device.<wbr/></p></span> 3386 </li> 3387 <li> 3388 <span class="entry_type_enum_name">ON</span> 3389 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 3390with no flash control.<wbr/> The application's values for 3391<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 3392<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 3393<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 3394application has control over the various 3395android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 3396 </li> 3397 <li> 3398 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 3399 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 3400the camera's flash unit,<wbr/> firing it in low-light 3401conditions.<wbr/> The flash may be fired during a 3402precapture sequence (triggered by 3403<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and may be fired 3404for captures for which the 3405<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 3406STILL_<wbr/>CAPTURE</p></span> 3407 </li> 3408 <li> 3409 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 3410 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 3411the camera's flash unit,<wbr/> always firing it for still 3412captures.<wbr/> The flash may be fired during a precapture 3413sequence (triggered by 3414<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and will always 3415be fired for captures for which the 3416<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 3417STILL_<wbr/>CAPTURE</p></span> 3418 </li> 3419 <li> 3420 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 3421 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 3422reduction.<wbr/> If deemed necessary by the camera device,<wbr/> 3423a red eye reduction flash will fire during the 3424precapture sequence.<wbr/></p></span> 3425 </li> 3426 </ul> 3427 3428 </td> <!-- entry_type --> 3429 3430 <td class="entry_description"> 3431 <p>The desired mode for the camera device's 3432auto-exposure routine.<wbr/></p> 3433 </td> 3434 3435 <td class="entry_units"> 3436 </td> 3437 3438 <td class="entry_range"> 3439 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 3440 </td> 3441 3442 <td class="entry_tags"> 3443 <ul class="entry_tags"> 3444 <li><a href="#tag_BC">BC</a></li> 3445 </ul> 3446 </td> 3447 3448 </tr> 3449 <tr class="entries_header"> 3450 <th class="th_details" colspan="5">Details</th> 3451 </tr> 3452 <tr class="entry_cont"> 3453 <td class="entry_details" colspan="5"> 3454 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 3455AUTO.<wbr/></p> 3456<p>When set to any of the ON modes,<wbr/> the camera device's 3457auto-exposure routine is enabled,<wbr/> overriding the 3458application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 3459and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 3460<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 3461<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 3462is selected,<wbr/> the camera device's flash unit controls are 3463also overridden.<wbr/></p> 3464<p>The FLASH modes are only available if the camera device 3465has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 3466<p>If flash TORCH mode is desired,<wbr/> this field must be set to 3467ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 3468<p>When set to any of the ON modes,<wbr/> the values chosen by the 3469camera device auto-exposure routine for the overridden 3470fields for a given capture will be available in its 3471CaptureResult.<wbr/></p> 3472 </td> 3473 </tr> 3474 3475 3476 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3477 <!-- end of entry --> 3478 3479 3480 <tr class="entry" id="dynamic_android.control.aeRegions"> 3481 <td class="entry_name" rowspan="3"> 3482 android.<wbr/>control.<wbr/>ae<wbr/>Regions 3483 </td> 3484 <td class="entry_type"> 3485 <span class="entry_type_name">int32</span> 3486 <span class="entry_type_container">x</span> 3487 3488 <span class="entry_type_array"> 3489 5 x area_count 3490 </span> 3491 <span class="entry_type_visibility"> [public]</span> 3492 3493 3494 </td> <!-- entry_type --> 3495 3496 <td class="entry_description"> 3497 <p>List of areas to use for 3498metering.<wbr/></p> 3499 </td> 3500 3501 <td class="entry_units"> 3502 </td> 3503 3504 <td class="entry_range"> 3505 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[0]</code></p> 3506 </td> 3507 3508 <td class="entry_tags"> 3509 <ul class="entry_tags"> 3510 <li><a href="#tag_BC">BC</a></li> 3511 </ul> 3512 </td> 3513 3514 </tr> 3515 <tr class="entries_header"> 3516 <th class="th_details" colspan="5">Details</th> 3517 </tr> 3518 <tr class="entry_cont"> 3519 <td class="entry_details" colspan="5"> 3520 <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> 3521xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the 3522specified coordinates.<wbr/></p> 3523<p>The coordinate system is based on the active pixel array,<wbr/> 3524with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 3525(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3526<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 3527bottom-right pixel in the active pixel array.<wbr/> The weight 3528should be nonnegative.<wbr/></p> 3529<p>If all regions have 0 weight,<wbr/> then no specific metering area 3530needs to be used by the camera device.<wbr/> If the metering region is 3531outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the camera device 3532will ignore the sections outside the region and output the 3533used sections in the frame metadata.<wbr/></p> 3534 </td> 3535 </tr> 3536 3537 3538 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3539 <!-- end of entry --> 3540 3541 3542 <tr class="entry" id="dynamic_android.control.aeState"> 3543 <td class="entry_name" rowspan="3"> 3544 android.<wbr/>control.<wbr/>ae<wbr/>State 3545 </td> 3546 <td class="entry_type"> 3547 <span class="entry_type_name entry_type_name_enum">byte</span> 3548 3549 <span class="entry_type_visibility"> [public]</span> 3550 3551 <ul class="entry_type_enum"> 3552 <li> 3553 <span class="entry_type_enum_name">INACTIVE</span> 3554 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/> When a camera device is opened,<wbr/> it starts in 3555this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 3556this state in capture result.<wbr/></p></span> 3557 </li> 3558 <li> 3559 <span class="entry_type_enum_name">SEARCHING</span> 3560 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 3561for the current scene.<wbr/> This is a transient state,<wbr/> the camera device may skip 3562reporting this state in capture result.<wbr/></p></span> 3563 </li> 3564 <li> 3565 <span class="entry_type_enum_name">CONVERGED</span> 3566 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 3567current scene.<wbr/></p></span> 3568 </li> 3569 <li> 3570 <span class="entry_type_enum_name">LOCKED</span> 3571 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 3572 </li> 3573 <li> 3574 <span class="entry_type_enum_name">FLASH_REQUIRED</span> 3575 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 3576needs to be fired for good quality still 3577capture.<wbr/></p></span> 3578 </li> 3579 <li> 3580 <span class="entry_type_enum_name">PRECAPTURE</span> 3581 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 3582(through the <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> START),<wbr/> 3583and is currently executing it.<wbr/> Once PRECAPTURE 3584completes,<wbr/> AE will transition to CONVERGED or 3585FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient state,<wbr/> the 3586camera device may skip reporting this state in capture result.<wbr/></p></span> 3587 </li> 3588 </ul> 3589 3590 </td> <!-- entry_type --> 3591 3592 <td class="entry_description"> 3593 <p>Current state of AE algorithm</p> 3594 </td> 3595 3596 <td class="entry_units"> 3597 </td> 3598 3599 <td class="entry_range"> 3600 </td> 3601 3602 <td class="entry_tags"> 3603 </td> 3604 3605 </tr> 3606 <tr class="entries_header"> 3607 <th class="th_details" colspan="5">Details</th> 3608 </tr> 3609 <tr class="entry_cont"> 3610 <td class="entry_details" colspan="5"> 3611 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 3612resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 3613or <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 3614the algorithm states to INACTIVE.<wbr/></p> 3615<p>The camera device can do several state transitions between two results,<wbr/> if it is 3616allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 3617seen in a result.<wbr/></p> 3618<p>The state in the result is the state for this image (in sync with this image): if 3619AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 3620be good to use.<wbr/></p> 3621<p>Below are state transition tables for different AE modes.<wbr/></p> 3622<table> 3623<thead> 3624<tr> 3625<th align="center">State</th> 3626<th align="center">Transition Cause</th> 3627<th align="center">New State</th> 3628<th align="center">Notes</th> 3629</tr> 3630</thead> 3631<tbody> 3632<tr> 3633<td align="center">INACTIVE</td> 3634<td align="center"></td> 3635<td align="center">INACTIVE</td> 3636<td align="center">Camera device auto exposure algorithm is disabled</td> 3637</tr> 3638</tbody> 3639</table> 3640<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p> 3641<table> 3642<thead> 3643<tr> 3644<th align="center">State</th> 3645<th align="center">Transition Cause</th> 3646<th align="center">New State</th> 3647<th align="center">Notes</th> 3648</tr> 3649</thead> 3650<tbody> 3651<tr> 3652<td align="center">INACTIVE</td> 3653<td align="center">Camera device initiates AE scan</td> 3654<td align="center">SEARCHING</td> 3655<td align="center">Values changing</td> 3656</tr> 3657<tr> 3658<td align="center">INACTIVE</td> 3659<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 3660<td align="center">LOCKED</td> 3661<td align="center">Values locked</td> 3662</tr> 3663<tr> 3664<td align="center">SEARCHING</td> 3665<td align="center">Camera device finishes AE scan</td> 3666<td align="center">CONVERGED</td> 3667<td align="center">Good values,<wbr/> not changing</td> 3668</tr> 3669<tr> 3670<td align="center">SEARCHING</td> 3671<td align="center">Camera device finishes AE scan</td> 3672<td align="center">FLASH_<wbr/>REQUIRED</td> 3673<td align="center">Converged but too dark w/<wbr/>o flash</td> 3674</tr> 3675<tr> 3676<td align="center">SEARCHING</td> 3677<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 3678<td align="center">LOCKED</td> 3679<td align="center">Values locked</td> 3680</tr> 3681<tr> 3682<td align="center">CONVERGED</td> 3683<td align="center">Camera device initiates AE scan</td> 3684<td align="center">SEARCHING</td> 3685<td align="center">Values changing</td> 3686</tr> 3687<tr> 3688<td align="center">CONVERGED</td> 3689<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 3690<td align="center">LOCKED</td> 3691<td align="center">Values locked</td> 3692</tr> 3693<tr> 3694<td align="center">FLASH_<wbr/>REQUIRED</td> 3695<td align="center">Camera device initiates AE scan</td> 3696<td align="center">SEARCHING</td> 3697<td align="center">Values changing</td> 3698</tr> 3699<tr> 3700<td align="center">FLASH_<wbr/>REQUIRED</td> 3701<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 3702<td align="center">LOCKED</td> 3703<td align="center">Values locked</td> 3704</tr> 3705<tr> 3706<td align="center">LOCKED</td> 3707<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 3708<td align="center">SEARCHING</td> 3709<td align="center">Values not good after unlock</td> 3710</tr> 3711<tr> 3712<td align="center">LOCKED</td> 3713<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 3714<td align="center">CONVERGED</td> 3715<td align="center">Values good after unlock</td> 3716</tr> 3717<tr> 3718<td align="center">LOCKED</td> 3719<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 3720<td align="center">FLASH_<wbr/>REQUIRED</td> 3721<td align="center">Exposure good,<wbr/> but too dark</td> 3722</tr> 3723<tr> 3724<td align="center">PRECAPTURE</td> 3725<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 3726<td align="center">CONVERGED</td> 3727<td align="center">Ready for high-quality capture</td> 3728</tr> 3729<tr> 3730<td align="center">PRECAPTURE</td> 3731<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 3732<td align="center">LOCKED</td> 3733<td align="center">Ready for high-quality capture</td> 3734</tr> 3735<tr> 3736<td align="center">Any state</td> 3737<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 3738<td align="center">PRECAPTURE</td> 3739<td align="center">Start AE precapture metering sequence</td> 3740</tr> 3741</tbody> 3742</table> 3743<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 3744without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 3745can be skipped in that manner is called a transient state.<wbr/></p> 3746<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions 3747listed in above table,<wbr/> it is also legal for the camera device to skip one or more 3748transient states between two results.<wbr/> See below table for examples:</p> 3749<table> 3750<thead> 3751<tr> 3752<th align="center">State</th> 3753<th align="center">Transition Cause</th> 3754<th align="center">New State</th> 3755<th align="center">Notes</th> 3756</tr> 3757</thead> 3758<tbody> 3759<tr> 3760<td align="center">INACTIVE</td> 3761<td align="center">Camera device finished AE scan</td> 3762<td align="center">CONVERGED</td> 3763<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 3764</tr> 3765<tr> 3766<td align="center">Any state</td> 3767<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> 3768<td align="center">FLASH_<wbr/>REQUIRED</td> 3769<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> 3770</tr> 3771<tr> 3772<td align="center">Any state</td> 3773<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> 3774<td align="center">CONVERGED</td> 3775<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 3776</tr> 3777<tr> 3778<td align="center">CONVERGED</td> 3779<td align="center">Camera device finished AE scan</td> 3780<td align="center">FLASH_<wbr/>REQUIRED</td> 3781<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> 3782</tr> 3783<tr> 3784<td align="center">FLASH_<wbr/>REQUIRED</td> 3785<td align="center">Camera device finished AE scan</td> 3786<td align="center">CONVERGED</td> 3787<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 3788</tr> 3789</tbody> 3790</table> 3791 </td> 3792 </tr> 3793 3794 3795 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3796 <!-- end of entry --> 3797 3798 3799 <tr class="entry" id="dynamic_android.control.afMode"> 3800 <td class="entry_name" rowspan="3"> 3801 android.<wbr/>control.<wbr/>af<wbr/>Mode 3802 </td> 3803 <td class="entry_type"> 3804 <span class="entry_type_name entry_type_name_enum">byte</span> 3805 3806 <span class="entry_type_visibility"> [public]</span> 3807 3808 <ul class="entry_type_enum"> 3809 <li> 3810 <span class="entry_type_enum_name">OFF</span> 3811 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 3812<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 3813application</p></span> 3814 </li> 3815 <li> 3816 <span class="entry_type_enum_name">AUTO</span> 3817 <span class="entry_type_enum_notes"><p>If lens is not fixed focus.<wbr/></p> 3818<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 3819is fixed-focus.<wbr/> In this mode,<wbr/> the lens does not move unless 3820the autofocus trigger action is called.<wbr/> When that trigger 3821is activated,<wbr/> AF must transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 3822the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 3823<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 3824and sets the AF state to INACTIVE.<wbr/></p></span> 3825 </li> 3826 <li> 3827 <span class="entry_type_enum_name">MACRO</span> 3828 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the lens does not move unless the 3829autofocus trigger action is called.<wbr/></p> 3830<p>When that trigger is activated,<wbr/> AF must transition to 3831ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 3832NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 3833position to default,<wbr/> and sets the AF state to 3834INACTIVE.<wbr/></p></span> 3835 </li> 3836 <li> 3837 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 3838 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 3839position continually to attempt to provide a 3840constantly-in-focus image stream.<wbr/></p> 3841<p>The focusing behavior should be suitable for good quality 3842video recording; typically this means slower focus 3843movement and no overshoots.<wbr/> When the AF trigger is not 3844involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 3845and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 3846states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 3847the algorithm should immediately transition into 3848AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 3849lens position until a cancel AF trigger is received.<wbr/></p> 3850<p>Once cancel is received,<wbr/> the algorithm should transition 3851back to INACTIVE and resume passive scan.<wbr/> Note that this 3852behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 3853ongoing PASSIVE_<wbr/>SCAN must immediately be 3854canceled.<wbr/></p></span> 3855 </li> 3856 <li> 3857 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 3858 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 3859position continually to attempt to provide a 3860constantly-in-focus image stream.<wbr/></p> 3861<p>The focusing behavior should be suitable for still image 3862capture; typically this means focusing as fast as 3863possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 3864algorithm should start in INACTIVE state,<wbr/> and then 3865transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 3866appropriate as it attempts to maintain focus.<wbr/> When the AF 3867trigger is activated,<wbr/> the algorithm should finish its 3868PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 3869AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 3870lens position until a cancel AF trigger is received.<wbr/></p> 3871<p>When the AF cancel trigger is activated,<wbr/> the algorithm 3872should transition back to INACTIVE and then act as if it 3873has just been started.<wbr/></p></span> 3874 </li> 3875 <li> 3876 <span class="entry_type_enum_name">EDOF</span> 3877 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus).<wbr/> AF 3878trigger is ignored,<wbr/> AF state should always be 3879INACTIVE.<wbr/></p></span> 3880 </li> 3881 </ul> 3882 3883 </td> <!-- entry_type --> 3884 3885 <td class="entry_description"> 3886 <p>Whether AF is currently enabled,<wbr/> and what 3887mode it is set to</p> 3888 </td> 3889 3890 <td class="entry_units"> 3891 </td> 3892 3893 <td class="entry_range"> 3894 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 3895 </td> 3896 3897 <td class="entry_tags"> 3898 <ul class="entry_tags"> 3899 <li><a href="#tag_BC">BC</a></li> 3900 </ul> 3901 </td> 3902 3903 </tr> 3904 <tr class="entries_header"> 3905 <th class="th_details" colspan="5">Details</th> 3906 </tr> 3907 <tr class="entry_cont"> 3908 <td class="entry_details" colspan="5"> 3909 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 3910(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> 3911<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 3912the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 3913in result metadata.<wbr/></p> 3914 </td> 3915 </tr> 3916 3917 3918 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3919 <!-- end of entry --> 3920 3921 3922 <tr class="entry" id="dynamic_android.control.afRegions"> 3923 <td class="entry_name" rowspan="3"> 3924 android.<wbr/>control.<wbr/>af<wbr/>Regions 3925 </td> 3926 <td class="entry_type"> 3927 <span class="entry_type_name">int32</span> 3928 <span class="entry_type_container">x</span> 3929 3930 <span class="entry_type_array"> 3931 5 x area_count 3932 </span> 3933 <span class="entry_type_visibility"> [public]</span> 3934 3935 3936 </td> <!-- entry_type --> 3937 3938 <td class="entry_description"> 3939 <p>List of areas to use for focus 3940estimation.<wbr/></p> 3941 </td> 3942 3943 <td class="entry_units"> 3944 </td> 3945 3946 <td class="entry_range"> 3947 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[2]</code></p> 3948 </td> 3949 3950 <td class="entry_tags"> 3951 <ul class="entry_tags"> 3952 <li><a href="#tag_BC">BC</a></li> 3953 </ul> 3954 </td> 3955 3956 </tr> 3957 <tr class="entries_header"> 3958 <th class="th_details" colspan="5">Details</th> 3959 </tr> 3960 <tr class="entry_cont"> 3961 <td class="entry_details" colspan="5"> 3962 <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> 3963xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the 3964specified coordinates.<wbr/></p> 3965<p>The coordinate system is based on the active pixel array,<wbr/> 3966with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 3967(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3968<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 3969bottom-right pixel in the active pixel array.<wbr/> The weight 3970should be nonnegative.<wbr/></p> 3971<p>If all regions have 0 weight,<wbr/> then no specific focus area 3972needs to be used by the camera device.<wbr/> If the focusing region is 3973outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the camera device 3974will ignore the sections outside the region and output the 3975used sections in the frame metadata.<wbr/></p> 3976 </td> 3977 </tr> 3978 3979 3980 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3981 <!-- end of entry --> 3982 3983 3984 <tr class="entry" id="dynamic_android.control.afState"> 3985 <td class="entry_name" rowspan="3"> 3986 android.<wbr/>control.<wbr/>af<wbr/>State 3987 </td> 3988 <td class="entry_type"> 3989 <span class="entry_type_name entry_type_name_enum">byte</span> 3990 3991 <span class="entry_type_visibility"> [public]</span> 3992 3993 <ul class="entry_type_enum"> 3994 <li> 3995 <span class="entry_type_enum_name">INACTIVE</span> 3996 <span class="entry_type_enum_notes"><p>AF off or has not yet tried to scan/<wbr/>been asked 3997to scan.<wbr/> When a camera device is opened,<wbr/> it starts in 3998this state.<wbr/> This is a transient state,<wbr/> the camera device may 3999skip reporting this state in capture result.<wbr/></p></span> 4000 </li> 4001 <li> 4002 <span class="entry_type_enum_name">PASSIVE_SCAN</span> 4003 <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF is 4004currently doing an AF scan initiated by a continuous 4005autofocus mode.<wbr/> This is a transient state,<wbr/> the camera device may 4006skip reporting this state in capture result.<wbr/></p></span> 4007 </li> 4008 <li> 4009 <span class="entry_type_enum_name">PASSIVE_FOCUSED</span> 4010 <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF currently 4011believes it is in focus,<wbr/> but may restart scanning at 4012any time.<wbr/> This is a transient state,<wbr/> the camera device may skip 4013reporting this state in capture result.<wbr/></p></span> 4014 </li> 4015 <li> 4016 <span class="entry_type_enum_name">ACTIVE_SCAN</span> 4017 <span class="entry_type_enum_notes"><p>if AUTO or MACRO modes are supported.<wbr/> AF is doing 4018an AF scan because it was triggered by AF trigger.<wbr/> This is a 4019transient state,<wbr/> the camera device may skip reporting 4020this state in capture result.<wbr/></p></span> 4021 </li> 4022 <li> 4023 <span class="entry_type_enum_name">FOCUSED_LOCKED</span> 4024 <span class="entry_type_enum_notes"><p>if any AF mode besides OFF is supported.<wbr/> AF 4025believes it is focused correctly and is 4026locked.<wbr/></p></span> 4027 </li> 4028 <li> 4029 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span> 4030 <span class="entry_type_enum_notes"><p>if any AF mode besides OFF is supported.<wbr/> AF has 4031failed to focus successfully and is 4032locked.<wbr/></p></span> 4033 </li> 4034 <li> 4035 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span> 4036 <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF finished a 4037passive scan without finding focus,<wbr/> and may restart 4038scanning at any time.<wbr/> This is a transient state,<wbr/> the camera 4039device may skip reporting this state in capture result.<wbr/></p></span> 4040 </li> 4041 </ul> 4042 4043 </td> <!-- entry_type --> 4044 4045 <td class="entry_description"> 4046 <p>Current state of AF algorithm.<wbr/></p> 4047 </td> 4048 4049 <td class="entry_units"> 4050 </td> 4051 4052 <td class="entry_range"> 4053 </td> 4054 4055 <td class="entry_tags"> 4056 </td> 4057 4058 </tr> 4059 <tr class="entries_header"> 4060 <th class="th_details" colspan="5">Details</th> 4061 </tr> 4062 <tr class="entry_cont"> 4063 <td class="entry_details" colspan="5"> 4064 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 4065resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 4066or <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 4067the algorithm states to INACTIVE.<wbr/></p> 4068<p>The camera device can do several state transitions between two results,<wbr/> if it is 4069allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 4070seen in a result.<wbr/></p> 4071<p>The state in the result is the state for this image (in sync with this image): if 4072AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 4073be sharp.<wbr/></p> 4074<p>Below are state transition tables for different AF modes.<wbr/></p> 4075<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> 4076<table> 4077<thead> 4078<tr> 4079<th align="center">State</th> 4080<th align="center">Transition Cause</th> 4081<th align="center">New State</th> 4082<th align="center">Notes</th> 4083</tr> 4084</thead> 4085<tbody> 4086<tr> 4087<td align="center">INACTIVE</td> 4088<td align="center"></td> 4089<td align="center">INACTIVE</td> 4090<td align="center">Never changes</td> 4091</tr> 4092</tbody> 4093</table> 4094<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> 4095<table> 4096<thead> 4097<tr> 4098<th align="center">State</th> 4099<th align="center">Transition Cause</th> 4100<th align="center">New State</th> 4101<th align="center">Notes</th> 4102</tr> 4103</thead> 4104<tbody> 4105<tr> 4106<td align="center">INACTIVE</td> 4107<td align="center">AF_<wbr/>TRIGGER</td> 4108<td align="center">ACTIVE_<wbr/>SCAN</td> 4109<td align="center">Start AF sweep,<wbr/> Lens now moving</td> 4110</tr> 4111<tr> 4112<td align="center">ACTIVE_<wbr/>SCAN</td> 4113<td align="center">AF sweep done</td> 4114<td align="center">FOCUSED_<wbr/>LOCKED</td> 4115<td align="center">Focused,<wbr/> Lens now locked</td> 4116</tr> 4117<tr> 4118<td align="center">ACTIVE_<wbr/>SCAN</td> 4119<td align="center">AF sweep done</td> 4120<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4121<td align="center">Not focused,<wbr/> Lens now locked</td> 4122</tr> 4123<tr> 4124<td align="center">ACTIVE_<wbr/>SCAN</td> 4125<td align="center">AF_<wbr/>CANCEL</td> 4126<td align="center">INACTIVE</td> 4127<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 4128</tr> 4129<tr> 4130<td align="center">FOCUSED_<wbr/>LOCKED</td> 4131<td align="center">AF_<wbr/>CANCEL</td> 4132<td align="center">INACTIVE</td> 4133<td align="center">Cancel/<wbr/>reset AF</td> 4134</tr> 4135<tr> 4136<td align="center">FOCUSED_<wbr/>LOCKED</td> 4137<td align="center">AF_<wbr/>TRIGGER</td> 4138<td align="center">ACTIVE_<wbr/>SCAN</td> 4139<td align="center">Start new sweep,<wbr/> Lens now moving</td> 4140</tr> 4141<tr> 4142<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4143<td align="center">AF_<wbr/>CANCEL</td> 4144<td align="center">INACTIVE</td> 4145<td align="center">Cancel/<wbr/>reset AF</td> 4146</tr> 4147<tr> 4148<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4149<td align="center">AF_<wbr/>TRIGGER</td> 4150<td align="center">ACTIVE_<wbr/>SCAN</td> 4151<td align="center">Start new sweep,<wbr/> Lens now moving</td> 4152</tr> 4153<tr> 4154<td align="center">Any state</td> 4155<td align="center">Mode change</td> 4156<td align="center">INACTIVE</td> 4157<td align="center"></td> 4158</tr> 4159</tbody> 4160</table> 4161<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 4162without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 4163can be skipped in that manner is called a transient state.<wbr/></p> 4164<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the 4165state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 4166one or more transient states between two results.<wbr/> See below table for examples:</p> 4167<table> 4168<thead> 4169<tr> 4170<th align="center">State</th> 4171<th align="center">Transition Cause</th> 4172<th align="center">New State</th> 4173<th align="center">Notes</th> 4174</tr> 4175</thead> 4176<tbody> 4177<tr> 4178<td align="center">INACTIVE</td> 4179<td align="center">AF_<wbr/>TRIGGER</td> 4180<td align="center">FOCUSED_<wbr/>LOCKED</td> 4181<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 4182</tr> 4183<tr> 4184<td align="center">INACTIVE</td> 4185<td align="center">AF_<wbr/>TRIGGER</td> 4186<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4187<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> 4188</tr> 4189<tr> 4190<td align="center">FOCUSED_<wbr/>LOCKED</td> 4191<td align="center">AF_<wbr/>TRIGGER</td> 4192<td align="center">FOCUSED_<wbr/>LOCKED</td> 4193<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 4194</tr> 4195<tr> 4196<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4197<td align="center">AF_<wbr/>TRIGGER</td> 4198<td align="center">FOCUSED_<wbr/>LOCKED</td> 4199<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> 4200</tr> 4201</tbody> 4202</table> 4203<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> 4204<table> 4205<thead> 4206<tr> 4207<th align="center">State</th> 4208<th align="center">Transition Cause</th> 4209<th align="center">New State</th> 4210<th align="center">Notes</th> 4211</tr> 4212</thead> 4213<tbody> 4214<tr> 4215<td align="center">INACTIVE</td> 4216<td align="center">Camera device initiates new scan</td> 4217<td align="center">PASSIVE_<wbr/>SCAN</td> 4218<td align="center">Start AF scan,<wbr/> Lens now moving</td> 4219</tr> 4220<tr> 4221<td align="center">INACTIVE</td> 4222<td align="center">AF_<wbr/>TRIGGER</td> 4223<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4224<td align="center">AF state query,<wbr/> Lens now locked</td> 4225</tr> 4226<tr> 4227<td align="center">PASSIVE_<wbr/>SCAN</td> 4228<td align="center">Camera device completes current scan</td> 4229<td align="center">PASSIVE_<wbr/>FOCUSED</td> 4230<td align="center">End AF scan,<wbr/> Lens now locked</td> 4231</tr> 4232<tr> 4233<td align="center">PASSIVE_<wbr/>SCAN</td> 4234<td align="center">Camera device fails current scan</td> 4235<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 4236<td align="center">End AF scan,<wbr/> Lens now locked</td> 4237</tr> 4238<tr> 4239<td align="center">PASSIVE_<wbr/>SCAN</td> 4240<td align="center">AF_<wbr/>TRIGGER</td> 4241<td align="center">FOCUSED_<wbr/>LOCKED</td> 4242<td align="center">Immediate trans.<wbr/> If focus is good,<wbr/> Lens now locked</td> 4243</tr> 4244<tr> 4245<td align="center">PASSIVE_<wbr/>SCAN</td> 4246<td align="center">AF_<wbr/>TRIGGER</td> 4247<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4248<td align="center">Immediate trans.<wbr/> if focus is bad,<wbr/> Lens now locked</td> 4249</tr> 4250<tr> 4251<td align="center">PASSIVE_<wbr/>SCAN</td> 4252<td align="center">AF_<wbr/>CANCEL</td> 4253<td align="center">INACTIVE</td> 4254<td align="center">Reset lens position,<wbr/> Lens now locked</td> 4255</tr> 4256<tr> 4257<td align="center">PASSIVE_<wbr/>FOCUSED</td> 4258<td align="center">Camera device initiates new scan</td> 4259<td align="center">PASSIVE_<wbr/>SCAN</td> 4260<td align="center">Start AF scan,<wbr/> Lens now moving</td> 4261</tr> 4262<tr> 4263<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 4264<td align="center">Camera device initiates new scan</td> 4265<td align="center">PASSIVE_<wbr/>SCAN</td> 4266<td align="center">Start AF scan,<wbr/> Lens now moving</td> 4267</tr> 4268<tr> 4269<td align="center">PASSIVE_<wbr/>FOCUSED</td> 4270<td align="center">AF_<wbr/>TRIGGER</td> 4271<td align="center">FOCUSED_<wbr/>LOCKED</td> 4272<td align="center">Immediate trans.<wbr/> Lens now locked</td> 4273</tr> 4274<tr> 4275<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 4276<td align="center">AF_<wbr/>TRIGGER</td> 4277<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4278<td align="center">Immediate trans.<wbr/> Lens now locked</td> 4279</tr> 4280<tr> 4281<td align="center">FOCUSED_<wbr/>LOCKED</td> 4282<td align="center">AF_<wbr/>TRIGGER</td> 4283<td align="center">FOCUSED_<wbr/>LOCKED</td> 4284<td align="center">No effect</td> 4285</tr> 4286<tr> 4287<td align="center">FOCUSED_<wbr/>LOCKED</td> 4288<td align="center">AF_<wbr/>CANCEL</td> 4289<td align="center">INACTIVE</td> 4290<td align="center">Restart AF scan</td> 4291</tr> 4292<tr> 4293<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4294<td align="center">AF_<wbr/>TRIGGER</td> 4295<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4296<td align="center">No effect</td> 4297</tr> 4298<tr> 4299<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4300<td align="center">AF_<wbr/>CANCEL</td> 4301<td align="center">INACTIVE</td> 4302<td align="center">Restart AF scan</td> 4303</tr> 4304</tbody> 4305</table> 4306<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> 4307<table> 4308<thead> 4309<tr> 4310<th align="center">State</th> 4311<th align="center">Transition Cause</th> 4312<th align="center">New State</th> 4313<th align="center">Notes</th> 4314</tr> 4315</thead> 4316<tbody> 4317<tr> 4318<td align="center">INACTIVE</td> 4319<td align="center">Camera device initiates new scan</td> 4320<td align="center">PASSIVE_<wbr/>SCAN</td> 4321<td align="center">Start AF scan,<wbr/> Lens now moving</td> 4322</tr> 4323<tr> 4324<td align="center">INACTIVE</td> 4325<td align="center">AF_<wbr/>TRIGGER</td> 4326<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4327<td align="center">AF state query,<wbr/> Lens now locked</td> 4328</tr> 4329<tr> 4330<td align="center">PASSIVE_<wbr/>SCAN</td> 4331<td align="center">Camera device completes current scan</td> 4332<td align="center">PASSIVE_<wbr/>FOCUSED</td> 4333<td align="center">End AF scan,<wbr/> Lens now locked</td> 4334</tr> 4335<tr> 4336<td align="center">PASSIVE_<wbr/>SCAN</td> 4337<td align="center">Camera device fails current scan</td> 4338<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 4339<td align="center">End AF scan,<wbr/> Lens now locked</td> 4340</tr> 4341<tr> 4342<td align="center">PASSIVE_<wbr/>SCAN</td> 4343<td align="center">AF_<wbr/>TRIGGER</td> 4344<td align="center">FOCUSED_<wbr/>LOCKED</td> 4345<td align="center">Eventual trans.<wbr/> once focus good,<wbr/> Lens now locked</td> 4346</tr> 4347<tr> 4348<td align="center">PASSIVE_<wbr/>SCAN</td> 4349<td align="center">AF_<wbr/>TRIGGER</td> 4350<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4351<td align="center">Eventual trans.<wbr/> if cannot focus,<wbr/> Lens now locked</td> 4352</tr> 4353<tr> 4354<td align="center">PASSIVE_<wbr/>SCAN</td> 4355<td align="center">AF_<wbr/>CANCEL</td> 4356<td align="center">INACTIVE</td> 4357<td align="center">Reset lens position,<wbr/> Lens now locked</td> 4358</tr> 4359<tr> 4360<td align="center">PASSIVE_<wbr/>FOCUSED</td> 4361<td align="center">Camera device initiates new scan</td> 4362<td align="center">PASSIVE_<wbr/>SCAN</td> 4363<td align="center">Start AF scan,<wbr/> Lens now moving</td> 4364</tr> 4365<tr> 4366<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 4367<td align="center">Camera device initiates new scan</td> 4368<td align="center">PASSIVE_<wbr/>SCAN</td> 4369<td align="center">Start AF scan,<wbr/> Lens now moving</td> 4370</tr> 4371<tr> 4372<td align="center">PASSIVE_<wbr/>FOCUSED</td> 4373<td align="center">AF_<wbr/>TRIGGER</td> 4374<td align="center">FOCUSED_<wbr/>LOCKED</td> 4375<td align="center">Immediate trans.<wbr/> Lens now locked</td> 4376</tr> 4377<tr> 4378<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 4379<td align="center">AF_<wbr/>TRIGGER</td> 4380<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4381<td align="center">Immediate trans.<wbr/> Lens now locked</td> 4382</tr> 4383<tr> 4384<td align="center">FOCUSED_<wbr/>LOCKED</td> 4385<td align="center">AF_<wbr/>TRIGGER</td> 4386<td align="center">FOCUSED_<wbr/>LOCKED</td> 4387<td align="center">No effect</td> 4388</tr> 4389<tr> 4390<td align="center">FOCUSED_<wbr/>LOCKED</td> 4391<td align="center">AF_<wbr/>CANCEL</td> 4392<td align="center">INACTIVE</td> 4393<td align="center">Restart AF scan</td> 4394</tr> 4395<tr> 4396<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4397<td align="center">AF_<wbr/>TRIGGER</td> 4398<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4399<td align="center">No effect</td> 4400</tr> 4401<tr> 4402<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4403<td align="center">AF_<wbr/>CANCEL</td> 4404<td align="center">INACTIVE</td> 4405<td align="center">Restart AF scan</td> 4406</tr> 4407</tbody> 4408</table> 4409<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO 4410(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the 4411camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 4412will be evaluated in the context of the new mode in the request.<wbr/> 4413See below table for examples:</p> 4414<table> 4415<thead> 4416<tr> 4417<th align="center">State</th> 4418<th align="center">Transition Cause</th> 4419<th align="center">New State</th> 4420<th align="center">Notes</th> 4421</tr> 4422</thead> 4423<tbody> 4424<tr> 4425<td align="center">any state</td> 4426<td align="center">CAF-->AUTO mode switch</td> 4427<td align="center">INACTIVE</td> 4428<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> 4429</tr> 4430<tr> 4431<td align="center">any state</td> 4432<td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> 4433<td align="center">trigger-reachable states from INACTIVE</td> 4434<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> 4435</tr> 4436<tr> 4437<td align="center">any state</td> 4438<td align="center">AUTO-->CAF mode switch</td> 4439<td align="center">passively reachable states from INACTIVE</td> 4440<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td> 4441</tr> 4442</tbody> 4443</table> 4444 </td> 4445 </tr> 4446 4447 4448 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4449 <!-- end of entry --> 4450 4451 4452 <tr class="entry" id="dynamic_android.control.afTriggerId"> 4453 <td class="entry_name" rowspan="3"> 4454 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 4455 </td> 4456 <td class="entry_type"> 4457 <span class="entry_type_name">int32</span> 4458 4459 <span class="entry_type_visibility"> [hidden]</span> 4460 4461 4462 </td> <!-- entry_type --> 4463 4464 <td class="entry_description"> 4465 <p>The ID sent with the latest 4466CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 4467 </td> 4468 4469 <td class="entry_units"> 4470 </td> 4471 4472 <td class="entry_range"> 4473 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 4474 </td> 4475 4476 <td class="entry_tags"> 4477 </td> 4478 4479 </tr> 4480 <tr class="entries_header"> 4481 <th class="th_details" colspan="5">Details</th> 4482 </tr> 4483 <tr class="entry_cont"> 4484 <td class="entry_details" colspan="5"> 4485 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 4486received yet by HAL.<wbr/> Always updated even if AF algorithm 4487ignores the trigger</p> 4488 </td> 4489 </tr> 4490 4491 4492 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4493 <!-- end of entry --> 4494 4495 4496 <tr class="entry" id="dynamic_android.control.awbMode"> 4497 <td class="entry_name" rowspan="3"> 4498 android.<wbr/>control.<wbr/>awb<wbr/>Mode 4499 </td> 4500 <td class="entry_type"> 4501 <span class="entry_type_name entry_type_name_enum">byte</span> 4502 4503 <span class="entry_type_visibility"> [public]</span> 4504 4505 <ul class="entry_type_enum"> 4506 <li> 4507 <span class="entry_type_enum_name">OFF</span> 4508 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4509the application-selected color transform matrix 4510(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 4511(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 4512device for manual white balance control.<wbr/></p></span> 4513 </li> 4514 <li> 4515 <span class="entry_type_enum_name">AUTO</span> 4516 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is active; 4517the application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 4518and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/></p></span> 4519 </li> 4520 <li> 4521 <span class="entry_type_enum_name">INCANDESCENT</span> 4522 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4523the camera device uses incandescent light as the assumed scene 4524illumination for white balance.<wbr/> While the exact white balance 4525transforms are up to the camera device,<wbr/> they will approximately 4526match the CIE standard illuminant A.<wbr/></p></span> 4527 </li> 4528 <li> 4529 <span class="entry_type_enum_name">FLUORESCENT</span> 4530 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4531the camera device uses fluorescent light as the assumed scene 4532illumination for white balance.<wbr/> While the exact white balance 4533transforms are up to the camera device,<wbr/> they will approximately 4534match the CIE standard illuminant F2.<wbr/></p></span> 4535 </li> 4536 <li> 4537 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 4538 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4539the camera device uses warm fluorescent light as the assumed scene 4540illumination for white balance.<wbr/> While the exact white balance 4541transforms are up to the camera device,<wbr/> they will approximately 4542match the CIE standard illuminant F4.<wbr/></p></span> 4543 </li> 4544 <li> 4545 <span class="entry_type_enum_name">DAYLIGHT</span> 4546 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4547the camera device uses daylight light as the assumed scene 4548illumination for white balance.<wbr/> While the exact white balance 4549transforms are up to the camera device,<wbr/> they will approximately 4550match the CIE standard illuminant D65.<wbr/></p></span> 4551 </li> 4552 <li> 4553 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 4554 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4555the camera device uses cloudy daylight light as the assumed scene 4556illumination for white balance.<wbr/></p></span> 4557 </li> 4558 <li> 4559 <span class="entry_type_enum_name">TWILIGHT</span> 4560 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4561the camera device uses twilight light as the assumed scene 4562illumination for white balance.<wbr/></p></span> 4563 </li> 4564 <li> 4565 <span class="entry_type_enum_name">SHADE</span> 4566 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4567the camera device uses shade light as the assumed scene 4568illumination for white balance.<wbr/></p></span> 4569 </li> 4570 </ul> 4571 4572 </td> <!-- entry_type --> 4573 4574 <td class="entry_description"> 4575 <p>Whether AWB is currently setting the color 4576transform fields,<wbr/> and what its illumination target 4577is.<wbr/></p> 4578 </td> 4579 4580 <td class="entry_units"> 4581 </td> 4582 4583 <td class="entry_range"> 4584 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 4585 </td> 4586 4587 <td class="entry_tags"> 4588 <ul class="entry_tags"> 4589 <li><a href="#tag_BC">BC</a></li> 4590 <li><a href="#tag_AWB">AWB</a></li> 4591 </ul> 4592 </td> 4593 4594 </tr> 4595 <tr class="entries_header"> 4596 <th class="th_details" colspan="5">Details</th> 4597 </tr> 4598 <tr class="entry_cont"> 4599 <td class="entry_details" colspan="5"> 4600 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 4601<p>When set to the ON mode,<wbr/> the camera device's auto white balance 4602routine is enabled,<wbr/> overriding the application's selected 4603<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 4604<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 4605<p>When set to the OFF mode,<wbr/> the camera device's auto white balance 4606routine is disabled.<wbr/> The application manually controls the white 4607balance 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> 4608and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 4609<p>When set to any other modes,<wbr/> the camera device's auto white balance 4610routine is disabled.<wbr/> The camera device uses each particular illumination 4611target for white balance adjustment.<wbr/></p> 4612 </td> 4613 </tr> 4614 4615 4616 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4617 <!-- end of entry --> 4618 4619 4620 <tr class="entry" id="dynamic_android.control.awbRegions"> 4621 <td class="entry_name" rowspan="3"> 4622 android.<wbr/>control.<wbr/>awb<wbr/>Regions 4623 </td> 4624 <td class="entry_type"> 4625 <span class="entry_type_name">int32</span> 4626 <span class="entry_type_container">x</span> 4627 4628 <span class="entry_type_array"> 4629 5 x area_count 4630 </span> 4631 <span class="entry_type_visibility"> [public]</span> 4632 4633 4634 </td> <!-- entry_type --> 4635 4636 <td class="entry_description"> 4637 <p>List of areas to use for illuminant 4638estimation.<wbr/></p> 4639 </td> 4640 4641 <td class="entry_units"> 4642 </td> 4643 4644 <td class="entry_range"> 4645 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[1]</code></p> 4646 </td> 4647 4648 <td class="entry_tags"> 4649 <ul class="entry_tags"> 4650 <li><a href="#tag_BC">BC</a></li> 4651 </ul> 4652 </td> 4653 4654 </tr> 4655 <tr class="entries_header"> 4656 <th class="th_details" colspan="5">Details</th> 4657 </tr> 4658 <tr class="entry_cont"> 4659 <td class="entry_details" colspan="5"> 4660 <p>Only used in AUTO mode.<wbr/></p> 4661<p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> 4662xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the 4663specified coordinates.<wbr/></p> 4664<p>The coordinate system is based on the active pixel array,<wbr/> 4665with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 4666(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 4667<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 4668bottom-right pixel in the active pixel array.<wbr/> The weight 4669should be nonnegative.<wbr/></p> 4670<p>If all regions have 0 weight,<wbr/> then no specific auto-white balance (AWB) area 4671needs to be used by the camera device.<wbr/> If the AWB region is 4672outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the camera device 4673will ignore the sections outside the region and output the 4674used sections in the frame metadata.<wbr/></p> 4675 </td> 4676 </tr> 4677 4678 4679 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4680 <!-- end of entry --> 4681 4682 4683 <tr class="entry" id="dynamic_android.control.awbState"> 4684 <td class="entry_name" rowspan="3"> 4685 android.<wbr/>control.<wbr/>awb<wbr/>State 4686 </td> 4687 <td class="entry_type"> 4688 <span class="entry_type_name entry_type_name_enum">byte</span> 4689 4690 <span class="entry_type_visibility"> [public]</span> 4691 4692 <ul class="entry_type_enum"> 4693 <li> 4694 <span class="entry_type_enum_name">INACTIVE</span> 4695 <span class="entry_type_enum_notes"><p>AWB is not in auto mode.<wbr/> When a camera device is opened,<wbr/> it 4696starts in this state.<wbr/> This is a transient state,<wbr/> the camera device may 4697skip reporting this state in capture result.<wbr/></p></span> 4698 </li> 4699 <li> 4700 <span class="entry_type_enum_name">SEARCHING</span> 4701 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 4702values for the current scene.<wbr/> This is a transient state,<wbr/> the camera device 4703may skip reporting this state in capture result.<wbr/></p></span> 4704 </li> 4705 <li> 4706 <span class="entry_type_enum_name">CONVERGED</span> 4707 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 4708current scene.<wbr/></p></span> 4709 </li> 4710 <li> 4711 <span class="entry_type_enum_name">LOCKED</span> 4712 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 4713 </li> 4714 </ul> 4715 4716 </td> <!-- entry_type --> 4717 4718 <td class="entry_description"> 4719 <p>Current state of AWB algorithm</p> 4720 </td> 4721 4722 <td class="entry_units"> 4723 </td> 4724 4725 <td class="entry_range"> 4726 </td> 4727 4728 <td class="entry_tags"> 4729 </td> 4730 4731 </tr> 4732 <tr class="entries_header"> 4733 <th class="th_details" colspan="5">Details</th> 4734 </tr> 4735 <tr class="entry_cont"> 4736 <td class="entry_details" colspan="5"> 4737 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 4738resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 4739or <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 4740the algorithm states to INACTIVE.<wbr/></p> 4741<p>The camera device can do several state transitions between two results,<wbr/> if it is 4742allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 4743a result.<wbr/></p> 4744<p>The state in the result is the state for this image (in sync with this image): if 4745AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 4746be good to use.<wbr/></p> 4747<p>Below are state transition tables for different AWB modes.<wbr/></p> 4748<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 4749<table> 4750<thead> 4751<tr> 4752<th align="center">State</th> 4753<th align="center">Transition Cause</th> 4754<th align="center">New State</th> 4755<th align="center">Notes</th> 4756</tr> 4757</thead> 4758<tbody> 4759<tr> 4760<td align="center">INACTIVE</td> 4761<td align="center"></td> 4762<td align="center">INACTIVE</td> 4763<td align="center">Camera device auto white balance algorithm is disabled</td> 4764</tr> 4765</tbody> 4766</table> 4767<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 4768<table> 4769<thead> 4770<tr> 4771<th align="center">State</th> 4772<th align="center">Transition Cause</th> 4773<th align="center">New State</th> 4774<th align="center">Notes</th> 4775</tr> 4776</thead> 4777<tbody> 4778<tr> 4779<td align="center">INACTIVE</td> 4780<td align="center">Camera device initiates AWB scan</td> 4781<td align="center">SEARCHING</td> 4782<td align="center">Values changing</td> 4783</tr> 4784<tr> 4785<td align="center">INACTIVE</td> 4786<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 4787<td align="center">LOCKED</td> 4788<td align="center">Values locked</td> 4789</tr> 4790<tr> 4791<td align="center">SEARCHING</td> 4792<td align="center">Camera device finishes AWB scan</td> 4793<td align="center">CONVERGED</td> 4794<td align="center">Good values,<wbr/> not changing</td> 4795</tr> 4796<tr> 4797<td align="center">SEARCHING</td> 4798<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 4799<td align="center">LOCKED</td> 4800<td align="center">Values locked</td> 4801</tr> 4802<tr> 4803<td align="center">CONVERGED</td> 4804<td align="center">Camera device initiates AWB scan</td> 4805<td align="center">SEARCHING</td> 4806<td align="center">Values changing</td> 4807</tr> 4808<tr> 4809<td align="center">CONVERGED</td> 4810<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 4811<td align="center">LOCKED</td> 4812<td align="center">Values locked</td> 4813</tr> 4814<tr> 4815<td align="center">LOCKED</td> 4816<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 4817<td align="center">SEARCHING</td> 4818<td align="center">Values not good after unlock</td> 4819</tr> 4820</tbody> 4821</table> 4822<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 4823without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 4824can be skipped in that manner is called a transient state.<wbr/></p> 4825<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions 4826listed in above table,<wbr/> it is also legal for the camera device to skip one or more 4827transient states between two results.<wbr/> See below table for examples:</p> 4828<table> 4829<thead> 4830<tr> 4831<th align="center">State</th> 4832<th align="center">Transition Cause</th> 4833<th align="center">New State</th> 4834<th align="center">Notes</th> 4835</tr> 4836</thead> 4837<tbody> 4838<tr> 4839<td align="center">INACTIVE</td> 4840<td align="center">Camera device finished AWB scan</td> 4841<td align="center">CONVERGED</td> 4842<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 4843</tr> 4844<tr> 4845<td align="center">LOCKED</td> 4846<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 4847<td align="center">CONVERGED</td> 4848<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> 4849</tr> 4850</tbody> 4851</table> 4852 </td> 4853 </tr> 4854 4855 4856 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4857 <!-- end of entry --> 4858 4859 4860 <tr class="entry" id="dynamic_android.control.mode"> 4861 <td class="entry_name" rowspan="3"> 4862 android.<wbr/>control.<wbr/>mode 4863 </td> 4864 <td class="entry_type"> 4865 <span class="entry_type_name entry_type_name_enum">byte</span> 4866 4867 <span class="entry_type_visibility"> [public]</span> 4868 4869 <ul class="entry_type_enum"> 4870 <li> 4871 <span class="entry_type_enum_name">OFF</span> 4872 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/> All 3A 4873routines are disabled,<wbr/> no other settings in 4874android.<wbr/>control.<wbr/>* have any effect</p></span> 4875 </li> 4876 <li> 4877 <span class="entry_type_enum_name">AUTO</span> 4878 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/> 4879Manual control of capture parameters is disabled.<wbr/> All 4880controls in android.<wbr/>control.<wbr/>* besides sceneMode take 4881effect</p></span> 4882 </li> 4883 <li> 4884 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 4885 <span class="entry_type_enum_notes"><p>Use specific scene mode.<wbr/> Enabling this disables 4886control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and control.<wbr/>afMode 4887controls; the camera device will ignore those settings while 4888USE_<wbr/>SCENE_<wbr/>MODE is active (except for FACE_<wbr/>PRIORITY 4889scene mode).<wbr/> Other control entries are still active.<wbr/> 4890This setting can only be used if scene mode is supported 4891(i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> contain some modes 4892other than DISABLED).<wbr/></p></span> 4893 </li> 4894 <li> 4895 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 4896 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 4897used by camera device background auto-exposure,<wbr/> auto-white balance and 4898auto-focus algorithms to update their statistics.<wbr/></p></span> 4899 </li> 4900 </ul> 4901 4902 </td> <!-- entry_type --> 4903 4904 <td class="entry_description"> 4905 <p>Overall mode of 3A control 4906routines.<wbr/></p> 4907 </td> 4908 4909 <td class="entry_units"> 4910 </td> 4911 4912 <td class="entry_range"> 4913 <p>all must be supported</p> 4914 </td> 4915 4916 <td class="entry_tags"> 4917 <ul class="entry_tags"> 4918 <li><a href="#tag_BC">BC</a></li> 4919 </ul> 4920 </td> 4921 4922 </tr> 4923 <tr class="entries_header"> 4924 <th class="th_details" colspan="5">Details</th> 4925 </tr> 4926 <tr class="entry_cont"> 4927 <td class="entry_details" colspan="5"> 4928 <p>High-level 3A control.<wbr/> When set to OFF,<wbr/> all 3A control 4929by the camera device is disabled.<wbr/> The application must set the fields for 4930capture parameters itself.<wbr/></p> 4931<p>When set to AUTO,<wbr/> the individual algorithm controls in 4932android.<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> 4933<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 4934android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 4935one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 4936as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 4937<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 4938<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 4939is that this frame will not be used by camera device background 3A statistics 4940update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 4941where the application doesn't want a 3A manual control capture to affect 4942the subsequent auto 3A capture results.<wbr/></p> 4943 </td> 4944 </tr> 4945 4946 4947 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4948 <!-- end of entry --> 4949 4950 4951 4952 <!-- end of kind --> 4953 </tbody> 4954 4955 <!-- end of section --> 4956 <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr> 4957 4958 4959 <tr><td colspan="6" class="kind">controls</td></tr> 4960 4961 <thead class="entries_header"> 4962 <tr> 4963 <th class="th_name">Property Name</th> 4964 <th class="th_type">Type</th> 4965 <th class="th_description">Description</th> 4966 <th class="th_units">Units</th> 4967 <th class="th_range">Range</th> 4968 <th class="th_tags">Tags</th> 4969 </tr> 4970 </thead> 4971 4972 <tbody> 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 <tr class="entry" id="controls_android.demosaic.mode"> 4984 <td class="entry_name" rowspan="1"> 4985 android.<wbr/>demosaic.<wbr/>mode 4986 </td> 4987 <td class="entry_type"> 4988 <span class="entry_type_name entry_type_name_enum">byte</span> 4989 4990 <span class="entry_type_visibility"> [system]</span> 4991 4992 <ul class="entry_type_enum"> 4993 <li> 4994 <span class="entry_type_enum_name">FAST</span> 4995 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 4996Bayer RAW output</p></span> 4997 </li> 4998 <li> 4999 <span class="entry_type_enum_name">HIGH_QUALITY</span> 5000 <span class="entry_type_enum_notes"><p>High-quality may reduce output frame 5001rate</p></span> 5002 </li> 5003 </ul> 5004 5005 </td> <!-- entry_type --> 5006 5007 <td class="entry_description"> 5008 <p>Controls the quality of the demosaicing 5009processing</p> 5010 </td> 5011 5012 <td class="entry_units"> 5013 </td> 5014 5015 <td class="entry_range"> 5016 </td> 5017 5018 <td class="entry_tags"> 5019 <ul class="entry_tags"> 5020 <li><a href="#tag_V1">V1</a></li> 5021 </ul> 5022 </td> 5023 5024 </tr> 5025 5026 5027 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5028 <!-- end of entry --> 5029 5030 5031 5032 <!-- end of kind --> 5033 </tbody> 5034 5035 <!-- end of section --> 5036 <tr><td colspan="6" id="section_edge" class="section">edge</td></tr> 5037 5038 5039 <tr><td colspan="6" class="kind">controls</td></tr> 5040 5041 <thead class="entries_header"> 5042 <tr> 5043 <th class="th_name">Property Name</th> 5044 <th class="th_type">Type</th> 5045 <th class="th_description">Description</th> 5046 <th class="th_units">Units</th> 5047 <th class="th_range">Range</th> 5048 <th class="th_tags">Tags</th> 5049 </tr> 5050 </thead> 5051 5052 <tbody> 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 <tr class="entry" id="controls_android.edge.mode"> 5064 <td class="entry_name" rowspan="3"> 5065 android.<wbr/>edge.<wbr/>mode 5066 </td> 5067 <td class="entry_type"> 5068 <span class="entry_type_name entry_type_name_enum">byte</span> 5069 5070 <span class="entry_type_visibility"> [public]</span> 5071 5072 <ul class="entry_type_enum"> 5073 <li> 5074 <span class="entry_type_enum_name">OFF</span> 5075 <span class="entry_type_enum_notes"><p>No edge enhancement is applied</p></span> 5076 </li> 5077 <li> 5078 <span class="entry_type_enum_name">FAST</span> 5079 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor 5080output</p></span> 5081 </li> 5082 <li> 5083 <span class="entry_type_enum_name">HIGH_QUALITY</span> 5084 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high 5085quality</p></span> 5086 </li> 5087 </ul> 5088 5089 </td> <!-- entry_type --> 5090 5091 <td class="entry_description"> 5092 <p>Operation mode for edge 5093enhancement.<wbr/></p> 5094 </td> 5095 5096 <td class="entry_units"> 5097 </td> 5098 5099 <td class="entry_range"> 5100 </td> 5101 5102 <td class="entry_tags"> 5103 <ul class="entry_tags"> 5104 <li><a href="#tag_V1">V1</a></li> 5105 </ul> 5106 </td> 5107 5108 </tr> 5109 <tr class="entries_header"> 5110 <th class="th_details" colspan="5">Details</th> 5111 </tr> 5112 <tr class="entry_cont"> 5113 <td class="entry_details" colspan="5"> 5114 <p>Edge/<wbr/>sharpness/<wbr/>detail enhancement.<wbr/> OFF means no 5115enhancement will be applied by the camera device.<wbr/></p> 5116<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> 5117<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 5118will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 5119camera device will use the highest-quality enhancement algorithms,<wbr/> 5120even if it slows down capture rate.<wbr/> FAST means the camera device will 5121not slow down capture rate when applying edge enhancement.<wbr/></p> 5122 </td> 5123 </tr> 5124 5125 5126 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5127 <!-- end of entry --> 5128 5129 5130 <tr class="entry" id="controls_android.edge.strength"> 5131 <td class="entry_name" rowspan="1"> 5132 android.<wbr/>edge.<wbr/>strength 5133 </td> 5134 <td class="entry_type"> 5135 <span class="entry_type_name">byte</span> 5136 5137 <span class="entry_type_visibility"> [system]</span> 5138 5139 5140 </td> <!-- entry_type --> 5141 5142 <td class="entry_description"> 5143 <p>Control the amount of edge enhancement 5144applied to the images</p> 5145 </td> 5146 5147 <td class="entry_units"> 5148 1-10; 10 is maximum sharpening 5149 </td> 5150 5151 <td class="entry_range"> 5152 </td> 5153 5154 <td class="entry_tags"> 5155 <ul class="entry_tags"> 5156 <li><a href="#tag_V1">V1</a></li> 5157 </ul> 5158 </td> 5159 5160 </tr> 5161 5162 5163 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5164 <!-- end of entry --> 5165 5166 5167 5168 <!-- end of kind --> 5169 </tbody> 5170 <tr><td colspan="6" class="kind">static</td></tr> 5171 5172 <thead class="entries_header"> 5173 <tr> 5174 <th class="th_name">Property Name</th> 5175 <th class="th_type">Type</th> 5176 <th class="th_description">Description</th> 5177 <th class="th_units">Units</th> 5178 <th class="th_range">Range</th> 5179 <th class="th_tags">Tags</th> 5180 </tr> 5181 </thead> 5182 5183 <tbody> 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 <tr class="entry" id="static_android.edge.availableEdgeModes"> 5195 <td class="entry_name" rowspan="3"> 5196 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes 5197 </td> 5198 <td class="entry_type"> 5199 <span class="entry_type_name">byte</span> 5200 <span class="entry_type_container">x</span> 5201 5202 <span class="entry_type_array"> 5203 n 5204 </span> 5205 <span class="entry_type_visibility"> [public]</span> 5206 <div class="entry_type_notes">list of enums</div> 5207 5208 5209 </td> <!-- entry_type --> 5210 5211 <td class="entry_description"> 5212 <p>The set of edge enhancement modes supported by this camera device.<wbr/></p> 5213 </td> 5214 5215 <td class="entry_units"> 5216 </td> 5217 5218 <td class="entry_range"> 5219 </td> 5220 5221 <td class="entry_tags"> 5222 <ul class="entry_tags"> 5223 <li><a href="#tag_V1">V1</a></li> 5224 </ul> 5225 </td> 5226 5227 </tr> 5228 <tr class="entries_header"> 5229 <th class="th_details" colspan="5">Details</th> 5230 </tr> 5231 <tr class="entry_cont"> 5232 <td class="entry_details" colspan="5"> 5233 <p>This tag lists the valid modes for <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>.<wbr/></p> 5234<p>Full-capability camera devices must always support OFF and FAST.<wbr/></p> 5235 </td> 5236 </tr> 5237 5238 5239 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5240 <!-- end of entry --> 5241 5242 5243 5244 <!-- end of kind --> 5245 </tbody> 5246 <tr><td colspan="6" class="kind">dynamic</td></tr> 5247 5248 <thead class="entries_header"> 5249 <tr> 5250 <th class="th_name">Property Name</th> 5251 <th class="th_type">Type</th> 5252 <th class="th_description">Description</th> 5253 <th class="th_units">Units</th> 5254 <th class="th_range">Range</th> 5255 <th class="th_tags">Tags</th> 5256 </tr> 5257 </thead> 5258 5259 <tbody> 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 <tr class="entry" id="dynamic_android.edge.mode"> 5271 <td class="entry_name" rowspan="3"> 5272 android.<wbr/>edge.<wbr/>mode 5273 </td> 5274 <td class="entry_type"> 5275 <span class="entry_type_name entry_type_name_enum">byte</span> 5276 5277 <span class="entry_type_visibility"> [public]</span> 5278 5279 <ul class="entry_type_enum"> 5280 <li> 5281 <span class="entry_type_enum_name">OFF</span> 5282 <span class="entry_type_enum_notes"><p>No edge enhancement is applied</p></span> 5283 </li> 5284 <li> 5285 <span class="entry_type_enum_name">FAST</span> 5286 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor 5287output</p></span> 5288 </li> 5289 <li> 5290 <span class="entry_type_enum_name">HIGH_QUALITY</span> 5291 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high 5292quality</p></span> 5293 </li> 5294 </ul> 5295 5296 </td> <!-- entry_type --> 5297 5298 <td class="entry_description"> 5299 <p>Operation mode for edge 5300enhancement.<wbr/></p> 5301 </td> 5302 5303 <td class="entry_units"> 5304 </td> 5305 5306 <td class="entry_range"> 5307 </td> 5308 5309 <td class="entry_tags"> 5310 <ul class="entry_tags"> 5311 <li><a href="#tag_V1">V1</a></li> 5312 </ul> 5313 </td> 5314 5315 </tr> 5316 <tr class="entries_header"> 5317 <th class="th_details" colspan="5">Details</th> 5318 </tr> 5319 <tr class="entry_cont"> 5320 <td class="entry_details" colspan="5"> 5321 <p>Edge/<wbr/>sharpness/<wbr/>detail enhancement.<wbr/> OFF means no 5322enhancement will be applied by the camera device.<wbr/></p> 5323<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> 5324<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 5325will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 5326camera device will use the highest-quality enhancement algorithms,<wbr/> 5327even if it slows down capture rate.<wbr/> FAST means the camera device will 5328not slow down capture rate when applying edge enhancement.<wbr/></p> 5329 </td> 5330 </tr> 5331 5332 5333 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5334 <!-- end of entry --> 5335 5336 5337 5338 <!-- end of kind --> 5339 </tbody> 5340 5341 <!-- end of section --> 5342 <tr><td colspan="6" id="section_flash" class="section">flash</td></tr> 5343 5344 5345 <tr><td colspan="6" class="kind">controls</td></tr> 5346 5347 <thead class="entries_header"> 5348 <tr> 5349 <th class="th_name">Property Name</th> 5350 <th class="th_type">Type</th> 5351 <th class="th_description">Description</th> 5352 <th class="th_units">Units</th> 5353 <th class="th_range">Range</th> 5354 <th class="th_tags">Tags</th> 5355 </tr> 5356 </thead> 5357 5358 <tbody> 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 <tr class="entry" id="controls_android.flash.firingPower"> 5370 <td class="entry_name" rowspan="3"> 5371 android.<wbr/>flash.<wbr/>firing<wbr/>Power 5372 </td> 5373 <td class="entry_type"> 5374 <span class="entry_type_name">byte</span> 5375 5376 <span class="entry_type_visibility"> [system]</span> 5377 5378 5379 </td> <!-- entry_type --> 5380 5381 <td class="entry_description"> 5382 <p>Power for flash firing/<wbr/>torch</p> 5383 </td> 5384 5385 <td class="entry_units"> 5386 10 is max power; 0 is no flash.<wbr/> Linear 5387 </td> 5388 5389 <td class="entry_range"> 5390 <p>0 - 10</p> 5391 </td> 5392 5393 <td class="entry_tags"> 5394 <ul class="entry_tags"> 5395 <li><a href="#tag_V1">V1</a></li> 5396 </ul> 5397 </td> 5398 5399 </tr> 5400 <tr class="entries_header"> 5401 <th class="th_details" colspan="5">Details</th> 5402 </tr> 5403 <tr class="entry_cont"> 5404 <td class="entry_details" colspan="5"> 5405 <p>Power for snapshot may use a different scale than 5406for torch mode.<wbr/> Only one entry for torch mode will be 5407used</p> 5408 </td> 5409 </tr> 5410 5411 5412 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5413 <!-- end of entry --> 5414 5415 5416 <tr class="entry" id="controls_android.flash.firingTime"> 5417 <td class="entry_name" rowspan="3"> 5418 android.<wbr/>flash.<wbr/>firing<wbr/>Time 5419 </td> 5420 <td class="entry_type"> 5421 <span class="entry_type_name">int64</span> 5422 5423 <span class="entry_type_visibility"> [system]</span> 5424 5425 5426 </td> <!-- entry_type --> 5427 5428 <td class="entry_description"> 5429 <p>Firing time of flash relative to start of 5430exposure</p> 5431 </td> 5432 5433 <td class="entry_units"> 5434 nanoseconds 5435 </td> 5436 5437 <td class="entry_range"> 5438 <p>0-(exposure time-flash duration)</p> 5439 </td> 5440 5441 <td class="entry_tags"> 5442 <ul class="entry_tags"> 5443 <li><a href="#tag_V1">V1</a></li> 5444 </ul> 5445 </td> 5446 5447 </tr> 5448 <tr class="entries_header"> 5449 <th class="th_details" colspan="5">Details</th> 5450 </tr> 5451 <tr class="entry_cont"> 5452 <td class="entry_details" colspan="5"> 5453 <p>Clamped to (0,<wbr/> exposure time - flash 5454duration).<wbr/></p> 5455 </td> 5456 </tr> 5457 5458 5459 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5460 <!-- end of entry --> 5461 5462 5463 <tr class="entry" id="controls_android.flash.mode"> 5464 <td class="entry_name" rowspan="3"> 5465 android.<wbr/>flash.<wbr/>mode 5466 </td> 5467 <td class="entry_type"> 5468 <span class="entry_type_name entry_type_name_enum">byte</span> 5469 5470 <span class="entry_type_visibility"> [public]</span> 5471 5472 <ul class="entry_type_enum"> 5473 <li> 5474 <span class="entry_type_enum_name">OFF</span> 5475 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 5476 </li> 5477 <li> 5478 <span class="entry_type_enum_name">SINGLE</span> 5479 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 5480for this capture based on <a href="#controls_android.flash.firingPower">android.<wbr/>flash.<wbr/>firing<wbr/>Power</a> and 5481<a href="#controls_android.flash.firingTime">android.<wbr/>flash.<wbr/>firing<wbr/>Time</a>.<wbr/></p></span> 5482 </li> 5483 <li> 5484 <span class="entry_type_enum_name">TORCH</span> 5485 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 5486 </li> 5487 </ul> 5488 5489 </td> <!-- entry_type --> 5490 5491 <td class="entry_description"> 5492 <p>The desired mode for for the camera device's flash control.<wbr/></p> 5493 </td> 5494 5495 <td class="entry_units"> 5496 </td> 5497 5498 <td class="entry_range"> 5499 </td> 5500 5501 <td class="entry_tags"> 5502 <ul class="entry_tags"> 5503 <li><a href="#tag_BC">BC</a></li> 5504 </ul> 5505 </td> 5506 5507 </tr> 5508 <tr class="entries_header"> 5509 <th class="th_details" colspan="5">Details</th> 5510 </tr> 5511 <tr class="entry_cont"> 5512 <td class="entry_details" colspan="5"> 5513 <p>This control is only effective when flash unit is available 5514(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 5515<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/> 5516Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 5517ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 5518<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 5519<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 5520device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 5521control should be used along with AE precapture metering sequence 5522(<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> 5523<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 5524for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 5525<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> 5526 </td> 5527 </tr> 5528 5529 5530 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5531 <!-- end of entry --> 5532 5533 5534 5535 <!-- end of kind --> 5536 </tbody> 5537 <tr><td colspan="6" class="kind">static</td></tr> 5538 5539 <thead class="entries_header"> 5540 <tr> 5541 <th class="th_name">Property Name</th> 5542 <th class="th_type">Type</th> 5543 <th class="th_description">Description</th> 5544 <th class="th_units">Units</th> 5545 <th class="th_range">Range</th> 5546 <th class="th_tags">Tags</th> 5547 </tr> 5548 </thead> 5549 5550 <tbody> 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 <tr class="entry" id="static_android.flash.info.available"> 5564 <td class="entry_name" rowspan="3"> 5565 android.<wbr/>flash.<wbr/>info.<wbr/>available 5566 </td> 5567 <td class="entry_type"> 5568 <span class="entry_type_name entry_type_name_enum">byte</span> 5569 5570 <span class="entry_type_visibility"> [public as boolean]</span> 5571 5572 <ul class="entry_type_enum"> 5573 <li> 5574 <span class="entry_type_enum_name">FALSE</span> 5575 </li> 5576 <li> 5577 <span class="entry_type_enum_name">TRUE</span> 5578 </li> 5579 </ul> 5580 5581 </td> <!-- entry_type --> 5582 5583 <td class="entry_description"> 5584 <p>Whether this camera device has a 5585flash.<wbr/></p> 5586 </td> 5587 5588 <td class="entry_units"> 5589 </td> 5590 5591 <td class="entry_range"> 5592 </td> 5593 5594 <td class="entry_tags"> 5595 <ul class="entry_tags"> 5596 <li><a href="#tag_BC">BC</a></li> 5597 </ul> 5598 </td> 5599 5600 </tr> 5601 <tr class="entries_header"> 5602 <th class="th_details" colspan="5">Details</th> 5603 </tr> 5604 <tr class="entry_cont"> 5605 <td class="entry_details" colspan="5"> 5606 <p>If no flash,<wbr/> none of the flash controls do 5607anything.<wbr/> All other metadata should return 0.<wbr/></p> 5608 </td> 5609 </tr> 5610 5611 5612 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5613 <!-- end of entry --> 5614 5615 5616 <tr class="entry" id="static_android.flash.info.chargeDuration"> 5617 <td class="entry_name" rowspan="3"> 5618 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 5619 </td> 5620 <td class="entry_type"> 5621 <span class="entry_type_name">int64</span> 5622 5623 <span class="entry_type_visibility"> [system]</span> 5624 5625 5626 </td> <!-- entry_type --> 5627 5628 <td class="entry_description"> 5629 <p>Time taken before flash can fire 5630again</p> 5631 </td> 5632 5633 <td class="entry_units"> 5634 nanoseconds 5635 </td> 5636 5637 <td class="entry_range"> 5638 <p>0-1e9</p> 5639 </td> 5640 5641 <td class="entry_tags"> 5642 <ul class="entry_tags"> 5643 <li><a href="#tag_V1">V1</a></li> 5644 </ul> 5645 </td> 5646 5647 </tr> 5648 <tr class="entries_header"> 5649 <th class="th_details" colspan="5">Details</th> 5650 </tr> 5651 <tr class="entry_cont"> 5652 <td class="entry_details" colspan="5"> 5653 <p>1 second too long/<wbr/>too short for recharge? Should 5654this be power-dependent?</p> 5655 </td> 5656 </tr> 5657 5658 5659 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5660 <!-- end of entry --> 5661 5662 5663 5664 5665 5666 <tr class="entry" id="static_android.flash.colorTemperature"> 5667 <td class="entry_name" rowspan="1"> 5668 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 5669 </td> 5670 <td class="entry_type"> 5671 <span class="entry_type_name">byte</span> 5672 5673 <span class="entry_type_visibility"> [system]</span> 5674 5675 5676 </td> <!-- entry_type --> 5677 5678 <td class="entry_description"> 5679 <p>The x,<wbr/>y whitepoint of the 5680flash</p> 5681 </td> 5682 5683 <td class="entry_units"> 5684 pair of floats 5685 </td> 5686 5687 <td class="entry_range"> 5688 <p>0-1 for both</p> 5689 </td> 5690 5691 <td class="entry_tags"> 5692 <ul class="entry_tags"> 5693 <li><a href="#tag_ADV">ADV</a></li> 5694 </ul> 5695 </td> 5696 5697 </tr> 5698 5699 5700 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5701 <!-- end of entry --> 5702 5703 5704 <tr class="entry" id="static_android.flash.maxEnergy"> 5705 <td class="entry_name" rowspan="1"> 5706 android.<wbr/>flash.<wbr/>max<wbr/>Energy 5707 </td> 5708 <td class="entry_type"> 5709 <span class="entry_type_name">byte</span> 5710 5711 <span class="entry_type_visibility"> [system]</span> 5712 5713 5714 </td> <!-- entry_type --> 5715 5716 <td class="entry_description"> 5717 <p>Max energy output of the flash for a full 5718power single flash</p> 5719 </td> 5720 5721 <td class="entry_units"> 5722 lumen-seconds 5723 </td> 5724 5725 <td class="entry_range"> 5726 <p>>= 0</p> 5727 </td> 5728 5729 <td class="entry_tags"> 5730 <ul class="entry_tags"> 5731 <li><a href="#tag_ADV">ADV</a></li> 5732 </ul> 5733 </td> 5734 5735 </tr> 5736 5737 5738 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5739 <!-- end of entry --> 5740 5741 5742 5743 <!-- end of kind --> 5744 </tbody> 5745 <tr><td colspan="6" class="kind">dynamic</td></tr> 5746 5747 <thead class="entries_header"> 5748 <tr> 5749 <th class="th_name">Property Name</th> 5750 <th class="th_type">Type</th> 5751 <th class="th_description">Description</th> 5752 <th class="th_units">Units</th> 5753 <th class="th_range">Range</th> 5754 <th class="th_tags">Tags</th> 5755 </tr> 5756 </thead> 5757 5758 <tbody> 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 <tr class="entry" id="dynamic_android.flash.firingPower"> 5770 <td class="entry_name" rowspan="3"> 5771 android.<wbr/>flash.<wbr/>firing<wbr/>Power 5772 </td> 5773 <td class="entry_type"> 5774 <span class="entry_type_name">byte</span> 5775 5776 <span class="entry_type_visibility"> [system]</span> 5777 5778 5779 </td> <!-- entry_type --> 5780 5781 <td class="entry_description"> 5782 <p>Power for flash firing/<wbr/>torch</p> 5783 </td> 5784 5785 <td class="entry_units"> 5786 10 is max power; 0 is no flash.<wbr/> Linear 5787 </td> 5788 5789 <td class="entry_range"> 5790 <p>0 - 10</p> 5791 </td> 5792 5793 <td class="entry_tags"> 5794 <ul class="entry_tags"> 5795 <li><a href="#tag_V1">V1</a></li> 5796 </ul> 5797 </td> 5798 5799 </tr> 5800 <tr class="entries_header"> 5801 <th class="th_details" colspan="5">Details</th> 5802 </tr> 5803 <tr class="entry_cont"> 5804 <td class="entry_details" colspan="5"> 5805 <p>Power for snapshot may use a different scale than 5806for torch mode.<wbr/> Only one entry for torch mode will be 5807used</p> 5808 </td> 5809 </tr> 5810 5811 5812 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5813 <!-- end of entry --> 5814 5815 5816 <tr class="entry" id="dynamic_android.flash.firingTime"> 5817 <td class="entry_name" rowspan="3"> 5818 android.<wbr/>flash.<wbr/>firing<wbr/>Time 5819 </td> 5820 <td class="entry_type"> 5821 <span class="entry_type_name">int64</span> 5822 5823 <span class="entry_type_visibility"> [system]</span> 5824 5825 5826 </td> <!-- entry_type --> 5827 5828 <td class="entry_description"> 5829 <p>Firing time of flash relative to start of 5830exposure</p> 5831 </td> 5832 5833 <td class="entry_units"> 5834 nanoseconds 5835 </td> 5836 5837 <td class="entry_range"> 5838 <p>0-(exposure time-flash duration)</p> 5839 </td> 5840 5841 <td class="entry_tags"> 5842 <ul class="entry_tags"> 5843 <li><a href="#tag_V1">V1</a></li> 5844 </ul> 5845 </td> 5846 5847 </tr> 5848 <tr class="entries_header"> 5849 <th class="th_details" colspan="5">Details</th> 5850 </tr> 5851 <tr class="entry_cont"> 5852 <td class="entry_details" colspan="5"> 5853 <p>Clamped to (0,<wbr/> exposure time - flash 5854duration).<wbr/></p> 5855 </td> 5856 </tr> 5857 5858 5859 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5860 <!-- end of entry --> 5861 5862 5863 <tr class="entry" id="dynamic_android.flash.mode"> 5864 <td class="entry_name" rowspan="3"> 5865 android.<wbr/>flash.<wbr/>mode 5866 </td> 5867 <td class="entry_type"> 5868 <span class="entry_type_name entry_type_name_enum">byte</span> 5869 5870 <span class="entry_type_visibility"> [public]</span> 5871 5872 <ul class="entry_type_enum"> 5873 <li> 5874 <span class="entry_type_enum_name">OFF</span> 5875 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 5876 </li> 5877 <li> 5878 <span class="entry_type_enum_name">SINGLE</span> 5879 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 5880for this capture based on <a href="#controls_android.flash.firingPower">android.<wbr/>flash.<wbr/>firing<wbr/>Power</a> and 5881<a href="#controls_android.flash.firingTime">android.<wbr/>flash.<wbr/>firing<wbr/>Time</a>.<wbr/></p></span> 5882 </li> 5883 <li> 5884 <span class="entry_type_enum_name">TORCH</span> 5885 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 5886 </li> 5887 </ul> 5888 5889 </td> <!-- entry_type --> 5890 5891 <td class="entry_description"> 5892 <p>The desired mode for for the camera device's flash control.<wbr/></p> 5893 </td> 5894 5895 <td class="entry_units"> 5896 </td> 5897 5898 <td class="entry_range"> 5899 </td> 5900 5901 <td class="entry_tags"> 5902 <ul class="entry_tags"> 5903 <li><a href="#tag_BC">BC</a></li> 5904 </ul> 5905 </td> 5906 5907 </tr> 5908 <tr class="entries_header"> 5909 <th class="th_details" colspan="5">Details</th> 5910 </tr> 5911 <tr class="entry_cont"> 5912 <td class="entry_details" colspan="5"> 5913 <p>This control is only effective when flash unit is available 5914(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 5915<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/> 5916Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 5917ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 5918<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 5919<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 5920device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 5921control should be used along with AE precapture metering sequence 5922(<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> 5923<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 5924for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 5925<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> 5926 </td> 5927 </tr> 5928 5929 5930 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5931 <!-- end of entry --> 5932 5933 5934 <tr class="entry" id="dynamic_android.flash.state"> 5935 <td class="entry_name" rowspan="3"> 5936 android.<wbr/>flash.<wbr/>state 5937 </td> 5938 <td class="entry_type"> 5939 <span class="entry_type_name entry_type_name_enum">byte</span> 5940 5941 <span class="entry_type_visibility"> [public]</span> 5942 5943 <ul class="entry_type_enum"> 5944 <li> 5945 <span class="entry_type_enum_name">UNAVAILABLE</span> 5946 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> 5947 </li> 5948 <li> 5949 <span class="entry_type_enum_name">CHARGING</span> 5950 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> 5951 </li> 5952 <li> 5953 <span class="entry_type_enum_name">READY</span> 5954 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> 5955 </li> 5956 <li> 5957 <span class="entry_type_enum_name">FIRED</span> 5958 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> 5959 </li> 5960 <li> 5961 <span class="entry_type_enum_name">PARTIAL</span> 5962 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/> This is usually due to the next 5963or previous frame having the flash fire,<wbr/> and the flash spilling into this capture 5964due to hardware limitations.<wbr/></p></span> 5965 </li> 5966 </ul> 5967 5968 </td> <!-- entry_type --> 5969 5970 <td class="entry_description"> 5971 <p>Current state of the flash 5972unit.<wbr/></p> 5973 </td> 5974 5975 <td class="entry_units"> 5976 </td> 5977 5978 <td class="entry_range"> 5979 </td> 5980 5981 <td class="entry_tags"> 5982 </td> 5983 5984 </tr> 5985 <tr class="entries_header"> 5986 <th class="th_details" colspan="5">Details</th> 5987 </tr> 5988 <tr class="entry_cont"> 5989 <td class="entry_details" colspan="5"> 5990 <p>When the camera device doesn't have flash unit 5991(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/> 5992Other states indicate the current flash status.<wbr/></p> 5993 </td> 5994 </tr> 5995 5996 5997 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5998 <!-- end of entry --> 5999 6000 6001 6002 <!-- end of kind --> 6003 </tbody> 6004 6005 <!-- end of section --> 6006 <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr> 6007 6008 6009 <tr><td colspan="6" class="kind">controls</td></tr> 6010 6011 <thead class="entries_header"> 6012 <tr> 6013 <th class="th_name">Property Name</th> 6014 <th class="th_type">Type</th> 6015 <th class="th_description">Description</th> 6016 <th class="th_units">Units</th> 6017 <th class="th_range">Range</th> 6018 <th class="th_tags">Tags</th> 6019 </tr> 6020 </thead> 6021 6022 <tbody> 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 <tr class="entry" id="controls_android.hotPixel.mode"> 6034 <td class="entry_name" rowspan="3"> 6035 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 6036 </td> 6037 <td class="entry_type"> 6038 <span class="entry_type_name entry_type_name_enum">byte</span> 6039 6040 <span class="entry_type_visibility"> [public]</span> 6041 6042 <ul class="entry_type_enum"> 6043 <li> 6044 <span class="entry_type_enum_name">OFF</span> 6045 <span class="entry_type_enum_notes"><p>The frame rate must not be reduced relative to sensor raw output 6046for this option.<wbr/></p> 6047<p>No hot pixel correction is applied.<wbr/> 6048The 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> 6049 </li> 6050 <li> 6051 <span class="entry_type_enum_name">FAST</span> 6052 <span class="entry_type_enum_notes"><p>The frame rate must not be reduced relative to sensor raw output 6053for this option.<wbr/></p> 6054<p>Hot pixel correction is applied.<wbr/> 6055The 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> 6056 </li> 6057 <li> 6058 <span class="entry_type_enum_name">HIGH_QUALITY</span> 6059 <span class="entry_type_enum_notes"><p>The frame rate may be reduced relative to sensor raw output 6060for this option.<wbr/></p> 6061<p>A high-quality hot pixel correction is applied.<wbr/> 6062The 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> 6063 </li> 6064 </ul> 6065 6066 </td> <!-- entry_type --> 6067 6068 <td class="entry_description"> 6069 <p>Set operational mode for hot pixel correction.<wbr/></p> 6070 </td> 6071 6072 <td class="entry_units"> 6073 </td> 6074 6075 <td class="entry_range"> 6076 </td> 6077 6078 <td class="entry_tags"> 6079 <ul class="entry_tags"> 6080 <li><a href="#tag_V1">V1</a></li> 6081 <li><a href="#tag_DNG">DNG</a></li> 6082 </ul> 6083 </td> 6084 6085 </tr> 6086 <tr class="entries_header"> 6087 <th class="th_details" colspan="5">Details</th> 6088 </tr> 6089 <tr class="entry_cont"> 6090 <td class="entry_details" colspan="5"> 6091 <p>Valid modes for this camera device are listed in 6092<a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a>.<wbr/></p> 6093<p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 6094that do not accurately encode the incoming light (i.<wbr/>e.<wbr/> pixels that 6095are stuck at an arbitrary value).<wbr/></p> 6096 </td> 6097 </tr> 6098 6099 6100 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6101 <!-- end of entry --> 6102 6103 6104 6105 <!-- end of kind --> 6106 </tbody> 6107 <tr><td colspan="6" class="kind">static</td></tr> 6108 6109 <thead class="entries_header"> 6110 <tr> 6111 <th class="th_name">Property Name</th> 6112 <th class="th_type">Type</th> 6113 <th class="th_description">Description</th> 6114 <th class="th_units">Units</th> 6115 <th class="th_range">Range</th> 6116 <th class="th_tags">Tags</th> 6117 </tr> 6118 </thead> 6119 6120 <tbody> 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> 6132 <td class="entry_name" rowspan="5"> 6133 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes 6134 </td> 6135 <td class="entry_type"> 6136 <span class="entry_type_name">byte</span> 6137 <span class="entry_type_container">x</span> 6138 6139 <span class="entry_type_array"> 6140 n 6141 </span> 6142 <span class="entry_type_visibility"> [public]</span> 6143 <div class="entry_type_notes">list of enums</div> 6144 6145 6146 </td> <!-- entry_type --> 6147 6148 <td class="entry_description"> 6149 <p>The set of hot pixel correction modes that are supported by this 6150camera device.<wbr/></p> 6151 </td> 6152 6153 <td class="entry_units"> 6154 </td> 6155 6156 <td class="entry_range"> 6157 </td> 6158 6159 <td class="entry_tags"> 6160 <ul class="entry_tags"> 6161 <li><a href="#tag_ADV">ADV</a></li> 6162 <li><a href="#tag_V1">V1</a></li> 6163 <li><a href="#tag_DNG">DNG</a></li> 6164 </ul> 6165 </td> 6166 6167 </tr> 6168 <tr class="entries_header"> 6169 <th class="th_details" colspan="5">Details</th> 6170 </tr> 6171 <tr class="entry_cont"> 6172 <td class="entry_details" colspan="5"> 6173 <p>This tag lists valid modes for <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a>.<wbr/></p> 6174<p>FULL mode camera devices will always support FAST.<wbr/></p> 6175 </td> 6176 </tr> 6177 6178 <tr class="entries_header"> 6179 <th class="th_details" colspan="5">HAL Implementation Details</th> 6180 </tr> 6181 <tr class="entry_cont"> 6182 <td class="entry_details" colspan="5"> 6183 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot 6184pixels than actual pixels on the camera sensor.<wbr/></p> 6185 </td> 6186 </tr> 6187 6188 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6189 <!-- end of entry --> 6190 6191 6192 6193 <!-- end of kind --> 6194 </tbody> 6195 <tr><td colspan="6" class="kind">dynamic</td></tr> 6196 6197 <thead class="entries_header"> 6198 <tr> 6199 <th class="th_name">Property Name</th> 6200 <th class="th_type">Type</th> 6201 <th class="th_description">Description</th> 6202 <th class="th_units">Units</th> 6203 <th class="th_range">Range</th> 6204 <th class="th_tags">Tags</th> 6205 </tr> 6206 </thead> 6207 6208 <tbody> 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 <tr class="entry" id="dynamic_android.hotPixel.mode"> 6220 <td class="entry_name" rowspan="3"> 6221 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 6222 </td> 6223 <td class="entry_type"> 6224 <span class="entry_type_name entry_type_name_enum">byte</span> 6225 6226 <span class="entry_type_visibility"> [public]</span> 6227 6228 <ul class="entry_type_enum"> 6229 <li> 6230 <span class="entry_type_enum_name">OFF</span> 6231 <span class="entry_type_enum_notes"><p>The frame rate must not be reduced relative to sensor raw output 6232for this option.<wbr/></p> 6233<p>No hot pixel correction is applied.<wbr/> 6234The 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> 6235 </li> 6236 <li> 6237 <span class="entry_type_enum_name">FAST</span> 6238 <span class="entry_type_enum_notes"><p>The frame rate must not be reduced relative to sensor raw output 6239for this option.<wbr/></p> 6240<p>Hot pixel correction is applied.<wbr/> 6241The 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> 6242 </li> 6243 <li> 6244 <span class="entry_type_enum_name">HIGH_QUALITY</span> 6245 <span class="entry_type_enum_notes"><p>The frame rate may be reduced relative to sensor raw output 6246for this option.<wbr/></p> 6247<p>A high-quality hot pixel correction is applied.<wbr/> 6248The 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> 6249 </li> 6250 </ul> 6251 6252 </td> <!-- entry_type --> 6253 6254 <td class="entry_description"> 6255 <p>Set operational mode for hot pixel correction.<wbr/></p> 6256 </td> 6257 6258 <td class="entry_units"> 6259 </td> 6260 6261 <td class="entry_range"> 6262 </td> 6263 6264 <td class="entry_tags"> 6265 <ul class="entry_tags"> 6266 <li><a href="#tag_V1">V1</a></li> 6267 <li><a href="#tag_DNG">DNG</a></li> 6268 </ul> 6269 </td> 6270 6271 </tr> 6272 <tr class="entries_header"> 6273 <th class="th_details" colspan="5">Details</th> 6274 </tr> 6275 <tr class="entry_cont"> 6276 <td class="entry_details" colspan="5"> 6277 <p>Valid modes for this camera device are listed in 6278<a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a>.<wbr/></p> 6279<p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 6280that do not accurately encode the incoming light (i.<wbr/>e.<wbr/> pixels that 6281are stuck at an arbitrary value).<wbr/></p> 6282 </td> 6283 </tr> 6284 6285 6286 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6287 <!-- end of entry --> 6288 6289 6290 6291 <!-- end of kind --> 6292 </tbody> 6293 6294 <!-- end of section --> 6295 <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr> 6296 6297 6298 <tr><td colspan="6" class="kind">controls</td></tr> 6299 6300 <thead class="entries_header"> 6301 <tr> 6302 <th class="th_name">Property Name</th> 6303 <th class="th_type">Type</th> 6304 <th class="th_description">Description</th> 6305 <th class="th_units">Units</th> 6306 <th class="th_range">Range</th> 6307 <th class="th_tags">Tags</th> 6308 </tr> 6309 </thead> 6310 6311 <tbody> 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 6323 <td class="entry_name" rowspan="1"> 6324 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 6325 </td> 6326 <td class="entry_type"> 6327 <span class="entry_type_name">double</span> 6328 <span class="entry_type_container">x</span> 6329 6330 <span class="entry_type_array"> 6331 3 6332 </span> 6333 <span class="entry_type_visibility"> [public]</span> 6334 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 6335 6336 6337 </td> <!-- entry_type --> 6338 6339 <td class="entry_description"> 6340 <p>GPS coordinates to include in output JPEG 6341EXIF</p> 6342 </td> 6343 6344 <td class="entry_units"> 6345 </td> 6346 6347 <td class="entry_range"> 6348 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 6349 </td> 6350 6351 <td class="entry_tags"> 6352 <ul class="entry_tags"> 6353 <li><a href="#tag_BC">BC</a></li> 6354 </ul> 6355 </td> 6356 6357 </tr> 6358 6359 6360 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6361 <!-- end of entry --> 6362 6363 6364 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 6365 <td class="entry_name" rowspan="1"> 6366 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 6367 </td> 6368 <td class="entry_type"> 6369 <span class="entry_type_name">byte</span> 6370 6371 <span class="entry_type_visibility"> [public as string]</span> 6372 6373 6374 </td> <!-- entry_type --> 6375 6376 <td class="entry_description"> 6377 <p>32 characters describing GPS algorithm to 6378include in EXIF</p> 6379 </td> 6380 6381 <td class="entry_units"> 6382 UTF-8 null-terminated string 6383 </td> 6384 6385 <td class="entry_range"> 6386 </td> 6387 6388 <td class="entry_tags"> 6389 <ul class="entry_tags"> 6390 <li><a href="#tag_BC">BC</a></li> 6391 </ul> 6392 </td> 6393 6394 </tr> 6395 6396 6397 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6398 <!-- end of entry --> 6399 6400 6401 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 6402 <td class="entry_name" rowspan="1"> 6403 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 6404 </td> 6405 <td class="entry_type"> 6406 <span class="entry_type_name">int64</span> 6407 6408 <span class="entry_type_visibility"> [public]</span> 6409 6410 6411 </td> <!-- entry_type --> 6412 6413 <td class="entry_description"> 6414 <p>Time GPS fix was made to include in 6415EXIF</p> 6416 </td> 6417 6418 <td class="entry_units"> 6419 UTC in seconds since January 1,<wbr/> 1970 6420 </td> 6421 6422 <td class="entry_range"> 6423 </td> 6424 6425 <td class="entry_tags"> 6426 <ul class="entry_tags"> 6427 <li><a href="#tag_BC">BC</a></li> 6428 </ul> 6429 </td> 6430 6431 </tr> 6432 6433 6434 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6435 <!-- end of entry --> 6436 6437 6438 <tr class="entry" id="controls_android.jpeg.orientation"> 6439 <td class="entry_name" rowspan="1"> 6440 android.<wbr/>jpeg.<wbr/>orientation 6441 </td> 6442 <td class="entry_type"> 6443 <span class="entry_type_name">int32</span> 6444 6445 <span class="entry_type_visibility"> [public]</span> 6446 6447 6448 </td> <!-- entry_type --> 6449 6450 <td class="entry_description"> 6451 <p>Orientation of JPEG image to 6452write</p> 6453 </td> 6454 6455 <td class="entry_units"> 6456 Degrees in multiples of 90 6457 </td> 6458 6459 <td class="entry_range"> 6460 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 6461 </td> 6462 6463 <td class="entry_tags"> 6464 <ul class="entry_tags"> 6465 <li><a href="#tag_BC">BC</a></li> 6466 </ul> 6467 </td> 6468 6469 </tr> 6470 6471 6472 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6473 <!-- end of entry --> 6474 6475 6476 <tr class="entry" id="controls_android.jpeg.quality"> 6477 <td class="entry_name" rowspan="3"> 6478 android.<wbr/>jpeg.<wbr/>quality 6479 </td> 6480 <td class="entry_type"> 6481 <span class="entry_type_name">byte</span> 6482 6483 <span class="entry_type_visibility"> [public]</span> 6484 6485 6486 </td> <!-- entry_type --> 6487 6488 <td class="entry_description"> 6489 <p>Compression quality of the final JPEG 6490image</p> 6491 </td> 6492 6493 <td class="entry_units"> 6494 </td> 6495 6496 <td class="entry_range"> 6497 <p>1-100; larger is higher quality</p> 6498 </td> 6499 6500 <td class="entry_tags"> 6501 <ul class="entry_tags"> 6502 <li><a href="#tag_BC">BC</a></li> 6503 </ul> 6504 </td> 6505 6506 </tr> 6507 <tr class="entries_header"> 6508 <th class="th_details" colspan="5">Details</th> 6509 </tr> 6510 <tr class="entry_cont"> 6511 <td class="entry_details" colspan="5"> 6512 <p>85-95 is typical usage range</p> 6513 </td> 6514 </tr> 6515 6516 6517 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6518 <!-- end of entry --> 6519 6520 6521 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 6522 <td class="entry_name" rowspan="1"> 6523 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 6524 </td> 6525 <td class="entry_type"> 6526 <span class="entry_type_name">byte</span> 6527 6528 <span class="entry_type_visibility"> [public]</span> 6529 6530 6531 </td> <!-- entry_type --> 6532 6533 <td class="entry_description"> 6534 <p>Compression quality of JPEG 6535thumbnail</p> 6536 </td> 6537 6538 <td class="entry_units"> 6539 </td> 6540 6541 <td class="entry_range"> 6542 <p>1-100; larger is higher quality</p> 6543 </td> 6544 6545 <td class="entry_tags"> 6546 <ul class="entry_tags"> 6547 <li><a href="#tag_BC">BC</a></li> 6548 </ul> 6549 </td> 6550 6551 </tr> 6552 6553 6554 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6555 <!-- end of entry --> 6556 6557 6558 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 6559 <td class="entry_name" rowspan="3"> 6560 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 6561 </td> 6562 <td class="entry_type"> 6563 <span class="entry_type_name">int32</span> 6564 <span class="entry_type_container">x</span> 6565 6566 <span class="entry_type_array"> 6567 2 6568 </span> 6569 <span class="entry_type_visibility"> [public as size]</span> 6570 6571 6572 </td> <!-- entry_type --> 6573 6574 <td class="entry_description"> 6575 <p>Resolution of embedded JPEG thumbnail</p> 6576 </td> 6577 6578 <td class="entry_units"> 6579 </td> 6580 6581 <td class="entry_range"> 6582 <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> 6583 </td> 6584 6585 <td class="entry_tags"> 6586 <ul class="entry_tags"> 6587 <li><a href="#tag_BC">BC</a></li> 6588 </ul> 6589 </td> 6590 6591 </tr> 6592 <tr class="entries_header"> 6593 <th class="th_details" colspan="5">Details</th> 6594 </tr> 6595 <tr class="entry_cont"> 6596 <td class="entry_details" colspan="5"> 6597 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 6598but the captured JPEG will still be a valid image.<wbr/></p> 6599<p>When a jpeg image capture is issued,<wbr/> the thumbnail size selected should have 6600the same aspect ratio as the jpeg image.<wbr/></p> 6601 </td> 6602 </tr> 6603 6604 6605 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6606 <!-- end of entry --> 6607 6608 6609 6610 <!-- end of kind --> 6611 </tbody> 6612 <tr><td colspan="6" class="kind">static</td></tr> 6613 6614 <thead class="entries_header"> 6615 <tr> 6616 <th class="th_name">Property Name</th> 6617 <th class="th_type">Type</th> 6618 <th class="th_description">Description</th> 6619 <th class="th_units">Units</th> 6620 <th class="th_range">Range</th> 6621 <th class="th_tags">Tags</th> 6622 </tr> 6623 </thead> 6624 6625 <tbody> 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 6637 <td class="entry_name" rowspan="3"> 6638 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 6639 </td> 6640 <td class="entry_type"> 6641 <span class="entry_type_name">int32</span> 6642 <span class="entry_type_container">x</span> 6643 6644 <span class="entry_type_array"> 6645 2 x n 6646 </span> 6647 <span class="entry_type_visibility"> [public as size]</span> 6648 6649 6650 </td> <!-- entry_type --> 6651 6652 <td class="entry_description"> 6653 <p>Supported resolutions for the JPEG thumbnail</p> 6654 </td> 6655 6656 <td class="entry_units"> 6657 </td> 6658 6659 <td class="entry_range"> 6660 <p>Will include at least one valid resolution,<wbr/> plus 6661(0,<wbr/>0) for no thumbnail generation,<wbr/> and each size will be distinct.<wbr/></p> 6662 </td> 6663 6664 <td class="entry_tags"> 6665 <ul class="entry_tags"> 6666 <li><a href="#tag_BC">BC</a></li> 6667 </ul> 6668 </td> 6669 6670 </tr> 6671 <tr class="entries_header"> 6672 <th class="th_details" colspan="5">Details</th> 6673 </tr> 6674 <tr class="entry_cont"> 6675 <td class="entry_details" colspan="5"> 6676 <p>Below condiditions will be satisfied for this size list:</p> 6677<ul> 6678<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 6679If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 6680<li>The aspect ratio of the largest thumbnail size will be same as the 6681aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 6682The largest size is defined as the size that has the largest pixel area 6683in a given size list.<wbr/></li> 6684<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 6685one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 6686and vice versa.<wbr/></li> 6687<li>All non (0,<wbr/> 0) sizes will have non-zero widths and heights.<wbr/></li> 6688</ul> 6689 </td> 6690 </tr> 6691 6692 6693 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6694 <!-- end of entry --> 6695 6696 6697 <tr class="entry" id="static_android.jpeg.maxSize"> 6698 <td class="entry_name" rowspan="3"> 6699 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 6700 </td> 6701 <td class="entry_type"> 6702 <span class="entry_type_name">int32</span> 6703 6704 <span class="entry_type_visibility"> [system]</span> 6705 6706 6707 </td> <!-- entry_type --> 6708 6709 <td class="entry_description"> 6710 <p>Maximum size in bytes for the compressed 6711JPEG buffer</p> 6712 </td> 6713 6714 <td class="entry_units"> 6715 </td> 6716 6717 <td class="entry_range"> 6718 <p>Must be large enough to fit any JPEG produced by 6719the camera</p> 6720 </td> 6721 6722 <td class="entry_tags"> 6723 </td> 6724 6725 </tr> 6726 <tr class="entries_header"> 6727 <th class="th_details" colspan="5">Details</th> 6728 </tr> 6729 <tr class="entry_cont"> 6730 <td class="entry_details" colspan="5"> 6731 <p>This is used for sizing the gralloc buffers for 6732JPEG</p> 6733 </td> 6734 </tr> 6735 6736 6737 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6738 <!-- end of entry --> 6739 6740 6741 6742 <!-- end of kind --> 6743 </tbody> 6744 <tr><td colspan="6" class="kind">dynamic</td></tr> 6745 6746 <thead class="entries_header"> 6747 <tr> 6748 <th class="th_name">Property Name</th> 6749 <th class="th_type">Type</th> 6750 <th class="th_description">Description</th> 6751 <th class="th_units">Units</th> 6752 <th class="th_range">Range</th> 6753 <th class="th_tags">Tags</th> 6754 </tr> 6755 </thead> 6756 6757 <tbody> 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 6769 <td class="entry_name" rowspan="1"> 6770 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 6771 </td> 6772 <td class="entry_type"> 6773 <span class="entry_type_name">double</span> 6774 <span class="entry_type_container">x</span> 6775 6776 <span class="entry_type_array"> 6777 3 6778 </span> 6779 <span class="entry_type_visibility"> [public]</span> 6780 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 6781 6782 6783 </td> <!-- entry_type --> 6784 6785 <td class="entry_description"> 6786 <p>GPS coordinates to include in output JPEG 6787EXIF</p> 6788 </td> 6789 6790 <td class="entry_units"> 6791 </td> 6792 6793 <td class="entry_range"> 6794 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 6795 </td> 6796 6797 <td class="entry_tags"> 6798 <ul class="entry_tags"> 6799 <li><a href="#tag_BC">BC</a></li> 6800 </ul> 6801 </td> 6802 6803 </tr> 6804 6805 6806 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6807 <!-- end of entry --> 6808 6809 6810 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 6811 <td class="entry_name" rowspan="1"> 6812 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 6813 </td> 6814 <td class="entry_type"> 6815 <span class="entry_type_name">byte</span> 6816 6817 <span class="entry_type_visibility"> [public as string]</span> 6818 6819 6820 </td> <!-- entry_type --> 6821 6822 <td class="entry_description"> 6823 <p>32 characters describing GPS algorithm to 6824include in EXIF</p> 6825 </td> 6826 6827 <td class="entry_units"> 6828 UTF-8 null-terminated string 6829 </td> 6830 6831 <td class="entry_range"> 6832 </td> 6833 6834 <td class="entry_tags"> 6835 <ul class="entry_tags"> 6836 <li><a href="#tag_BC">BC</a></li> 6837 </ul> 6838 </td> 6839 6840 </tr> 6841 6842 6843 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6844 <!-- end of entry --> 6845 6846 6847 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 6848 <td class="entry_name" rowspan="1"> 6849 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 6850 </td> 6851 <td class="entry_type"> 6852 <span class="entry_type_name">int64</span> 6853 6854 <span class="entry_type_visibility"> [public]</span> 6855 6856 6857 </td> <!-- entry_type --> 6858 6859 <td class="entry_description"> 6860 <p>Time GPS fix was made to include in 6861EXIF</p> 6862 </td> 6863 6864 <td class="entry_units"> 6865 UTC in seconds since January 1,<wbr/> 1970 6866 </td> 6867 6868 <td class="entry_range"> 6869 </td> 6870 6871 <td class="entry_tags"> 6872 <ul class="entry_tags"> 6873 <li><a href="#tag_BC">BC</a></li> 6874 </ul> 6875 </td> 6876 6877 </tr> 6878 6879 6880 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6881 <!-- end of entry --> 6882 6883 6884 <tr class="entry" id="dynamic_android.jpeg.orientation"> 6885 <td class="entry_name" rowspan="1"> 6886 android.<wbr/>jpeg.<wbr/>orientation 6887 </td> 6888 <td class="entry_type"> 6889 <span class="entry_type_name">int32</span> 6890 6891 <span class="entry_type_visibility"> [public]</span> 6892 6893 6894 </td> <!-- entry_type --> 6895 6896 <td class="entry_description"> 6897 <p>Orientation of JPEG image to 6898write</p> 6899 </td> 6900 6901 <td class="entry_units"> 6902 Degrees in multiples of 90 6903 </td> 6904 6905 <td class="entry_range"> 6906 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 6907 </td> 6908 6909 <td class="entry_tags"> 6910 <ul class="entry_tags"> 6911 <li><a href="#tag_BC">BC</a></li> 6912 </ul> 6913 </td> 6914 6915 </tr> 6916 6917 6918 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6919 <!-- end of entry --> 6920 6921 6922 <tr class="entry" id="dynamic_android.jpeg.quality"> 6923 <td class="entry_name" rowspan="3"> 6924 android.<wbr/>jpeg.<wbr/>quality 6925 </td> 6926 <td class="entry_type"> 6927 <span class="entry_type_name">byte</span> 6928 6929 <span class="entry_type_visibility"> [public]</span> 6930 6931 6932 </td> <!-- entry_type --> 6933 6934 <td class="entry_description"> 6935 <p>Compression quality of the final JPEG 6936image</p> 6937 </td> 6938 6939 <td class="entry_units"> 6940 </td> 6941 6942 <td class="entry_range"> 6943 <p>1-100; larger is higher quality</p> 6944 </td> 6945 6946 <td class="entry_tags"> 6947 <ul class="entry_tags"> 6948 <li><a href="#tag_BC">BC</a></li> 6949 </ul> 6950 </td> 6951 6952 </tr> 6953 <tr class="entries_header"> 6954 <th class="th_details" colspan="5">Details</th> 6955 </tr> 6956 <tr class="entry_cont"> 6957 <td class="entry_details" colspan="5"> 6958 <p>85-95 is typical usage range</p> 6959 </td> 6960 </tr> 6961 6962 6963 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6964 <!-- end of entry --> 6965 6966 6967 <tr class="entry" id="dynamic_android.jpeg.size"> 6968 <td class="entry_name" rowspan="3"> 6969 android.<wbr/>jpeg.<wbr/>size 6970 </td> 6971 <td class="entry_type"> 6972 <span class="entry_type_name">int32</span> 6973 6974 <span class="entry_type_visibility"> [system]</span> 6975 6976 6977 </td> <!-- entry_type --> 6978 6979 <td class="entry_description"> 6980 <p>The size of the compressed JPEG image,<wbr/> in 6981bytes</p> 6982 </td> 6983 6984 <td class="entry_units"> 6985 </td> 6986 6987 <td class="entry_range"> 6988 <p>>= 0</p> 6989 </td> 6990 6991 <td class="entry_tags"> 6992 </td> 6993 6994 </tr> 6995 <tr class="entries_header"> 6996 <th class="th_details" colspan="5">Details</th> 6997 </tr> 6998 <tr class="entry_cont"> 6999 <td class="entry_details" colspan="5"> 7000 <p>If no JPEG output is produced for the request,<wbr/> 7001this must be 0.<wbr/></p> 7002<p>Otherwise,<wbr/> this describes the real size of the compressed 7003JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 7004if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 7005has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 7006the JPEG stream will be 1000000 bytes,<wbr/> of which the first 7007500000 make up the real data.<wbr/></p> 7008 </td> 7009 </tr> 7010 7011 7012 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7013 <!-- end of entry --> 7014 7015 7016 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 7017 <td class="entry_name" rowspan="1"> 7018 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 7019 </td> 7020 <td class="entry_type"> 7021 <span class="entry_type_name">byte</span> 7022 7023 <span class="entry_type_visibility"> [public]</span> 7024 7025 7026 </td> <!-- entry_type --> 7027 7028 <td class="entry_description"> 7029 <p>Compression quality of JPEG 7030thumbnail</p> 7031 </td> 7032 7033 <td class="entry_units"> 7034 </td> 7035 7036 <td class="entry_range"> 7037 <p>1-100; larger is higher quality</p> 7038 </td> 7039 7040 <td class="entry_tags"> 7041 <ul class="entry_tags"> 7042 <li><a href="#tag_BC">BC</a></li> 7043 </ul> 7044 </td> 7045 7046 </tr> 7047 7048 7049 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7050 <!-- end of entry --> 7051 7052 7053 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 7054 <td class="entry_name" rowspan="3"> 7055 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 7056 </td> 7057 <td class="entry_type"> 7058 <span class="entry_type_name">int32</span> 7059 <span class="entry_type_container">x</span> 7060 7061 <span class="entry_type_array"> 7062 2 7063 </span> 7064 <span class="entry_type_visibility"> [public as size]</span> 7065 7066 7067 </td> <!-- entry_type --> 7068 7069 <td class="entry_description"> 7070 <p>Resolution of embedded JPEG thumbnail</p> 7071 </td> 7072 7073 <td class="entry_units"> 7074 </td> 7075 7076 <td class="entry_range"> 7077 <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> 7078 </td> 7079 7080 <td class="entry_tags"> 7081 <ul class="entry_tags"> 7082 <li><a href="#tag_BC">BC</a></li> 7083 </ul> 7084 </td> 7085 7086 </tr> 7087 <tr class="entries_header"> 7088 <th class="th_details" colspan="5">Details</th> 7089 </tr> 7090 <tr class="entry_cont"> 7091 <td class="entry_details" colspan="5"> 7092 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 7093but the captured JPEG will still be a valid image.<wbr/></p> 7094<p>When a jpeg image capture is issued,<wbr/> the thumbnail size selected should have 7095the same aspect ratio as the jpeg image.<wbr/></p> 7096 </td> 7097 </tr> 7098 7099 7100 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7101 <!-- end of entry --> 7102 7103 7104 7105 <!-- end of kind --> 7106 </tbody> 7107 7108 <!-- end of section --> 7109 <tr><td colspan="6" id="section_lens" class="section">lens</td></tr> 7110 7111 7112 <tr><td colspan="6" class="kind">controls</td></tr> 7113 7114 <thead class="entries_header"> 7115 <tr> 7116 <th class="th_name">Property Name</th> 7117 <th class="th_type">Type</th> 7118 <th class="th_description">Description</th> 7119 <th class="th_units">Units</th> 7120 <th class="th_range">Range</th> 7121 <th class="th_tags">Tags</th> 7122 </tr> 7123 </thead> 7124 7125 <tbody> 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7136 <tr class="entry" id="controls_android.lens.aperture"> 7137 <td class="entry_name" rowspan="3"> 7138 android.<wbr/>lens.<wbr/>aperture 7139 </td> 7140 <td class="entry_type"> 7141 <span class="entry_type_name">float</span> 7142 7143 <span class="entry_type_visibility"> [public]</span> 7144 7145 7146 </td> <!-- entry_type --> 7147 7148 <td class="entry_description"> 7149 <p>The ratio of lens focal length to the effective 7150aperture diameter.<wbr/></p> 7151 </td> 7152 7153 <td class="entry_units"> 7154 f-number (f/<wbr/>NNN) 7155 </td> 7156 7157 <td class="entry_range"> 7158 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 7159 </td> 7160 7161 <td class="entry_tags"> 7162 <ul class="entry_tags"> 7163 <li><a href="#tag_V1">V1</a></li> 7164 </ul> 7165 </td> 7166 7167 </tr> 7168 <tr class="entries_header"> 7169 <th class="th_details" colspan="5">Details</th> 7170 </tr> 7171 <tr class="entry_cont"> 7172 <td class="entry_details" colspan="5"> 7173 <p>This will only be supported on the camera devices that 7174have variable aperture lens.<wbr/> The aperture value can only be 7175one of the values listed in <a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a>.<wbr/></p> 7176<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 7177this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 7178<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> 7179to achieve manual exposure control.<wbr/></p> 7180<p>The requested aperture value may take several frames to reach the 7181requested value; the camera device will report the current (intermediate) 7182aperture size in capture result metadata while the aperture is changing.<wbr/> 7183While 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> 7184<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 7185the ON modes,<wbr/> this will be overridden by the camera device 7186auto-exposure algorithm,<wbr/> the overridden values are then provided 7187back to the user in the corresponding result.<wbr/></p> 7188 </td> 7189 </tr> 7190 7191 7192 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7193 <!-- end of entry --> 7194 7195 7196 <tr class="entry" id="controls_android.lens.filterDensity"> 7197 <td class="entry_name" rowspan="3"> 7198 android.<wbr/>lens.<wbr/>filter<wbr/>Density 7199 </td> 7200 <td class="entry_type"> 7201 <span class="entry_type_name">float</span> 7202 7203 <span class="entry_type_visibility"> [public]</span> 7204 7205 7206 </td> <!-- entry_type --> 7207 7208 <td class="entry_description"> 7209 <p>State of lens neutral density filter(s).<wbr/></p> 7210 </td> 7211 7212 <td class="entry_units"> 7213 Steps of Exposure Value (EV).<wbr/> 7214 </td> 7215 7216 <td class="entry_range"> 7217 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 7218 </td> 7219 7220 <td class="entry_tags"> 7221 <ul class="entry_tags"> 7222 <li><a href="#tag_V1">V1</a></li> 7223 </ul> 7224 </td> 7225 7226 </tr> 7227 <tr class="entries_header"> 7228 <th class="th_details" colspan="5">Details</th> 7229 </tr> 7230 <tr class="entry_cont"> 7231 <td class="entry_details" colspan="5"> 7232 <p>This will not be supported on most camera devices.<wbr/> On devices 7233where this is supported,<wbr/> this may only be set to one of the 7234values included in <a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a>.<wbr/></p> 7235<p>Lens filters are typically used to lower the amount of light the 7236sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 7237step is the standard logarithmic representation,<wbr/> which are 7238non-negative,<wbr/> and inversely proportional to the amount of light 7239hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 7240in no reduction of the incoming light,<wbr/> and setting this to 2 would 7241mean that the filter is set to reduce incoming light by two stops 7242(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 7243<p>It may take several frames before the lens filter density changes 7244to the requested value.<wbr/> While the filter density is still changing,<wbr/> 7245<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 7246 </td> 7247 </tr> 7248 7249 7250 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7251 <!-- end of entry --> 7252 7253 7254 <tr class="entry" id="controls_android.lens.focalLength"> 7255 <td class="entry_name" rowspan="3"> 7256 android.<wbr/>lens.<wbr/>focal<wbr/>Length 7257 </td> 7258 <td class="entry_type"> 7259 <span class="entry_type_name">float</span> 7260 7261 <span class="entry_type_visibility"> [public]</span> 7262 7263 7264 </td> <!-- entry_type --> 7265 7266 <td class="entry_description"> 7267 <p>The current lens focal length; used for optical zoom.<wbr/></p> 7268 </td> 7269 7270 <td class="entry_units"> 7271 focal length in mm 7272 </td> 7273 7274 <td class="entry_range"> 7275 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 7276 </td> 7277 7278 <td class="entry_tags"> 7279 <ul class="entry_tags"> 7280 <li><a href="#tag_V1">V1</a></li> 7281 </ul> 7282 </td> 7283 7284 </tr> 7285 <tr class="entries_header"> 7286 <th class="th_details" colspan="5">Details</th> 7287 </tr> 7288 <tr class="entry_cont"> 7289 <td class="entry_details" colspan="5"> 7290 <p>This setting controls the physical focal length of the camera 7291device's lens.<wbr/> Changing the focal length changes the field of 7292view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 7293<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 7294setting won't be applied instantaneously,<wbr/> and it may take several 7295frames before the lens can change to the requested focal length.<wbr/> 7296While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 7297be set to MOVING.<wbr/></p> 7298<p>This is expected not to be supported on most devices.<wbr/></p> 7299 </td> 7300 </tr> 7301 7302 7303 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7304 <!-- end of entry --> 7305 7306 7307 <tr class="entry" id="controls_android.lens.focusDistance"> 7308 <td class="entry_name" rowspan="3"> 7309 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 7310 </td> 7311 <td class="entry_type"> 7312 <span class="entry_type_name">float</span> 7313 7314 <span class="entry_type_visibility"> [public]</span> 7315 7316 7317 </td> <!-- entry_type --> 7318 7319 <td class="entry_description"> 7320 <p>Distance to plane of sharpest focus,<wbr/> 7321measured from frontmost surface of the lens</p> 7322 </td> 7323 7324 <td class="entry_units"> 7325 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 7326 </td> 7327 7328 <td class="entry_range"> 7329 <p>>= 0</p> 7330 </td> 7331 7332 <td class="entry_tags"> 7333 <ul class="entry_tags"> 7334 <li><a href="#tag_BC">BC</a></li> 7335 <li><a href="#tag_V1">V1</a></li> 7336 </ul> 7337 </td> 7338 7339 </tr> 7340 <tr class="entries_header"> 7341 <th class="th_details" colspan="5">Details</th> 7342 </tr> 7343 <tr class="entry_cont"> 7344 <td class="entry_details" colspan="5"> 7345 <p>0 means infinity focus.<wbr/> Used value will be clamped 7346to [0,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>].<wbr/></p> 7347<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 7348instantaneously,<wbr/> and it may take several frames before the lens 7349can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 7350<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 7351 </td> 7352 </tr> 7353 7354 7355 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7356 <!-- end of entry --> 7357 7358 7359 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 7360 <td class="entry_name" rowspan="3"> 7361 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 7362 </td> 7363 <td class="entry_type"> 7364 <span class="entry_type_name entry_type_name_enum">byte</span> 7365 7366 <span class="entry_type_visibility"> [public]</span> 7367 7368 <ul class="entry_type_enum"> 7369 <li> 7370 <span class="entry_type_enum_name">OFF</span> 7371 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 7372 </li> 7373 <li> 7374 <span class="entry_type_enum_name">ON</span> 7375 <span class="entry_type_enum_optional">optional</span> 7376 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 7377 </li> 7378 </ul> 7379 7380 </td> <!-- entry_type --> 7381 7382 <td class="entry_description"> 7383 <p>Sets whether the camera device uses optical image stabilization (OIS) 7384when capturing images.<wbr/></p> 7385 </td> 7386 7387 <td class="entry_units"> 7388 </td> 7389 7390 <td class="entry_range"> 7391 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 7392 </td> 7393 7394 <td class="entry_tags"> 7395 <ul class="entry_tags"> 7396 <li><a href="#tag_V1">V1</a></li> 7397 </ul> 7398 </td> 7399 7400 </tr> 7401 <tr class="entries_header"> 7402 <th class="th_details" colspan="5">Details</th> 7403 </tr> 7404 <tr class="entry_cont"> 7405 <td class="entry_details" colspan="5"> 7406 <p>OIS is used to compensate for motion blur due to small movements of 7407the camera during capture.<wbr/> Unlike digital image stabilization,<wbr/> OIS makes 7408use of mechanical elements to stabilize the camera sensor,<wbr/> and thus 7409allows for longer exposure times before camera shake becomes 7410apparent.<wbr/></p> 7411<p>This is not expected to be supported on most devices.<wbr/></p> 7412 </td> 7413 </tr> 7414 7415 7416 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7417 <!-- end of entry --> 7418 7419 7420 7421 <!-- end of kind --> 7422 </tbody> 7423 <tr><td colspan="6" class="kind">static</td></tr> 7424 7425 <thead class="entries_header"> 7426 <tr> 7427 <th class="th_name">Property Name</th> 7428 <th class="th_type">Type</th> 7429 <th class="th_description">Description</th> 7430 <th class="th_units">Units</th> 7431 <th class="th_range">Range</th> 7432 <th class="th_tags">Tags</th> 7433 </tr> 7434 </thead> 7435 7436 <tbody> 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 <tr class="entry" id="static_android.lens.info.availableApertures"> 7450 <td class="entry_name" rowspan="3"> 7451 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 7452 </td> 7453 <td class="entry_type"> 7454 <span class="entry_type_name">float</span> 7455 <span class="entry_type_container">x</span> 7456 7457 <span class="entry_type_array"> 7458 n 7459 </span> 7460 <span class="entry_type_visibility"> [public]</span> 7461 7462 7463 </td> <!-- entry_type --> 7464 7465 <td class="entry_description"> 7466 <p>List of supported aperture 7467values.<wbr/></p> 7468 </td> 7469 7470 <td class="entry_units"> 7471 </td> 7472 7473 <td class="entry_range"> 7474 <p>one entry required,<wbr/> > 0</p> 7475 </td> 7476 7477 <td class="entry_tags"> 7478 <ul class="entry_tags"> 7479 <li><a href="#tag_V1">V1</a></li> 7480 </ul> 7481 </td> 7482 7483 </tr> 7484 <tr class="entries_header"> 7485 <th class="th_details" colspan="5">Details</th> 7486 </tr> 7487 <tr class="entry_cont"> 7488 <td class="entry_details" colspan="5"> 7489 <p>If the camera device doesn't support variable apertures,<wbr/> 7490listed value will be the fixed aperture.<wbr/></p> 7491<p>If the camera device supports variable apertures,<wbr/> the aperture value 7492in this list will be sorted in ascending order.<wbr/></p> 7493 </td> 7494 </tr> 7495 7496 7497 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7498 <!-- end of entry --> 7499 7500 7501 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 7502 <td class="entry_name" rowspan="3"> 7503 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 7504 </td> 7505 <td class="entry_type"> 7506 <span class="entry_type_name">float</span> 7507 <span class="entry_type_container">x</span> 7508 7509 <span class="entry_type_array"> 7510 n 7511 </span> 7512 <span class="entry_type_visibility"> [public]</span> 7513 7514 7515 </td> <!-- entry_type --> 7516 7517 <td class="entry_description"> 7518 <p>List of supported neutral density filter values for 7519<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a>.<wbr/></p> 7520 </td> 7521 7522 <td class="entry_units"> 7523 </td> 7524 7525 <td class="entry_range"> 7526 <p>At least one value is required.<wbr/> Values must be >= 0.<wbr/></p> 7527 </td> 7528 7529 <td class="entry_tags"> 7530 <ul class="entry_tags"> 7531 <li><a href="#tag_V1">V1</a></li> 7532 </ul> 7533 </td> 7534 7535 </tr> 7536 <tr class="entries_header"> 7537 <th class="th_details" colspan="5">Details</th> 7538 </tr> 7539 <tr class="entry_cont"> 7540 <td class="entry_details" colspan="5"> 7541 <p>If changing <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> is not supported,<wbr/> 7542availableFilterDensities must contain only 0.<wbr/> Otherwise,<wbr/> this 7543list contains only the exact filter density values available on 7544this camera device.<wbr/></p> 7545 </td> 7546 </tr> 7547 7548 7549 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7550 <!-- end of entry --> 7551 7552 7553 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 7554 <td class="entry_name" rowspan="3"> 7555 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 7556 </td> 7557 <td class="entry_type"> 7558 <span class="entry_type_name">float</span> 7559 <span class="entry_type_container">x</span> 7560 7561 <span class="entry_type_array"> 7562 n 7563 </span> 7564 <span class="entry_type_visibility"> [public]</span> 7565 <div class="entry_type_notes">The list of available focal lengths</div> 7566 7567 7568 </td> <!-- entry_type --> 7569 7570 <td class="entry_description"> 7571 <p>The available focal lengths for this device for use with 7572<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>.<wbr/></p> 7573 </td> 7574 7575 <td class="entry_units"> 7576 </td> 7577 7578 <td class="entry_range"> 7579 <p>Each value in this list must be > 0.<wbr/> This list must 7580contain at least one value.<wbr/></p> 7581 </td> 7582 7583 <td class="entry_tags"> 7584 <ul class="entry_tags"> 7585 <li><a href="#tag_BC">BC</a></li> 7586 <li><a href="#tag_V1">V1</a></li> 7587 </ul> 7588 </td> 7589 7590 </tr> 7591 <tr class="entries_header"> 7592 <th class="th_details" colspan="5">Details</th> 7593 </tr> 7594 <tr class="entry_cont"> 7595 <td class="entry_details" colspan="5"> 7596 <p>If optical zoom is not supported,<wbr/> this will only report 7597a single value corresponding to the static focal length of the 7598device.<wbr/> Otherwise,<wbr/> this will report every focal length supported 7599by the device.<wbr/></p> 7600 </td> 7601 </tr> 7602 7603 7604 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7605 <!-- end of entry --> 7606 7607 7608 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> 7609 <td class="entry_name" rowspan="3"> 7610 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 7611 </td> 7612 <td class="entry_type"> 7613 <span class="entry_type_name">byte</span> 7614 <span class="entry_type_container">x</span> 7615 7616 <span class="entry_type_array"> 7617 n 7618 </span> 7619 <span class="entry_type_visibility"> [public]</span> 7620 <div class="entry_type_notes">list of enums</div> 7621 7622 7623 </td> <!-- entry_type --> 7624 7625 <td class="entry_description"> 7626 <p>List containing a subset of the optical image 7627stabilization (OIS) modes specified in 7628<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>.<wbr/></p> 7629 </td> 7630 7631 <td class="entry_units"> 7632 </td> 7633 7634 <td class="entry_range"> 7635 </td> 7636 7637 <td class="entry_tags"> 7638 <ul class="entry_tags"> 7639 <li><a href="#tag_V1">V1</a></li> 7640 </ul> 7641 </td> 7642 7643 </tr> 7644 <tr class="entries_header"> 7645 <th class="th_details" colspan="5">Details</th> 7646 </tr> 7647 <tr class="entry_cont"> 7648 <td class="entry_details" colspan="5"> 7649 <p>If OIS is not implemented for a given camera device,<wbr/> this should 7650contain only OFF.<wbr/></p> 7651 </td> 7652 </tr> 7653 7654 7655 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7656 <!-- end of entry --> 7657 7658 7659 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 7660 <td class="entry_name" rowspan="3"> 7661 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 7662 </td> 7663 <td class="entry_type"> 7664 <span class="entry_type_name">float</span> 7665 7666 <span class="entry_type_visibility"> [public]</span> 7667 7668 7669 </td> <!-- entry_type --> 7670 7671 <td class="entry_description"> 7672 <p>Optional.<wbr/> Hyperfocal distance for this lens.<wbr/></p> 7673 </td> 7674 7675 <td class="entry_units"> 7676 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 7677 </td> 7678 7679 <td class="entry_range"> 7680 <p>>= 0</p> 7681 </td> 7682 7683 <td class="entry_tags"> 7684 </td> 7685 7686 </tr> 7687 <tr class="entries_header"> 7688 <th class="th_details" colspan="5">Details</th> 7689 </tr> 7690 <tr class="entry_cont"> 7691 <td class="entry_details" colspan="5"> 7692 <p>If the lens is fixed focus,<wbr/> the camera device will report 0.<wbr/></p> 7693<p>If the lens is not fixed focus,<wbr/> the camera device will report this 7694field 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> 7695 </td> 7696 </tr> 7697 7698 7699 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7700 <!-- end of entry --> 7701 7702 7703 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 7704 <td class="entry_name" rowspan="3"> 7705 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 7706 </td> 7707 <td class="entry_type"> 7708 <span class="entry_type_name">float</span> 7709 7710 <span class="entry_type_visibility"> [public]</span> 7711 7712 7713 </td> <!-- entry_type --> 7714 7715 <td class="entry_description"> 7716 <p>Shortest distance from frontmost surface 7717of the lens that can be focused correctly.<wbr/></p> 7718 </td> 7719 7720 <td class="entry_units"> 7721 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 7722 </td> 7723 7724 <td class="entry_range"> 7725 <p>>= 0</p> 7726 </td> 7727 7728 <td class="entry_tags"> 7729 <ul class="entry_tags"> 7730 <li><a href="#tag_V1">V1</a></li> 7731 </ul> 7732 </td> 7733 7734 </tr> 7735 <tr class="entries_header"> 7736 <th class="th_details" colspan="5">Details</th> 7737 </tr> 7738 <tr class="entry_cont"> 7739 <td class="entry_details" colspan="5"> 7740 <p>If the lens is fixed-focus,<wbr/> this should be 77410.<wbr/></p> 7742 </td> 7743 </tr> 7744 7745 7746 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7747 <!-- end of entry --> 7748 7749 7750 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 7751 <td class="entry_name" rowspan="3"> 7752 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 7753 </td> 7754 <td class="entry_type"> 7755 <span class="entry_type_name">int32</span> 7756 <span class="entry_type_container">x</span> 7757 7758 <span class="entry_type_array"> 7759 2 7760 </span> 7761 <span class="entry_type_visibility"> [public as size]</span> 7762 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> 7763 7764 7765 </td> <!-- entry_type --> 7766 7767 <td class="entry_description"> 7768 <p>Dimensions of lens shading map.<wbr/></p> 7769 </td> 7770 7771 <td class="entry_units"> 7772 </td> 7773 7774 <td class="entry_range"> 7775 <p>Both values >= 1</p> 7776 </td> 7777 7778 <td class="entry_tags"> 7779 <ul class="entry_tags"> 7780 <li><a href="#tag_V1">V1</a></li> 7781 </ul> 7782 </td> 7783 7784 </tr> 7785 <tr class="entries_header"> 7786 <th class="th_details" colspan="5">Details</th> 7787 </tr> 7788 <tr class="entry_cont"> 7789 <td class="entry_details" colspan="5"> 7790 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 7791must be smaller than 64x64.<wbr/></p> 7792 </td> 7793 </tr> 7794 7795 7796 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7797 <!-- end of entry --> 7798 7799 7800 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 7801 <td class="entry_name" rowspan="3"> 7802 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 7803 </td> 7804 <td class="entry_type"> 7805 <span class="entry_type_name entry_type_name_enum">byte</span> 7806 7807 <span class="entry_type_visibility"> [public]</span> 7808 7809 <ul class="entry_type_enum"> 7810 <li> 7811 <span class="entry_type_enum_name">UNCALIBRATED</span> 7812 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 7813<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/> 7814Setting the lens to the same focus distance on separate occasions may 7815result in a different real focus distance,<wbr/> depending on factors such 7816as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 7817and the device temperature.<wbr/> The focus distance value will still be 7818in 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 7819represents the farthest focus.<wbr/></p></span> 7820 </li> 7821 <li> 7822 <span class="entry_type_enum_name">APPROXIMATE</span> 7823 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/> However,<wbr/> setting the lens 7824to the same focus distance on separate occasions may result in a 7825different real focus distance,<wbr/> depending on factors such as the 7826orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> and 7827the device temperature.<wbr/></p></span> 7828 </li> 7829 <li> 7830 <span class="entry_type_enum_name">CALIBRATED</span> 7831 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/> The lens mechanism is 7832calibrated so that setting the same focus distance is repeatable on 7833multiple occasions with good accuracy,<wbr/> and the focus distance corresponds 7834to the real physical distance to the plane of best focus.<wbr/></p></span> 7835 </li> 7836 </ul> 7837 7838 </td> <!-- entry_type --> 7839 7840 <td class="entry_description"> 7841 <p>The lens focus distance calibration quality.<wbr/></p> 7842 </td> 7843 7844 <td class="entry_units"> 7845 </td> 7846 7847 <td class="entry_range"> 7848 </td> 7849 7850 <td class="entry_tags"> 7851 <ul class="entry_tags"> 7852 <li><a href="#tag_V1">V1</a></li> 7853 </ul> 7854 </td> 7855 7856 </tr> 7857 <tr class="entries_header"> 7858 <th class="th_details" colspan="5">Details</th> 7859 </tr> 7860 <tr class="entry_cont"> 7861 <td class="entry_details" colspan="5"> 7862 <p>The lens focus distance calibration quality determines the reliability of 7863focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 7864<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 7865<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 7866 </td> 7867 </tr> 7868 7869 7870 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7871 <!-- end of entry --> 7872 7873 7874 7875 7876 7877 <tr class="entry" id="static_android.lens.facing"> 7878 <td class="entry_name" rowspan="1"> 7879 android.<wbr/>lens.<wbr/>facing 7880 </td> 7881 <td class="entry_type"> 7882 <span class="entry_type_name entry_type_name_enum">byte</span> 7883 7884 <span class="entry_type_visibility"> [public]</span> 7885 7886 <ul class="entry_type_enum"> 7887 <li> 7888 <span class="entry_type_enum_name">FRONT</span> 7889 </li> 7890 <li> 7891 <span class="entry_type_enum_name">BACK</span> 7892 </li> 7893 </ul> 7894 7895 </td> <!-- entry_type --> 7896 7897 <td class="entry_description"> 7898 <p>Direction the camera faces relative to 7899device screen</p> 7900 </td> 7901 7902 <td class="entry_units"> 7903 </td> 7904 7905 <td class="entry_range"> 7906 </td> 7907 7908 <td class="entry_tags"> 7909 </td> 7910 7911 </tr> 7912 7913 7914 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7915 <!-- end of entry --> 7916 7917 7918 <tr class="entry" id="static_android.lens.opticalAxisAngle"> 7919 <td class="entry_name" rowspan="3"> 7920 android.<wbr/>lens.<wbr/>optical<wbr/>Axis<wbr/>Angle 7921 </td> 7922 <td class="entry_type"> 7923 <span class="entry_type_name">float</span> 7924 <span class="entry_type_container">x</span> 7925 7926 <span class="entry_type_array"> 7927 2 7928 </span> 7929 <span class="entry_type_visibility"> [system]</span> 7930 <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> 7931 7932 7933 </td> <!-- entry_type --> 7934 7935 <td class="entry_description"> 7936 <p>Relative angle of camera optical axis to the 7937perpendicular axis from the display</p> 7938 </td> 7939 7940 <td class="entry_units"> 7941 </td> 7942 7943 <td class="entry_range"> 7944 <p>[0-90) for first angle,<wbr/> [0-360) for second</p> 7945 </td> 7946 7947 <td class="entry_tags"> 7948 <ul class="entry_tags"> 7949 <li><a href="#tag_ADV">ADV</a></li> 7950 </ul> 7951 </td> 7952 7953 </tr> 7954 <tr class="entries_header"> 7955 <th class="th_details" colspan="5">Details</th> 7956 </tr> 7957 <tr class="entry_cont"> 7958 <td class="entry_details" colspan="5"> 7959 <p>Examples:</p> 7960<p>(0,<wbr/>0) means that the camera optical axis 7961is perpendicular to the display surface;</p> 7962<p>(45,<wbr/>0) means that the camera points 45 degrees up when 7963device is held upright;</p> 7964<p>(45,<wbr/>90) means the camera points 45 degrees to the right when 7965the device is held upright.<wbr/></p> 7966<p>Use FACING field to determine perpendicular outgoing 7967direction</p> 7968 </td> 7969 </tr> 7970 7971 7972 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7973 <!-- end of entry --> 7974 7975 7976 <tr class="entry" id="static_android.lens.position"> 7977 <td class="entry_name" rowspan="1"> 7978 android.<wbr/>lens.<wbr/>position 7979 </td> 7980 <td class="entry_type"> 7981 <span class="entry_type_name">float</span> 7982 <span class="entry_type_container">x</span> 7983 7984 <span class="entry_type_array"> 7985 3, location in mm, in the sensor coordinate 7986 system 7987 </span> 7988 <span class="entry_type_visibility"> [system]</span> 7989 7990 7991 </td> <!-- entry_type --> 7992 7993 <td class="entry_description"> 7994 <p>Coordinates of camera optical axis on 7995device</p> 7996 </td> 7997 7998 <td class="entry_units"> 7999 </td> 8000 8001 <td class="entry_range"> 8002 </td> 8003 8004 <td class="entry_tags"> 8005 <ul class="entry_tags"> 8006 <li><a href="#tag_V1">V1</a></li> 8007 </ul> 8008 </td> 8009 8010 </tr> 8011 8012 8013 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8014 <!-- end of entry --> 8015 8016 8017 8018 <!-- end of kind --> 8019 </tbody> 8020 <tr><td colspan="6" class="kind">dynamic</td></tr> 8021 8022 <thead class="entries_header"> 8023 <tr> 8024 <th class="th_name">Property Name</th> 8025 <th class="th_type">Type</th> 8026 <th class="th_description">Description</th> 8027 <th class="th_units">Units</th> 8028 <th class="th_range">Range</th> 8029 <th class="th_tags">Tags</th> 8030 </tr> 8031 </thead> 8032 8033 <tbody> 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 <tr class="entry" id="dynamic_android.lens.aperture"> 8045 <td class="entry_name" rowspan="3"> 8046 android.<wbr/>lens.<wbr/>aperture 8047 </td> 8048 <td class="entry_type"> 8049 <span class="entry_type_name">float</span> 8050 8051 <span class="entry_type_visibility"> [public]</span> 8052 8053 8054 </td> <!-- entry_type --> 8055 8056 <td class="entry_description"> 8057 <p>The ratio of lens focal length to the effective 8058aperture diameter.<wbr/></p> 8059 </td> 8060 8061 <td class="entry_units"> 8062 f-number (f/<wbr/>NNN) 8063 </td> 8064 8065 <td class="entry_range"> 8066 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 8067 </td> 8068 8069 <td class="entry_tags"> 8070 <ul class="entry_tags"> 8071 <li><a href="#tag_V1">V1</a></li> 8072 </ul> 8073 </td> 8074 8075 </tr> 8076 <tr class="entries_header"> 8077 <th class="th_details" colspan="5">Details</th> 8078 </tr> 8079 <tr class="entry_cont"> 8080 <td class="entry_details" colspan="5"> 8081 <p>This will only be supported on the camera devices that 8082have variable aperture lens.<wbr/> The aperture value can only be 8083one of the values listed in <a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a>.<wbr/></p> 8084<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 8085this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 8086<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> 8087to achieve manual exposure control.<wbr/></p> 8088<p>The requested aperture value may take several frames to reach the 8089requested value; the camera device will report the current (intermediate) 8090aperture size in capture result metadata while the aperture is changing.<wbr/> 8091While 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> 8092<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 8093the ON modes,<wbr/> this will be overridden by the camera device 8094auto-exposure algorithm,<wbr/> the overridden values are then provided 8095back to the user in the corresponding result.<wbr/></p> 8096 </td> 8097 </tr> 8098 8099 8100 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8101 <!-- end of entry --> 8102 8103 8104 <tr class="entry" id="dynamic_android.lens.filterDensity"> 8105 <td class="entry_name" rowspan="3"> 8106 android.<wbr/>lens.<wbr/>filter<wbr/>Density 8107 </td> 8108 <td class="entry_type"> 8109 <span class="entry_type_name">float</span> 8110 8111 <span class="entry_type_visibility"> [public]</span> 8112 8113 8114 </td> <!-- entry_type --> 8115 8116 <td class="entry_description"> 8117 <p>State of lens neutral density filter(s).<wbr/></p> 8118 </td> 8119 8120 <td class="entry_units"> 8121 Steps of Exposure Value (EV).<wbr/> 8122 </td> 8123 8124 <td class="entry_range"> 8125 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 8126 </td> 8127 8128 <td class="entry_tags"> 8129 <ul class="entry_tags"> 8130 <li><a href="#tag_V1">V1</a></li> 8131 </ul> 8132 </td> 8133 8134 </tr> 8135 <tr class="entries_header"> 8136 <th class="th_details" colspan="5">Details</th> 8137 </tr> 8138 <tr class="entry_cont"> 8139 <td class="entry_details" colspan="5"> 8140 <p>This will not be supported on most camera devices.<wbr/> On devices 8141where this is supported,<wbr/> this may only be set to one of the 8142values included in <a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a>.<wbr/></p> 8143<p>Lens filters are typically used to lower the amount of light the 8144sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 8145step is the standard logarithmic representation,<wbr/> which are 8146non-negative,<wbr/> and inversely proportional to the amount of light 8147hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 8148in no reduction of the incoming light,<wbr/> and setting this to 2 would 8149mean that the filter is set to reduce incoming light by two stops 8150(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 8151<p>It may take several frames before the lens filter density changes 8152to the requested value.<wbr/> While the filter density is still changing,<wbr/> 8153<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 8154 </td> 8155 </tr> 8156 8157 8158 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8159 <!-- end of entry --> 8160 8161 8162 <tr class="entry" id="dynamic_android.lens.focalLength"> 8163 <td class="entry_name" rowspan="3"> 8164 android.<wbr/>lens.<wbr/>focal<wbr/>Length 8165 </td> 8166 <td class="entry_type"> 8167 <span class="entry_type_name">float</span> 8168 8169 <span class="entry_type_visibility"> [public]</span> 8170 8171 8172 </td> <!-- entry_type --> 8173 8174 <td class="entry_description"> 8175 <p>The current lens focal length; used for optical zoom.<wbr/></p> 8176 </td> 8177 8178 <td class="entry_units"> 8179 focal length in mm 8180 </td> 8181 8182 <td class="entry_range"> 8183 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 8184 </td> 8185 8186 <td class="entry_tags"> 8187 <ul class="entry_tags"> 8188 <li><a href="#tag_BC">BC</a></li> 8189 </ul> 8190 </td> 8191 8192 </tr> 8193 <tr class="entries_header"> 8194 <th class="th_details" colspan="5">Details</th> 8195 </tr> 8196 <tr class="entry_cont"> 8197 <td class="entry_details" colspan="5"> 8198 <p>This setting controls the physical focal length of the camera 8199device's lens.<wbr/> Changing the focal length changes the field of 8200view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 8201<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 8202setting won't be applied instantaneously,<wbr/> and it may take several 8203frames before the lens can change to the requested focal length.<wbr/> 8204While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 8205be set to MOVING.<wbr/></p> 8206<p>This is expected not to be supported on most devices.<wbr/></p> 8207 </td> 8208 </tr> 8209 8210 8211 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8212 <!-- end of entry --> 8213 8214 8215 <tr class="entry" id="dynamic_android.lens.focusDistance"> 8216 <td class="entry_name" rowspan="3"> 8217 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 8218 </td> 8219 <td class="entry_type"> 8220 <span class="entry_type_name">float</span> 8221 8222 <span class="entry_type_visibility"> [public]</span> 8223 8224 8225 </td> <!-- entry_type --> 8226 8227 <td class="entry_description"> 8228 <p>Distance to plane of sharpest focus,<wbr/> 8229measured from frontmost surface of the lens</p> 8230 </td> 8231 8232 <td class="entry_units"> 8233 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 8234 </td> 8235 8236 <td class="entry_range"> 8237 <p>>= 0</p> 8238 </td> 8239 8240 <td class="entry_tags"> 8241 <ul class="entry_tags"> 8242 <li><a href="#tag_BC">BC</a></li> 8243 </ul> 8244 </td> 8245 8246 </tr> 8247 <tr class="entries_header"> 8248 <th class="th_details" colspan="5">Details</th> 8249 </tr> 8250 <tr class="entry_cont"> 8251 <td class="entry_details" colspan="5"> 8252 <p>Should be zero for fixed-focus cameras</p> 8253 </td> 8254 </tr> 8255 8256 8257 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8258 <!-- end of entry --> 8259 8260 8261 <tr class="entry" id="dynamic_android.lens.focusRange"> 8262 <td class="entry_name" rowspan="3"> 8263 android.<wbr/>lens.<wbr/>focus<wbr/>Range 8264 </td> 8265 <td class="entry_type"> 8266 <span class="entry_type_name">float</span> 8267 <span class="entry_type_container">x</span> 8268 8269 <span class="entry_type_array"> 8270 2 8271 </span> 8272 <span class="entry_type_visibility"> [public]</span> 8273 <div class="entry_type_notes">Range of scene distances that are in focus</div> 8274 8275 8276 </td> <!-- entry_type --> 8277 8278 <td class="entry_description"> 8279 <p>The range of scene distances that are in 8280sharp focus (depth of field)</p> 8281 </td> 8282 8283 <td class="entry_units"> 8284 pair of focus distances in diopters: (near,<wbr/> 8285 far),<wbr/> see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 8286 </td> 8287 8288 <td class="entry_range"> 8289 <p>>=0</p> 8290 </td> 8291 8292 <td class="entry_tags"> 8293 <ul class="entry_tags"> 8294 <li><a href="#tag_BC">BC</a></li> 8295 </ul> 8296 </td> 8297 8298 </tr> 8299 <tr class="entries_header"> 8300 <th class="th_details" colspan="5">Details</th> 8301 </tr> 8302 <tr class="entry_cont"> 8303 <td class="entry_details" colspan="5"> 8304 <p>If variable focus not supported,<wbr/> can still report 8305fixed depth of field range</p> 8306 </td> 8307 </tr> 8308 8309 8310 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8311 <!-- end of entry --> 8312 8313 8314 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 8315 <td class="entry_name" rowspan="3"> 8316 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 8317 </td> 8318 <td class="entry_type"> 8319 <span class="entry_type_name entry_type_name_enum">byte</span> 8320 8321 <span class="entry_type_visibility"> [public]</span> 8322 8323 <ul class="entry_type_enum"> 8324 <li> 8325 <span class="entry_type_enum_name">OFF</span> 8326 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 8327 </li> 8328 <li> 8329 <span class="entry_type_enum_name">ON</span> 8330 <span class="entry_type_enum_optional">optional</span> 8331 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 8332 </li> 8333 </ul> 8334 8335 </td> <!-- entry_type --> 8336 8337 <td class="entry_description"> 8338 <p>Sets whether the camera device uses optical image stabilization (OIS) 8339when capturing images.<wbr/></p> 8340 </td> 8341 8342 <td class="entry_units"> 8343 </td> 8344 8345 <td class="entry_range"> 8346 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 8347 </td> 8348 8349 <td class="entry_tags"> 8350 <ul class="entry_tags"> 8351 <li><a href="#tag_V1">V1</a></li> 8352 </ul> 8353 </td> 8354 8355 </tr> 8356 <tr class="entries_header"> 8357 <th class="th_details" colspan="5">Details</th> 8358 </tr> 8359 <tr class="entry_cont"> 8360 <td class="entry_details" colspan="5"> 8361 <p>OIS is used to compensate for motion blur due to small movements of 8362the camera during capture.<wbr/> Unlike digital image stabilization,<wbr/> OIS makes 8363use of mechanical elements to stabilize the camera sensor,<wbr/> and thus 8364allows for longer exposure times before camera shake becomes 8365apparent.<wbr/></p> 8366<p>This is not expected to be supported on most devices.<wbr/></p> 8367 </td> 8368 </tr> 8369 8370 8371 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8372 <!-- end of entry --> 8373 8374 8375 <tr class="entry" id="dynamic_android.lens.state"> 8376 <td class="entry_name" rowspan="3"> 8377 android.<wbr/>lens.<wbr/>state 8378 </td> 8379 <td class="entry_type"> 8380 <span class="entry_type_name entry_type_name_enum">byte</span> 8381 8382 <span class="entry_type_visibility"> [public]</span> 8383 8384 <ul class="entry_type_enum"> 8385 <li> 8386 <span class="entry_type_enum_name">STATIONARY</span> 8387 <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/> 8388<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> 8389 </li> 8390 <li> 8391 <span class="entry_type_enum_name">MOVING</span> 8392 <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/> 8393<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> 8394 </li> 8395 </ul> 8396 8397 </td> <!-- entry_type --> 8398 8399 <td class="entry_description"> 8400 <p>Current lens status.<wbr/></p> 8401 </td> 8402 8403 <td class="entry_units"> 8404 </td> 8405 8406 <td class="entry_range"> 8407 </td> 8408 8409 <td class="entry_tags"> 8410 <ul class="entry_tags"> 8411 <li><a href="#tag_V1">V1</a></li> 8412 </ul> 8413 </td> 8414 8415 </tr> 8416 <tr class="entries_header"> 8417 <th class="th_details" colspan="5">Details</th> 8418 </tr> 8419 <tr class="entry_cont"> 8420 <td class="entry_details" colspan="5"> 8421 <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/> 8422<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/> 8423they may take several frames to reach the requested values.<wbr/> This state indicates 8424the current status of the lens parameters.<wbr/></p> 8425<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 8426either because the parameters are all fixed,<wbr/> or because the lens has had enough 8427time to reach the most recently-requested values.<wbr/> 8428If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> 8429<ul> 8430<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 8431<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 8432<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/> 8433which means the optical zoom is not supported.<wbr/></li> 8434<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> 8435<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> 8436</ul> 8437<p>Then this state will always be STATIONARY.<wbr/></p> 8438<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 8439is changing.<wbr/></p> 8440 </td> 8441 </tr> 8442 8443 8444 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8445 <!-- end of entry --> 8446 8447 8448 8449 <!-- end of kind --> 8450 </tbody> 8451 8452 <!-- end of section --> 8453 <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr> 8454 8455 8456 <tr><td colspan="6" class="kind">controls</td></tr> 8457 8458 <thead class="entries_header"> 8459 <tr> 8460 <th class="th_name">Property Name</th> 8461 <th class="th_type">Type</th> 8462 <th class="th_description">Description</th> 8463 <th class="th_units">Units</th> 8464 <th class="th_range">Range</th> 8465 <th class="th_tags">Tags</th> 8466 </tr> 8467 </thead> 8468 8469 <tbody> 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8480 <tr class="entry" id="controls_android.noiseReduction.mode"> 8481 <td class="entry_name" rowspan="3"> 8482 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 8483 </td> 8484 <td class="entry_type"> 8485 <span class="entry_type_name entry_type_name_enum">byte</span> 8486 8487 <span class="entry_type_visibility"> [public]</span> 8488 8489 <ul class="entry_type_enum"> 8490 <li> 8491 <span class="entry_type_enum_name">OFF</span> 8492 <span class="entry_type_enum_notes"><p>No noise reduction is applied</p></span> 8493 </li> 8494 <li> 8495 <span class="entry_type_enum_name">FAST</span> 8496 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor 8497output</p></span> 8498 </li> 8499 <li> 8500 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8501 <span class="entry_type_enum_notes"><p>May slow down frame rate to provide highest 8502quality</p></span> 8503 </li> 8504 </ul> 8505 8506 </td> <!-- entry_type --> 8507 8508 <td class="entry_description"> 8509 <p>Mode of operation for the noise reduction 8510algorithm</p> 8511 </td> 8512 8513 <td class="entry_units"> 8514 </td> 8515 8516 <td class="entry_range"> 8517 </td> 8518 8519 <td class="entry_tags"> 8520 <ul class="entry_tags"> 8521 <li><a href="#tag_V1">V1</a></li> 8522 </ul> 8523 </td> 8524 8525 </tr> 8526 <tr class="entries_header"> 8527 <th class="th_details" colspan="5">Details</th> 8528 </tr> 8529 <tr class="entry_cont"> 8530 <td class="entry_details" colspan="5"> 8531 <p>Noise filtering control.<wbr/> OFF means no noise reduction 8532will be applied by the camera device.<wbr/></p> 8533<p>This must be set to a valid mode in 8534<a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a>.<wbr/></p> 8535<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 8536will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 8537will use the highest-quality noise filtering algorithms,<wbr/> 8538even if it slows down capture rate.<wbr/> FAST means the camera device should not 8539slow down capture rate when applying noise filtering.<wbr/></p> 8540 </td> 8541 </tr> 8542 8543 8544 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8545 <!-- end of entry --> 8546 8547 8548 <tr class="entry" id="controls_android.noiseReduction.strength"> 8549 <td class="entry_name" rowspan="1"> 8550 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 8551 </td> 8552 <td class="entry_type"> 8553 <span class="entry_type_name">byte</span> 8554 8555 <span class="entry_type_visibility"> [system]</span> 8556 8557 8558 </td> <!-- entry_type --> 8559 8560 <td class="entry_description"> 8561 <p>Control the amount of noise reduction 8562applied to the images</p> 8563 </td> 8564 8565 <td class="entry_units"> 8566 1-10; 10 is max noise reduction 8567 </td> 8568 8569 <td class="entry_range"> 8570 <p>1 - 10</p> 8571 </td> 8572 8573 <td class="entry_tags"> 8574 </td> 8575 8576 </tr> 8577 8578 8579 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8580 <!-- end of entry --> 8581 8582 8583 8584 <!-- end of kind --> 8585 </tbody> 8586 <tr><td colspan="6" class="kind">static</td></tr> 8587 8588 <thead class="entries_header"> 8589 <tr> 8590 <th class="th_name">Property Name</th> 8591 <th class="th_type">Type</th> 8592 <th class="th_description">Description</th> 8593 <th class="th_units">Units</th> 8594 <th class="th_range">Range</th> 8595 <th class="th_tags">Tags</th> 8596 </tr> 8597 </thead> 8598 8599 <tbody> 8600 8601 8602 8603 8604 8605 8606 8607 8608 8609 8610 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> 8611 <td class="entry_name" rowspan="3"> 8612 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes 8613 </td> 8614 <td class="entry_type"> 8615 <span class="entry_type_name">byte</span> 8616 <span class="entry_type_container">x</span> 8617 8618 <span class="entry_type_array"> 8619 n 8620 </span> 8621 <span class="entry_type_visibility"> [public]</span> 8622 <div class="entry_type_notes">list of enums</div> 8623 8624 8625 </td> <!-- entry_type --> 8626 8627 <td class="entry_description"> 8628 <p>The set of noise reduction modes supported by this camera device.<wbr/></p> 8629 </td> 8630 8631 <td class="entry_units"> 8632 </td> 8633 8634 <td class="entry_range"> 8635 </td> 8636 8637 <td class="entry_tags"> 8638 <ul class="entry_tags"> 8639 <li><a href="#tag_V1">V1</a></li> 8640 </ul> 8641 </td> 8642 8643 </tr> 8644 <tr class="entries_header"> 8645 <th class="th_details" colspan="5">Details</th> 8646 </tr> 8647 <tr class="entry_cont"> 8648 <td class="entry_details" colspan="5"> 8649 <p>This tag lists the valid modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>.<wbr/></p> 8650<p>Full-capability camera devices must laways support OFF and FAST.<wbr/></p> 8651 </td> 8652 </tr> 8653 8654 8655 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8656 <!-- end of entry --> 8657 8658 8659 8660 <!-- end of kind --> 8661 </tbody> 8662 <tr><td colspan="6" class="kind">dynamic</td></tr> 8663 8664 <thead class="entries_header"> 8665 <tr> 8666 <th class="th_name">Property Name</th> 8667 <th class="th_type">Type</th> 8668 <th class="th_description">Description</th> 8669 <th class="th_units">Units</th> 8670 <th class="th_range">Range</th> 8671 <th class="th_tags">Tags</th> 8672 </tr> 8673 </thead> 8674 8675 <tbody> 8676 8677 8678 8679 8680 8681 8682 8683 8684 8685 8686 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 8687 <td class="entry_name" rowspan="3"> 8688 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 8689 </td> 8690 <td class="entry_type"> 8691 <span class="entry_type_name entry_type_name_enum">byte</span> 8692 8693 <span class="entry_type_visibility"> [public]</span> 8694 8695 <ul class="entry_type_enum"> 8696 <li> 8697 <span class="entry_type_enum_name">OFF</span> 8698 <span class="entry_type_enum_notes"><p>No noise reduction is applied</p></span> 8699 </li> 8700 <li> 8701 <span class="entry_type_enum_name">FAST</span> 8702 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor 8703output</p></span> 8704 </li> 8705 <li> 8706 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8707 <span class="entry_type_enum_notes"><p>May slow down frame rate to provide highest 8708quality</p></span> 8709 </li> 8710 </ul> 8711 8712 </td> <!-- entry_type --> 8713 8714 <td class="entry_description"> 8715 <p>Mode of operation for the noise reduction 8716algorithm</p> 8717 </td> 8718 8719 <td class="entry_units"> 8720 </td> 8721 8722 <td class="entry_range"> 8723 </td> 8724 8725 <td class="entry_tags"> 8726 <ul class="entry_tags"> 8727 <li><a href="#tag_V1">V1</a></li> 8728 </ul> 8729 </td> 8730 8731 </tr> 8732 <tr class="entries_header"> 8733 <th class="th_details" colspan="5">Details</th> 8734 </tr> 8735 <tr class="entry_cont"> 8736 <td class="entry_details" colspan="5"> 8737 <p>Noise filtering control.<wbr/> OFF means no noise reduction 8738will be applied by the camera device.<wbr/></p> 8739<p>This must be set to a valid mode in 8740<a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a>.<wbr/></p> 8741<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 8742will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 8743will use the highest-quality noise filtering algorithms,<wbr/> 8744even if it slows down capture rate.<wbr/> FAST means the camera device should not 8745slow down capture rate when applying noise filtering.<wbr/></p> 8746 </td> 8747 </tr> 8748 8749 8750 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8751 <!-- end of entry --> 8752 8753 8754 8755 <!-- end of kind --> 8756 </tbody> 8757 8758 <!-- end of section --> 8759 <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr> 8760 8761 8762 <tr><td colspan="6" class="kind">static</td></tr> 8763 8764 <thead class="entries_header"> 8765 <tr> 8766 <th class="th_name">Property Name</th> 8767 <th class="th_type">Type</th> 8768 <th class="th_description">Description</th> 8769 <th class="th_units">Units</th> 8770 <th class="th_range">Range</th> 8771 <th class="th_tags">Tags</th> 8772 </tr> 8773 </thead> 8774 8775 <tbody> 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 8786 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 8787 <td class="entry_name" rowspan="3"> 8788 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 8789 </td> 8790 <td class="entry_type"> 8791 <span class="entry_type_name">byte</span> 8792 8793 <span class="entry_type_visibility"> [system]</span> 8794 8795 8796 </td> <!-- entry_type --> 8797 8798 <td class="entry_description"> 8799 <p>If set to 1,<wbr/> the camera service does not 8800scale 'normalized' coordinates with respect to the crop 8801region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 8802and output (face rectangles).<wbr/></p> 8803 </td> 8804 8805 <td class="entry_units"> 8806 </td> 8807 8808 <td class="entry_range"> 8809 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 8810 </td> 8811 8812 <td class="entry_tags"> 8813 </td> 8814 8815 </tr> 8816 <tr class="entries_header"> 8817 <th class="th_details" colspan="5">Details</th> 8818 </tr> 8819 <tr class="entry_cont"> 8820 <td class="entry_details" colspan="5"> 8821 <p>Normalized coordinates refer to those in the 8822(-1000,<wbr/>1000) range mentioned in the 8823android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 8824<p>HAL implementations should instead always use and emit 8825sensor array-relative coordinates for all region data.<wbr/> Does 8826not need to be listed in static metadata.<wbr/> Support will be 8827removed in future versions of camera service.<wbr/></p> 8828 </td> 8829 </tr> 8830 8831 8832 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8833 <!-- end of entry --> 8834 8835 8836 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 8837 <td class="entry_name" rowspan="3"> 8838 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 8839 </td> 8840 <td class="entry_type"> 8841 <span class="entry_type_name">byte</span> 8842 8843 <span class="entry_type_visibility"> [system]</span> 8844 8845 8846 </td> <!-- entry_type --> 8847 8848 <td class="entry_description"> 8849 <p>If set to 1,<wbr/> then the camera service always 8850switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 8851trigger.<wbr/></p> 8852 </td> 8853 8854 <td class="entry_units"> 8855 </td> 8856 8857 <td class="entry_range"> 8858 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 8859 </td> 8860 8861 <td class="entry_tags"> 8862 </td> 8863 8864 </tr> 8865 <tr class="entries_header"> 8866 <th class="th_details" colspan="5">Details</th> 8867 </tr> 8868 <tr class="entry_cont"> 8869 <td class="entry_details" colspan="5"> 8870 <p>HAL implementations should implement AF trigger 8871modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 8872CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 8873not need to be listed in static metadata.<wbr/> Support will be 8874removed in future versions of camera service</p> 8875 </td> 8876 </tr> 8877 8878 8879 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8880 <!-- end of entry --> 8881 8882 8883 <tr class="entry" id="static_android.quirks.useZslFormat"> 8884 <td class="entry_name" rowspan="3"> 8885 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 8886 </td> 8887 <td class="entry_type"> 8888 <span class="entry_type_name">byte</span> 8889 8890 <span class="entry_type_visibility"> [system]</span> 8891 8892 8893 </td> <!-- entry_type --> 8894 8895 <td class="entry_description"> 8896 <p>If set to 1,<wbr/> the camera service uses 8897CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 8898HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 8899shutter lag stream</p> 8900 </td> 8901 8902 <td class="entry_units"> 8903 </td> 8904 8905 <td class="entry_range"> 8906 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 8907 </td> 8908 8909 <td class="entry_tags"> 8910 </td> 8911 8912 </tr> 8913 <tr class="entries_header"> 8914 <th class="th_details" colspan="5">Details</th> 8915 </tr> 8916 <tr class="entry_cont"> 8917 <td class="entry_details" colspan="5"> 8918 <p>HAL implementations should use gralloc usage flags 8919to determine that a stream will be used for 8920zero-shutter-lag,<wbr/> instead of relying on an explicit 8921format setting.<wbr/> Does not need to be listed in static 8922metadata.<wbr/> Support will be removed in future versions of 8923camera service.<wbr/></p> 8924 </td> 8925 </tr> 8926 8927 8928 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8929 <!-- end of entry --> 8930 8931 8932 <tr class="entry" id="static_android.quirks.usePartialResult"> 8933 <td class="entry_name" rowspan="5"> 8934 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 8935 </td> 8936 <td class="entry_type"> 8937 <span class="entry_type_name">byte</span> 8938 8939 <span class="entry_type_visibility"> [hidden]</span> 8940 8941 8942 </td> <!-- entry_type --> 8943 8944 <td class="entry_description"> 8945 <p>If set to 1,<wbr/> the HAL will always split result 8946metadata for a single capture into multiple buffers,<wbr/> 8947returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 8948 </td> 8949 8950 <td class="entry_units"> 8951 </td> 8952 8953 <td class="entry_range"> 8954 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 8955 </td> 8956 8957 <td class="entry_tags"> 8958 </td> 8959 8960 </tr> 8961 <tr class="entries_header"> 8962 <th class="th_details" colspan="5">Details</th> 8963 </tr> 8964 <tr class="entry_cont"> 8965 <td class="entry_details" colspan="5"> 8966 <p>Does not need to be listed in static 8967metadata.<wbr/> Support for partial results will be reworked in 8968future versions of camera service.<wbr/> This quirk will stop 8969working at that point; DO NOT USE without careful 8970consideration of future support.<wbr/></p> 8971 </td> 8972 </tr> 8973 8974 <tr class="entries_header"> 8975 <th class="th_details" colspan="5">HAL Implementation Details</th> 8976 </tr> 8977 <tr class="entry_cont"> 8978 <td class="entry_details" colspan="5"> 8979 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 8980for information on how to implement partial results.<wbr/></p> 8981 </td> 8982 </tr> 8983 8984 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8985 <!-- end of entry --> 8986 8987 8988 8989 <!-- end of kind --> 8990 </tbody> 8991 <tr><td colspan="6" class="kind">dynamic</td></tr> 8992 8993 <thead class="entries_header"> 8994 <tr> 8995 <th class="th_name">Property Name</th> 8996 <th class="th_type">Type</th> 8997 <th class="th_description">Description</th> 8998 <th class="th_units">Units</th> 8999 <th class="th_range">Range</th> 9000 <th class="th_tags">Tags</th> 9001 </tr> 9002 </thead> 9003 9004 <tbody> 9005 9006 9007 9008 9009 9010 9011 9012 9013 9014 9015 <tr class="entry" id="dynamic_android.quirks.partialResult"> 9016 <td class="entry_name" rowspan="5"> 9017 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 9018 </td> 9019 <td class="entry_type"> 9020 <span class="entry_type_name entry_type_name_enum">byte</span> 9021 9022 <span class="entry_type_visibility"> [hidden as boolean]</span> 9023 9024 <ul class="entry_type_enum"> 9025 <li> 9026 <span class="entry_type_enum_name">FINAL</span> 9027 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 9028for this capture.<wbr/></p></span> 9029 </li> 9030 <li> 9031 <span class="entry_type_enum_name">PARTIAL</span> 9032 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 9033capture.<wbr/> More result buffers for this capture will be sent 9034by the camera device,<wbr/> the last of which will be marked 9035FINAL.<wbr/></p></span> 9036 </li> 9037 </ul> 9038 9039 </td> <!-- entry_type --> 9040 9041 <td class="entry_description"> 9042 <p>Whether a result given to the framework is the 9043final one for the capture,<wbr/> or only a partial that contains a 9044subset of the full set of dynamic metadata 9045values.<wbr/></p> 9046 </td> 9047 9048 <td class="entry_units"> 9049 </td> 9050 9051 <td class="entry_range"> 9052 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> Optional.<wbr/> Default value is FINAL.<wbr/></p> 9053 </td> 9054 9055 <td class="entry_tags"> 9056 </td> 9057 9058 </tr> 9059 <tr class="entries_header"> 9060 <th class="th_details" colspan="5">Details</th> 9061 </tr> 9062 <tr class="entry_cont"> 9063 <td class="entry_details" colspan="5"> 9064 <p>The entries in the result metadata buffers for a 9065single capture may not overlap,<wbr/> except for this entry.<wbr/> The 9066FINAL buffers must retain FIFO ordering relative to the 9067requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 9068always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 9069before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 9070in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 9071capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 9072only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 9073 </td> 9074 </tr> 9075 9076 <tr class="entries_header"> 9077 <th class="th_details" colspan="5">HAL Implementation Details</th> 9078 </tr> 9079 <tr class="entry_cont"> 9080 <td class="entry_details" colspan="5"> 9081 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 9082for information on how to implement partial results.<wbr/></p> 9083 </td> 9084 </tr> 9085 9086 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9087 <!-- end of entry --> 9088 9089 9090 9091 <!-- end of kind --> 9092 </tbody> 9093 9094 <!-- end of section --> 9095 <tr><td colspan="6" id="section_request" class="section">request</td></tr> 9096 9097 9098 <tr><td colspan="6" class="kind">controls</td></tr> 9099 9100 <thead class="entries_header"> 9101 <tr> 9102 <th class="th_name">Property Name</th> 9103 <th class="th_type">Type</th> 9104 <th class="th_description">Description</th> 9105 <th class="th_units">Units</th> 9106 <th class="th_range">Range</th> 9107 <th class="th_tags">Tags</th> 9108 </tr> 9109 </thead> 9110 9111 <tbody> 9112 9113 9114 9115 9116 9117 9118 9119 9120 9121 9122 <tr class="entry" id="controls_android.request.frameCount"> 9123 <td class="entry_name" rowspan="1"> 9124 android.<wbr/>request.<wbr/>frame<wbr/>Count 9125 </td> 9126 <td class="entry_type"> 9127 <span class="entry_type_name">int32</span> 9128 9129 <span class="entry_type_visibility"> [system]</span> 9130 9131 9132 </td> <!-- entry_type --> 9133 9134 <td class="entry_description"> 9135 <p>A frame counter set by the framework.<wbr/> Must 9136be maintained unchanged in output frame.<wbr/> This value monotonically 9137increases with every new result (that is,<wbr/> each new result has a unique 9138frameCount value).<wbr/></p> 9139 </td> 9140 9141 <td class="entry_units"> 9142 incrementing integer 9143 </td> 9144 9145 <td class="entry_range"> 9146 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> Any int.<wbr/></p> 9147 </td> 9148 9149 <td class="entry_tags"> 9150 </td> 9151 9152 </tr> 9153 9154 9155 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9156 <!-- end of entry --> 9157 9158 9159 <tr class="entry" id="controls_android.request.id"> 9160 <td class="entry_name" rowspan="1"> 9161 android.<wbr/>request.<wbr/>id 9162 </td> 9163 <td class="entry_type"> 9164 <span class="entry_type_name">int32</span> 9165 9166 <span class="entry_type_visibility"> [hidden]</span> 9167 9168 9169 </td> <!-- entry_type --> 9170 9171 <td class="entry_description"> 9172 <p>An application-specified ID for the current 9173request.<wbr/> Must be maintained unchanged in output 9174frame</p> 9175 </td> 9176 9177 <td class="entry_units"> 9178 arbitrary integer assigned by application 9179 </td> 9180 9181 <td class="entry_range"> 9182 <p>Any int</p> 9183 </td> 9184 9185 <td class="entry_tags"> 9186 <ul class="entry_tags"> 9187 <li><a href="#tag_V1">V1</a></li> 9188 </ul> 9189 </td> 9190 9191 </tr> 9192 9193 9194 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9195 <!-- end of entry --> 9196 9197 9198 <tr class="entry" id="controls_android.request.inputStreams"> 9199 <td class="entry_name" rowspan="3"> 9200 android.<wbr/>request.<wbr/>input<wbr/>Streams 9201 </td> 9202 <td class="entry_type"> 9203 <span class="entry_type_name">int32</span> 9204 <span class="entry_type_container">x</span> 9205 9206 <span class="entry_type_array"> 9207 n 9208 </span> 9209 <span class="entry_type_visibility"> [system]</span> 9210 9211 9212 </td> <!-- entry_type --> 9213 9214 <td class="entry_description"> 9215 <p>List which camera reprocess stream is used 9216for the source of reprocessing data.<wbr/></p> 9217 </td> 9218 9219 <td class="entry_units"> 9220 List of camera reprocess stream IDs 9221 </td> 9222 9223 <td class="entry_range"> 9224 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 9225<p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 9226 </td> 9227 9228 <td class="entry_tags"> 9229 <ul class="entry_tags"> 9230 <li><a href="#tag_HAL2">HAL2</a></li> 9231 </ul> 9232 </td> 9233 9234 </tr> 9235 <tr class="entries_header"> 9236 <th class="th_details" colspan="5">Details</th> 9237 </tr> 9238 <tr class="entry_cont"> 9239 <td class="entry_details" colspan="5"> 9240 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 9241REPROCESS.<wbr/> Ignored otherwise</p> 9242 </td> 9243 </tr> 9244 9245 9246 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9247 <!-- end of entry --> 9248 9249 9250 <tr class="entry" id="controls_android.request.metadataMode"> 9251 <td class="entry_name" rowspan="1"> 9252 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 9253 </td> 9254 <td class="entry_type"> 9255 <span class="entry_type_name entry_type_name_enum">byte</span> 9256 9257 <span class="entry_type_visibility"> [system]</span> 9258 9259 <ul class="entry_type_enum"> 9260 <li> 9261 <span class="entry_type_enum_name">NONE</span> 9262 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 9263for application-bound buffer data.<wbr/> If no 9264application-bound streams exist,<wbr/> no frame should be 9265placed in the output frame queue.<wbr/> If such streams 9266exist,<wbr/> a frame should be placed on the output queue 9267with null metadata but with the necessary output buffer 9268information.<wbr/> Timestamp information should still be 9269included with any output stream buffers</p></span> 9270 </li> 9271 <li> 9272 <span class="entry_type_enum_name">FULL</span> 9273 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 9274only be produced if they are separately 9275enabled</p></span> 9276 </li> 9277 </ul> 9278 9279 </td> <!-- entry_type --> 9280 9281 <td class="entry_description"> 9282 <p>How much metadata to produce on 9283output</p> 9284 </td> 9285 9286 <td class="entry_units"> 9287 </td> 9288 9289 <td class="entry_range"> 9290 </td> 9291 9292 <td class="entry_tags"> 9293 </td> 9294 9295 </tr> 9296 9297 9298 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9299 <!-- end of entry --> 9300 9301 9302 <tr class="entry" id="controls_android.request.outputStreams"> 9303 <td class="entry_name" rowspan="3"> 9304 android.<wbr/>request.<wbr/>output<wbr/>Streams 9305 </td> 9306 <td class="entry_type"> 9307 <span class="entry_type_name">int32</span> 9308 <span class="entry_type_container">x</span> 9309 9310 <span class="entry_type_array"> 9311 n 9312 </span> 9313 <span class="entry_type_visibility"> [system]</span> 9314 9315 9316 </td> <!-- entry_type --> 9317 9318 <td class="entry_description"> 9319 <p>Lists which camera output streams image data 9320from this capture must be sent to</p> 9321 </td> 9322 9323 <td class="entry_units"> 9324 List of camera stream IDs 9325 </td> 9326 9327 <td class="entry_range"> 9328 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> List must only include streams that have been 9329created</p> 9330 </td> 9331 9332 <td class="entry_tags"> 9333 <ul class="entry_tags"> 9334 <li><a href="#tag_HAL2">HAL2</a></li> 9335 </ul> 9336 </td> 9337 9338 </tr> 9339 <tr class="entries_header"> 9340 <th class="th_details" colspan="5">Details</th> 9341 </tr> 9342 <tr class="entry_cont"> 9343 <td class="entry_details" colspan="5"> 9344 <p>If no output streams are listed,<wbr/> then the image 9345data should simply be discarded.<wbr/> The image data must 9346still be captured for metadata and statistics production,<wbr/> 9347and the lens and flash must operate as requested.<wbr/></p> 9348 </td> 9349 </tr> 9350 9351 9352 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9353 <!-- end of entry --> 9354 9355 9356 <tr class="entry" id="controls_android.request.type"> 9357 <td class="entry_name" rowspan="1"> 9358 android.<wbr/>request.<wbr/>type 9359 </td> 9360 <td class="entry_type"> 9361 <span class="entry_type_name entry_type_name_enum">byte</span> 9362 9363 <span class="entry_type_visibility"> [system]</span> 9364 9365 <ul class="entry_type_enum"> 9366 <li> 9367 <span class="entry_type_enum_name">CAPTURE</span> 9368 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 9369and process it according to the 9370settings</p></span> 9371 </li> 9372 <li> 9373 <span class="entry_type_enum_name">REPROCESS</span> 9374 <span class="entry_type_enum_notes"><p>Process previously captured data; the 9375<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the 9376source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 9377needed for reprocessing with [RP]</p></span> 9378 </li> 9379 </ul> 9380 9381 </td> <!-- entry_type --> 9382 9383 <td class="entry_description"> 9384 <p>The type of the request; either CAPTURE or 9385REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p> 9386 </td> 9387 9388 <td class="entry_units"> 9389 </td> 9390 9391 <td class="entry_range"> 9392 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 9393 </td> 9394 9395 <td class="entry_tags"> 9396 <ul class="entry_tags"> 9397 <li><a href="#tag_HAL2">HAL2</a></li> 9398 </ul> 9399 </td> 9400 9401 </tr> 9402 9403 9404 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9405 <!-- end of entry --> 9406 9407 9408 9409 <!-- end of kind --> 9410 </tbody> 9411 <tr><td colspan="6" class="kind">static</td></tr> 9412 9413 <thead class="entries_header"> 9414 <tr> 9415 <th class="th_name">Property Name</th> 9416 <th class="th_type">Type</th> 9417 <th class="th_description">Description</th> 9418 <th class="th_units">Units</th> 9419 <th class="th_range">Range</th> 9420 <th class="th_tags">Tags</th> 9421 </tr> 9422 </thead> 9423 9424 <tbody> 9425 9426 9427 9428 9429 9430 9431 9432 9433 9434 9435 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 9436 <td class="entry_name" rowspan="3"> 9437 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 9438 </td> 9439 <td class="entry_type"> 9440 <span class="entry_type_name">int32</span> 9441 <span class="entry_type_container">x</span> 9442 9443 <span class="entry_type_array"> 9444 3 9445 </span> 9446 <span class="entry_type_visibility"> [public]</span> 9447 9448 9449 </td> <!-- entry_type --> 9450 9451 <td class="entry_description"> 9452 <p>The maximum numbers of different types of output streams 9453that can be configured and used simultaneously by a camera device.<wbr/></p> 9454 </td> 9455 9456 <td class="entry_units"> 9457 </td> 9458 9459 <td class="entry_range"> 9460 <p>For JPEG-compressed format streams,<wbr/> >= 1.<wbr/></p> 9461<p>For Raw format streams,<wbr/> >= 0.<wbr/></p> 9462<p>For processed,<wbr/> uncompressed format streams,<wbr/> >= 3 9463for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 9464>= 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> 9465 </td> 9466 9467 <td class="entry_tags"> 9468 <ul class="entry_tags"> 9469 <li><a href="#tag_BC">BC</a></li> 9470 </ul> 9471 </td> 9472 9473 </tr> 9474 <tr class="entries_header"> 9475 <th class="th_details" colspan="5">Details</th> 9476 </tr> 9477 <tr class="entry_cont"> 9478 <td class="entry_details" colspan="5"> 9479 <p>This is a 3 element tuple that contains the max number of output simultaneous 9480streams for raw sensor,<wbr/> processed (and uncompressed),<wbr/> and JPEG formats respectively.<wbr/> 9481For example,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 9482number 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> 9483<p>This lists the upper bound of the number of output streams supported by 9484the camera device.<wbr/> Using more streams simultaneously may require more hardware and 9485CPU resources that will consume more power.<wbr/> The image format for a output stream can 9486be any supported format provided by <a href="#static_android.scaler.availableFormats">android.<wbr/>scaler.<wbr/>available<wbr/>Formats</a>.<wbr/> The formats 9487defined in <a href="#static_android.scaler.availableFormats">android.<wbr/>scaler.<wbr/>available<wbr/>Formats</a> can be catergorized into the 3 stream types 9488as below:</p> 9489<ul> 9490<li>JPEG-compressed format: BLOB.<wbr/></li> 9491<li>Raw formats: RAW_<wbr/>SENSOR and RAW_<wbr/>OPAQUE.<wbr/></li> 9492<li>processed,<wbr/> uncompressed formats: YCb<wbr/>Cr_<wbr/>420_<wbr/>888,<wbr/> YCr<wbr/>Cb_<wbr/>420_<wbr/>SP,<wbr/> YV12.<wbr/></li> 9493</ul> 9494 </td> 9495 </tr> 9496 9497 9498 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9499 <!-- end of entry --> 9500 9501 9502 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 9503 <td class="entry_name" rowspan="3"> 9504 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 9505 </td> 9506 <td class="entry_type"> 9507 <span class="entry_type_name">int32</span> 9508 <span class="entry_type_container">x</span> 9509 9510 <span class="entry_type_array"> 9511 1 9512 </span> 9513 <span class="entry_type_visibility"> [system]</span> 9514 9515 9516 </td> <!-- entry_type --> 9517 9518 <td class="entry_description"> 9519 <p>How many reprocessing streams of any type 9520can be allocated at the same time.<wbr/></p> 9521 </td> 9522 9523 <td class="entry_units"> 9524 </td> 9525 9526 <td class="entry_range"> 9527 <p>>= 0</p> 9528 </td> 9529 9530 <td class="entry_tags"> 9531 <ul class="entry_tags"> 9532 <li><a href="#tag_HAL2">HAL2</a></li> 9533 </ul> 9534 </td> 9535 9536 </tr> 9537 <tr class="entries_header"> 9538 <th class="th_details" colspan="5">Details</th> 9539 </tr> 9540 <tr class="entry_cont"> 9541 <td class="entry_details" colspan="5"> 9542 <p><strong>Deprecated</strong>.<wbr/> Only used by HAL2.<wbr/>x.<wbr/></p> 9543<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 9544 </td> 9545 </tr> 9546 9547 9548 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9549 <!-- end of entry --> 9550 9551 9552 <tr class="entry" id="static_android.request.maxNumInputStreams"> 9553 <td class="entry_name" rowspan="3"> 9554 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 9555 </td> 9556 <td class="entry_type"> 9557 <span class="entry_type_name">int32</span> 9558 9559 <span class="entry_type_visibility"> [public]</span> 9560 9561 9562 </td> <!-- entry_type --> 9563 9564 <td class="entry_description"> 9565 <p>The maximum numbers of any type of input streams 9566that can be configured and used simultaneously by a camera device.<wbr/></p> 9567 </td> 9568 9569 <td class="entry_units"> 9570 </td> 9571 9572 <td class="entry_range"> 9573 <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/> 9574>= 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> 9575 </td> 9576 9577 <td class="entry_tags"> 9578 </td> 9579 9580 </tr> 9581 <tr class="entries_header"> 9582 <th class="th_details" colspan="5">Details</th> 9583 </tr> 9584 <tr class="entry_cont"> 9585 <td class="entry_details" colspan="5"> 9586 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 9587<p>The image format for a input stream can be any supported 9588format provided by 9589<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/> When using an 9590input stream,<wbr/> there must be at least one output stream 9591configured to to receive the reprocessed images.<wbr/></p> 9592<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 9593stream image format will be RAW_<wbr/>OPAQUE,<wbr/> the associated output stream image format 9594should be JPEG.<wbr/></p> 9595 </td> 9596 </tr> 9597 9598 9599 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9600 <!-- end of entry --> 9601 9602 9603 <tr class="entry" id="static_android.request.pipelineMaxDepth"> 9604 <td class="entry_name" rowspan="5"> 9605 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 9606 </td> 9607 <td class="entry_type"> 9608 <span class="entry_type_name">byte</span> 9609 9610 <span class="entry_type_visibility"> [public]</span> 9611 9612 9613 </td> <!-- entry_type --> 9614 9615 <td class="entry_description"> 9616 <p>Specifies the number of maximum pipeline stages a frame 9617has to go through from when it's exposed to when it's available 9618to the framework.<wbr/></p> 9619 </td> 9620 9621 <td class="entry_units"> 9622 </td> 9623 9624 <td class="entry_range"> 9625 </td> 9626 9627 <td class="entry_tags"> 9628 </td> 9629 9630 </tr> 9631 <tr class="entries_header"> 9632 <th class="th_details" colspan="5">Details</th> 9633 </tr> 9634 <tr class="entry_cont"> 9635 <td class="entry_details" colspan="5"> 9636 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 9637one stage to readout) from the sensor.<wbr/> The ISP then usually adds 9638its own stages to do custom HW processing.<wbr/> Further stages may be 9639added by SW processing.<wbr/></p> 9640<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 9641processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 9642depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 9643the max pipeline depth.<wbr/></p> 9644<p>A pipeline depth of X stages is equivalent to a pipeline latency of 9645X frame intervals.<wbr/></p> 9646<p>This value will be 8 or less.<wbr/></p> 9647 </td> 9648 </tr> 9649 9650 <tr class="entries_header"> 9651 <th class="th_details" colspan="5">HAL Implementation Details</th> 9652 </tr> 9653 <tr class="entry_cont"> 9654 <td class="entry_details" colspan="5"> 9655 <p>This value should be 4 or less.<wbr/></p> 9656 </td> 9657 </tr> 9658 9659 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9660 <!-- end of entry --> 9661 9662 9663 <tr class="entry" id="static_android.request.partialResultCount"> 9664 <td class="entry_name" rowspan="3"> 9665 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 9666 </td> 9667 <td class="entry_type"> 9668 <span class="entry_type_name">int32</span> 9669 9670 <span class="entry_type_visibility"> [public]</span> 9671 9672 9673 </td> <!-- entry_type --> 9674 9675 <td class="entry_description"> 9676 <p>Optional.<wbr/> Defaults to 1.<wbr/> Defines how many sub-components 9677a result will be composed of.<wbr/></p> 9678 </td> 9679 9680 <td class="entry_units"> 9681 </td> 9682 9683 <td class="entry_range"> 9684 <p>>= 1</p> 9685 </td> 9686 9687 <td class="entry_tags"> 9688 </td> 9689 9690 </tr> 9691 <tr class="entries_header"> 9692 <th class="th_details" colspan="5">Details</th> 9693 </tr> 9694 <tr class="entry_cont"> 9695 <td class="entry_details" colspan="5"> 9696 <p>In order to combat the pipeline latency,<wbr/> partial results 9697may be delivered to the application layer from the camera device as 9698soon as they are available.<wbr/></p> 9699<p>A value of 1 means that partial results are not supported.<wbr/></p> 9700<p>A typical use case for this might be: after requesting an AF lock the 9701new AF state might be available 50% of the way through the pipeline.<wbr/> 9702The camera device could then immediately dispatch this state via a 9703partial result to the framework/<wbr/>application layer,<wbr/> and the rest of 9704the metadata via later partial results.<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.request.availableCapabilities"> 9714 <td class="entry_name" rowspan="5"> 9715 android.<wbr/>request.<wbr/>available<wbr/>Capabilities 9716 </td> 9717 <td class="entry_type"> 9718 <span class="entry_type_name entry_type_name_enum">byte</span> 9719 9720 <span class="entry_type_visibility"> [public]</span> 9721 9722 <ul class="entry_type_enum"> 9723 <li> 9724 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span> 9725 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera 9726device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 9727will support.<wbr/></p> 9728<p>The full set of features supported by this capability makes 9729the camera2 api backwards compatible with the camera1 9730(android.<wbr/>hardware.<wbr/>Camera) API.<wbr/></p> 9731<p>TODO: @hide this.<wbr/> Doesn't really mean anything except 9732act as a catch-all for all the 'base' functionality.<wbr/></p></span> 9733 </li> 9734 <li> 9735 <span class="entry_type_enum_name">OPTIONAL</span> 9736 <span class="entry_type_enum_notes"><p>This is a catch-all capability to include all other 9737tags or functionality not encapsulated by one of the other 9738capabilities.<wbr/></p> 9739<p>A typical example is all tags marked 'optional'.<wbr/></p> 9740<p>TODO: @hide.<wbr/> We may not need this if we @hide all the optional 9741tags not belonging to a capability.<wbr/></p></span> 9742 </li> 9743 <li> 9744 <span class="entry_type_enum_name">MANUAL_SENSOR</span> 9745 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such 9746as auto exposure,<wbr/> and auto focus can be 9747bypassed),<wbr/> this includes but is not limited to:</p> 9748<ul> 9749<li>Manual exposure control<ul> 9750<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 9751<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 9752</ul> 9753</li> 9754<li>Manual sensitivity control<ul> 9755<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 9756<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 9757<li><a href="#static_android.sensor.baseGainFactor">android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor</a></li> 9758</ul> 9759</li> 9760<li>Manual lens control<ul> 9761<li>android.<wbr/>lens.<wbr/>*</li> 9762</ul> 9763</li> 9764<li>Manual flash control<ul> 9765<li>android.<wbr/>flash.<wbr/>*</li> 9766</ul> 9767</li> 9768<li>Manual black level locking<ul> 9769<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> 9770</ul> 9771</li> 9772</ul> 9773<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera 9774device will accurately report the values applied by 3A in the 9775result.<wbr/></p></span> 9776 </li> 9777 <li> 9778 <span class="entry_type_enum_name">GCAM</span> 9779 <span class="entry_type_enum_optional">optional</span> 9780 <span class="entry_type_enum_notes"><p>TODO: This should be @hide</p> 9781<ul> 9782<li>Manual tonemap control<ul> 9783<li><a href="#controls_android.tonemap.curveBlue">android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue</a></li> 9784<li><a href="#controls_android.tonemap.curveGreen">android.<wbr/>tonemap.<wbr/>curve<wbr/>Green</a></li> 9785<li><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></li> 9786<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> 9787<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> 9788</ul> 9789</li> 9790<li>Manual white balance control<ul> 9791<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> 9792<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> 9793</ul> 9794</li> 9795<li>Lens shading map information<ul> 9796<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> 9797<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> 9798</ul> 9799</li> 9800</ul> 9801<p>If auto white balance is enabled,<wbr/> then the camera device 9802will accurately report the values applied by AWB in the result.<wbr/></p> 9803<p>The camera device will also support everything in MANUAL_<wbr/>SENSOR 9804except manual lens control and manual flash control.<wbr/></p></span> 9805 </li> 9806 <li> 9807 <span class="entry_type_enum_name">ZSL</span> 9808 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag use case.<wbr/></p> 9809<ul> 9810<li>At least one input stream can be used.<wbr/></li> 9811<li>RAW_<wbr/>OPAQUE is supported as an output/<wbr/>input format</li> 9812<li>Using RAW_<wbr/>OPAQUE does not cause a frame rate drop 9813 relative to the sensor's maximum capture rate (at that 9814 resolution).<wbr/></li> 9815<li>RAW_<wbr/>OPAQUE will be reprocessable into both YUV_<wbr/>420_<wbr/>888 9816 and JPEG formats.<wbr/></li> 9817<li>The maximum available resolution for RAW_<wbr/>OPAQUE streams 9818 (both input/<wbr/>output) will match the maximum available 9819 resolution of JPEG streams.<wbr/></li> 9820</ul></span> 9821 </li> 9822 <li> 9823 <span class="entry_type_enum_name">DNG</span> 9824 <span class="entry_type_enum_optional">optional</span> 9825 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers that can be 9826saved offline into a DNG format.<wbr/> It can reprocess DNG 9827files (produced from the same camera device) back into YUV.<wbr/></p> 9828<ul> 9829<li>At least one input stream can be used.<wbr/></li> 9830<li>RAW16 is supported as output/<wbr/>input format.<wbr/></li> 9831<li>RAW16 is reprocessable into both YUV_<wbr/>420_<wbr/>888 and JPEG 9832 formats.<wbr/></li> 9833<li>The maximum available resolution for RAW16 streams (both 9834 input/<wbr/>output) will match the value in 9835 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></li> 9836<li>All DNG-related optional metadata entries are provided 9837 by the camera device.<wbr/></li> 9838</ul></span> 9839 </li> 9840 </ul> 9841 9842 </td> <!-- entry_type --> 9843 9844 <td class="entry_description"> 9845 <p>List of capabilities that the camera device 9846advertises as fully supporting.<wbr/></p> 9847 </td> 9848 9849 <td class="entry_units"> 9850 </td> 9851 9852 <td class="entry_range"> 9853 </td> 9854 9855 <td class="entry_tags"> 9856 </td> 9857 9858 </tr> 9859 <tr class="entries_header"> 9860 <th class="th_details" colspan="5">Details</th> 9861 </tr> 9862 <tr class="entry_cont"> 9863 <td class="entry_details" colspan="5"> 9864 <p>A capability is a contract that the camera device makes in order 9865to be able to satisfy one or more use cases.<wbr/></p> 9866<p>Listing a capability guarantees that the whole set of features 9867required to support a common use will all be available.<wbr/></p> 9868<p>Using a subset of the functionality provided by an unsupported 9869capability may be possible on a specific camera device implementation; 9870to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> 9871<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> 9872<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> 9873<p>XX: Maybe these should go into <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> 9874as a table instead?</p> 9875<p>The following capabilities are guaranteed to be available on 9876<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> 9877<ul> 9878<li>MANUAL_<wbr/>SENSOR</li> 9879<li>ZSL</li> 9880</ul> 9881<p>Other capabilities may be available on either FULL or LIMITED 9882devices,<wbr/> but the app.<wbr/> should query this field to be sure.<wbr/></p> 9883 </td> 9884 </tr> 9885 9886 <tr class="entries_header"> 9887 <th class="th_details" colspan="5">HAL Implementation Details</th> 9888 </tr> 9889 <tr class="entry_cont"> 9890 <td class="entry_details" colspan="5"> 9891 <p>Additional constraint details per-capability will be available 9892in the Compatibility Test Suite.<wbr/></p> 9893<p>BACKWARD_<wbr/>COMPATIBLE capability requirements are not explicitly listed.<wbr/> 9894Instead refer to "BC" tags and the camera CTS tests in the 9895android.<wbr/>hardware.<wbr/>cts package.<wbr/></p> 9896<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> 9897<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the 9898request and the result in order to be considered to be 9899capability-compliant.<wbr/></p> 9900<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 9901then exposure time must be configurable via the request <em>and</em> 9902the actual exposure applied must be available via 9903the result.<wbr/></p> 9904 </td> 9905 </tr> 9906 9907 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9908 <!-- end of entry --> 9909 9910 9911 <tr class="entry" id="static_android.request.availableRequestKeys"> 9912 <td class="entry_name" rowspan="5"> 9913 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys 9914 </td> 9915 <td class="entry_type"> 9916 <span class="entry_type_name">int32</span> 9917 <span class="entry_type_container">x</span> 9918 9919 <span class="entry_type_array"> 9920 n 9921 </span> 9922 <span class="entry_type_visibility"> [hidden]</span> 9923 9924 9925 </td> <!-- entry_type --> 9926 9927 <td class="entry_description"> 9928 <p>A list of all keys that the camera device has available 9929to use with CaptureRequest.<wbr/></p> 9930 </td> 9931 9932 <td class="entry_units"> 9933 </td> 9934 9935 <td class="entry_range"> 9936 </td> 9937 9938 <td class="entry_tags"> 9939 </td> 9940 9941 </tr> 9942 <tr class="entries_header"> 9943 <th class="th_details" colspan="5">Details</th> 9944 </tr> 9945 <tr class="entry_cont"> 9946 <td class="entry_details" colspan="5"> 9947 <p>Attempting to set a key into a CaptureRequest that is not 9948listed here will result in an invalid request and will be rejected 9949by the camera device.<wbr/></p> 9950<p>This field can be used to query the feature set of a camera device 9951at a more granular level than capabilities.<wbr/> This is especially 9952important for optional keys that are not listed under any capability 9953in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 9954<p>TODO: This should be used by #getAvailableCaptureRequestKeys.<wbr/></p> 9955 </td> 9956 </tr> 9957 9958 <tr class="entries_header"> 9959 <th class="th_details" colspan="5">HAL Implementation Details</th> 9960 </tr> 9961 <tr class="entry_cont"> 9962 <td class="entry_details" colspan="5"> 9963 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 9964extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 9965<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 9966vendor extensions API and not against this field.<wbr/></p> 9967<p>The HAL must not consume any request tags that are not listed either 9968here or in the vendor tag list.<wbr/></p> 9969<p>The public camera2 API will always make the vendor tags visible 9970via CameraCharacteristics#getAvailableCaptureRequestKeys.<wbr/></p> 9971 </td> 9972 </tr> 9973 9974 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9975 <!-- end of entry --> 9976 9977 9978 <tr class="entry" id="static_android.request.availableResultKeys"> 9979 <td class="entry_name" rowspan="5"> 9980 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys 9981 </td> 9982 <td class="entry_type"> 9983 <span class="entry_type_name">int32</span> 9984 <span class="entry_type_container">x</span> 9985 9986 <span class="entry_type_array"> 9987 n 9988 </span> 9989 <span class="entry_type_visibility"> [hidden]</span> 9990 9991 9992 </td> <!-- entry_type --> 9993 9994 <td class="entry_description"> 9995 <p>A list of all keys that the camera device has available 9996to use with CaptureResult.<wbr/></p> 9997 </td> 9998 9999 <td class="entry_units"> 10000 </td> 10001 10002 <td class="entry_range"> 10003 </td> 10004 10005 <td class="entry_tags"> 10006 </td> 10007 10008 </tr> 10009 <tr class="entries_header"> 10010 <th class="th_details" colspan="5">Details</th> 10011 </tr> 10012 <tr class="entry_cont"> 10013 <td class="entry_details" colspan="5"> 10014 <p>Attempting to get a key from a CaptureResult that is not 10015listed here will always return a <code>null</code> value.<wbr/> Getting a key from 10016a CaptureResult that is listed here must never return a <code>null</code> 10017value.<wbr/></p> 10018<p>The following keys may return <code>null</code> unless they are enabled:</p> 10019<ul> 10020<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> 10021</ul> 10022<p>(Those sometimes-null keys should nevertheless be listed here 10023if they are available.<wbr/>)</p> 10024<p>This field can be used to query the feature set of a camera device 10025at a more granular level than capabilities.<wbr/> This is especially 10026important for optional keys that are not listed under any capability 10027in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 10028<p>TODO: This should be used by #getAvailableCaptureResultKeys.<wbr/></p> 10029 </td> 10030 </tr> 10031 10032 <tr class="entries_header"> 10033 <th class="th_details" colspan="5">HAL Implementation Details</th> 10034 </tr> 10035 <tr class="entry_cont"> 10036 <td class="entry_details" colspan="5"> 10037 <p>Tags listed here must always have an entry in the result metadata,<wbr/> 10038even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 10039matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 10040<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 10041extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 10042<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 10043vendor extensions API and not against this field.<wbr/></p> 10044<p>The HAL must not produce any result tags that are not listed either 10045here or in the vendor tag list.<wbr/></p> 10046<p>The public camera2 API will always make the vendor tags visible 10047via CameraCharacteristics#getAvailableCaptureResultKeys.<wbr/></p> 10048 </td> 10049 </tr> 10050 10051 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10052 <!-- end of entry --> 10053 10054 10055 <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> 10056 <td class="entry_name" rowspan="5"> 10057 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys 10058 </td> 10059 <td class="entry_type"> 10060 <span class="entry_type_name">int32</span> 10061 <span class="entry_type_container">x</span> 10062 10063 <span class="entry_type_array"> 10064 n 10065 </span> 10066 <span class="entry_type_visibility"> [hidden]</span> 10067 10068 10069 </td> <!-- entry_type --> 10070 10071 <td class="entry_description"> 10072 <p>A list of all keys that the camera device has available 10073to use with CameraCharacteristics.<wbr/></p> 10074 </td> 10075 10076 <td class="entry_units"> 10077 </td> 10078 10079 <td class="entry_range"> 10080 </td> 10081 10082 <td class="entry_tags"> 10083 </td> 10084 10085 </tr> 10086 <tr class="entries_header"> 10087 <th class="th_details" colspan="5">Details</th> 10088 </tr> 10089 <tr class="entry_cont"> 10090 <td class="entry_details" colspan="5"> 10091 <p>This entry follows the same rules as 10092<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for 10093CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 10094details.<wbr/></p> 10095<p>TODO: This should be used by CameraCharacteristics#getKeys.<wbr/></p> 10096 </td> 10097 </tr> 10098 10099 <tr class="entries_header"> 10100 <th class="th_details" colspan="5">HAL Implementation Details</th> 10101 </tr> 10102 <tr class="entry_cont"> 10103 <td class="entry_details" colspan="5"> 10104 <p>Tags listed here must always have an entry in the static info metadata,<wbr/> 10105even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 10106matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 10107<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 10108extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 10109<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 10110vendor extensions API and not against this field.<wbr/></p> 10111<p>The HAL must not have any tags in its static info that are not listed 10112either here or in the vendor tag list.<wbr/></p> 10113<p>The public camera2 API will always make the vendor tags visible 10114via CameraCharacteristics#getKeys.<wbr/></p> 10115 </td> 10116 </tr> 10117 10118 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10119 <!-- end of entry --> 10120 10121 10122 10123 <!-- end of kind --> 10124 </tbody> 10125 <tr><td colspan="6" class="kind">dynamic</td></tr> 10126 10127 <thead class="entries_header"> 10128 <tr> 10129 <th class="th_name">Property Name</th> 10130 <th class="th_type">Type</th> 10131 <th class="th_description">Description</th> 10132 <th class="th_units">Units</th> 10133 <th class="th_range">Range</th> 10134 <th class="th_tags">Tags</th> 10135 </tr> 10136 </thead> 10137 10138 <tbody> 10139 10140 10141 10142 10143 10144 10145 10146 10147 10148 10149 <tr class="entry" id="dynamic_android.request.frameCount"> 10150 <td class="entry_name" rowspan="3"> 10151 android.<wbr/>request.<wbr/>frame<wbr/>Count 10152 </td> 10153 <td class="entry_type"> 10154 <span class="entry_type_name">int32</span> 10155 10156 <span class="entry_type_visibility"> [public]</span> 10157 10158 10159 </td> <!-- entry_type --> 10160 10161 <td class="entry_description"> 10162 <p>A frame counter set by the framework.<wbr/> This value monotonically 10163increases with every new result (that is,<wbr/> each new result has a unique 10164frameCount value).<wbr/></p> 10165 </td> 10166 10167 <td class="entry_units"> 10168 count of frames 10169 </td> 10170 10171 <td class="entry_range"> 10172 <p>> 0</p> 10173 </td> 10174 10175 <td class="entry_tags"> 10176 </td> 10177 10178 </tr> 10179 <tr class="entries_header"> 10180 <th class="th_details" colspan="5">Details</th> 10181 </tr> 10182 <tr class="entry_cont"> 10183 <td class="entry_details" colspan="5"> 10184 <p>Reset on release()</p> 10185 </td> 10186 </tr> 10187 10188 10189 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10190 <!-- end of entry --> 10191 10192 10193 <tr class="entry" id="dynamic_android.request.id"> 10194 <td class="entry_name" rowspan="1"> 10195 android.<wbr/>request.<wbr/>id 10196 </td> 10197 <td class="entry_type"> 10198 <span class="entry_type_name">int32</span> 10199 10200 <span class="entry_type_visibility"> [hidden]</span> 10201 10202 10203 </td> <!-- entry_type --> 10204 10205 <td class="entry_description"> 10206 <p>An application-specified ID for the current 10207request.<wbr/> Must be maintained unchanged in output 10208frame</p> 10209 </td> 10210 10211 <td class="entry_units"> 10212 arbitrary integer assigned by application 10213 </td> 10214 10215 <td class="entry_range"> 10216 <p>Any int</p> 10217 </td> 10218 10219 <td class="entry_tags"> 10220 <ul class="entry_tags"> 10221 <li><a href="#tag_V1">V1</a></li> 10222 </ul> 10223 </td> 10224 10225 </tr> 10226 10227 10228 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10229 <!-- end of entry --> 10230 10231 10232 <tr class="entry" id="dynamic_android.request.metadataMode"> 10233 <td class="entry_name" rowspan="1"> 10234 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 10235 </td> 10236 <td class="entry_type"> 10237 <span class="entry_type_name entry_type_name_enum">byte</span> 10238 10239 <span class="entry_type_visibility"> [system]</span> 10240 10241 <ul class="entry_type_enum"> 10242 <li> 10243 <span class="entry_type_enum_name">NONE</span> 10244 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 10245for application-bound buffer data.<wbr/> If no 10246application-bound streams exist,<wbr/> no frame should be 10247placed in the output frame queue.<wbr/> If such streams 10248exist,<wbr/> a frame should be placed on the output queue 10249with null metadata but with the necessary output buffer 10250information.<wbr/> Timestamp information should still be 10251included with any output stream buffers</p></span> 10252 </li> 10253 <li> 10254 <span class="entry_type_enum_name">FULL</span> 10255 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 10256only be produced if they are separately 10257enabled</p></span> 10258 </li> 10259 </ul> 10260 10261 </td> <!-- entry_type --> 10262 10263 <td class="entry_description"> 10264 <p>How much metadata to produce on 10265output</p> 10266 </td> 10267 10268 <td class="entry_units"> 10269 </td> 10270 10271 <td class="entry_range"> 10272 </td> 10273 10274 <td class="entry_tags"> 10275 </td> 10276 10277 </tr> 10278 10279 10280 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10281 <!-- end of entry --> 10282 10283 10284 <tr class="entry" id="dynamic_android.request.outputStreams"> 10285 <td class="entry_name" rowspan="3"> 10286 android.<wbr/>request.<wbr/>output<wbr/>Streams 10287 </td> 10288 <td class="entry_type"> 10289 <span class="entry_type_name">int32</span> 10290 <span class="entry_type_container">x</span> 10291 10292 <span class="entry_type_array"> 10293 n 10294 </span> 10295 <span class="entry_type_visibility"> [system]</span> 10296 10297 10298 </td> <!-- entry_type --> 10299 10300 <td class="entry_description"> 10301 <p>Lists which camera output streams image data 10302from this capture must be sent to</p> 10303 </td> 10304 10305 <td class="entry_units"> 10306 List of camera stream IDs 10307 </td> 10308 10309 <td class="entry_range"> 10310 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> List must only include streams that have been 10311created</p> 10312 </td> 10313 10314 <td class="entry_tags"> 10315 <ul class="entry_tags"> 10316 <li><a href="#tag_HAL2">HAL2</a></li> 10317 </ul> 10318 </td> 10319 10320 </tr> 10321 <tr class="entries_header"> 10322 <th class="th_details" colspan="5">Details</th> 10323 </tr> 10324 <tr class="entry_cont"> 10325 <td class="entry_details" colspan="5"> 10326 <p>If no output streams are listed,<wbr/> then the image 10327data should simply be discarded.<wbr/> The image data must 10328still be captured for metadata and statistics production,<wbr/> 10329and the lens and flash must operate as requested.<wbr/></p> 10330 </td> 10331 </tr> 10332 10333 10334 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10335 <!-- end of entry --> 10336 10337 10338 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 10339 <td class="entry_name" rowspan="5"> 10340 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 10341 </td> 10342 <td class="entry_type"> 10343 <span class="entry_type_name">byte</span> 10344 10345 <span class="entry_type_visibility"> [public]</span> 10346 10347 10348 </td> <!-- entry_type --> 10349 10350 <td class="entry_description"> 10351 <p>Specifies the number of pipeline stages the frame went 10352through from when it was exposed to when the final completed result 10353was available to the framework.<wbr/></p> 10354 </td> 10355 10356 <td class="entry_units"> 10357 </td> 10358 10359 <td class="entry_range"> 10360 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 10361 </td> 10362 10363 <td class="entry_tags"> 10364 </td> 10365 10366 </tr> 10367 <tr class="entries_header"> 10368 <th class="th_details" colspan="5">Details</th> 10369 </tr> 10370 <tr class="entry_cont"> 10371 <td class="entry_details" colspan="5"> 10372 <p>Depending on what settings are used in the request,<wbr/> and 10373what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 10374and some pipeline stages skipped.<wbr/></p> 10375<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 10376 </td> 10377 </tr> 10378 10379 <tr class="entries_header"> 10380 <th class="th_details" colspan="5">HAL Implementation Details</th> 10381 </tr> 10382 <tr class="entry_cont"> 10383 <td class="entry_details" colspan="5"> 10384 <p>This value must always represent the accurate count of how many 10385pipeline stages were actually used.<wbr/></p> 10386 </td> 10387 </tr> 10388 10389 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10390 <!-- end of entry --> 10391 10392 10393 10394 <!-- end of kind --> 10395 </tbody> 10396 10397 <!-- end of section --> 10398 <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr> 10399 10400 10401 <tr><td colspan="6" class="kind">controls</td></tr> 10402 10403 <thead class="entries_header"> 10404 <tr> 10405 <th class="th_name">Property Name</th> 10406 <th class="th_type">Type</th> 10407 <th class="th_description">Description</th> 10408 <th class="th_units">Units</th> 10409 <th class="th_range">Range</th> 10410 <th class="th_tags">Tags</th> 10411 </tr> 10412 </thead> 10413 10414 <tbody> 10415 10416 10417 10418 10419 10420 10421 10422 10423 10424 10425 <tr class="entry" id="controls_android.scaler.cropRegion"> 10426 <td class="entry_name" rowspan="3"> 10427 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 10428 </td> 10429 <td class="entry_type"> 10430 <span class="entry_type_name">int32</span> 10431 <span class="entry_type_container">x</span> 10432 10433 <span class="entry_type_array"> 10434 4 10435 </span> 10436 <span class="entry_type_visibility"> [public as rectangle]</span> 10437 10438 10439 </td> <!-- entry_type --> 10440 10441 <td class="entry_description"> 10442 <p>(x,<wbr/> y,<wbr/> width,<wbr/> height).<wbr/></p> 10443<p>A rectangle with the top-level corner of (x,<wbr/>y) and size 10444(width,<wbr/> height).<wbr/> The region of the sensor that is used for 10445output.<wbr/> Each stream must use this rectangle to produce its 10446output,<wbr/> cropping to a smaller region if necessary to 10447maintain the stream's aspect ratio.<wbr/></p> 10448<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 10449 </td> 10450 10451 <td class="entry_units"> 10452 (x,<wbr/>y) of top-left corner,<wbr/> width and height of region 10453 in pixels; (0,<wbr/>0) is top-left corner of 10454 android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size 10455 </td> 10456 10457 <td class="entry_range"> 10458 </td> 10459 10460 <td class="entry_tags"> 10461 <ul class="entry_tags"> 10462 <li><a href="#tag_BC">BC</a></li> 10463 </ul> 10464 </td> 10465 10466 </tr> 10467 <tr class="entries_header"> 10468 <th class="th_details" colspan="5">Details</th> 10469 </tr> 10470 <tr class="entry_cont"> 10471 <td class="entry_details" colspan="5"> 10472 <p>Any additional per-stream cropping must be done to 10473maximize the final pixel area of the stream.<wbr/></p> 10474<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 10475ratio,<wbr/> then 4:3 streams should use the exact crop 10476region.<wbr/> 16:9 streams should further crop vertically 10477(letterbox).<wbr/></p> 10478<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 10479outputs should crop horizontally (pillarbox),<wbr/> and 16:9 10480streams should match exactly.<wbr/> These additional crops must 10481be centered within the crop region.<wbr/></p> 10482<p>The output streams must maintain square pixels at all 10483times,<wbr/> no matter what the relative aspect ratios of the 10484crop region and the stream are.<wbr/> Negative values for 10485corner are allowed for raw output if full pixel array is 10486larger than active pixel array.<wbr/> Width and height may be 10487rounded to nearest larger supportable width,<wbr/> especially 10488for raw output,<wbr/> where only a few fixed scales may be 10489possible.<wbr/> The width and height of the crop region cannot 10490be set to be smaller than floor( activeArraySize.<wbr/>width /<wbr/> 10491<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> ) and floor( 10492activeArraySize.<wbr/>height /<wbr/> 10493<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>),<wbr/> respectively.<wbr/></p> 10494 </td> 10495 </tr> 10496 10497 10498 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10499 <!-- end of entry --> 10500 10501 10502 10503 <!-- end of kind --> 10504 </tbody> 10505 <tr><td colspan="6" class="kind">static</td></tr> 10506 10507 <thead class="entries_header"> 10508 <tr> 10509 <th class="th_name">Property Name</th> 10510 <th class="th_type">Type</th> 10511 <th class="th_description">Description</th> 10512 <th class="th_units">Units</th> 10513 <th class="th_range">Range</th> 10514 <th class="th_tags">Tags</th> 10515 </tr> 10516 </thead> 10517 10518 <tbody> 10519 10520 10521 10522 10523 10524 10525 10526 10527 10528 10529 <tr class="entry" id="static_android.scaler.availableFormats"> 10530 <td class="entry_name" rowspan="5"> 10531 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 10532 </td> 10533 <td class="entry_type"> 10534 <span class="entry_type_name entry_type_name_enum">int32</span> 10535 <span class="entry_type_container">x</span> 10536 10537 <span class="entry_type_array"> 10538 n 10539 </span> 10540 <span class="entry_type_visibility"> [public as imageFormat]</span> 10541 10542 <ul class="entry_type_enum"> 10543 <li> 10544 <span class="entry_type_enum_name">RAW16</span> 10545 <span class="entry_type_enum_optional">optional</span> 10546 <span class="entry_type_enum_value">0x20</span> 10547 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image 10548buffers with 16-bit pixels.<wbr/> Buffers of this format are typically 10549expected to have a Bayer Color Filter Array (CFA) layout,<wbr/> which 10550is given in <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors 10551with CFAs that are not representable by a format in 10552<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not use this 10553format.<wbr/></p> 10554<p>Buffers of this format will also follow the constraints given for 10555RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> 10556<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for 10557the full set of performance guarantees.<wbr/></p></span> 10558 </li> 10559 <li> 10560 <span class="entry_type_enum_name">RAW_OPAQUE</span> 10561 <span class="entry_type_enum_optional">optional</span> 10562 <span class="entry_type_enum_value">0x24</span> 10563 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an 10564image sensor.<wbr/> The actual structure of buffers of this format is 10565platform-specific,<wbr/> but must follow several constraints:</p> 10566<ol> 10567<li>No image post-processing operations may have been applied to 10568buffers of this type.<wbr/> These buffers contain raw image data coming 10569directly from the image sensor.<wbr/></li> 10570<li>If a buffer of this format is passed to the camera device for 10571reprocessing,<wbr/> the resulting images will be identical to the images 10572produced if the buffer had come directly from the sensor and was 10573processed with the same settings.<wbr/></li> 10574</ol> 10575<p>The intended use for this format is to allow access to the native 10576raw format buffers coming directly from the camera sensor without 10577any additional conversions or decrease in framerate.<wbr/></p> 10578<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 10579performance guarantees.<wbr/></p></span> 10580 </li> 10581 <li> 10582 <span class="entry_type_enum_name">YV12</span> 10583 <span class="entry_type_enum_optional">optional</span> 10584 <span class="entry_type_enum_value">0x32315659</span> 10585 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 10586 </li> 10587 <li> 10588 <span class="entry_type_enum_name">YCrCb_420_SP</span> 10589 <span class="entry_type_enum_optional">optional</span> 10590 <span class="entry_type_enum_value">0x11</span> 10591 <span class="entry_type_enum_notes"><p>NV21</p></span> 10592 </li> 10593 <li> 10594 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span> 10595 <span class="entry_type_enum_value">0x22</span> 10596 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 10597 </li> 10598 <li> 10599 <span class="entry_type_enum_name">YCbCr_420_888</span> 10600 <span class="entry_type_enum_value">0x23</span> 10601 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 10602 </li> 10603 <li> 10604 <span class="entry_type_enum_name">BLOB</span> 10605 <span class="entry_type_enum_value">0x21</span> 10606 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 10607 </li> 10608 </ul> 10609 10610 </td> <!-- entry_type --> 10611 10612 <td class="entry_description"> 10613 <p>The list of image formats that are supported by this 10614camera device for output streams.<wbr/></p> 10615 </td> 10616 10617 <td class="entry_units"> 10618 </td> 10619 10620 <td class="entry_range"> 10621 </td> 10622 10623 <td class="entry_tags"> 10624 <ul class="entry_tags"> 10625 <li><a href="#tag_BC">BC</a></li> 10626 </ul> 10627 </td> 10628 10629 </tr> 10630 <tr class="entries_header"> 10631 <th class="th_details" colspan="5">Details</th> 10632 </tr> 10633 <tr class="entry_cont"> 10634 <td class="entry_details" colspan="5"> 10635 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 10636<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 10637 </td> 10638 </tr> 10639 10640 <tr class="entries_header"> 10641 <th class="th_details" colspan="5">HAL Implementation Details</th> 10642 </tr> 10643 <tr class="entry_cont"> 10644 <td class="entry_details" colspan="5"> 10645 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 10646system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 10647<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 10648gralloc module will select a format based on the usage flags provided 10649by the camera HAL device and the other endpoint of the stream.<wbr/> It is 10650usually used by preview and recording streams,<wbr/> where the application doesn't 10651need access the image data.<wbr/></p> 10652<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 10653needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p> 10654<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 10655<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly 10656recommended that any information used by the camera device when 10657processing images is fully expressed by the result metadata 10658for that image buffer.<wbr/></p> 10659 </td> 10660 </tr> 10661 10662 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10663 <!-- end of entry --> 10664 10665 10666 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 10667 <td class="entry_name" rowspan="3"> 10668 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 10669 </td> 10670 <td class="entry_type"> 10671 <span class="entry_type_name">int64</span> 10672 <span class="entry_type_container">x</span> 10673 10674 <span class="entry_type_array"> 10675 n 10676 </span> 10677 <span class="entry_type_visibility"> [public]</span> 10678 10679 10680 </td> <!-- entry_type --> 10681 10682 <td class="entry_description"> 10683 <p>The minimum frame duration that is supported 10684for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 10685 </td> 10686 10687 <td class="entry_units"> 10688 ns 10689 </td> 10690 10691 <td class="entry_range"> 10692 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> TODO: Remove property.<wbr/></p> 10693 </td> 10694 10695 <td class="entry_tags"> 10696 <ul class="entry_tags"> 10697 <li><a href="#tag_BC">BC</a></li> 10698 </ul> 10699 </td> 10700 10701 </tr> 10702 <tr class="entries_header"> 10703 <th class="th_details" colspan="5">Details</th> 10704 </tr> 10705 <tr class="entry_cont"> 10706 <td class="entry_details" colspan="5"> 10707 <p>This corresponds to the minimum steady-state frame duration when only 10708that JPEG stream is active and captured in a burst,<wbr/> with all 10709processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 10710<p>When multiple streams are configured,<wbr/> the minimum 10711frame duration will be >= max(individual stream min 10712durations)</p> 10713 </td> 10714 </tr> 10715 10716 10717 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10718 <!-- end of entry --> 10719 10720 10721 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 10722 <td class="entry_name" rowspan="5"> 10723 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 10724 </td> 10725 <td class="entry_type"> 10726 <span class="entry_type_name">int32</span> 10727 <span class="entry_type_container">x</span> 10728 10729 <span class="entry_type_array"> 10730 n x 2 10731 </span> 10732 <span class="entry_type_visibility"> [public as size]</span> 10733 10734 10735 </td> <!-- entry_type --> 10736 10737 <td class="entry_description"> 10738 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 10739 </td> 10740 10741 <td class="entry_units"> 10742 </td> 10743 10744 <td class="entry_range"> 10745 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> TODO: Remove property.<wbr/></p> 10746 </td> 10747 10748 <td class="entry_tags"> 10749 <ul class="entry_tags"> 10750 <li><a href="#tag_BC">BC</a></li> 10751 </ul> 10752 </td> 10753 10754 </tr> 10755 <tr class="entries_header"> 10756 <th class="th_details" colspan="5">Details</th> 10757 </tr> 10758 <tr class="entry_cont"> 10759 <td class="entry_details" colspan="5"> 10760 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 10761sensor 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> 10762 </td> 10763 </tr> 10764 10765 <tr class="entries_header"> 10766 <th class="th_details" colspan="5">HAL Implementation Details</th> 10767 </tr> 10768 <tr class="entry_cont"> 10769 <td class="entry_details" colspan="5"> 10770 <p>The HAL must include sensor maximum resolution 10771(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 10772and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 10773 </td> 10774 </tr> 10775 10776 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10777 <!-- end of entry --> 10778 10779 10780 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 10781 <td class="entry_name" rowspan="1"> 10782 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 10783 </td> 10784 <td class="entry_type"> 10785 <span class="entry_type_name">float</span> 10786 10787 <span class="entry_type_visibility"> [public]</span> 10788 10789 10790 </td> <!-- entry_type --> 10791 10792 <td class="entry_description"> 10793 <p>The maximum ratio between active area width 10794and crop region width,<wbr/> or between active area height and 10795crop region height,<wbr/> if the crop region height is larger 10796than width</p> 10797 </td> 10798 10799 <td class="entry_units"> 10800 </td> 10801 10802 <td class="entry_range"> 10803 <p>>=1</p> 10804 </td> 10805 10806 <td class="entry_tags"> 10807 <ul class="entry_tags"> 10808 <li><a href="#tag_BC">BC</a></li> 10809 </ul> 10810 </td> 10811 10812 </tr> 10813 10814 10815 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10816 <!-- end of entry --> 10817 10818 10819 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 10820 <td class="entry_name" rowspan="3"> 10821 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 10822 </td> 10823 <td class="entry_type"> 10824 <span class="entry_type_name">int64</span> 10825 <span class="entry_type_container">x</span> 10826 10827 <span class="entry_type_array"> 10828 n 10829 </span> 10830 <span class="entry_type_visibility"> [public]</span> 10831 10832 10833 </td> <!-- entry_type --> 10834 10835 <td class="entry_description"> 10836 <p>For each available processed output size (defined in 10837<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 10838minimum supportable frame duration for that size.<wbr/></p> 10839 </td> 10840 10841 <td class="entry_units"> 10842 ns 10843 </td> 10844 10845 <td class="entry_range"> 10846 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> TODO: Remove property.<wbr/></p> 10847 </td> 10848 10849 <td class="entry_tags"> 10850 <ul class="entry_tags"> 10851 <li><a href="#tag_BC">BC</a></li> 10852 </ul> 10853 </td> 10854 10855 </tr> 10856 <tr class="entries_header"> 10857 <th class="th_details" colspan="5">Details</th> 10858 </tr> 10859 <tr class="entry_cont"> 10860 <td class="entry_details" colspan="5"> 10861 <p>This should correspond to the frame duration when only that processed 10862stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 10863set to FAST.<wbr/></p> 10864<p>When multiple streams are configured,<wbr/> the minimum frame duration will 10865be >= max(individual stream min durations).<wbr/></p> 10866 </td> 10867 </tr> 10868 10869 10870 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10871 <!-- end of entry --> 10872 10873 10874 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 10875 <td class="entry_name" rowspan="5"> 10876 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 10877 </td> 10878 <td class="entry_type"> 10879 <span class="entry_type_name">int32</span> 10880 <span class="entry_type_container">x</span> 10881 10882 <span class="entry_type_array"> 10883 n x 2 10884 </span> 10885 <span class="entry_type_visibility"> [public as size]</span> 10886 10887 10888 </td> <!-- entry_type --> 10889 10890 <td class="entry_description"> 10891 <p>The resolutions available for use with 10892processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 10893platform opaque YUV/<wbr/>RGB streams to the GPU or video 10894encoders.<wbr/></p> 10895 </td> 10896 10897 <td class="entry_units"> 10898 </td> 10899 10900 <td class="entry_range"> 10901 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> TODO: Remove property.<wbr/></p> 10902 </td> 10903 10904 <td class="entry_tags"> 10905 <ul class="entry_tags"> 10906 <li><a href="#tag_BC">BC</a></li> 10907 </ul> 10908 </td> 10909 10910 </tr> 10911 <tr class="entries_header"> 10912 <th class="th_details" colspan="5">Details</th> 10913 </tr> 10914 <tr class="entry_cont"> 10915 <td class="entry_details" colspan="5"> 10916 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 10917<p>For a given use case,<wbr/> the actual maximum supported resolution 10918may be lower than what is listed here,<wbr/> depending on the destination 10919Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 10920the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 10921smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 10922can provide.<wbr/></p> 10923<p>Please reference the documentation for the image data destination to 10924check if it limits the maximum size for image data.<wbr/></p> 10925 </td> 10926 </tr> 10927 10928 <tr class="entries_header"> 10929 <th class="th_details" colspan="5">HAL Implementation Details</th> 10930 </tr> 10931 <tr class="entry_cont"> 10932 <td class="entry_details" colspan="5"> 10933 <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/> 10934the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> 10935and each below resolution if it is smaller than or equal to the sensor 10936maximum resolution (if they are not listed in JPEG sizes already):</p> 10937<ul> 10938<li>240p (320 x 240)</li> 10939<li>480p (640 x 480)</li> 10940<li>720p (1280 x 720)</li> 10941<li>1080p (1920 x 1080)</li> 10942</ul> 10943<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/> 10944the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 10945 </td> 10946 </tr> 10947 10948 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10949 <!-- end of entry --> 10950 10951 10952 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 10953 <td class="entry_name" rowspan="3"> 10954 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 10955 </td> 10956 <td class="entry_type"> 10957 <span class="entry_type_name">int64</span> 10958 <span class="entry_type_container">x</span> 10959 10960 <span class="entry_type_array"> 10961 n 10962 </span> 10963 <span class="entry_type_visibility"> [system]</span> 10964 10965 10966 </td> <!-- entry_type --> 10967 10968 <td class="entry_description"> 10969 <p>For each available raw output size (defined in 10970<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 10971supportable frame duration for that size.<wbr/></p> 10972 </td> 10973 10974 <td class="entry_units"> 10975 ns 10976 </td> 10977 10978 <td class="entry_range"> 10979 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> TODO: Remove property.<wbr/></p> 10980 </td> 10981 10982 <td class="entry_tags"> 10983 <ul class="entry_tags"> 10984 <li><a href="#tag_BC">BC</a></li> 10985 </ul> 10986 </td> 10987 10988 </tr> 10989 <tr class="entries_header"> 10990 <th class="th_details" colspan="5">Details</th> 10991 </tr> 10992 <tr class="entry_cont"> 10993 <td class="entry_details" colspan="5"> 10994 <p>Should correspond to the frame duration when only the raw stream is 10995active.<wbr/></p> 10996<p>When multiple streams are configured,<wbr/> the minimum 10997frame duration will be >= max(individual stream min 10998durations)</p> 10999 </td> 11000 </tr> 11001 11002 11003 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11004 <!-- end of entry --> 11005 11006 11007 <tr class="entry" id="static_android.scaler.availableRawSizes"> 11008 <td class="entry_name" rowspan="1"> 11009 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 11010 </td> 11011 <td class="entry_type"> 11012 <span class="entry_type_name">int32</span> 11013 <span class="entry_type_container">x</span> 11014 11015 <span class="entry_type_array"> 11016 n x 2 11017 </span> 11018 <span class="entry_type_visibility"> [system as size]</span> 11019 11020 11021 </td> <!-- entry_type --> 11022 11023 <td class="entry_description"> 11024 <p>The resolutions available for use with raw 11025sensor output streams,<wbr/> listed as width,<wbr/> 11026height</p> 11027 </td> 11028 11029 <td class="entry_units"> 11030 </td> 11031 11032 <td class="entry_range"> 11033 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> TODO: Remove property.<wbr/> 11034Must include: - sensor maximum resolution.<wbr/></p> 11035 </td> 11036 11037 <td class="entry_tags"> 11038 </td> 11039 11040 </tr> 11041 11042 11043 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11044 <!-- end of entry --> 11045 11046 11047 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> 11048 <td class="entry_name" rowspan="5"> 11049 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 11050 </td> 11051 <td class="entry_type"> 11052 <span class="entry_type_name">int32</span> 11053 <span class="entry_type_container">x</span> 11054 11055 <span class="entry_type_array"> 11056 n 11057 </span> 11058 <span class="entry_type_visibility"> [public as imageFormat]</span> 11059 11060 11061 </td> <!-- entry_type --> 11062 11063 <td class="entry_description"> 11064 <p>The mapping of image formats that are supported by this 11065camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 11066 </td> 11067 11068 <td class="entry_units"> 11069 </td> 11070 11071 <td class="entry_range"> 11072 <p>See <a href="#static_android.scaler.availableFormats">android.<wbr/>scaler.<wbr/>available<wbr/>Formats</a> for enum definitions.<wbr/></p> 11073 </td> 11074 11075 <td class="entry_tags"> 11076 </td> 11077 11078 </tr> 11079 <tr class="entries_header"> 11080 <th class="th_details" colspan="5">Details</th> 11081 </tr> 11082 <tr class="entry_cont"> 11083 <td class="entry_details" colspan="5"> 11084 <p>All camera devices with at least 1 11085<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one 11086available input format.<wbr/></p> 11087<p>The camera device will support the following map of formats,<wbr/> 11088if its dependent capability is supported:</p> 11089<table> 11090<thead> 11091<tr> 11092<th align="left">Input Format</th> 11093<th align="left">Output Format</th> 11094<th align="left">Capability</th> 11095</tr> 11096</thead> 11097<tbody> 11098<tr> 11099<td align="left">RAW_<wbr/>OPAQUE</td> 11100<td align="left">JPEG</td> 11101<td align="left">ZSL</td> 11102</tr> 11103<tr> 11104<td align="left">RAW_<wbr/>OPAQUE</td> 11105<td align="left">YUV_<wbr/>420_<wbr/>888</td> 11106<td align="left">ZSL</td> 11107</tr> 11108<tr> 11109<td align="left">RAW_<wbr/>OPAQUE</td> 11110<td align="left">RAW16</td> 11111<td align="left">DNG</td> 11112</tr> 11113<tr> 11114<td align="left">RAW16</td> 11115<td align="left">YUV_<wbr/>420_<wbr/>888</td> 11116<td align="left">DNG</td> 11117</tr> 11118<tr> 11119<td align="left">RAW16</td> 11120<td align="left">JPEG</td> 11121<td align="left">DNG</td> 11122</tr> 11123</tbody> 11124</table> 11125<p>For ZSL-capable camera devices,<wbr/> using the RAW_<wbr/>OPAQUE format 11126as either input or output will never hurt maximum frame rate (i.<wbr/>e.<wbr/> 11127<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> will not have RAW_<wbr/>OPAQUE).<wbr/></p> 11128<p>Attempting to configure an input stream with output streams not 11129listed as available in this map is not valid.<wbr/></p> 11130<p>TODO: Add java type mapping for this property.<wbr/></p> 11131 </td> 11132 </tr> 11133 11134 <tr class="entries_header"> 11135 <th class="th_details" colspan="5">HAL Implementation Details</th> 11136 </tr> 11137 <tr class="entry_cont"> 11138 <td class="entry_details" colspan="5"> 11139 <p>This value is encoded as a variable-size array-of-arrays.<wbr/> 11140The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where 11141<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another 11142inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> 11143<p>A code sample to read/<wbr/>write this encoding (with a device that 11144supports reprocessing RAW_<wbr/>OPAQUE to RAW16,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 11145and reprocessing RAW16 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 11146<pre><code>//<wbr/> reading 11147int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 11148for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { 11149 int32_<wbr/>t format = contents[i++]; 11150 int32_<wbr/>t length = contents[i++]; 11151 int32_<wbr/>t output_<wbr/>formats[length]; 11152 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> 11153 length * sizeof(int32_<wbr/>t)); 11154 i += length; 11155} 11156 11157//<wbr/> writing (static example,<wbr/> DNG+ZSL) 11158int32_<wbr/>t[] contents = { 11159 RAW_<wbr/>OPAQUE,<wbr/> 3,<wbr/> RAW16,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 11160 RAW16,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 11161}; 11162update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> 11163 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); 11164</code></pre> 11165<p>If the HAL claims to support any of the capabilities listed in the 11166above details,<wbr/> then it must also support all the input-output 11167combinations listed for that capability.<wbr/> It can optionally support 11168additional formats if it so chooses.<wbr/></p> 11169<p>Refer to <a href="#static_android.scaler.availableFormats">android.<wbr/>scaler.<wbr/>available<wbr/>Formats</a> for the enum values 11170which correspond to HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 11171system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 11172 </td> 11173 </tr> 11174 11175 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11176 <!-- end of entry --> 11177 11178 11179 <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> 11180 <td class="entry_name" rowspan="5"> 11181 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations 11182 </td> 11183 <td class="entry_type"> 11184 <span class="entry_type_name entry_type_name_enum">int32</span> 11185 <span class="entry_type_container">x</span> 11186 11187 <span class="entry_type_array"> 11188 n x 4 11189 </span> 11190 <span class="entry_type_visibility"> [public]</span> 11191 11192 <ul class="entry_type_enum"> 11193 <li> 11194 <span class="entry_type_enum_name">OUTPUT</span> 11195 </li> 11196 <li> 11197 <span class="entry_type_enum_name">INPUT</span> 11198 </li> 11199 </ul> 11200 11201 </td> <!-- entry_type --> 11202 11203 <td class="entry_description"> 11204 <p>The available stream configurations that this 11205camera device supports 11206(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 11207 </td> 11208 11209 <td class="entry_units"> 11210 </td> 11211 11212 <td class="entry_range"> 11213 </td> 11214 11215 <td class="entry_tags"> 11216 </td> 11217 11218 </tr> 11219 <tr class="entries_header"> 11220 <th class="th_details" colspan="5">Details</th> 11221 </tr> 11222 <tr class="entry_cont"> 11223 <td class="entry_details" colspan="5"> 11224 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> 11225tuples.<wbr/></p> 11226<p>All camera devices will support sensor maximum resolution (defined by 11227<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> 11228<p>For a given use case,<wbr/> the actual maximum supported resolution 11229may be lower than what is listed here,<wbr/> depending on the destination 11230Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 11231the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 11232smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 11233can provide.<wbr/></p> 11234<p>Please reference the documentation for the image data destination to 11235check if it limits the maximum size for image data.<wbr/></p> 11236<p>Not all output formats may be supported in a configuration with 11237an input stream of a particular format.<wbr/> For more details,<wbr/> see 11238<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 11239<p>The following table describes the minimum required output stream 11240configurations based on the hardware level 11241(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 11242<table> 11243<thead> 11244<tr> 11245<th align="center">Format</th> 11246<th align="center">Size</th> 11247<th align="center">Hardware Level</th> 11248<th align="center">Notes</th> 11249</tr> 11250</thead> 11251<tbody> 11252<tr> 11253<td align="center">JPEG</td> 11254<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 11255<td align="center">Any</td> 11256<td align="center"></td> 11257</tr> 11258<tr> 11259<td align="center">JPEG</td> 11260<td align="center">1920x1080 (1080p)</td> 11261<td align="center">Any</td> 11262<td align="center">if 1080p <= activeArraySize</td> 11263</tr> 11264<tr> 11265<td align="center">JPEG</td> 11266<td align="center">1280x720 (720)</td> 11267<td align="center">Any</td> 11268<td align="center">if 720p <= activeArraySize</td> 11269</tr> 11270<tr> 11271<td align="center">JPEG</td> 11272<td align="center">640x480 (480p)</td> 11273<td align="center">Any</td> 11274<td align="center">if 480p <= activeArraySize</td> 11275</tr> 11276<tr> 11277<td align="center">JPEG</td> 11278<td align="center">320x240 (240p)</td> 11279<td align="center">Any</td> 11280<td align="center">if 240p <= activeArraySize</td> 11281</tr> 11282<tr> 11283<td align="center">YUV_<wbr/>420_<wbr/>888</td> 11284<td align="center">all output sizes available for JPEG</td> 11285<td align="center">FULL</td> 11286<td align="center"></td> 11287</tr> 11288<tr> 11289<td align="center">YUV_<wbr/>420_<wbr/>888</td> 11290<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 11291<td align="center">LIMITED</td> 11292<td align="center"></td> 11293</tr> 11294<tr> 11295<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 11296<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 11297<td align="center">Any</td> 11298<td align="center"></td> 11299</tr> 11300</tbody> 11301</table> 11302<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 11303mandatory stream configurations on a per-capability basis.<wbr/></p> 11304 </td> 11305 </tr> 11306 11307 <tr class="entries_header"> 11308 <th class="th_details" colspan="5">HAL Implementation Details</th> 11309 </tr> 11310 <tr class="entry_cont"> 11311 <td class="entry_details" colspan="5"> 11312 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 11313of sensor maximum resolution for JPEG formats (regardless of hardware 11314level).<wbr/></p> 11315<p>(The following is a rewording of the above required table):</p> 11316<p>The HAL must include sensor maximum resolution (defined by 11317<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 11318<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/> 11319the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 11320here as output streams.<wbr/></p> 11321<p>It must also include each below resolution if it is smaller than or 11322equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 11323formats),<wbr/> as output streams:</p> 11324<ul> 11325<li>240p (320 x 240)</li> 11326<li>480p (640 x 480)</li> 11327<li>720p (1280 x 720)</li> 11328<li>1080p (1920 x 1080)</li> 11329</ul> 11330<p>For LIMITED capability devices 11331(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 11332the HAL only has to list up to the maximum video size 11333supported by the device.<wbr/></p> 11334<p>Regardless of hardware level,<wbr/> every output resolution available for 11335YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 11336<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 11337<ul> 11338<li>availableFormats</li> 11339<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 11340</ul> 11341 </td> 11342 </tr> 11343 11344 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11345 <!-- end of entry --> 11346 11347 11348 <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> 11349 <td class="entry_name" rowspan="3"> 11350 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations 11351 </td> 11352 <td class="entry_type"> 11353 <span class="entry_type_name">int64</span> 11354 <span class="entry_type_container">x</span> 11355 11356 <span class="entry_type_array"> 11357 4 x n 11358 </span> 11359 <span class="entry_type_visibility"> [public]</span> 11360 11361 11362 </td> <!-- entry_type --> 11363 11364 <td class="entry_description"> 11365 <p>This lists the minimum frame duration for each 11366format/<wbr/>size combination.<wbr/></p> 11367 </td> 11368 11369 <td class="entry_units"> 11370 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 11371 </td> 11372 11373 <td class="entry_range"> 11374 </td> 11375 11376 <td class="entry_tags"> 11377 <ul class="entry_tags"> 11378 <li><a href="#tag_BC">BC</a></li> 11379 </ul> 11380 </td> 11381 11382 </tr> 11383 <tr class="entries_header"> 11384 <th class="th_details" colspan="5">Details</th> 11385 </tr> 11386 <tr class="entry_cont"> 11387 <td class="entry_details" colspan="5"> 11388 <p>This should correspond to the frame duration when only that 11389stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 11390set to either OFF or FAST.<wbr/></p> 11391<p>When multiple streams are used in a request,<wbr/> the minimum frame 11392duration will be max(individual stream min durations).<wbr/></p> 11393<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 11394is the same regardless of whether the stream is input or output.<wbr/></p> 11395<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 11396<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 11397calculating the max frame rate.<wbr/></p> 11398 </td> 11399 </tr> 11400 11401 11402 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11403 <!-- end of entry --> 11404 11405 11406 <tr class="entry" id="static_android.scaler.availableStallDurations"> 11407 <td class="entry_name" rowspan="5"> 11408 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations 11409 </td> 11410 <td class="entry_type"> 11411 <span class="entry_type_name">int64</span> 11412 <span class="entry_type_container">x</span> 11413 11414 <span class="entry_type_array"> 11415 4 x n 11416 </span> 11417 <span class="entry_type_visibility"> [public]</span> 11418 11419 11420 </td> <!-- entry_type --> 11421 11422 <td class="entry_description"> 11423 <p>This lists the maximum stall duration for each 11424format/<wbr/>size combination.<wbr/></p> 11425 </td> 11426 11427 <td class="entry_units"> 11428 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 11429 </td> 11430 11431 <td class="entry_range"> 11432 </td> 11433 11434 <td class="entry_tags"> 11435 <ul class="entry_tags"> 11436 <li><a href="#tag_BC">BC</a></li> 11437 </ul> 11438 </td> 11439 11440 </tr> 11441 <tr class="entries_header"> 11442 <th class="th_details" colspan="5">Details</th> 11443 </tr> 11444 <tr class="entry_cont"> 11445 <td class="entry_details" colspan="5"> 11446 <p>A stall duration is how much extra time would get added 11447to the normal minimum frame duration for a repeating request 11448that has streams with non-zero stall.<wbr/></p> 11449<p>For example,<wbr/> consider JPEG captures which have the following 11450characteristics:</p> 11451<ul> 11452<li>JPEG streams act like processed YUV streams in requests for which 11453they are not included; in requests in which they are directly 11454referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 11455JPEG stream requires the underlying YUV data to always be ready for 11456use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 11457frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 11458<li>The JPEG processor can run concurrently to the rest of the camera 11459pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 11460</ul> 11461<p>In other words,<wbr/> using a repeating YUV request would result 11462in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 11463JPEG request is submitted periodically,<wbr/> the frame rate will stay 11464at 30 FPS (as long as we wait for the previous JPEG to return each 11465time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 11466the frame rate will drop from 30 FPS.<wbr/></p> 11467<p>In general,<wbr/> submitting a new request with a non-0 stall time 11468stream will <em>not</em> cause a frame rate drop unless there are still 11469outstanding buffers for that stream from previous requests.<wbr/></p> 11470<p>Submitting a repeating request with streams (call this <code>S</code>) 11471is the same as setting the minimum frame duration from 11472the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 11473the maximum stall duration for <code>S</code>.<wbr/></p> 11474<p>If interleaving requests with and without a stall duration,<wbr/> 11475a request will stall by the maximum of the remaining times 11476for each can-stall stream with outstanding buffers.<wbr/></p> 11477<p>This means that a stalling request will not have an exposure start 11478until the stall has completed.<wbr/></p> 11479<p>This should correspond to the stall duration when only that stream is 11480active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 11481or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 11482effectively results in an indeterminate stall duration for all 11483streams in a request (the regular stall calculation rules are 11484ignored).<wbr/></p> 11485<p>The following formats may always have a stall duration:</p> 11486<ul> 11487<li>JPEG</li> 11488<li>RAW16</li> 11489</ul> 11490<p>The following formats will never have a stall duration:</p> 11491<ul> 11492<li>YUV_<wbr/>420_<wbr/>888</li> 11493<li>IMPLEMENTATION_<wbr/>DEFINED</li> 11494</ul> 11495<p>All other formats may or may not have an allowed stall duration on 11496a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 11497for more details.<wbr/></p> 11498<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about 11499calculating the max frame rate (absent stalls).<wbr/></p> 11500 </td> 11501 </tr> 11502 11503 <tr class="entries_header"> 11504 <th class="th_details" colspan="5">HAL Implementation Details</th> 11505 </tr> 11506 <tr class="entry_cont"> 11507 <td class="entry_details" colspan="5"> 11508 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 11509(such as RAW16) should not have a stall duration.<wbr/></p> 11510 </td> 11511 </tr> 11512 11513 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11514 <!-- end of entry --> 11515 11516 11517 11518 <!-- end of kind --> 11519 </tbody> 11520 <tr><td colspan="6" class="kind">dynamic</td></tr> 11521 11522 <thead class="entries_header"> 11523 <tr> 11524 <th class="th_name">Property Name</th> 11525 <th class="th_type">Type</th> 11526 <th class="th_description">Description</th> 11527 <th class="th_units">Units</th> 11528 <th class="th_range">Range</th> 11529 <th class="th_tags">Tags</th> 11530 </tr> 11531 </thead> 11532 11533 <tbody> 11534 11535 11536 11537 11538 11539 11540 11541 11542 11543 11544 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 11545 <td class="entry_name" rowspan="3"> 11546 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 11547 </td> 11548 <td class="entry_type"> 11549 <span class="entry_type_name">int32</span> 11550 <span class="entry_type_container">x</span> 11551 11552 <span class="entry_type_array"> 11553 4 11554 </span> 11555 <span class="entry_type_visibility"> [public as rectangle]</span> 11556 11557 11558 </td> <!-- entry_type --> 11559 11560 <td class="entry_description"> 11561 <p>(x,<wbr/> y,<wbr/> width,<wbr/> height).<wbr/></p> 11562<p>A rectangle with the top-level corner of (x,<wbr/>y) and size 11563(width,<wbr/> height).<wbr/> The region of the sensor that is used for 11564output.<wbr/> Each stream must use this rectangle to produce its 11565output,<wbr/> cropping to a smaller region if necessary to 11566maintain the stream's aspect ratio.<wbr/></p> 11567<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 11568 </td> 11569 11570 <td class="entry_units"> 11571 (x,<wbr/>y) of top-left corner,<wbr/> width and height of region 11572 in pixels; (0,<wbr/>0) is top-left corner of 11573 android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size 11574 </td> 11575 11576 <td class="entry_range"> 11577 </td> 11578 11579 <td class="entry_tags"> 11580 <ul class="entry_tags"> 11581 <li><a href="#tag_BC">BC</a></li> 11582 </ul> 11583 </td> 11584 11585 </tr> 11586 <tr class="entries_header"> 11587 <th class="th_details" colspan="5">Details</th> 11588 </tr> 11589 <tr class="entry_cont"> 11590 <td class="entry_details" colspan="5"> 11591 <p>Any additional per-stream cropping must be done to 11592maximize the final pixel area of the stream.<wbr/></p> 11593<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 11594ratio,<wbr/> then 4:3 streams should use the exact crop 11595region.<wbr/> 16:9 streams should further crop vertically 11596(letterbox).<wbr/></p> 11597<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 11598outputs should crop horizontally (pillarbox),<wbr/> and 16:9 11599streams should match exactly.<wbr/> These additional crops must 11600be centered within the crop region.<wbr/></p> 11601<p>The output streams must maintain square pixels at all 11602times,<wbr/> no matter what the relative aspect ratios of the 11603crop region and the stream are.<wbr/> Negative values for 11604corner are allowed for raw output if full pixel array is 11605larger than active pixel array.<wbr/> Width and height may be 11606rounded to nearest larger supportable width,<wbr/> especially 11607for raw output,<wbr/> where only a few fixed scales may be 11608possible.<wbr/> The width and height of the crop region cannot 11609be set to be smaller than floor( activeArraySize.<wbr/>width /<wbr/> 11610<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> ) and floor( 11611activeArraySize.<wbr/>height /<wbr/> 11612<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>),<wbr/> respectively.<wbr/></p> 11613 </td> 11614 </tr> 11615 11616 11617 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11618 <!-- end of entry --> 11619 11620 11621 11622 <!-- end of kind --> 11623 </tbody> 11624 11625 <!-- end of section --> 11626 <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr> 11627 11628 11629 <tr><td colspan="6" class="kind">controls</td></tr> 11630 11631 <thead class="entries_header"> 11632 <tr> 11633 <th class="th_name">Property Name</th> 11634 <th class="th_type">Type</th> 11635 <th class="th_description">Description</th> 11636 <th class="th_units">Units</th> 11637 <th class="th_range">Range</th> 11638 <th class="th_tags">Tags</th> 11639 </tr> 11640 </thead> 11641 11642 <tbody> 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 <tr class="entry" id="controls_android.sensor.exposureTime"> 11654 <td class="entry_name" rowspan="3"> 11655 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 11656 </td> 11657 <td class="entry_type"> 11658 <span class="entry_type_name">int64</span> 11659 11660 <span class="entry_type_visibility"> [public]</span> 11661 11662 11663 </td> <!-- entry_type --> 11664 11665 <td class="entry_description"> 11666 <p>Duration each pixel is exposed to 11667light.<wbr/></p> 11668 </td> 11669 11670 <td class="entry_units"> 11671 nanoseconds 11672 </td> 11673 11674 <td class="entry_range"> 11675 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 11676 </td> 11677 11678 <td class="entry_tags"> 11679 <ul class="entry_tags"> 11680 <li><a href="#tag_V1">V1</a></li> 11681 </ul> 11682 </td> 11683 11684 </tr> 11685 <tr class="entries_header"> 11686 <th class="th_details" colspan="5">Details</th> 11687 </tr> 11688 <tr class="entry_cont"> 11689 <td class="entry_details" colspan="5"> 11690 <p>If the sensor can't expose this exact duration,<wbr/> it should shorten the 11691duration exposed to the nearest possible value (rather than expose longer).<wbr/></p> 11692 </td> 11693 </tr> 11694 11695 11696 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11697 <!-- end of entry --> 11698 11699 11700 <tr class="entry" id="controls_android.sensor.frameDuration"> 11701 <td class="entry_name" rowspan="3"> 11702 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 11703 </td> 11704 <td class="entry_type"> 11705 <span class="entry_type_name">int64</span> 11706 11707 <span class="entry_type_visibility"> [public]</span> 11708 11709 11710 </td> <!-- entry_type --> 11711 11712 <td class="entry_description"> 11713 <p>Duration from start of frame exposure to 11714start of next frame exposure.<wbr/></p> 11715 </td> 11716 11717 <td class="entry_units"> 11718 nanoseconds 11719 </td> 11720 11721 <td class="entry_range"> 11722 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 11723<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a>.<wbr/> The duration 11724is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 11725 </td> 11726 11727 <td class="entry_tags"> 11728 <ul class="entry_tags"> 11729 <li><a href="#tag_V1">V1</a></li> 11730 <li><a href="#tag_BC">BC</a></li> 11731 </ul> 11732 </td> 11733 11734 </tr> 11735 <tr class="entries_header"> 11736 <th class="th_details" colspan="5">Details</th> 11737 </tr> 11738 <tr class="entry_cont"> 11739 <td class="entry_details" colspan="5"> 11740 <p>The maximum frame rate that can be supported by a camera subsystem is 11741a function of many factors:</p> 11742<ul> 11743<li>Requested resolutions of output image streams</li> 11744<li>Availability of binning /<wbr/> skipping modes on the imager</li> 11745<li>The bandwidth of the imager interface</li> 11746<li>The bandwidth of the various ISP processing blocks</li> 11747</ul> 11748<p>Since these factors can vary greatly between different ISPs and 11749sensors,<wbr/> the camera abstraction tries to represent the bandwidth 11750restrictions with as simple a model as possible.<wbr/></p> 11751<p>The model presented has the following characteristics:</p> 11752<ul> 11753<li>The image sensor is always configured to output the smallest 11754resolution possible given the application's requested output stream 11755sizes.<wbr/> The smallest resolution is defined as being at least as large 11756as the largest requested output stream size; the camera pipeline must 11757never digitally upsample sensor data when the crop region covers the 11758whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 11759resolutions are configured,<wbr/> the sensor can provide a higher frame 11760rate.<wbr/></li> 11761<li>Since any request may use any or all the currently configured 11762output streams,<wbr/> the sensor and ISP must be configured to support 11763scaling a single capture to all the streams at the same time.<wbr/> This 11764means the camera pipeline must be ready to produce the largest 11765requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 11766frame rate of a given configured stream set is governed only by the 11767largest requested stream resolution.<wbr/></li> 11768<li>Using more than one output stream in a request does not affect the 11769frame duration.<wbr/></li> 11770<li>Certain format-streams may need to do additional background processing 11771before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 11772can run concurrently to the rest of the camera pipeline,<wbr/> but 11773cannot process more than 1 capture at a time.<wbr/></li> 11774</ul> 11775<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 11776is provided via the <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> field.<wbr/> 11777These are used to determine the maximum frame rate /<wbr/> minimum frame 11778duration that is possible for a given stream configuration.<wbr/></p> 11779<p>Specifically,<wbr/> the application can use the following rules to 11780determine the minimum frame duration it can request from the camera 11781device:</p> 11782<ol> 11783<li>Let the set of currently configured input/<wbr/>output streams 11784be called <code>S</code>.<wbr/></li> 11785<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by 11786looking it up in <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> (with 11787its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called 11788<code>F</code>.<wbr/></li> 11789<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 11790for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 11791used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 11792</ol> 11793<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in 11794<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>),<wbr/> then the frame duration in 11795<code>F</code> determines the steady state frame rate that the application will 11796get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind 11797of request be called <code>Rsimple</code>.<wbr/></p> 11798<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 11799by a single capture of a new request <code>Rstall</code> (which has at least 11800one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 11801same minimum frame duration this will not cause a frame rate loss 11802if all buffers from the previous <code>Rstall</code> have already been 11803delivered.<wbr/></p> 11804<p>For more details about stalling,<wbr/> see 11805<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 11806 </td> 11807 </tr> 11808 11809 11810 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11811 <!-- end of entry --> 11812 11813 11814 <tr class="entry" id="controls_android.sensor.sensitivity"> 11815 <td class="entry_name" rowspan="3"> 11816 android.<wbr/>sensor.<wbr/>sensitivity 11817 </td> 11818 <td class="entry_type"> 11819 <span class="entry_type_name">int32</span> 11820 11821 <span class="entry_type_visibility"> [public]</span> 11822 11823 11824 </td> <!-- entry_type --> 11825 11826 <td class="entry_description"> 11827 <p>Gain applied to image data.<wbr/> Must be 11828implemented through analog gain only if set to values 11829below 'maximum analog sensitivity'.<wbr/></p> 11830<p>If the sensor can't apply this exact gain,<wbr/> it should lessen the 11831gain to the nearest possible value (rather than gain more).<wbr/></p> 11832 </td> 11833 11834 <td class="entry_units"> 11835 ISO arithmetic units 11836 </td> 11837 11838 <td class="entry_range"> 11839 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 11840 </td> 11841 11842 <td class="entry_tags"> 11843 <ul class="entry_tags"> 11844 <li><a href="#tag_V1">V1</a></li> 11845 </ul> 11846 </td> 11847 11848 </tr> 11849 <tr class="entries_header"> 11850 <th class="th_details" colspan="5">Details</th> 11851 </tr> 11852 <tr class="entry_cont"> 11853 <td class="entry_details" colspan="5"> 11854 <p>ISO 12232:2006 REI method</p> 11855 </td> 11856 </tr> 11857 11858 11859 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11860 <!-- end of entry --> 11861 11862 11863 <tr class="entry" id="controls_android.sensor.testPatternData"> 11864 <td class="entry_name" rowspan="5"> 11865 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 11866 </td> 11867 <td class="entry_type"> 11868 <span class="entry_type_name">int32</span> 11869 <span class="entry_type_container">x</span> 11870 11871 <span class="entry_type_array"> 11872 4 11873 </span> 11874 <span class="entry_type_visibility"> [public]</span> 11875 11876 11877 </td> <!-- entry_type --> 11878 11879 <td class="entry_description"> 11880 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 11881when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 11882 </td> 11883 11884 <td class="entry_units"> 11885 </td> 11886 11887 <td class="entry_range"> 11888 <p>Optional.<wbr/> 11889Must be supported if <a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a> contains 11890SOLID_<wbr/>COLOR.<wbr/></p> 11891 </td> 11892 11893 <td class="entry_tags"> 11894 </td> 11895 11896 </tr> 11897 <tr class="entries_header"> 11898 <th class="th_details" colspan="5">Details</th> 11899 </tr> 11900 <tr class="entry_cont"> 11901 <td class="entry_details" colspan="5"> 11902 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 11903The camera device then uses the most significant X bits 11904that correspond to how many bits are in its Bayer raw sensor 11905output.<wbr/></p> 11906<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 1190710 most significant bits from each color channel.<wbr/></p> 11908 </td> 11909 </tr> 11910 11911 <tr class="entries_header"> 11912 <th class="th_details" colspan="5">HAL Implementation Details</th> 11913 </tr> 11914 <tr class="entry_cont"> 11915 <td class="entry_details" colspan="5"> 11916 11917 </td> 11918 </tr> 11919 11920 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11921 <!-- end of entry --> 11922 11923 11924 <tr class="entry" id="controls_android.sensor.testPatternMode"> 11925 <td class="entry_name" rowspan="5"> 11926 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 11927 </td> 11928 <td class="entry_type"> 11929 <span class="entry_type_name entry_type_name_enum">int32</span> 11930 11931 <span class="entry_type_visibility"> [public]</span> 11932 11933 <ul class="entry_type_enum"> 11934 <li> 11935 <span class="entry_type_enum_name">OFF</span> 11936 <span class="entry_type_enum_notes"><p>Default.<wbr/> No test pattern mode is used,<wbr/> and the camera 11937device returns captures from the image sensor.<wbr/></p></span> 11938 </li> 11939 <li> 11940 <span class="entry_type_enum_name">SOLID_COLOR</span> 11941 <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 11942respective color channel provided in 11943<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 11944<p>For example:</p> 11945<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 11946</code></pre> 11947<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 11948<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 11949</code></pre> 11950<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 11951are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 11952 </li> 11953 <li> 11954 <span class="entry_type_enum_name">COLOR_BARS</span> 11955 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 11956<p>The vertical bars (left-to-right) are as follows:</p> 11957<ul> 11958<li>100% white</li> 11959<li>yellow</li> 11960<li>cyan</li> 11961<li>green</li> 11962<li>magenta</li> 11963<li>red</li> 11964<li>blue</li> 11965<li>black</li> 11966</ul> 11967<p>In general the image would look like the following:</p> 11968<pre><code>W Y C G M R B K 11969W Y C G M R B K 11970W Y C G M R B K 11971W Y C G M R B K 11972W Y C G M R B K 11973.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 11974.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 11975.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 11976 11977(B = Blue,<wbr/> K = Black) 11978</code></pre> 11979<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 11980When this is not possible,<wbr/> the bar size should be rounded 11981down to the nearest integer and the pattern can repeat 11982on the right side.<wbr/></p> 11983<p>Each bar's height must always take up the full sensor 11984pixel array height.<wbr/></p> 11985<p>Each pixel in this test pattern must be set to either 119860% intensity or 100% intensity.<wbr/></p></span> 11987 </li> 11988 <li> 11989 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 11990 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 11991each bar should start at its specified color at the top,<wbr/> 11992and fade to gray at the bottom.<wbr/></p> 11993<p>Furthermore each bar is further subdivided into a left and 11994right half.<wbr/> The left half should have a smooth gradient,<wbr/> 11995and the right half should have a quantized gradient.<wbr/></p> 11996<p>In particular,<wbr/> the right half's should consist of blocks of the 11997same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 11998<p>The least significant bits in the quantized gradient should 11999be copied from the most significant bits of the smooth gradient.<wbr/></p> 12000<p>The height of each bar should always be a multiple of 128.<wbr/> 12001When this is not the case,<wbr/> the pattern should repeat at the bottom 12002of the image.<wbr/></p></span> 12003 </li> 12004 <li> 12005 <span class="entry_type_enum_name">PN9</span> 12006 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 12007generated from a PN9 512-bit sequence (typically implemented 12008in hardware with a linear feedback shift register).<wbr/></p> 12009<p>The generator should be reset at the beginning of each frame,<wbr/> 12010and thus each subsequent raw frame with this test pattern should 12011be exactly the same as the last.<wbr/></p></span> 12012 </li> 12013 <li> 12014 <span class="entry_type_enum_name">CUSTOM1</span> 12015 <span class="entry_type_enum_value">256</span> 12016 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 12017available only on this camera device are at least this numeric 12018value.<wbr/></p> 12019<p>All of the custom test patterns will be static 12020(that is the raw image must not vary from frame to frame).<wbr/></p></span> 12021 </li> 12022 </ul> 12023 12024 </td> <!-- entry_type --> 12025 12026 <td class="entry_description"> 12027 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 12028doing a real exposure from the camera.<wbr/></p> 12029 </td> 12030 12031 <td class="entry_units"> 12032 </td> 12033 12034 <td class="entry_range"> 12035 <p>Optional.<wbr/> Defaults to OFF.<wbr/> Value must be one of 12036<a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 12037 </td> 12038 12039 <td class="entry_tags"> 12040 </td> 12041 12042 </tr> 12043 <tr class="entries_header"> 12044 <th class="th_details" colspan="5">Details</th> 12045 </tr> 12046 <tr class="entry_cont"> 12047 <td class="entry_details" colspan="5"> 12048 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 12049by android.<wbr/>sensor.<wbr/>* should be ignored.<wbr/> All other controls should 12050work as normal.<wbr/></p> 12051<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 12052occur (and that the test pattern remain unmodified,<wbr/> since the flash 12053would not actually affect it).<wbr/></p> 12054 </td> 12055 </tr> 12056 12057 <tr class="entries_header"> 12058 <th class="th_details" colspan="5">HAL Implementation Details</th> 12059 </tr> 12060 <tr class="entry_cont"> 12061 <td class="entry_details" colspan="5"> 12062 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 12063<p>The HAL may choose to substitute test patterns from the sensor 12064with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 12065indistinguishable to the ISP whether the data came from the 12066sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 12067 </td> 12068 </tr> 12069 12070 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12071 <!-- end of entry --> 12072 12073 12074 12075 <!-- end of kind --> 12076 </tbody> 12077 <tr><td colspan="6" class="kind">static</td></tr> 12078 12079 <thead class="entries_header"> 12080 <tr> 12081 <th class="th_name">Property Name</th> 12082 <th class="th_type">Type</th> 12083 <th class="th_description">Description</th> 12084 <th class="th_units">Units</th> 12085 <th class="th_range">Range</th> 12086 <th class="th_tags">Tags</th> 12087 </tr> 12088 </thead> 12089 12090 <tbody> 12091 12092 12093 12094 12095 12096 12097 12098 12099 12100 12101 12102 12103 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 12104 <td class="entry_name" rowspan="3"> 12105 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 12106 </td> 12107 <td class="entry_type"> 12108 <span class="entry_type_name">int32</span> 12109 <span class="entry_type_container">x</span> 12110 12111 <span class="entry_type_array"> 12112 4 12113 </span> 12114 <span class="entry_type_visibility"> [public as rectangle]</span> 12115 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 12116 12117 12118 </td> <!-- entry_type --> 12119 12120 <td class="entry_description"> 12121 <p>Area of raw data which corresponds to only 12122active pixels.<wbr/></p> 12123 </td> 12124 12125 <td class="entry_units"> 12126 </td> 12127 12128 <td class="entry_range"> 12129 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 12130>= <code>(0,<wbr/>0)</code>.<wbr/> The <code>(width,<wbr/> height)</code> must be <= 12131<code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p> 12132 </td> 12133 12134 <td class="entry_tags"> 12135 <ul class="entry_tags"> 12136 <li><a href="#tag_DNG">DNG</a></li> 12137 </ul> 12138 </td> 12139 12140 </tr> 12141 <tr class="entries_header"> 12142 <th class="th_details" colspan="5">Details</th> 12143 </tr> 12144 <tr class="entry_cont"> 12145 <td class="entry_details" colspan="5"> 12146 <p>It is smaller or equal to 12147sensor full pixel array,<wbr/> which could include the black calibration pixels.<wbr/></p> 12148 </td> 12149 </tr> 12150 12151 12152 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12153 <!-- end of entry --> 12154 12155 12156 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 12157 <td class="entry_name" rowspan="1"> 12158 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 12159 </td> 12160 <td class="entry_type"> 12161 <span class="entry_type_name">int32</span> 12162 <span class="entry_type_container">x</span> 12163 12164 <span class="entry_type_array"> 12165 2 12166 </span> 12167 <span class="entry_type_visibility"> [public]</span> 12168 <div class="entry_type_notes">Range of supported sensitivities</div> 12169 12170 12171 </td> <!-- entry_type --> 12172 12173 <td class="entry_description"> 12174 <p>Range of valid sensitivities</p> 12175 </td> 12176 12177 <td class="entry_units"> 12178 </td> 12179 12180 <td class="entry_range"> 12181 <p>Min <= 100,<wbr/> Max >= 1600</p> 12182 </td> 12183 12184 <td class="entry_tags"> 12185 <ul class="entry_tags"> 12186 <li><a href="#tag_BC">BC</a></li> 12187 <li><a href="#tag_V1">V1</a></li> 12188 </ul> 12189 </td> 12190 12191 </tr> 12192 12193 12194 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12195 <!-- end of entry --> 12196 12197 12198 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 12199 <td class="entry_name" rowspan="1"> 12200 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 12201 </td> 12202 <td class="entry_type"> 12203 <span class="entry_type_name entry_type_name_enum">byte</span> 12204 12205 <span class="entry_type_visibility"> [public]</span> 12206 12207 <ul class="entry_type_enum"> 12208 <li> 12209 <span class="entry_type_enum_name">RGGB</span> 12210 </li> 12211 <li> 12212 <span class="entry_type_enum_name">GRBG</span> 12213 </li> 12214 <li> 12215 <span class="entry_type_enum_name">GBRG</span> 12216 </li> 12217 <li> 12218 <span class="entry_type_enum_name">BGGR</span> 12219 </li> 12220 <li> 12221 <span class="entry_type_enum_name">RGB</span> 12222 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 12223values for each pixel,<wbr/> instead of just 1 16-bit value 12224per pixel.<wbr/></p></span> 12225 </li> 12226 </ul> 12227 12228 </td> <!-- entry_type --> 12229 12230 <td class="entry_description"> 12231 <p>Arrangement of color filters on sensor; 12232represents the colors in the top-left 2x2 section of 12233the sensor,<wbr/> in reading order</p> 12234 </td> 12235 12236 <td class="entry_units"> 12237 </td> 12238 12239 <td class="entry_range"> 12240 </td> 12241 12242 <td class="entry_tags"> 12243 <ul class="entry_tags"> 12244 <li><a href="#tag_DNG">DNG</a></li> 12245 </ul> 12246 </td> 12247 12248 </tr> 12249 12250 12251 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12252 <!-- end of entry --> 12253 12254 12255 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 12256 <td class="entry_name" rowspan="3"> 12257 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 12258 </td> 12259 <td class="entry_type"> 12260 <span class="entry_type_name">int64</span> 12261 <span class="entry_type_container">x</span> 12262 12263 <span class="entry_type_array"> 12264 2 12265 </span> 12266 <span class="entry_type_visibility"> [public]</span> 12267 <div class="entry_type_notes">nanoseconds</div> 12268 12269 12270 </td> <!-- entry_type --> 12271 12272 <td class="entry_description"> 12273 <p>Range of valid exposure 12274times used by <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>.<wbr/></p> 12275 </td> 12276 12277 <td class="entry_units"> 12278 </td> 12279 12280 <td class="entry_range"> 12281 <p>Min <= 100e3 (100 us).<wbr/> For FULL capability devices 12282(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> Max SHOULD be 12283>= 1e9 (1sec),<wbr/> MUST be >= 100e6 (100ms)</p> 12284 </td> 12285 12286 <td class="entry_tags"> 12287 <ul class="entry_tags"> 12288 <li><a href="#tag_V1">V1</a></li> 12289 </ul> 12290 </td> 12291 12292 </tr> 12293 12294 <tr class="entries_header"> 12295 <th class="th_details" colspan="5">HAL Implementation Details</th> 12296 </tr> 12297 <tr class="entry_cont"> 12298 <td class="entry_details" colspan="5"> 12299 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 12300The maximum of the range SHOULD be at least 123011 second (1e9),<wbr/> MUST be at least 100ms.<wbr/></p> 12302 </td> 12303 </tr> 12304 12305 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12306 <!-- end of entry --> 12307 12308 12309 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 12310 <td class="entry_name" rowspan="5"> 12311 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 12312 </td> 12313 <td class="entry_type"> 12314 <span class="entry_type_name">int64</span> 12315 12316 <span class="entry_type_visibility"> [public]</span> 12317 12318 12319 </td> <!-- entry_type --> 12320 12321 <td class="entry_description"> 12322 <p>Maximum possible frame duration (minimum frame 12323rate).<wbr/></p> 12324 </td> 12325 12326 <td class="entry_units"> 12327 nanoseconds 12328 </td> 12329 12330 <td class="entry_range"> 12331 <p>For FULL capability devices 12332(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> Max SHOULD be 12333>= 1e9 (1sec),<wbr/> MUST be >= 100e6 (100ms)</p> 12334 </td> 12335 12336 <td class="entry_tags"> 12337 <ul class="entry_tags"> 12338 <li><a href="#tag_BC">BC</a></li> 12339 <li><a href="#tag_V1">V1</a></li> 12340 </ul> 12341 </td> 12342 12343 </tr> 12344 <tr class="entries_header"> 12345 <th class="th_details" colspan="5">Details</th> 12346 </tr> 12347 <tr class="entry_cont"> 12348 <td class="entry_details" colspan="5"> 12349 <p>The largest possible <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> 12350that will be accepted by the camera device.<wbr/> Attempting to use 12351frame durations beyond the maximum will result in the frame duration 12352being clipped to the maximum.<wbr/> See that control 12353for a full definition of frame durations.<wbr/></p> 12354<p>Refer to 12355<a href="#static_android.scaler.availableProcessedMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations</a>,<wbr/> 12356<a href="#static_android.scaler.availableJpegMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations</a>,<wbr/> and 12357<a href="#static_android.scaler.availableRawMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations</a> for the minimum 12358frame duration values.<wbr/></p> 12359 </td> 12360 </tr> 12361 12362 <tr class="entries_header"> 12363 <th class="th_details" colspan="5">HAL Implementation Details</th> 12364 </tr> 12365 <tr class="entry_cont"> 12366 <td class="entry_details" colspan="5"> 12367 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 12368The maximum of the range SHOULD be at least 123691 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> 12370<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or 12371equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 12372value (since exposure time overrides frame duration).<wbr/></p> 12373<p>Available minimum frame durations for JPEG must be no greater 12374than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 12375minimum frame durations (for that respective size).<wbr/></p> 12376<p>Since JPEG processing is considered offline and can take longer than 12377a single uncompressed capture,<wbr/> refer to 12378<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 12379for details about encoding this scenario.<wbr/></p> 12380 </td> 12381 </tr> 12382 12383 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12384 <!-- end of entry --> 12385 12386 12387 <tr class="entry" id="static_android.sensor.info.physicalSize"> 12388 <td class="entry_name" rowspan="3"> 12389 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 12390 </td> 12391 <td class="entry_type"> 12392 <span class="entry_type_name">float</span> 12393 <span class="entry_type_container">x</span> 12394 12395 <span class="entry_type_array"> 12396 2 12397 </span> 12398 <span class="entry_type_visibility"> [public]</span> 12399 <div class="entry_type_notes">width x height in millimeters</div> 12400 12401 12402 </td> <!-- entry_type --> 12403 12404 <td class="entry_description"> 12405 <p>The physical dimensions of the full pixel 12406array</p> 12407 </td> 12408 12409 <td class="entry_units"> 12410 </td> 12411 12412 <td class="entry_range"> 12413 </td> 12414 12415 <td class="entry_tags"> 12416 <ul class="entry_tags"> 12417 <li><a href="#tag_V1">V1</a></li> 12418 <li><a href="#tag_BC">BC</a></li> 12419 </ul> 12420 </td> 12421 12422 </tr> 12423 <tr class="entries_header"> 12424 <th class="th_details" colspan="5">Details</th> 12425 </tr> 12426 <tr class="entry_cont"> 12427 <td class="entry_details" colspan="5"> 12428 <p>Needed for FOV calculation for old API</p> 12429 </td> 12430 </tr> 12431 12432 12433 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12434 <!-- end of entry --> 12435 12436 12437 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 12438 <td class="entry_name" rowspan="3"> 12439 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 12440 </td> 12441 <td class="entry_type"> 12442 <span class="entry_type_name">int32</span> 12443 <span class="entry_type_container">x</span> 12444 12445 <span class="entry_type_array"> 12446 2 12447 </span> 12448 <span class="entry_type_visibility"> [public as size]</span> 12449 12450 12451 </td> <!-- entry_type --> 12452 12453 <td class="entry_description"> 12454 <p>Dimensions of full pixel array,<wbr/> possibly 12455including black calibration pixels.<wbr/></p> 12456 </td> 12457 12458 <td class="entry_units"> 12459 </td> 12460 12461 <td class="entry_range"> 12462 </td> 12463 12464 <td class="entry_tags"> 12465 <ul class="entry_tags"> 12466 <li><a href="#tag_DNG">DNG</a></li> 12467 <li><a href="#tag_BC">BC</a></li> 12468 </ul> 12469 </td> 12470 12471 </tr> 12472 <tr class="entries_header"> 12473 <th class="th_details" colspan="5">Details</th> 12474 </tr> 12475 <tr class="entry_cont"> 12476 <td class="entry_details" colspan="5"> 12477 <p>Maximum output resolution for raw format must 12478match this in 12479<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p> 12480 </td> 12481 </tr> 12482 12483 12484 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12485 <!-- end of entry --> 12486 12487 12488 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 12489 <td class="entry_name" rowspan="5"> 12490 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 12491 </td> 12492 <td class="entry_type"> 12493 <span class="entry_type_name">int32</span> 12494 12495 <span class="entry_type_visibility"> [public]</span> 12496 12497 12498 </td> <!-- entry_type --> 12499 12500 <td class="entry_description"> 12501 <p>Maximum raw value output by sensor.<wbr/></p> 12502 </td> 12503 12504 <td class="entry_units"> 12505 </td> 12506 12507 <td class="entry_range"> 12508 <p>> 255 (8-bit output)</p> 12509 </td> 12510 12511 <td class="entry_tags"> 12512 <ul class="entry_tags"> 12513 <li><a href="#tag_DNG">DNG</a></li> 12514 </ul> 12515 </td> 12516 12517 </tr> 12518 <tr class="entries_header"> 12519 <th class="th_details" colspan="5">Details</th> 12520 </tr> 12521 <tr class="entry_cont"> 12522 <td class="entry_details" colspan="5"> 12523 <p>This specifies the fully-saturated encoding level for the raw 12524sample values from the sensor.<wbr/> This is typically caused by the 12525sensor becoming highly non-linear or clipping.<wbr/> The minimum for 12526each channel is specified by the offset in the 12527<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> tag.<wbr/></p> 12528<p>The white level is typically determined either by sensor bit depth 12529(8-14 bits is expected),<wbr/> or by the point where the sensor response 12530becomes too non-linear to be useful.<wbr/> The default value for this is 12531maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> 12532 </td> 12533 </tr> 12534 12535 <tr class="entries_header"> 12536 <th class="th_details" colspan="5">HAL Implementation Details</th> 12537 </tr> 12538 <tr class="entry_cont"> 12539 <td class="entry_details" colspan="5"> 12540 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 12541so the value for linear sensors should not be significantly lower 12542than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 12543 </td> 12544 </tr> 12545 12546 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12547 <!-- end of entry --> 12548 12549 12550 12551 12552 12553 <tr class="entry" id="static_android.sensor.baseGainFactor"> 12554 <td class="entry_name" rowspan="1"> 12555 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 12556 </td> 12557 <td class="entry_type"> 12558 <span class="entry_type_name">rational</span> 12559 12560 <span class="entry_type_visibility"> [public]</span> 12561 12562 12563 </td> <!-- entry_type --> 12564 12565 <td class="entry_description"> 12566 <p>Gain factor from electrons to raw units when 12567ISO=100</p> 12568 </td> 12569 12570 <td class="entry_units"> 12571 </td> 12572 12573 <td class="entry_range"> 12574 </td> 12575 12576 <td class="entry_tags"> 12577 <ul class="entry_tags"> 12578 <li><a href="#tag_V1">V1</a></li> 12579 <li><a href="#tag_FULL">FULL</a></li> 12580 </ul> 12581 </td> 12582 12583 </tr> 12584 12585 12586 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12587 <!-- end of entry --> 12588 12589 12590 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 12591 <td class="entry_name" rowspan="3"> 12592 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 12593 </td> 12594 <td class="entry_type"> 12595 <span class="entry_type_name">int32</span> 12596 <span class="entry_type_container">x</span> 12597 12598 <span class="entry_type_array"> 12599 4 12600 </span> 12601 <span class="entry_type_visibility"> [public]</span> 12602 <div class="entry_type_notes">2x2 raw count block</div> 12603 12604 12605 </td> <!-- entry_type --> 12606 12607 <td class="entry_description"> 12608 <p>A fixed black level offset for each of the color filter arrangement 12609(CFA) mosaic channels.<wbr/></p> 12610 </td> 12611 12612 <td class="entry_units"> 12613 </td> 12614 12615 <td class="entry_range"> 12616 <p>>= 0 for each.<wbr/></p> 12617 </td> 12618 12619 <td class="entry_tags"> 12620 <ul class="entry_tags"> 12621 <li><a href="#tag_DNG">DNG</a></li> 12622 </ul> 12623 </td> 12624 12625 </tr> 12626 <tr class="entries_header"> 12627 <th class="th_details" colspan="5">Details</th> 12628 </tr> 12629 <tr class="entry_cont"> 12630 <td class="entry_details" colspan="5"> 12631 <p>This tag specifies the zero light value for each of the CFA mosaic 12632channels in the camera sensor.<wbr/> The maximal value output by the 12633sensor 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> 12634<p>The values are given in row-column scan order,<wbr/> with the first value 12635corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 12636 </td> 12637 </tr> 12638 12639 12640 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12641 <!-- end of entry --> 12642 12643 12644 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 12645 <td class="entry_name" rowspan="3"> 12646 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 12647 </td> 12648 <td class="entry_type"> 12649 <span class="entry_type_name">int32</span> 12650 12651 <span class="entry_type_visibility"> [public]</span> 12652 12653 12654 </td> <!-- entry_type --> 12655 12656 <td class="entry_description"> 12657 <p>Maximum sensitivity that is implemented 12658purely through analog gain.<wbr/></p> 12659 </td> 12660 12661 <td class="entry_units"> 12662 </td> 12663 12664 <td class="entry_range"> 12665 </td> 12666 12667 <td class="entry_tags"> 12668 <ul class="entry_tags"> 12669 <li><a href="#tag_V1">V1</a></li> 12670 <li><a href="#tag_FULL">FULL</a></li> 12671 </ul> 12672 </td> 12673 12674 </tr> 12675 <tr class="entries_header"> 12676 <th class="th_details" colspan="5">Details</th> 12677 </tr> 12678 <tr class="entry_cont"> 12679 <td class="entry_details" colspan="5"> 12680 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 12681equal to this,<wbr/> all applied gain must be analog.<wbr/> For 12682values above this,<wbr/> the gain applied can be a mix of analog and 12683digital.<wbr/></p> 12684 </td> 12685 </tr> 12686 12687 12688 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12689 <!-- end of entry --> 12690 12691 12692 <tr class="entry" id="static_android.sensor.orientation"> 12693 <td class="entry_name" rowspan="1"> 12694 android.<wbr/>sensor.<wbr/>orientation 12695 </td> 12696 <td class="entry_type"> 12697 <span class="entry_type_name">int32</span> 12698 12699 <span class="entry_type_visibility"> [public]</span> 12700 12701 12702 </td> <!-- entry_type --> 12703 12704 <td class="entry_description"> 12705 <p>Clockwise angle through which the output 12706image needs to be rotated to be upright on the device 12707screen in its native orientation.<wbr/> Also defines the 12708direction of rolling shutter readout,<wbr/> which is from top 12709to bottom in the sensor's coordinate system</p> 12710 </td> 12711 12712 <td class="entry_units"> 12713 degrees clockwise rotation,<wbr/> only multiples of 12714 90 12715 </td> 12716 12717 <td class="entry_range"> 12718 <p>0,<wbr/>90,<wbr/>180,<wbr/>270</p> 12719 </td> 12720 12721 <td class="entry_tags"> 12722 <ul class="entry_tags"> 12723 <li><a href="#tag_BC">BC</a></li> 12724 </ul> 12725 </td> 12726 12727 </tr> 12728 12729 12730 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12731 <!-- end of entry --> 12732 12733 12734 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> 12735 <td class="entry_name" rowspan="3"> 12736 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions 12737 </td> 12738 <td class="entry_type"> 12739 <span class="entry_type_name">int32</span> 12740 <span class="entry_type_container">x</span> 12741 12742 <span class="entry_type_array"> 12743 3 12744 </span> 12745 <span class="entry_type_visibility"> [public]</span> 12746 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> 12747 12748 12749 </td> <!-- entry_type --> 12750 12751 <td class="entry_description"> 12752 <p>The number of input samples for each dimension of 12753<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> 12754 </td> 12755 12756 <td class="entry_units"> 12757 </td> 12758 12759 <td class="entry_range"> 12760 <p>Hue >= 1,<wbr/> 12761Saturation >= 2,<wbr/> 12762Value >= 1</p> 12763 </td> 12764 12765 <td class="entry_tags"> 12766 <ul class="entry_tags"> 12767 <li><a href="#tag_DNG">DNG</a></li> 12768 </ul> 12769 </td> 12770 12771 </tr> 12772 <tr class="entries_header"> 12773 <th class="th_details" colspan="5">Details</th> 12774 </tr> 12775 <tr class="entry_cont"> 12776 <td class="entry_details" colspan="5"> 12777 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value 12778dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the 12779dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 12780element.<wbr/></p> 12781 </td> 12782 </tr> 12783 12784 12785 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12786 <!-- end of entry --> 12787 12788 12789 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 12790 <td class="entry_name" rowspan="1"> 12791 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 12792 </td> 12793 <td class="entry_type"> 12794 <span class="entry_type_name">int32</span> 12795 <span class="entry_type_container">x</span> 12796 12797 <span class="entry_type_array"> 12798 n 12799 </span> 12800 <span class="entry_type_visibility"> [public]</span> 12801 <div class="entry_type_notes">list of enums</div> 12802 12803 12804 </td> <!-- entry_type --> 12805 12806 <td class="entry_description"> 12807 <p>Optional.<wbr/> Defaults to [OFF].<wbr/> Lists the supported test 12808pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>.<wbr/></p> 12809 </td> 12810 12811 <td class="entry_units"> 12812 </td> 12813 12814 <td class="entry_range"> 12815 <p>Must include OFF.<wbr/> All custom modes must be >= CUSTOM1</p> 12816 </td> 12817 12818 <td class="entry_tags"> 12819 </td> 12820 12821 </tr> 12822 12823 12824 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12825 <!-- end of entry --> 12826 12827 12828 12829 <!-- end of kind --> 12830 </tbody> 12831 <tr><td colspan="6" class="kind">dynamic</td></tr> 12832 12833 <thead class="entries_header"> 12834 <tr> 12835 <th class="th_name">Property Name</th> 12836 <th class="th_type">Type</th> 12837 <th class="th_description">Description</th> 12838 <th class="th_units">Units</th> 12839 <th class="th_range">Range</th> 12840 <th class="th_tags">Tags</th> 12841 </tr> 12842 </thead> 12843 12844 <tbody> 12845 12846 12847 12848 12849 12850 12851 12852 12853 12854 12855 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 12856 <td class="entry_name" rowspan="3"> 12857 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 12858 </td> 12859 <td class="entry_type"> 12860 <span class="entry_type_name">int64</span> 12861 12862 <span class="entry_type_visibility"> [public]</span> 12863 12864 12865 </td> <!-- entry_type --> 12866 12867 <td class="entry_description"> 12868 <p>Duration each pixel is exposed to 12869light.<wbr/></p> 12870 </td> 12871 12872 <td class="entry_units"> 12873 nanoseconds 12874 </td> 12875 12876 <td class="entry_range"> 12877 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 12878 </td> 12879 12880 <td class="entry_tags"> 12881 <ul class="entry_tags"> 12882 <li><a href="#tag_V1">V1</a></li> 12883 </ul> 12884 </td> 12885 12886 </tr> 12887 <tr class="entries_header"> 12888 <th class="th_details" colspan="5">Details</th> 12889 </tr> 12890 <tr class="entry_cont"> 12891 <td class="entry_details" colspan="5"> 12892 <p>If the sensor can't expose this exact duration,<wbr/> it should shorten the 12893duration exposed to the nearest possible value (rather than expose longer).<wbr/></p> 12894 </td> 12895 </tr> 12896 12897 12898 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12899 <!-- end of entry --> 12900 12901 12902 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 12903 <td class="entry_name" rowspan="3"> 12904 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 12905 </td> 12906 <td class="entry_type"> 12907 <span class="entry_type_name">int64</span> 12908 12909 <span class="entry_type_visibility"> [public]</span> 12910 12911 12912 </td> <!-- entry_type --> 12913 12914 <td class="entry_description"> 12915 <p>Duration from start of frame exposure to 12916start of next frame exposure.<wbr/></p> 12917 </td> 12918 12919 <td class="entry_units"> 12920 nanoseconds 12921 </td> 12922 12923 <td class="entry_range"> 12924 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 12925<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a>.<wbr/> The duration 12926is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 12927 </td> 12928 12929 <td class="entry_tags"> 12930 <ul class="entry_tags"> 12931 <li><a href="#tag_V1">V1</a></li> 12932 <li><a href="#tag_BC">BC</a></li> 12933 </ul> 12934 </td> 12935 12936 </tr> 12937 <tr class="entries_header"> 12938 <th class="th_details" colspan="5">Details</th> 12939 </tr> 12940 <tr class="entry_cont"> 12941 <td class="entry_details" colspan="5"> 12942 <p>The maximum frame rate that can be supported by a camera subsystem is 12943a function of many factors:</p> 12944<ul> 12945<li>Requested resolutions of output image streams</li> 12946<li>Availability of binning /<wbr/> skipping modes on the imager</li> 12947<li>The bandwidth of the imager interface</li> 12948<li>The bandwidth of the various ISP processing blocks</li> 12949</ul> 12950<p>Since these factors can vary greatly between different ISPs and 12951sensors,<wbr/> the camera abstraction tries to represent the bandwidth 12952restrictions with as simple a model as possible.<wbr/></p> 12953<p>The model presented has the following characteristics:</p> 12954<ul> 12955<li>The image sensor is always configured to output the smallest 12956resolution possible given the application's requested output stream 12957sizes.<wbr/> The smallest resolution is defined as being at least as large 12958as the largest requested output stream size; the camera pipeline must 12959never digitally upsample sensor data when the crop region covers the 12960whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 12961resolutions are configured,<wbr/> the sensor can provide a higher frame 12962rate.<wbr/></li> 12963<li>Since any request may use any or all the currently configured 12964output streams,<wbr/> the sensor and ISP must be configured to support 12965scaling a single capture to all the streams at the same time.<wbr/> This 12966means the camera pipeline must be ready to produce the largest 12967requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 12968frame rate of a given configured stream set is governed only by the 12969largest requested stream resolution.<wbr/></li> 12970<li>Using more than one output stream in a request does not affect the 12971frame duration.<wbr/></li> 12972<li>Certain format-streams may need to do additional background processing 12973before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 12974can run concurrently to the rest of the camera pipeline,<wbr/> but 12975cannot process more than 1 capture at a time.<wbr/></li> 12976</ul> 12977<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 12978is provided via the <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> field.<wbr/> 12979These are used to determine the maximum frame rate /<wbr/> minimum frame 12980duration that is possible for a given stream configuration.<wbr/></p> 12981<p>Specifically,<wbr/> the application can use the following rules to 12982determine the minimum frame duration it can request from the camera 12983device:</p> 12984<ol> 12985<li>Let the set of currently configured input/<wbr/>output streams 12986be called <code>S</code>.<wbr/></li> 12987<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by 12988looking it up in <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> (with 12989its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called 12990<code>F</code>.<wbr/></li> 12991<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 12992for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 12993used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 12994</ol> 12995<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in 12996<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>),<wbr/> then the frame duration in 12997<code>F</code> determines the steady state frame rate that the application will 12998get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind 12999of request be called <code>Rsimple</code>.<wbr/></p> 13000<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 13001by a single capture of a new request <code>Rstall</code> (which has at least 13002one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 13003same minimum frame duration this will not cause a frame rate loss 13004if all buffers from the previous <code>Rstall</code> have already been 13005delivered.<wbr/></p> 13006<p>For more details about stalling,<wbr/> see 13007<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 13008 </td> 13009 </tr> 13010 13011 13012 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13013 <!-- end of entry --> 13014 13015 13016 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 13017 <td class="entry_name" rowspan="3"> 13018 android.<wbr/>sensor.<wbr/>sensitivity 13019 </td> 13020 <td class="entry_type"> 13021 <span class="entry_type_name">int32</span> 13022 13023 <span class="entry_type_visibility"> [public]</span> 13024 13025 13026 </td> <!-- entry_type --> 13027 13028 <td class="entry_description"> 13029 <p>Gain applied to image data.<wbr/> Must be 13030implemented through analog gain only if set to values 13031below 'maximum analog sensitivity'.<wbr/></p> 13032<p>If the sensor can't apply this exact gain,<wbr/> it should lessen the 13033gain to the nearest possible value (rather than gain more).<wbr/></p> 13034 </td> 13035 13036 <td class="entry_units"> 13037 ISO arithmetic units 13038 </td> 13039 13040 <td class="entry_range"> 13041 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 13042 </td> 13043 13044 <td class="entry_tags"> 13045 <ul class="entry_tags"> 13046 <li><a href="#tag_V1">V1</a></li> 13047 </ul> 13048 </td> 13049 13050 </tr> 13051 <tr class="entries_header"> 13052 <th class="th_details" colspan="5">Details</th> 13053 </tr> 13054 <tr class="entry_cont"> 13055 <td class="entry_details" colspan="5"> 13056 <p>ISO 12232:2006 REI method</p> 13057 </td> 13058 </tr> 13059 13060 13061 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13062 <!-- end of entry --> 13063 13064 13065 <tr class="entry" id="dynamic_android.sensor.timestamp"> 13066 <td class="entry_name" rowspan="3"> 13067 android.<wbr/>sensor.<wbr/>timestamp 13068 </td> 13069 <td class="entry_type"> 13070 <span class="entry_type_name">int64</span> 13071 13072 <span class="entry_type_visibility"> [public]</span> 13073 13074 13075 </td> <!-- entry_type --> 13076 13077 <td class="entry_description"> 13078 <p>Time at start of exposure of first 13079row</p> 13080 </td> 13081 13082 <td class="entry_units"> 13083 nanoseconds 13084 </td> 13085 13086 <td class="entry_range"> 13087 <p>> 0</p> 13088 </td> 13089 13090 <td class="entry_tags"> 13091 <ul class="entry_tags"> 13092 <li><a href="#tag_BC">BC</a></li> 13093 </ul> 13094 </td> 13095 13096 </tr> 13097 <tr class="entries_header"> 13098 <th class="th_details" colspan="5">Details</th> 13099 </tr> 13100 <tr class="entry_cont"> 13101 <td class="entry_details" colspan="5"> 13102 <p>Monotonic,<wbr/> should be synced to other timestamps in 13103system</p> 13104 </td> 13105 </tr> 13106 13107 13108 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13109 <!-- end of entry --> 13110 13111 13112 <tr class="entry" id="dynamic_android.sensor.temperature"> 13113 <td class="entry_name" rowspan="1"> 13114 android.<wbr/>sensor.<wbr/>temperature 13115 </td> 13116 <td class="entry_type"> 13117 <span class="entry_type_name">float</span> 13118 13119 <span class="entry_type_visibility"> [public]</span> 13120 13121 13122 </td> <!-- entry_type --> 13123 13124 <td class="entry_description"> 13125 <p>The temperature of the sensor,<wbr/> sampled at the time 13126exposure began for this frame.<wbr/></p> 13127<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 13128somewhere close to it.<wbr/></p> 13129 </td> 13130 13131 <td class="entry_units"> 13132 celsius 13133 </td> 13134 13135 <td class="entry_range"> 13136 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 13137 </td> 13138 13139 <td class="entry_tags"> 13140 <ul class="entry_tags"> 13141 <li><a href="#tag_FULL">FULL</a></li> 13142 </ul> 13143 </td> 13144 13145 </tr> 13146 13147 13148 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13149 <!-- end of entry --> 13150 13151 13152 <tr class="entry" id="dynamic_android.sensor.referenceIlluminant"> 13153 <td class="entry_name" rowspan="3"> 13154 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant 13155 </td> 13156 <td class="entry_type"> 13157 <span class="entry_type_name entry_type_name_enum">byte</span> 13158 13159 <span class="entry_type_visibility"> [public]</span> 13160 13161 <ul class="entry_type_enum"> 13162 <li> 13163 <span class="entry_type_enum_name">DAYLIGHT</span> 13164 <span class="entry_type_enum_value">1</span> 13165 </li> 13166 <li> 13167 <span class="entry_type_enum_name">FLUORESCENT</span> 13168 <span class="entry_type_enum_value">2</span> 13169 </li> 13170 <li> 13171 <span class="entry_type_enum_name">TUNGSTEN</span> 13172 <span class="entry_type_enum_value">3</span> 13173 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 13174 </li> 13175 <li> 13176 <span class="entry_type_enum_name">FLASH</span> 13177 <span class="entry_type_enum_value">4</span> 13178 </li> 13179 <li> 13180 <span class="entry_type_enum_name">FINE_WEATHER</span> 13181 <span class="entry_type_enum_value">9</span> 13182 </li> 13183 <li> 13184 <span class="entry_type_enum_name">CLOUDY_WEATHER</span> 13185 <span class="entry_type_enum_value">10</span> 13186 </li> 13187 <li> 13188 <span class="entry_type_enum_name">SHADE</span> 13189 <span class="entry_type_enum_value">11</span> 13190 </li> 13191 <li> 13192 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span> 13193 <span class="entry_type_enum_value">12</span> 13194 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 13195 </li> 13196 <li> 13197 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span> 13198 <span class="entry_type_enum_value">13</span> 13199 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 13200 </li> 13201 <li> 13202 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span> 13203 <span class="entry_type_enum_value">14</span> 13204 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 13205 </li> 13206 <li> 13207 <span class="entry_type_enum_name">WHITE_FLUORESCENT</span> 13208 <span class="entry_type_enum_value">15</span> 13209 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 13210 </li> 13211 <li> 13212 <span class="entry_type_enum_name">STANDARD_A</span> 13213 <span class="entry_type_enum_value">17</span> 13214 </li> 13215 <li> 13216 <span class="entry_type_enum_name">STANDARD_B</span> 13217 <span class="entry_type_enum_value">18</span> 13218 </li> 13219 <li> 13220 <span class="entry_type_enum_name">STANDARD_C</span> 13221 <span class="entry_type_enum_value">19</span> 13222 </li> 13223 <li> 13224 <span class="entry_type_enum_name">D55</span> 13225 <span class="entry_type_enum_value">20</span> 13226 </li> 13227 <li> 13228 <span class="entry_type_enum_name">D65</span> 13229 <span class="entry_type_enum_value">21</span> 13230 </li> 13231 <li> 13232 <span class="entry_type_enum_name">D75</span> 13233 <span class="entry_type_enum_value">22</span> 13234 </li> 13235 <li> 13236 <span class="entry_type_enum_name">D50</span> 13237 <span class="entry_type_enum_value">23</span> 13238 </li> 13239 <li> 13240 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span> 13241 <span class="entry_type_enum_value">24</span> 13242 </li> 13243 </ul> 13244 13245 </td> <!-- entry_type --> 13246 13247 <td class="entry_description"> 13248 <p>A reference illumination source roughly matching the current scene 13249illumination,<wbr/> which is used to describe the sensor color space 13250transformations.<wbr/></p> 13251 </td> 13252 13253 <td class="entry_units"> 13254 </td> 13255 13256 <td class="entry_range"> 13257 </td> 13258 13259 <td class="entry_tags"> 13260 <ul class="entry_tags"> 13261 <li><a href="#tag_DNG">DNG</a></li> 13262 <li><a href="#tag_EXIF">EXIF</a></li> 13263 </ul> 13264 </td> 13265 13266 </tr> 13267 <tr class="entries_header"> 13268 <th class="th_details" colspan="5">Details</th> 13269 </tr> 13270 <tr class="entry_cont"> 13271 <td class="entry_details" colspan="5"> 13272 <p>The values in this tag correspond to the values defined for the 13273EXIF LightSource tag.<wbr/> These illuminants are standard light sources 13274that are often used for calibrating camera devices.<wbr/></p> 13275 </td> 13276 </tr> 13277 13278 13279 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13280 <!-- end of entry --> 13281 13282 13283 <tr class="entry" id="dynamic_android.sensor.calibrationTransform"> 13284 <td class="entry_name" rowspan="3"> 13285 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform 13286 </td> 13287 <td class="entry_type"> 13288 <span class="entry_type_name">rational</span> 13289 <span class="entry_type_container">x</span> 13290 13291 <span class="entry_type_array"> 13292 3 x 3 13293 </span> 13294 <span class="entry_type_visibility"> [public]</span> 13295 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 13296 13297 13298 </td> <!-- entry_type --> 13299 13300 <td class="entry_description"> 13301 <p>A per-device calibration transform matrix to be applied after the 13302color space transform when rendering the raw image buffer.<wbr/></p> 13303 </td> 13304 13305 <td class="entry_units"> 13306 </td> 13307 13308 <td class="entry_range"> 13309 </td> 13310 13311 <td class="entry_tags"> 13312 <ul class="entry_tags"> 13313 <li><a href="#tag_DNG">DNG</a></li> 13314 </ul> 13315 </td> 13316 13317 </tr> 13318 <tr class="entries_header"> 13319 <th class="th_details" colspan="5">Details</th> 13320 </tr> 13321 <tr class="entry_cont"> 13322 <td class="entry_details" colspan="5"> 13323 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 13324contains a per-device calibration transform that maps colors 13325from reference camera color space (i.<wbr/>e.<wbr/> the "golden module" 13326colorspace) into this camera device's linear native sensor color 13327space for the current scene illumination and white balance choice.<wbr/></p> 13328 </td> 13329 </tr> 13330 13331 13332 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13333 <!-- end of entry --> 13334 13335 13336 <tr class="entry" id="dynamic_android.sensor.colorTransform"> 13337 <td class="entry_name" rowspan="3"> 13338 android.<wbr/>sensor.<wbr/>color<wbr/>Transform 13339 </td> 13340 <td class="entry_type"> 13341 <span class="entry_type_name">rational</span> 13342 <span class="entry_type_container">x</span> 13343 13344 <span class="entry_type_array"> 13345 3 x 3 13346 </span> 13347 <span class="entry_type_visibility"> [public]</span> 13348 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 13349 13350 13351 </td> <!-- entry_type --> 13352 13353 <td class="entry_description"> 13354 <p>A matrix that transforms color values from CIE XYZ color space to 13355reference camera color space when rendering the raw image buffer.<wbr/></p> 13356 </td> 13357 13358 <td class="entry_units"> 13359 </td> 13360 13361 <td class="entry_range"> 13362 </td> 13363 13364 <td class="entry_tags"> 13365 <ul class="entry_tags"> 13366 <li><a href="#tag_DNG">DNG</a></li> 13367 </ul> 13368 </td> 13369 13370 </tr> 13371 <tr class="entries_header"> 13372 <th class="th_details" colspan="5">Details</th> 13373 </tr> 13374 <tr class="entry_cont"> 13375 <td class="entry_details" colspan="5"> 13376 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 13377contains a color transform matrix that maps colors from the CIE 13378XYZ color space to the reference camera raw color space (i.<wbr/>e.<wbr/> the 13379"golden module" colorspace) for the current scene illumination and 13380white balance choice.<wbr/></p> 13381 </td> 13382 </tr> 13383 13384 13385 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13386 <!-- end of entry --> 13387 13388 13389 <tr class="entry" id="dynamic_android.sensor.forwardMatrix"> 13390 <td class="entry_name" rowspan="3"> 13391 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix 13392 </td> 13393 <td class="entry_type"> 13394 <span class="entry_type_name">rational</span> 13395 <span class="entry_type_container">x</span> 13396 13397 <span class="entry_type_array"> 13398 3 x 3 13399 </span> 13400 <span class="entry_type_visibility"> [public]</span> 13401 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 13402 13403 13404 </td> <!-- entry_type --> 13405 13406 <td class="entry_description"> 13407 <p>A matrix that transforms white balanced camera colors to the CIE XYZ 13408colorspace with a D50 whitepoint.<wbr/></p> 13409 </td> 13410 13411 <td class="entry_units"> 13412 </td> 13413 13414 <td class="entry_range"> 13415 </td> 13416 13417 <td class="entry_tags"> 13418 <ul class="entry_tags"> 13419 <li><a href="#tag_DNG">DNG</a></li> 13420 </ul> 13421 </td> 13422 13423 </tr> 13424 <tr class="entries_header"> 13425 <th class="th_details" colspan="5">Details</th> 13426 </tr> 13427 <tr class="entry_cont"> 13428 <td class="entry_details" colspan="5"> 13429 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 13430a color transform matrix that maps a unit vector in the linear native 13431sensor color space to the D50 whitepoint in CIE XYZ color space.<wbr/></p> 13432 </td> 13433 </tr> 13434 13435 13436 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13437 <!-- end of entry --> 13438 13439 13440 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> 13441 <td class="entry_name" rowspan="3"> 13442 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point 13443 </td> 13444 <td class="entry_type"> 13445 <span class="entry_type_name">rational</span> 13446 <span class="entry_type_container">x</span> 13447 13448 <span class="entry_type_array"> 13449 3 13450 </span> 13451 <span class="entry_type_visibility"> [public]</span> 13452 13453 13454 </td> <!-- entry_type --> 13455 13456 <td class="entry_description"> 13457 <p>The estimated white balance at the time of capture.<wbr/></p> 13458 </td> 13459 13460 <td class="entry_units"> 13461 </td> 13462 13463 <td class="entry_range"> 13464 </td> 13465 13466 <td class="entry_tags"> 13467 <ul class="entry_tags"> 13468 <li><a href="#tag_DNG">DNG</a></li> 13469 </ul> 13470 </td> 13471 13472 </tr> 13473 <tr class="entries_header"> 13474 <th class="th_details" colspan="5">Details</th> 13475 </tr> 13476 <tr class="entry_cont"> 13477 <td class="entry_details" colspan="5"> 13478 <p>The estimated white balance encoded as the RGB values of the 13479perfectly neutral color point in the linear native sensor color space.<wbr/> 13480The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> 13481 </td> 13482 </tr> 13483 13484 13485 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13486 <!-- end of entry --> 13487 13488 13489 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> 13490 <td class="entry_name" rowspan="3"> 13491 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map 13492 </td> 13493 <td class="entry_type"> 13494 <span class="entry_type_name">float</span> 13495 <span class="entry_type_container">x</span> 13496 13497 <span class="entry_type_array"> 13498 hue_samples x saturation_samples x value_samples x 3 13499 </span> 13500 <span class="entry_type_visibility"> [public]</span> 13501 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> 13502 13503 13504 </td> <!-- entry_type --> 13505 13506 <td class="entry_description"> 13507 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale 13508for each pixel.<wbr/></p> 13509 </td> 13510 13511 <td class="entry_units"> 13512 13513 Hue shift is given in degrees; saturation and value scale factors are 13514 unitless.<wbr/> 13515 13516 </td> 13517 13518 <td class="entry_range"> 13519 </td> 13520 13521 <td class="entry_tags"> 13522 <ul class="entry_tags"> 13523 <li><a href="#tag_DNG">DNG</a></li> 13524 </ul> 13525 </td> 13526 13527 </tr> 13528 <tr class="entries_header"> 13529 <th class="th_details" colspan="5">Details</th> 13530 </tr> 13531 <tr class="entry_cont"> 13532 <td class="entry_details" colspan="5"> 13533 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in 13534<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> 13535<p>Each entry of this map contains three floats corresponding to the 13536hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 13537hue shift has the lowest index.<wbr/> The map entries are stored in the tag 13538in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 13539hue divisions in the middle loop,<wbr/> and the saturation divisions in the 13540inner loop.<wbr/> All zero input saturation entries are required to have a 13541value scale factor of 1.<wbr/>0.<wbr/></p> 13542 </td> 13543 </tr> 13544 13545 13546 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13547 <!-- end of entry --> 13548 13549 13550 <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> 13551 <td class="entry_name" rowspan="3"> 13552 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve 13553 </td> 13554 <td class="entry_type"> 13555 <span class="entry_type_name">float</span> 13556 <span class="entry_type_container">x</span> 13557 13558 <span class="entry_type_array"> 13559 samples x 2 13560 </span> 13561 <span class="entry_type_visibility"> [public]</span> 13562 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> 13563 13564 13565 </td> <!-- entry_type --> 13566 13567 <td class="entry_description"> 13568 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> 13569 </td> 13570 13571 <td class="entry_units"> 13572 </td> 13573 13574 <td class="entry_range"> 13575 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of 13576<code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last 13577sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> 13578 </td> 13579 13580 <td class="entry_tags"> 13581 <ul class="entry_tags"> 13582 <li><a href="#tag_DNG">DNG</a></li> 13583 </ul> 13584 </td> 13585 13586 </tr> 13587 <tr class="entries_header"> 13588 <th class="th_details" colspan="5">Details</th> 13589 </tr> 13590 <tr class="entry_cont"> 13591 <td class="entry_details" colspan="5"> 13592 <p>This tag contains a default tone curve that can be applied while 13593processing the image as a starting point for user adjustments.<wbr/> 13594The curve is specified as a list of value pairs in linear gamma.<wbr/> 13595The curve is interpolated using a cubic spline.<wbr/></p> 13596 </td> 13597 </tr> 13598 13599 13600 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13601 <!-- end of entry --> 13602 13603 13604 <tr class="entry" id="dynamic_android.sensor.greenSplit"> 13605 <td class="entry_name" rowspan="5"> 13606 android.<wbr/>sensor.<wbr/>green<wbr/>Split 13607 </td> 13608 <td class="entry_type"> 13609 <span class="entry_type_name">float</span> 13610 13611 <span class="entry_type_visibility"> [public]</span> 13612 13613 13614 </td> <!-- entry_type --> 13615 13616 <td class="entry_description"> 13617 <p>The worst-case divergence between Bayer green channels.<wbr/></p> 13618 </td> 13619 13620 <td class="entry_units"> 13621 </td> 13622 13623 <td class="entry_range"> 13624 <p>>= 0</p> 13625 </td> 13626 13627 <td class="entry_tags"> 13628 <ul class="entry_tags"> 13629 <li><a href="#tag_DNG">DNG</a></li> 13630 </ul> 13631 </td> 13632 13633 </tr> 13634 <tr class="entries_header"> 13635 <th class="th_details" colspan="5">Details</th> 13636 </tr> 13637 <tr class="entry_cont"> 13638 <td class="entry_details" colspan="5"> 13639 <p>This value is an estimate of the worst case split between the 13640Bayer green channels in the red and blue rows in the sensor color 13641filter array.<wbr/></p> 13642<p>The green split is calculated as follows:</p> 13643<ol> 13644<li>A 5x5 pixel (or larger) window W within the active sensor array is 13645chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 13646mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 13647chosen is implementation defined,<wbr/> and should be chosen to provide a 13648green split estimate that is both representative of the entire image 13649for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 13650<li>The arithmetic mean of the green channels from the red 13651rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 13652<li>The arithmetic mean of the green channels from the blue 13653rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> 13654<li>The maximum ratio R of the two means is computed as follows: 13655<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> 13656</ol> 13657<p>The ratio R is the green split divergence reported for this property,<wbr/> 13658which represents how much the green channels differ in the mosaic 13659pattern.<wbr/> This value is typically used to determine the treatment of 13660the green mosaic channels when demosaicing.<wbr/></p> 13661<p>The green split value can be roughly interpreted as follows:</p> 13662<ul> 13663<li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> 13664<li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software 13665correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 13666<li>R > 1.<wbr/>20 will require strong software correction to produce 13667a usuable image (>20% divergence).<wbr/></li> 13668</ul> 13669 </td> 13670 </tr> 13671 13672 <tr class="entries_header"> 13673 <th class="th_details" colspan="5">HAL Implementation Details</th> 13674 </tr> 13675 <tr class="entry_cont"> 13676 <td class="entry_details" colspan="5"> 13677 <p>The green split given may be a static value based on prior 13678characterization of the camera sensor using the green split 13679calculation method given here over a large,<wbr/> representative,<wbr/> sample 13680set of images.<wbr/> Other methods of calculation that produce equivalent 13681results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> 13682 </td> 13683 </tr> 13684 13685 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13686 <!-- end of entry --> 13687 13688 13689 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 13690 <td class="entry_name" rowspan="5"> 13691 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 13692 </td> 13693 <td class="entry_type"> 13694 <span class="entry_type_name entry_type_name_enum">int32</span> 13695 13696 <span class="entry_type_visibility"> [public]</span> 13697 13698 <ul class="entry_type_enum"> 13699 <li> 13700 <span class="entry_type_enum_name">OFF</span> 13701 <span class="entry_type_enum_notes"><p>Default.<wbr/> No test pattern mode is used,<wbr/> and the camera 13702device returns captures from the image sensor.<wbr/></p></span> 13703 </li> 13704 <li> 13705 <span class="entry_type_enum_name">SOLID_COLOR</span> 13706 <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 13707respective color channel provided in 13708<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 13709<p>For example:</p> 13710<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 13711</code></pre> 13712<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 13713<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 13714</code></pre> 13715<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 13716are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 13717 </li> 13718 <li> 13719 <span class="entry_type_enum_name">COLOR_BARS</span> 13720 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 13721<p>The vertical bars (left-to-right) are as follows:</p> 13722<ul> 13723<li>100% white</li> 13724<li>yellow</li> 13725<li>cyan</li> 13726<li>green</li> 13727<li>magenta</li> 13728<li>red</li> 13729<li>blue</li> 13730<li>black</li> 13731</ul> 13732<p>In general the image would look like the following:</p> 13733<pre><code>W Y C G M R B K 13734W Y C G M R B K 13735W Y C G M R B K 13736W Y C G M R B K 13737W Y C G M R B K 13738.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 13739.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 13740.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 13741 13742(B = Blue,<wbr/> K = Black) 13743</code></pre> 13744<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 13745When this is not possible,<wbr/> the bar size should be rounded 13746down to the nearest integer and the pattern can repeat 13747on the right side.<wbr/></p> 13748<p>Each bar's height must always take up the full sensor 13749pixel array height.<wbr/></p> 13750<p>Each pixel in this test pattern must be set to either 137510% intensity or 100% intensity.<wbr/></p></span> 13752 </li> 13753 <li> 13754 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 13755 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 13756each bar should start at its specified color at the top,<wbr/> 13757and fade to gray at the bottom.<wbr/></p> 13758<p>Furthermore each bar is further subdivided into a left and 13759right half.<wbr/> The left half should have a smooth gradient,<wbr/> 13760and the right half should have a quantized gradient.<wbr/></p> 13761<p>In particular,<wbr/> the right half's should consist of blocks of the 13762same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 13763<p>The least significant bits in the quantized gradient should 13764be copied from the most significant bits of the smooth gradient.<wbr/></p> 13765<p>The height of each bar should always be a multiple of 128.<wbr/> 13766When this is not the case,<wbr/> the pattern should repeat at the bottom 13767of the image.<wbr/></p></span> 13768 </li> 13769 <li> 13770 <span class="entry_type_enum_name">PN9</span> 13771 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 13772generated from a PN9 512-bit sequence (typically implemented 13773in hardware with a linear feedback shift register).<wbr/></p> 13774<p>The generator should be reset at the beginning of each frame,<wbr/> 13775and thus each subsequent raw frame with this test pattern should 13776be exactly the same as the last.<wbr/></p></span> 13777 </li> 13778 <li> 13779 <span class="entry_type_enum_name">CUSTOM1</span> 13780 <span class="entry_type_enum_value">256</span> 13781 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 13782available only on this camera device are at least this numeric 13783value.<wbr/></p> 13784<p>All of the custom test patterns will be static 13785(that is the raw image must not vary from frame to frame).<wbr/></p></span> 13786 </li> 13787 </ul> 13788 13789 </td> <!-- entry_type --> 13790 13791 <td class="entry_description"> 13792 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 13793doing a real exposure from the camera.<wbr/></p> 13794 </td> 13795 13796 <td class="entry_units"> 13797 </td> 13798 13799 <td class="entry_range"> 13800 <p>Optional.<wbr/> Defaults to OFF.<wbr/> Value must be one of 13801<a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 13802 </td> 13803 13804 <td class="entry_tags"> 13805 </td> 13806 13807 </tr> 13808 <tr class="entries_header"> 13809 <th class="th_details" colspan="5">Details</th> 13810 </tr> 13811 <tr class="entry_cont"> 13812 <td class="entry_details" colspan="5"> 13813 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 13814by android.<wbr/>sensor.<wbr/>* should be ignored.<wbr/> All other controls should 13815work as normal.<wbr/></p> 13816<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 13817occur (and that the test pattern remain unmodified,<wbr/> since the flash 13818would not actually affect it).<wbr/></p> 13819 </td> 13820 </tr> 13821 13822 <tr class="entries_header"> 13823 <th class="th_details" colspan="5">HAL Implementation Details</th> 13824 </tr> 13825 <tr class="entry_cont"> 13826 <td class="entry_details" colspan="5"> 13827 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 13828<p>The HAL may choose to substitute test patterns from the sensor 13829with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 13830indistinguishable to the ISP whether the data came from the 13831sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 13832 </td> 13833 </tr> 13834 13835 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13836 <!-- end of entry --> 13837 13838 13839 13840 <!-- end of kind --> 13841 </tbody> 13842 13843 <!-- end of section --> 13844 <tr><td colspan="6" id="section_shading" class="section">shading</td></tr> 13845 13846 13847 <tr><td colspan="6" class="kind">controls</td></tr> 13848 13849 <thead class="entries_header"> 13850 <tr> 13851 <th class="th_name">Property Name</th> 13852 <th class="th_type">Type</th> 13853 <th class="th_description">Description</th> 13854 <th class="th_units">Units</th> 13855 <th class="th_range">Range</th> 13856 <th class="th_tags">Tags</th> 13857 </tr> 13858 </thead> 13859 13860 <tbody> 13861 13862 13863 13864 13865 13866 13867 13868 13869 13870 13871 <tr class="entry" id="controls_android.shading.mode"> 13872 <td class="entry_name" rowspan="3"> 13873 android.<wbr/>shading.<wbr/>mode 13874 </td> 13875 <td class="entry_type"> 13876 <span class="entry_type_name entry_type_name_enum">byte</span> 13877 13878 <span class="entry_type_visibility"> [public]</span> 13879 13880 <ul class="entry_type_enum"> 13881 <li> 13882 <span class="entry_type_enum_name">OFF</span> 13883 <span class="entry_type_enum_notes"><p>No lens shading correction is applied</p></span> 13884 </li> 13885 <li> 13886 <span class="entry_type_enum_name">FAST</span> 13887 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor raw output</p></span> 13888 </li> 13889 <li> 13890 <span class="entry_type_enum_name">HIGH_QUALITY</span> 13891 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high quality</p></span> 13892 </li> 13893 </ul> 13894 13895 </td> <!-- entry_type --> 13896 13897 <td class="entry_description"> 13898 <p>Quality of lens shading correction applied 13899to the image data.<wbr/></p> 13900 </td> 13901 13902 <td class="entry_units"> 13903 </td> 13904 13905 <td class="entry_range"> 13906 </td> 13907 13908 <td class="entry_tags"> 13909 </td> 13910 13911 </tr> 13912 <tr class="entries_header"> 13913 <th class="th_details" colspan="5">Details</th> 13914 </tr> 13915 <tr class="entry_cont"> 13916 <td class="entry_details" colspan="5"> 13917 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 13918camera device,<wbr/> and an identity lens shading map data will be provided 13919if <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 13920shading 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/> 13921the 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 13922shown below:</p> 13923<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/> 13924 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/> 13925 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/> 13926 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/> 13927 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/> 13928 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 ] 13929</code></pre> 13930<p>When set to other modes,<wbr/> lens shading correction will be applied by the 13931camera device.<wbr/> Applications can request lens shading map data by setting 13932<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 13933lens shading map data in <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a>,<wbr/> with size specified 13934by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>.<wbr/></p> 13935 </td> 13936 </tr> 13937 13938 13939 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13940 <!-- end of entry --> 13941 13942 13943 <tr class="entry" id="controls_android.shading.strength"> 13944 <td class="entry_name" rowspan="1"> 13945 android.<wbr/>shading.<wbr/>strength 13946 </td> 13947 <td class="entry_type"> 13948 <span class="entry_type_name">byte</span> 13949 13950 <span class="entry_type_visibility"> [system]</span> 13951 13952 13953 </td> <!-- entry_type --> 13954 13955 <td class="entry_description"> 13956 <p>Control the amount of shading correction 13957applied to the images</p> 13958 </td> 13959 13960 <td class="entry_units"> 13961 unitless: 1-10; 10 is full shading 13962 compensation 13963 </td> 13964 13965 <td class="entry_range"> 13966 </td> 13967 13968 <td class="entry_tags"> 13969 <ul class="entry_tags"> 13970 <li><a href="#tag_ADV">ADV</a></li> 13971 </ul> 13972 </td> 13973 13974 </tr> 13975 13976 13977 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13978 <!-- end of entry --> 13979 13980 13981 13982 <!-- end of kind --> 13983 </tbody> 13984 <tr><td colspan="6" class="kind">dynamic</td></tr> 13985 13986 <thead class="entries_header"> 13987 <tr> 13988 <th class="th_name">Property Name</th> 13989 <th class="th_type">Type</th> 13990 <th class="th_description">Description</th> 13991 <th class="th_units">Units</th> 13992 <th class="th_range">Range</th> 13993 <th class="th_tags">Tags</th> 13994 </tr> 13995 </thead> 13996 13997 <tbody> 13998 13999 14000 14001 14002 14003 14004 14005 14006 14007 14008 <tr class="entry" id="dynamic_android.shading.mode"> 14009 <td class="entry_name" rowspan="3"> 14010 android.<wbr/>shading.<wbr/>mode 14011 </td> 14012 <td class="entry_type"> 14013 <span class="entry_type_name entry_type_name_enum">byte</span> 14014 14015 <span class="entry_type_visibility"> [public]</span> 14016 14017 <ul class="entry_type_enum"> 14018 <li> 14019 <span class="entry_type_enum_name">OFF</span> 14020 <span class="entry_type_enum_notes"><p>No lens shading correction is applied</p></span> 14021 </li> 14022 <li> 14023 <span class="entry_type_enum_name">FAST</span> 14024 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor raw output</p></span> 14025 </li> 14026 <li> 14027 <span class="entry_type_enum_name">HIGH_QUALITY</span> 14028 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high quality</p></span> 14029 </li> 14030 </ul> 14031 14032 </td> <!-- entry_type --> 14033 14034 <td class="entry_description"> 14035 <p>Quality of lens shading correction applied 14036to the image data.<wbr/></p> 14037 </td> 14038 14039 <td class="entry_units"> 14040 </td> 14041 14042 <td class="entry_range"> 14043 </td> 14044 14045 <td class="entry_tags"> 14046 </td> 14047 14048 </tr> 14049 <tr class="entries_header"> 14050 <th class="th_details" colspan="5">Details</th> 14051 </tr> 14052 <tr class="entry_cont"> 14053 <td class="entry_details" colspan="5"> 14054 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 14055camera device,<wbr/> and an identity lens shading map data will be provided 14056if <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 14057shading 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/> 14058the 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 14059shown below:</p> 14060<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/> 14061 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/> 14062 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/> 14063 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/> 14064 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/> 14065 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 ] 14066</code></pre> 14067<p>When set to other modes,<wbr/> lens shading correction will be applied by the 14068camera device.<wbr/> Applications can request lens shading map data by setting 14069<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 14070lens shading map data in <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a>,<wbr/> with size specified 14071by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>.<wbr/></p> 14072 </td> 14073 </tr> 14074 14075 14076 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14077 <!-- end of entry --> 14078 14079 14080 14081 <!-- end of kind --> 14082 </tbody> 14083 14084 <!-- end of section --> 14085 <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr> 14086 14087 14088 <tr><td colspan="6" class="kind">controls</td></tr> 14089 14090 <thead class="entries_header"> 14091 <tr> 14092 <th class="th_name">Property Name</th> 14093 <th class="th_type">Type</th> 14094 <th class="th_description">Description</th> 14095 <th class="th_units">Units</th> 14096 <th class="th_range">Range</th> 14097 <th class="th_tags">Tags</th> 14098 </tr> 14099 </thead> 14100 14101 <tbody> 14102 14103 14104 14105 14106 14107 14108 14109 14110 14111 14112 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 14113 <td class="entry_name" rowspan="3"> 14114 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 14115 </td> 14116 <td class="entry_type"> 14117 <span class="entry_type_name entry_type_name_enum">byte</span> 14118 14119 <span class="entry_type_visibility"> [public]</span> 14120 14121 <ul class="entry_type_enum"> 14122 <li> 14123 <span class="entry_type_enum_name">OFF</span> 14124 </li> 14125 <li> 14126 <span class="entry_type_enum_name">SIMPLE</span> 14127 <span class="entry_type_enum_notes"><p>Optional Return rectangle and confidence 14128only</p></span> 14129 </li> 14130 <li> 14131 <span class="entry_type_enum_name">FULL</span> 14132 <span class="entry_type_enum_notes"><p>Optional Return all face 14133metadata</p></span> 14134 </li> 14135 </ul> 14136 14137 </td> <!-- entry_type --> 14138 14139 <td class="entry_description"> 14140 <p>State of the face detector 14141unit</p> 14142 </td> 14143 14144 <td class="entry_units"> 14145 </td> 14146 14147 <td class="entry_range"> 14148 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 14149 </td> 14150 14151 <td class="entry_tags"> 14152 <ul class="entry_tags"> 14153 <li><a href="#tag_BC">BC</a></li> 14154 </ul> 14155 </td> 14156 14157 </tr> 14158 <tr class="entries_header"> 14159 <th class="th_details" colspan="5">Details</th> 14160 </tr> 14161 <tr class="entry_cont"> 14162 <td class="entry_details" colspan="5"> 14163 <p>Whether face detection is enabled,<wbr/> and whether it 14164should output just the basic fields or the full set of 14165fields.<wbr/> Value must be one of the 14166<a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>.<wbr/></p> 14167 </td> 14168 </tr> 14169 14170 14171 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14172 <!-- end of entry --> 14173 14174 14175 <tr class="entry" id="controls_android.statistics.histogramMode"> 14176 <td class="entry_name" rowspan="1"> 14177 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 14178 </td> 14179 <td class="entry_type"> 14180 <span class="entry_type_name entry_type_name_enum">byte</span> 14181 14182 <span class="entry_type_visibility"> [system as boolean]</span> 14183 14184 <ul class="entry_type_enum"> 14185 <li> 14186 <span class="entry_type_enum_name">OFF</span> 14187 </li> 14188 <li> 14189 <span class="entry_type_enum_name">ON</span> 14190 </li> 14191 </ul> 14192 14193 </td> <!-- entry_type --> 14194 14195 <td class="entry_description"> 14196 <p>Operating mode for histogram 14197generation</p> 14198 </td> 14199 14200 <td class="entry_units"> 14201 </td> 14202 14203 <td class="entry_range"> 14204 </td> 14205 14206 <td class="entry_tags"> 14207 <ul class="entry_tags"> 14208 <li><a href="#tag_V1">V1</a></li> 14209 </ul> 14210 </td> 14211 14212 </tr> 14213 14214 14215 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14216 <!-- end of entry --> 14217 14218 14219 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 14220 <td class="entry_name" rowspan="1"> 14221 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 14222 </td> 14223 <td class="entry_type"> 14224 <span class="entry_type_name entry_type_name_enum">byte</span> 14225 14226 <span class="entry_type_visibility"> [system as boolean]</span> 14227 14228 <ul class="entry_type_enum"> 14229 <li> 14230 <span class="entry_type_enum_name">OFF</span> 14231 </li> 14232 <li> 14233 <span class="entry_type_enum_name">ON</span> 14234 </li> 14235 </ul> 14236 14237 </td> <!-- entry_type --> 14238 14239 <td class="entry_description"> 14240 <p>Operating mode for sharpness map 14241generation</p> 14242 </td> 14243 14244 <td class="entry_units"> 14245 </td> 14246 14247 <td class="entry_range"> 14248 </td> 14249 14250 <td class="entry_tags"> 14251 <ul class="entry_tags"> 14252 <li><a href="#tag_V1">V1</a></li> 14253 </ul> 14254 </td> 14255 14256 </tr> 14257 14258 14259 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14260 <!-- end of entry --> 14261 14262 14263 <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> 14264 <td class="entry_name" rowspan="3"> 14265 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 14266 </td> 14267 <td class="entry_type"> 14268 <span class="entry_type_name entry_type_name_enum">byte</span> 14269 14270 <span class="entry_type_visibility"> [public as boolean]</span> 14271 14272 <ul class="entry_type_enum"> 14273 <li> 14274 <span class="entry_type_enum_name">OFF</span> 14275 </li> 14276 <li> 14277 <span class="entry_type_enum_name">ON</span> 14278 </li> 14279 </ul> 14280 14281 </td> <!-- entry_type --> 14282 14283 <td class="entry_description"> 14284 <p>Operating mode for hotpixel map generation.<wbr/></p> 14285 </td> 14286 14287 <td class="entry_units"> 14288 </td> 14289 14290 <td class="entry_range"> 14291 </td> 14292 14293 <td class="entry_tags"> 14294 <ul class="entry_tags"> 14295 <li><a href="#tag_V1">V1</a></li> 14296 <li><a href="#tag_DNG">DNG</a></li> 14297 </ul> 14298 </td> 14299 14300 </tr> 14301 <tr class="entries_header"> 14302 <th class="th_details" colspan="5">Details</th> 14303 </tr> 14304 <tr class="entry_cont"> 14305 <td class="entry_details" colspan="5"> 14306 <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/> 14307If set to OFF,<wbr/> no hotpixel map should be returned.<wbr/></p> 14308<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> 14309 </td> 14310 </tr> 14311 14312 14313 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14314 <!-- end of entry --> 14315 14316 14317 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 14318 <td class="entry_name" rowspan="3"> 14319 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 14320 </td> 14321 <td class="entry_type"> 14322 <span class="entry_type_name entry_type_name_enum">byte</span> 14323 14324 <span class="entry_type_visibility"> [public]</span> 14325 14326 <ul class="entry_type_enum"> 14327 <li> 14328 <span class="entry_type_enum_name">OFF</span> 14329 </li> 14330 <li> 14331 <span class="entry_type_enum_name">ON</span> 14332 </li> 14333 </ul> 14334 14335 </td> <!-- entry_type --> 14336 14337 <td class="entry_description"> 14338 <p>Whether the camera device will output the lens 14339shading map in output result metadata.<wbr/></p> 14340 </td> 14341 14342 <td class="entry_units"> 14343 </td> 14344 14345 <td class="entry_range"> 14346 </td> 14347 14348 <td class="entry_tags"> 14349 </td> 14350 14351 </tr> 14352 <tr class="entries_header"> 14353 <th class="th_details" colspan="5">Details</th> 14354 </tr> 14355 <tr class="entry_cont"> 14356 <td class="entry_details" colspan="5"> 14357 <p>When set to ON,<wbr/> 14358<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> must be provided in 14359the output result metadata.<wbr/></p> 14360 </td> 14361 </tr> 14362 14363 14364 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14365 <!-- end of entry --> 14366 14367 14368 14369 <!-- end of kind --> 14370 </tbody> 14371 <tr><td colspan="6" class="kind">static</td></tr> 14372 14373 <thead class="entries_header"> 14374 <tr> 14375 <th class="th_name">Property Name</th> 14376 <th class="th_type">Type</th> 14377 <th class="th_description">Description</th> 14378 <th class="th_units">Units</th> 14379 <th class="th_range">Range</th> 14380 <th class="th_tags">Tags</th> 14381 </tr> 14382 </thead> 14383 14384 <tbody> 14385 14386 14387 14388 14389 14390 14391 14392 14393 14394 14395 14396 14397 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 14398 <td class="entry_name" rowspan="3"> 14399 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 14400 </td> 14401 <td class="entry_type"> 14402 <span class="entry_type_name">byte</span> 14403 <span class="entry_type_container">x</span> 14404 14405 <span class="entry_type_array"> 14406 n 14407 </span> 14408 <span class="entry_type_visibility"> [public]</span> 14409 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 14410 14411 14412 </td> <!-- entry_type --> 14413 14414 <td class="entry_description"> 14415 <p>Which face detection modes are available,<wbr/> 14416if any</p> 14417 </td> 14418 14419 <td class="entry_units"> 14420 List of enum: 14421 OFF 14422 SIMPLE 14423 FULL 14424 </td> 14425 14426 <td class="entry_range"> 14427 </td> 14428 14429 <td class="entry_tags"> 14430 </td> 14431 14432 </tr> 14433 <tr class="entries_header"> 14434 <th class="th_details" colspan="5">Details</th> 14435 </tr> 14436 <tr class="entry_cont"> 14437 <td class="entry_details" colspan="5"> 14438 <p>OFF means face detection is disabled,<wbr/> it must 14439be included in the list.<wbr/></p> 14440<p>SIMPLE means the device supports the 14441<a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 14442<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a> outputs.<wbr/></p> 14443<p>FULL means the device additionally supports the 14444<a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a> and 14445<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a> outputs.<wbr/></p> 14446 </td> 14447 </tr> 14448 14449 14450 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14451 <!-- end of entry --> 14452 14453 14454 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 14455 <td class="entry_name" rowspan="1"> 14456 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 14457 </td> 14458 <td class="entry_type"> 14459 <span class="entry_type_name">int32</span> 14460 14461 <span class="entry_type_visibility"> [system]</span> 14462 14463 14464 </td> <!-- entry_type --> 14465 14466 <td class="entry_description"> 14467 <p>Number of histogram buckets 14468supported</p> 14469 </td> 14470 14471 <td class="entry_units"> 14472 </td> 14473 14474 <td class="entry_range"> 14475 <p>>= 64</p> 14476 </td> 14477 14478 <td class="entry_tags"> 14479 </td> 14480 14481 </tr> 14482 14483 14484 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14485 <!-- end of entry --> 14486 14487 14488 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 14489 <td class="entry_name" rowspan="1"> 14490 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 14491 </td> 14492 <td class="entry_type"> 14493 <span class="entry_type_name">int32</span> 14494 14495 <span class="entry_type_visibility"> [public]</span> 14496 14497 14498 </td> <!-- entry_type --> 14499 14500 <td class="entry_description"> 14501 <p>Maximum number of simultaneously detectable 14502faces</p> 14503 </td> 14504 14505 <td class="entry_units"> 14506 </td> 14507 14508 <td class="entry_range"> 14509 <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 14510modes besides OFF,<wbr/> otherwise 0</p> 14511 </td> 14512 14513 <td class="entry_tags"> 14514 </td> 14515 14516 </tr> 14517 14518 14519 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14520 <!-- end of entry --> 14521 14522 14523 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 14524 <td class="entry_name" rowspan="1"> 14525 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 14526 </td> 14527 <td class="entry_type"> 14528 <span class="entry_type_name">int32</span> 14529 14530 <span class="entry_type_visibility"> [system]</span> 14531 14532 14533 </td> <!-- entry_type --> 14534 14535 <td class="entry_description"> 14536 <p>Maximum value possible for a histogram 14537bucket</p> 14538 </td> 14539 14540 <td class="entry_units"> 14541 </td> 14542 14543 <td class="entry_range"> 14544 </td> 14545 14546 <td class="entry_tags"> 14547 </td> 14548 14549 </tr> 14550 14551 14552 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14553 <!-- end of entry --> 14554 14555 14556 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 14557 <td class="entry_name" rowspan="1"> 14558 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 14559 </td> 14560 <td class="entry_type"> 14561 <span class="entry_type_name">int32</span> 14562 14563 <span class="entry_type_visibility"> [system]</span> 14564 14565 14566 </td> <!-- entry_type --> 14567 14568 <td class="entry_description"> 14569 <p>Maximum value possible for a sharpness map 14570region.<wbr/></p> 14571 </td> 14572 14573 <td class="entry_units"> 14574 </td> 14575 14576 <td class="entry_range"> 14577 </td> 14578 14579 <td class="entry_tags"> 14580 </td> 14581 14582 </tr> 14583 14584 14585 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14586 <!-- end of entry --> 14587 14588 14589 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 14590 <td class="entry_name" rowspan="1"> 14591 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 14592 </td> 14593 <td class="entry_type"> 14594 <span class="entry_type_name">int32</span> 14595 <span class="entry_type_container">x</span> 14596 14597 <span class="entry_type_array"> 14598 2 14599 </span> 14600 <span class="entry_type_visibility"> [system as size]</span> 14601 <div class="entry_type_notes">width x height</div> 14602 14603 14604 </td> <!-- entry_type --> 14605 14606 <td class="entry_description"> 14607 <p>Dimensions of the sharpness 14608map</p> 14609 </td> 14610 14611 <td class="entry_units"> 14612 </td> 14613 14614 <td class="entry_range"> 14615 <p>Must be at least 32 x 32</p> 14616 </td> 14617 14618 <td class="entry_tags"> 14619 </td> 14620 14621 </tr> 14622 14623 14624 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14625 <!-- end of entry --> 14626 14627 14628 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> 14629 <td class="entry_name" rowspan="3"> 14630 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes 14631 </td> 14632 <td class="entry_type"> 14633 <span class="entry_type_name">byte</span> 14634 <span class="entry_type_container">x</span> 14635 14636 <span class="entry_type_array"> 14637 n 14638 </span> 14639 <span class="entry_type_visibility"> [public as boolean]</span> 14640 <div class="entry_type_notes">list of enums</div> 14641 14642 14643 </td> <!-- entry_type --> 14644 14645 <td class="entry_description"> 14646 <p>The set of hot pixel map output modes supported by this camera device.<wbr/></p> 14647 </td> 14648 14649 <td class="entry_units"> 14650 </td> 14651 14652 <td class="entry_range"> 14653 </td> 14654 14655 <td class="entry_tags"> 14656 <ul class="entry_tags"> 14657 <li><a href="#tag_V1">V1</a></li> 14658 <li><a href="#tag_DNG">DNG</a></li> 14659 </ul> 14660 </td> 14661 14662 </tr> 14663 <tr class="entries_header"> 14664 <th class="th_details" colspan="5">Details</th> 14665 </tr> 14666 <tr class="entry_cont"> 14667 <td class="entry_details" colspan="5"> 14668 <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> 14669<p>If no hotpixel map is available for this camera device,<wbr/> this will contain 14670only OFF.<wbr/> If the hotpixel map is available,<wbr/> this should include both 14671the ON and OFF options.<wbr/></p> 14672 </td> 14673 </tr> 14674 14675 14676 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14677 <!-- end of entry --> 14678 14679 14680 14681 14682 14683 14684 <!-- end of kind --> 14685 </tbody> 14686 <tr><td colspan="6" class="kind">dynamic</td></tr> 14687 14688 <thead class="entries_header"> 14689 <tr> 14690 <th class="th_name">Property Name</th> 14691 <th class="th_type">Type</th> 14692 <th class="th_description">Description</th> 14693 <th class="th_units">Units</th> 14694 <th class="th_range">Range</th> 14695 <th class="th_tags">Tags</th> 14696 </tr> 14697 </thead> 14698 14699 <tbody> 14700 14701 14702 14703 14704 14705 14706 14707 14708 14709 14710 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 14711 <td class="entry_name" rowspan="3"> 14712 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 14713 </td> 14714 <td class="entry_type"> 14715 <span class="entry_type_name entry_type_name_enum">byte</span> 14716 14717 <span class="entry_type_visibility"> [public]</span> 14718 14719 <ul class="entry_type_enum"> 14720 <li> 14721 <span class="entry_type_enum_name">OFF</span> 14722 </li> 14723 <li> 14724 <span class="entry_type_enum_name">SIMPLE</span> 14725 <span class="entry_type_enum_notes"><p>Optional Return rectangle and confidence 14726only</p></span> 14727 </li> 14728 <li> 14729 <span class="entry_type_enum_name">FULL</span> 14730 <span class="entry_type_enum_notes"><p>Optional Return all face 14731metadata</p></span> 14732 </li> 14733 </ul> 14734 14735 </td> <!-- entry_type --> 14736 14737 <td class="entry_description"> 14738 <p>State of the face detector 14739unit</p> 14740 </td> 14741 14742 <td class="entry_units"> 14743 </td> 14744 14745 <td class="entry_range"> 14746 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 14747 </td> 14748 14749 <td class="entry_tags"> 14750 <ul class="entry_tags"> 14751 <li><a href="#tag_BC">BC</a></li> 14752 </ul> 14753 </td> 14754 14755 </tr> 14756 <tr class="entries_header"> 14757 <th class="th_details" colspan="5">Details</th> 14758 </tr> 14759 <tr class="entry_cont"> 14760 <td class="entry_details" colspan="5"> 14761 <p>Whether face detection is enabled,<wbr/> and whether it 14762should output just the basic fields or the full set of 14763fields.<wbr/> Value must be one of the 14764<a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>.<wbr/></p> 14765 </td> 14766 </tr> 14767 14768 14769 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14770 <!-- end of entry --> 14771 14772 14773 <tr class="entry" id="dynamic_android.statistics.faceIds"> 14774 <td class="entry_name" rowspan="3"> 14775 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 14776 </td> 14777 <td class="entry_type"> 14778 <span class="entry_type_name">int32</span> 14779 <span class="entry_type_container">x</span> 14780 14781 <span class="entry_type_array"> 14782 n 14783 </span> 14784 <span class="entry_type_visibility"> [hidden]</span> 14785 14786 14787 </td> <!-- entry_type --> 14788 14789 <td class="entry_description"> 14790 <p>List of unique IDs for detected 14791faces</p> 14792 </td> 14793 14794 <td class="entry_units"> 14795 </td> 14796 14797 <td class="entry_range"> 14798 </td> 14799 14800 <td class="entry_tags"> 14801 <ul class="entry_tags"> 14802 <li><a href="#tag_BC">BC</a></li> 14803 </ul> 14804 </td> 14805 14806 </tr> 14807 <tr class="entries_header"> 14808 <th class="th_details" colspan="5">Details</th> 14809 </tr> 14810 <tr class="entry_cont"> 14811 <td class="entry_details" colspan="5"> 14812 <p>Only available if faceDetectMode == FULL</p> 14813 </td> 14814 </tr> 14815 14816 14817 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14818 <!-- end of entry --> 14819 14820 14821 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 14822 <td class="entry_name" rowspan="3"> 14823 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 14824 </td> 14825 <td class="entry_type"> 14826 <span class="entry_type_name">int32</span> 14827 <span class="entry_type_container">x</span> 14828 14829 <span class="entry_type_array"> 14830 n x 6 14831 </span> 14832 <span class="entry_type_visibility"> [hidden]</span> 14833 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 14834 14835 14836 </td> <!-- entry_type --> 14837 14838 <td class="entry_description"> 14839 <p>List of landmarks for detected 14840faces</p> 14841 </td> 14842 14843 <td class="entry_units"> 14844 </td> 14845 14846 <td class="entry_range"> 14847 </td> 14848 14849 <td class="entry_tags"> 14850 <ul class="entry_tags"> 14851 <li><a href="#tag_BC">BC</a></li> 14852 </ul> 14853 </td> 14854 14855 </tr> 14856 <tr class="entries_header"> 14857 <th class="th_details" colspan="5">Details</th> 14858 </tr> 14859 <tr class="entry_cont"> 14860 <td class="entry_details" colspan="5"> 14861 <p>Only available if faceDetectMode == FULL</p> 14862 </td> 14863 </tr> 14864 14865 14866 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14867 <!-- end of entry --> 14868 14869 14870 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 14871 <td class="entry_name" rowspan="3"> 14872 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 14873 </td> 14874 <td class="entry_type"> 14875 <span class="entry_type_name">int32</span> 14876 <span class="entry_type_container">x</span> 14877 14878 <span class="entry_type_array"> 14879 n x 4 14880 </span> 14881 <span class="entry_type_visibility"> [hidden as rectangle]</span> 14882 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 14883 14884 14885 </td> <!-- entry_type --> 14886 14887 <td class="entry_description"> 14888 <p>List of the bounding rectangles for detected 14889faces</p> 14890 </td> 14891 14892 <td class="entry_units"> 14893 </td> 14894 14895 <td class="entry_range"> 14896 </td> 14897 14898 <td class="entry_tags"> 14899 <ul class="entry_tags"> 14900 <li><a href="#tag_BC">BC</a></li> 14901 </ul> 14902 </td> 14903 14904 </tr> 14905 <tr class="entries_header"> 14906 <th class="th_details" colspan="5">Details</th> 14907 </tr> 14908 <tr class="entry_cont"> 14909 <td class="entry_details" colspan="5"> 14910 <p>Only available if faceDetectMode != OFF</p> 14911 </td> 14912 </tr> 14913 14914 14915 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14916 <!-- end of entry --> 14917 14918 14919 <tr class="entry" id="dynamic_android.statistics.faceScores"> 14920 <td class="entry_name" rowspan="3"> 14921 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 14922 </td> 14923 <td class="entry_type"> 14924 <span class="entry_type_name">byte</span> 14925 <span class="entry_type_container">x</span> 14926 14927 <span class="entry_type_array"> 14928 n 14929 </span> 14930 <span class="entry_type_visibility"> [hidden]</span> 14931 14932 14933 </td> <!-- entry_type --> 14934 14935 <td class="entry_description"> 14936 <p>List of the face confidence scores for 14937detected faces</p> 14938 </td> 14939 14940 <td class="entry_units"> 14941 </td> 14942 14943 <td class="entry_range"> 14944 <p>1-100</p> 14945 </td> 14946 14947 <td class="entry_tags"> 14948 <ul class="entry_tags"> 14949 <li><a href="#tag_BC">BC</a></li> 14950 </ul> 14951 </td> 14952 14953 </tr> 14954 <tr class="entries_header"> 14955 <th class="th_details" colspan="5">Details</th> 14956 </tr> 14957 <tr class="entry_cont"> 14958 <td class="entry_details" colspan="5"> 14959 <p>Only available if faceDetectMode != OFF.<wbr/> The value should be 14960meaningful (for example,<wbr/> setting 100 at all times is illegal).<wbr/></p> 14961 </td> 14962 </tr> 14963 14964 14965 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14966 <!-- end of entry --> 14967 14968 14969 <tr class="entry" id="dynamic_android.statistics.histogram"> 14970 <td class="entry_name" rowspan="3"> 14971 android.<wbr/>statistics.<wbr/>histogram 14972 </td> 14973 <td class="entry_type"> 14974 <span class="entry_type_name">int32</span> 14975 <span class="entry_type_container">x</span> 14976 14977 <span class="entry_type_array"> 14978 n x 3 14979 </span> 14980 <span class="entry_type_visibility"> [system]</span> 14981 <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> 14982 14983 14984 </td> <!-- entry_type --> 14985 14986 <td class="entry_description"> 14987 <p>A 3-channel histogram based on the raw 14988sensor data</p> 14989 </td> 14990 14991 <td class="entry_units"> 14992 </td> 14993 14994 <td class="entry_range"> 14995 </td> 14996 14997 <td class="entry_tags"> 14998 <ul class="entry_tags"> 14999 <li><a href="#tag_V1">V1</a></li> 15000 </ul> 15001 </td> 15002 15003 </tr> 15004 <tr class="entries_header"> 15005 <th class="th_details" colspan="5">Details</th> 15006 </tr> 15007 <tr class="entry_cont"> 15008 <td class="entry_details" colspan="5"> 15009 <p>The k'th bucket (0-based) covers the input range 15010(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/> 15011(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 15012supported,<wbr/> all channels should have the same data</p> 15013 </td> 15014 </tr> 15015 15016 15017 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15018 <!-- end of entry --> 15019 15020 15021 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 15022 <td class="entry_name" rowspan="1"> 15023 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 15024 </td> 15025 <td class="entry_type"> 15026 <span class="entry_type_name entry_type_name_enum">byte</span> 15027 15028 <span class="entry_type_visibility"> [system as boolean]</span> 15029 15030 <ul class="entry_type_enum"> 15031 <li> 15032 <span class="entry_type_enum_name">OFF</span> 15033 </li> 15034 <li> 15035 <span class="entry_type_enum_name">ON</span> 15036 </li> 15037 </ul> 15038 15039 </td> <!-- entry_type --> 15040 15041 <td class="entry_description"> 15042 <p>Operating mode for histogram 15043generation</p> 15044 </td> 15045 15046 <td class="entry_units"> 15047 </td> 15048 15049 <td class="entry_range"> 15050 </td> 15051 15052 <td class="entry_tags"> 15053 <ul class="entry_tags"> 15054 <li><a href="#tag_V1">V1</a></li> 15055 </ul> 15056 </td> 15057 15058 </tr> 15059 15060 15061 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15062 <!-- end of entry --> 15063 15064 15065 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 15066 <td class="entry_name" rowspan="3"> 15067 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 15068 </td> 15069 <td class="entry_type"> 15070 <span class="entry_type_name">int32</span> 15071 <span class="entry_type_container">x</span> 15072 15073 <span class="entry_type_array"> 15074 n x m x 3 15075 </span> 15076 <span class="entry_type_visibility"> [system]</span> 15077 <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> 15078 15079 15080 </td> <!-- entry_type --> 15081 15082 <td class="entry_description"> 15083 <p>A 3-channel sharpness map,<wbr/> based on the raw 15084sensor data</p> 15085 </td> 15086 15087 <td class="entry_units"> 15088 </td> 15089 15090 <td class="entry_range"> 15091 </td> 15092 15093 <td class="entry_tags"> 15094 <ul class="entry_tags"> 15095 <li><a href="#tag_V1">V1</a></li> 15096 </ul> 15097 </td> 15098 15099 </tr> 15100 <tr class="entries_header"> 15101 <th class="th_details" colspan="5">Details</th> 15102 </tr> 15103 <tr class="entry_cont"> 15104 <td class="entry_details" colspan="5"> 15105 <p>If only a monochrome sharpness map is supported,<wbr/> 15106all channels should have the same data</p> 15107 </td> 15108 </tr> 15109 15110 15111 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15112 <!-- end of entry --> 15113 15114 15115 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> 15116 <td class="entry_name" rowspan="1"> 15117 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 15118 </td> 15119 <td class="entry_type"> 15120 <span class="entry_type_name entry_type_name_enum">byte</span> 15121 15122 <span class="entry_type_visibility"> [system as boolean]</span> 15123 15124 <ul class="entry_type_enum"> 15125 <li> 15126 <span class="entry_type_enum_name">OFF</span> 15127 </li> 15128 <li> 15129 <span class="entry_type_enum_name">ON</span> 15130 </li> 15131 </ul> 15132 15133 </td> <!-- entry_type --> 15134 15135 <td class="entry_description"> 15136 <p>Operating mode for sharpness map 15137generation</p> 15138 </td> 15139 15140 <td class="entry_units"> 15141 </td> 15142 15143 <td class="entry_range"> 15144 </td> 15145 15146 <td class="entry_tags"> 15147 <ul class="entry_tags"> 15148 <li><a href="#tag_V1">V1</a></li> 15149 </ul> 15150 </td> 15151 15152 </tr> 15153 15154 15155 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15156 <!-- end of entry --> 15157 15158 15159 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 15160 <td class="entry_name" rowspan="3"> 15161 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 15162 </td> 15163 <td class="entry_type"> 15164 <span class="entry_type_name">float</span> 15165 <span class="entry_type_container">x</span> 15166 15167 <span class="entry_type_array"> 15168 4 x n x m 15169 </span> 15170 <span class="entry_type_visibility"> [public]</span> 15171 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 15172 15173 15174 </td> <!-- entry_type --> 15175 15176 <td class="entry_description"> 15177 <p>The shading map is a low-resolution floating-point map 15178that lists the coefficients used to correct for vignetting,<wbr/> for each 15179Bayer color channel.<wbr/></p> 15180 </td> 15181 15182 <td class="entry_units"> 15183 </td> 15184 15185 <td class="entry_range"> 15186 <p>Each gain factor is >= 1</p> 15187 </td> 15188 15189 <td class="entry_tags"> 15190 </td> 15191 15192 </tr> 15193 <tr class="entries_header"> 15194 <th class="th_details" colspan="5">Details</th> 15195 </tr> 15196 <tr class="entry_cont"> 15197 <td class="entry_details" colspan="5"> 15198 <p>The least shaded section of the image should have a gain factor 15199of 1; all other sections should have gains above 1.<wbr/></p> 15200<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 15201must take into account the colorCorrection settings.<wbr/></p> 15202<p>The shading map is for the entire active pixel array,<wbr/> and is not 15203affected by the crop region specified in the request.<wbr/> Each shading map 15204entry is the value of the shading compensation map over a specific 15205pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 15206map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 15207(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 15208pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 15209The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 15210<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 15211channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 15212The shading map is stored in a fully interleaved format,<wbr/> and its size 15213is 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> 15214<p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 15215and must be smaller than 64x64.<wbr/></p> 15216<p>As an example,<wbr/> given a very small map defined as:</p> 15217<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 15218<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 15219[ 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/> 15220 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/> 15221 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/> 15222 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/> 15223 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/> 15224 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 ] 15225</code></pre> 15226<p>The low-resolution scaling map images for each channel are 15227(displayed using nearest-neighbor interpolation):</p> 15228<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 15229<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 15230<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 15231<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 15232<p>As a visualization only,<wbr/> inverting the full-color map to recover an 15233image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 15234<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 15235 </td> 15236 </tr> 15237 15238 15239 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15240 <!-- end of entry --> 15241 15242 15243 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 15244 <td class="entry_name" rowspan="3"> 15245 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 15246 </td> 15247 <td class="entry_type"> 15248 <span class="entry_type_name">float</span> 15249 <span class="entry_type_container">x</span> 15250 15251 <span class="entry_type_array"> 15252 4 15253 </span> 15254 <span class="entry_type_visibility"> [hidden]</span> 15255 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 15256 15257 15258 </td> <!-- entry_type --> 15259 15260 <td class="entry_description"> 15261 <p>The best-fit color channel gains calculated 15262by the camera device's statistics units for the current output frame.<wbr/></p> 15263 </td> 15264 15265 <td class="entry_units"> 15266 </td> 15267 15268 <td class="entry_range"> 15269 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 15270 </td> 15271 15272 <td class="entry_tags"> 15273 </td> 15274 15275 </tr> 15276 <tr class="entries_header"> 15277 <th class="th_details" colspan="5">Details</th> 15278 </tr> 15279 <tr class="entry_cont"> 15280 <td class="entry_details" colspan="5"> 15281 <p>This may be different than the gains used for this frame,<wbr/> 15282since statistics processing on data from a new frame 15283typically completes after the transform has already been 15284applied to that frame.<wbr/></p> 15285<p>The 4 channel gains are defined in Bayer domain,<wbr/> 15286see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 15287<p>This value should always be calculated by the AWB block,<wbr/> 15288regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 15289 </td> 15290 </tr> 15291 15292 15293 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15294 <!-- end of entry --> 15295 15296 15297 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 15298 <td class="entry_name" rowspan="3"> 15299 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 15300 </td> 15301 <td class="entry_type"> 15302 <span class="entry_type_name">rational</span> 15303 <span class="entry_type_container">x</span> 15304 15305 <span class="entry_type_array"> 15306 3 x 3 15307 </span> 15308 <span class="entry_type_visibility"> [hidden]</span> 15309 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 15310 15311 15312 </td> <!-- entry_type --> 15313 15314 <td class="entry_description"> 15315 <p>The best-fit color transform matrix estimate 15316calculated by the camera device's statistics units for the current 15317output frame.<wbr/></p> 15318 </td> 15319 15320 <td class="entry_units"> 15321 </td> 15322 15323 <td class="entry_range"> 15324 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 15325 </td> 15326 15327 <td class="entry_tags"> 15328 </td> 15329 15330 </tr> 15331 <tr class="entries_header"> 15332 <th class="th_details" colspan="5">Details</th> 15333 </tr> 15334 <tr class="entry_cont"> 15335 <td class="entry_details" colspan="5"> 15336 <p>The camera device will provide the estimate from its 15337statistics unit on the white balance transforms to use 15338for the next frame.<wbr/> These are the values the camera device believes 15339are the best fit for the current output frame.<wbr/> This may 15340be different than the transform used for this frame,<wbr/> since 15341statistics processing on data from a new frame typically 15342completes after the transform has already been applied to 15343that frame.<wbr/></p> 15344<p>These estimates must be provided for all frames,<wbr/> even if 15345capture settings and color transforms are set by the application.<wbr/></p> 15346<p>This value should always be calculated by the AWB block,<wbr/> 15347regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 15348 </td> 15349 </tr> 15350 15351 15352 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15353 <!-- end of entry --> 15354 15355 15356 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 15357 <td class="entry_name" rowspan="3"> 15358 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 15359 </td> 15360 <td class="entry_type"> 15361 <span class="entry_type_name entry_type_name_enum">byte</span> 15362 15363 <span class="entry_type_visibility"> [public]</span> 15364 15365 <ul class="entry_type_enum"> 15366 <li> 15367 <span class="entry_type_enum_name">NONE</span> 15368 </li> 15369 <li> 15370 <span class="entry_type_enum_name">50HZ</span> 15371 </li> 15372 <li> 15373 <span class="entry_type_enum_name">60HZ</span> 15374 </li> 15375 </ul> 15376 15377 </td> <!-- entry_type --> 15378 15379 <td class="entry_description"> 15380 <p>The camera device estimated scene illumination lighting 15381frequency.<wbr/></p> 15382 </td> 15383 15384 <td class="entry_units"> 15385 </td> 15386 15387 <td class="entry_range"> 15388 </td> 15389 15390 <td class="entry_tags"> 15391 </td> 15392 15393 </tr> 15394 <tr class="entries_header"> 15395 <th class="th_details" colspan="5">Details</th> 15396 </tr> 15397 <tr class="entry_cont"> 15398 <td class="entry_details" colspan="5"> 15399 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 15400that depends on the local utility power standards.<wbr/> This flicker must be 15401accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 15402The camera device uses this entry to tell the application what the scene 15403illuminant frequency is.<wbr/></p> 15404<p>When manual exposure control is enabled 15405(<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/> 15406the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't do the antibanding,<wbr/> and the 15407application can ensure it selects exposure times that do not cause banding 15408issues by looking into this metadata field.<wbr/> See <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> 15409for more details.<wbr/></p> 15410<p>Report NONE if there doesn't appear to be flickering illumination.<wbr/></p> 15411 </td> 15412 </tr> 15413 15414 15415 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15416 <!-- end of entry --> 15417 15418 15419 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> 15420 <td class="entry_name" rowspan="3"> 15421 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 15422 </td> 15423 <td class="entry_type"> 15424 <span class="entry_type_name entry_type_name_enum">byte</span> 15425 15426 <span class="entry_type_visibility"> [public as boolean]</span> 15427 15428 <ul class="entry_type_enum"> 15429 <li> 15430 <span class="entry_type_enum_name">OFF</span> 15431 </li> 15432 <li> 15433 <span class="entry_type_enum_name">ON</span> 15434 </li> 15435 </ul> 15436 15437 </td> <!-- entry_type --> 15438 15439 <td class="entry_description"> 15440 <p>Operating mode for hotpixel map generation.<wbr/></p> 15441 </td> 15442 15443 <td class="entry_units"> 15444 </td> 15445 15446 <td class="entry_range"> 15447 </td> 15448 15449 <td class="entry_tags"> 15450 <ul class="entry_tags"> 15451 <li><a href="#tag_V1">V1</a></li> 15452 <li><a href="#tag_DNG">DNG</a></li> 15453 </ul> 15454 </td> 15455 15456 </tr> 15457 <tr class="entries_header"> 15458 <th class="th_details" colspan="5">Details</th> 15459 </tr> 15460 <tr class="entry_cont"> 15461 <td class="entry_details" colspan="5"> 15462 <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/> 15463If set to OFF,<wbr/> no hotpixel map should be returned.<wbr/></p> 15464<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> 15465 </td> 15466 </tr> 15467 15468 15469 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15470 <!-- end of entry --> 15471 15472 15473 <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> 15474 <td class="entry_name" rowspan="5"> 15475 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map 15476 </td> 15477 <td class="entry_type"> 15478 <span class="entry_type_name">int32</span> 15479 <span class="entry_type_container">x</span> 15480 15481 <span class="entry_type_array"> 15482 2 x n 15483 </span> 15484 <span class="entry_type_visibility"> [public]</span> 15485 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 15486 15487 15488 </td> <!-- entry_type --> 15489 15490 <td class="entry_description"> 15491 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> 15492 </td> 15493 15494 <td class="entry_units"> 15495 </td> 15496 15497 <td class="entry_range"> 15498 <p>n <= number of pixels on the sensor.<wbr/> 15499The <code>(x,<wbr/> y)</code> coordinates must be bounded by 15500<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 15501 </td> 15502 15503 <td class="entry_tags"> 15504 <ul class="entry_tags"> 15505 <li><a href="#tag_V1">V1</a></li> 15506 <li><a href="#tag_DNG">DNG</a></li> 15507 </ul> 15508 </td> 15509 15510 </tr> 15511 <tr class="entries_header"> 15512 <th class="th_details" colspan="5">Details</th> 15513 </tr> 15514 <tr class="entry_cont"> 15515 <td class="entry_details" colspan="5"> 15516 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and 15517<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and 15518bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 15519height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> 15520This may include hot pixels that lie outside of the active array 15521bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 15522 </td> 15523 </tr> 15524 15525 <tr class="entries_header"> 15526 <th class="th_details" colspan="5">HAL Implementation Details</th> 15527 </tr> 15528 <tr class="entry_cont"> 15529 <td class="entry_details" colspan="5"> 15530 <p>A hotpixel map contains the coordinates of pixels on the camera 15531sensor that do report valid values (usually due to defects in 15532the camera sensor).<wbr/> This includes pixels that are stuck at certain 15533values,<wbr/> or have a response that does not accuractly encode the 15534incoming light from the scene.<wbr/></p> 15535<p>To avoid performance issues,<wbr/> there should be significantly fewer hot 15536pixels than actual pixels on the camera sensor.<wbr/></p> 15537 </td> 15538 </tr> 15539 15540 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15541 <!-- end of entry --> 15542 15543 15544 15545 <!-- end of kind --> 15546 </tbody> 15547 15548 <!-- end of section --> 15549 <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr> 15550 15551 15552 <tr><td colspan="6" class="kind">controls</td></tr> 15553 15554 <thead class="entries_header"> 15555 <tr> 15556 <th class="th_name">Property Name</th> 15557 <th class="th_type">Type</th> 15558 <th class="th_description">Description</th> 15559 <th class="th_units">Units</th> 15560 <th class="th_range">Range</th> 15561 <th class="th_tags">Tags</th> 15562 </tr> 15563 </thead> 15564 15565 <tbody> 15566 15567 15568 15569 15570 15571 15572 15573 15574 15575 15576 <tr class="entry" id="controls_android.tonemap.curveBlue"> 15577 <td class="entry_name" rowspan="3"> 15578 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 15579 </td> 15580 <td class="entry_type"> 15581 <span class="entry_type_name">float</span> 15582 <span class="entry_type_container">x</span> 15583 15584 <span class="entry_type_array"> 15585 n x 2 15586 </span> 15587 <span class="entry_type_visibility"> [public]</span> 15588 <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> 15589 15590 15591 </td> <!-- entry_type --> 15592 15593 <td class="entry_description"> 15594 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 15595channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 15596CONTRAST_<wbr/>CURVE.<wbr/></p> 15597 </td> 15598 15599 <td class="entry_units"> 15600 same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 15601 </td> 15602 15603 <td class="entry_range"> 15604 <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> 15605 </td> 15606 15607 <td class="entry_tags"> 15608 </td> 15609 15610 </tr> 15611 <tr class="entries_header"> 15612 <th class="th_details" colspan="5">Details</th> 15613 </tr> 15614 <tr class="entry_cont"> 15615 <td class="entry_details" colspan="5"> 15616 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 15617 </td> 15618 </tr> 15619 15620 15621 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15622 <!-- end of entry --> 15623 15624 15625 <tr class="entry" id="controls_android.tonemap.curveGreen"> 15626 <td class="entry_name" rowspan="3"> 15627 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 15628 </td> 15629 <td class="entry_type"> 15630 <span class="entry_type_name">float</span> 15631 <span class="entry_type_container">x</span> 15632 15633 <span class="entry_type_array"> 15634 n x 2 15635 </span> 15636 <span class="entry_type_visibility"> [public]</span> 15637 <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> 15638 15639 15640 </td> <!-- entry_type --> 15641 15642 <td class="entry_description"> 15643 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 15644channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 15645CONTRAST_<wbr/>CURVE.<wbr/></p> 15646 </td> 15647 15648 <td class="entry_units"> 15649 same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 15650 </td> 15651 15652 <td class="entry_range"> 15653 <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> 15654 </td> 15655 15656 <td class="entry_tags"> 15657 </td> 15658 15659 </tr> 15660 <tr class="entries_header"> 15661 <th class="th_details" colspan="5">Details</th> 15662 </tr> 15663 <tr class="entry_cont"> 15664 <td class="entry_details" colspan="5"> 15665 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 15666 </td> 15667 </tr> 15668 15669 15670 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15671 <!-- end of entry --> 15672 15673 15674 <tr class="entry" id="controls_android.tonemap.curveRed"> 15675 <td class="entry_name" rowspan="5"> 15676 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 15677 </td> 15678 <td class="entry_type"> 15679 <span class="entry_type_name">float</span> 15680 <span class="entry_type_container">x</span> 15681 15682 <span class="entry_type_array"> 15683 n x 2 15684 </span> 15685 <span class="entry_type_visibility"> [public]</span> 15686 <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> 15687 15688 15689 </td> <!-- entry_type --> 15690 15691 <td class="entry_description"> 15692 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 15693channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 15694CONTRAST_<wbr/>CURVE.<wbr/></p> 15695 </td> 15696 15697 <td class="entry_units"> 15698 </td> 15699 15700 <td class="entry_range"> 15701 <p>0-1 on both input and output coordinates,<wbr/> normalized 15702as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 15703 </td> 15704 15705 <td class="entry_tags"> 15706 </td> 15707 15708 </tr> 15709 <tr class="entries_header"> 15710 <th class="th_details" colspan="5">Details</th> 15711 </tr> 15712 <tr class="entry_cont"> 15713 <td class="entry_details" colspan="5"> 15714 <p>Each channel's curve is defined by an array of control points:</p> 15715<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 15716 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 157172 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 15718<p>These are sorted in order of increasing <code>Pin</code>; it is always 15719guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 15720define a complete mapping.<wbr/> For input values between control points,<wbr/> 15721the camera device must linearly interpolate between the control 15722points.<wbr/></p> 15723<p>Each curve can have an independent number of points,<wbr/> and the number 15724of points can be less than max (that is,<wbr/> the request doesn't have to 15725always provide a curve with number of points equivalent to 15726<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 15727<p>A few examples,<wbr/> and their corresponding graphical mappings; these 15728only specify the red channel and the precision is limited to 4 15729digits,<wbr/> for conciseness.<wbr/></p> 15730<p>Linear mapping:</p> 15731<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 ] 15732</code></pre> 15733<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 15734<p>Invert mapping:</p> 15735<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 ] 15736</code></pre> 15737<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 15738<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 15739<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 15740 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/> 15741 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/> 15742 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/> 15743 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 ] 15744</code></pre> 15745<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 15746<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 15747<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 15748 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/> 15749 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/> 15750 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/> 15751 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 ] 15752</code></pre> 15753<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 15754 </td> 15755 </tr> 15756 15757 <tr class="entries_header"> 15758 <th class="th_details" colspan="5">HAL Implementation Details</th> 15759 </tr> 15760 <tr class="entry_cont"> 15761 <td class="entry_details" colspan="5"> 15762 <p>For good quality of mapping,<wbr/> at least 128 control points are 15763preferred.<wbr/></p> 15764<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 15765control points used as are available.<wbr/></p> 15766 </td> 15767 </tr> 15768 15769 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15770 <!-- end of entry --> 15771 15772 15773 <tr class="entry" id="controls_android.tonemap.mode"> 15774 <td class="entry_name" rowspan="3"> 15775 android.<wbr/>tonemap.<wbr/>mode 15776 </td> 15777 <td class="entry_type"> 15778 <span class="entry_type_name entry_type_name_enum">byte</span> 15779 15780 <span class="entry_type_visibility"> [public]</span> 15781 15782 <ul class="entry_type_enum"> 15783 <li> 15784 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 15785 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 15786the android.<wbr/>tonemap.<wbr/>curve* entries.<wbr/></p> 15787<p>All color enhancement and tonemapping must be disabled,<wbr/> except 15788for applying the tonemapping curve specified by 15789<a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a>,<wbr/> <a href="#controls_android.tonemap.curveBlue">android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue</a>,<wbr/> or 15790<a href="#controls_android.tonemap.curveGreen">android.<wbr/>tonemap.<wbr/>curve<wbr/>Green</a>.<wbr/></p> 15791<p>Must not slow down frame rate relative to raw 15792sensor output.<wbr/></p></span> 15793 </li> 15794 <li> 15795 <span class="entry_type_enum_name">FAST</span> 15796 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> 15797<p>Should not slow down frame rate relative to raw sensor output.<wbr/></p></span> 15798 </li> 15799 <li> 15800 <span class="entry_type_enum_name">HIGH_QUALITY</span> 15801 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> 15802<p>May slow down frame rate relative to raw sensor output.<wbr/></p></span> 15803 </li> 15804 </ul> 15805 15806 </td> <!-- entry_type --> 15807 15808 <td class="entry_description"> 15809 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 15810 </td> 15811 15812 <td class="entry_units"> 15813 </td> 15814 15815 <td class="entry_range"> 15816 </td> 15817 15818 <td class="entry_tags"> 15819 </td> 15820 15821 </tr> 15822 <tr class="entries_header"> 15823 <th class="th_details" colspan="5">Details</th> 15824 </tr> 15825 <tr class="entry_cont"> 15826 <td class="entry_details" colspan="5"> 15827 <p>When switching to an application-defined contrast curve by setting 15828<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 15829per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 15830mapping from input high-bit-depth pixel value to the output 15831low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 15832and output may change depending on the camera pipeline,<wbr/> the values 15833are specified by normalized floating-point numbers.<wbr/></p> 15834<p>More-complex color mapping operations such as 3D color look-up 15835tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 15836transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 15837CONTRAST_<wbr/>CURVE.<wbr/></p> 15838<p>This must be set to a valid mode in 15839<a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a>.<wbr/></p> 15840<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 15841emit its own tonemap curve in <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a>,<wbr/> 15842<a href="#controls_android.tonemap.curveGreen">android.<wbr/>tonemap.<wbr/>curve<wbr/>Green</a>,<wbr/> and <a href="#controls_android.tonemap.curveBlue">android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue</a>.<wbr/> 15843These values are always available,<wbr/> and as close as possible to the 15844actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 15845<p>If a request is sent with TRANSFORM_<wbr/>MATRIX with the camera device's 15846provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 15847roughly the same.<wbr/></p> 15848 </td> 15849 </tr> 15850 15851 15852 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15853 <!-- end of entry --> 15854 15855 15856 15857 <!-- end of kind --> 15858 </tbody> 15859 <tr><td colspan="6" class="kind">static</td></tr> 15860 15861 <thead class="entries_header"> 15862 <tr> 15863 <th class="th_name">Property Name</th> 15864 <th class="th_type">Type</th> 15865 <th class="th_description">Description</th> 15866 <th class="th_units">Units</th> 15867 <th class="th_range">Range</th> 15868 <th class="th_tags">Tags</th> 15869 </tr> 15870 </thead> 15871 15872 <tbody> 15873 15874 15875 15876 15877 15878 15879 15880 15881 15882 15883 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 15884 <td class="entry_name" rowspan="5"> 15885 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 15886 </td> 15887 <td class="entry_type"> 15888 <span class="entry_type_name">int32</span> 15889 15890 <span class="entry_type_visibility"> [public]</span> 15891 15892 15893 </td> <!-- entry_type --> 15894 15895 <td class="entry_description"> 15896 <p>Maximum number of supported points in the 15897tonemap curve that can be used for <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a>,<wbr/> or 15898<a href="#controls_android.tonemap.curveGreen">android.<wbr/>tonemap.<wbr/>curve<wbr/>Green</a>,<wbr/> or <a href="#controls_android.tonemap.curveBlue">android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue</a>.<wbr/></p> 15899 </td> 15900 15901 <td class="entry_units"> 15902 </td> 15903 15904 <td class="entry_range"> 15905 <p>>= 64</p> 15906 </td> 15907 15908 <td class="entry_tags"> 15909 </td> 15910 15911 </tr> 15912 <tr class="entries_header"> 15913 <th class="th_details" colspan="5">Details</th> 15914 </tr> 15915 <tr class="entry_cont"> 15916 <td class="entry_details" colspan="5"> 15917 <p>If the actual number of points provided by the application (in 15918android.<wbr/>tonemap.<wbr/>curve*) is less than max,<wbr/> the camera device will 15919resample the curve to its internal representation,<wbr/> using linear 15920interpolation.<wbr/></p> 15921<p>The output curves in the result metadata may have a different number 15922of points than the input curves,<wbr/> and will represent the actual 15923hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 15924 </td> 15925 </tr> 15926 15927 <tr class="entries_header"> 15928 <th class="th_details" colspan="5">HAL Implementation Details</th> 15929 </tr> 15930 <tr class="entry_cont"> 15931 <td class="entry_details" colspan="5"> 15932 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 15933 </td> 15934 </tr> 15935 15936 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15937 <!-- end of entry --> 15938 15939 15940 <tr class="entry" id="static_android.tonemap.availableToneMapModes"> 15941 <td class="entry_name" rowspan="3"> 15942 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes 15943 </td> 15944 <td class="entry_type"> 15945 <span class="entry_type_name">byte</span> 15946 <span class="entry_type_container">x</span> 15947 15948 <span class="entry_type_array"> 15949 n 15950 </span> 15951 <span class="entry_type_visibility"> [public]</span> 15952 <div class="entry_type_notes">list of enums</div> 15953 15954 15955 </td> <!-- entry_type --> 15956 15957 <td class="entry_description"> 15958 <p>The set of tonemapping modes supported by this camera device.<wbr/></p> 15959 </td> 15960 15961 <td class="entry_units"> 15962 </td> 15963 15964 <td class="entry_range"> 15965 </td> 15966 15967 <td class="entry_tags"> 15968 </td> 15969 15970 </tr> 15971 <tr class="entries_header"> 15972 <th class="th_details" colspan="5">Details</th> 15973 </tr> 15974 <tr class="entry_cont"> 15975 <td class="entry_details" colspan="5"> 15976 <p>This tag lists the valid modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>.<wbr/></p> 15977<p>Full-capability camera devices must always support CONTRAST_<wbr/>CURVE and 15978FAST.<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 15988 <!-- end of kind --> 15989 </tbody> 15990 <tr><td colspan="6" class="kind">dynamic</td></tr> 15991 15992 <thead class="entries_header"> 15993 <tr> 15994 <th class="th_name">Property Name</th> 15995 <th class="th_type">Type</th> 15996 <th class="th_description">Description</th> 15997 <th class="th_units">Units</th> 15998 <th class="th_range">Range</th> 15999 <th class="th_tags">Tags</th> 16000 </tr> 16001 </thead> 16002 16003 <tbody> 16004 16005 16006 16007 16008 16009 16010 16011 16012 16013 16014 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 16015 <td class="entry_name" rowspan="3"> 16016 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 16017 </td> 16018 <td class="entry_type"> 16019 <span class="entry_type_name">float</span> 16020 <span class="entry_type_container">x</span> 16021 16022 <span class="entry_type_array"> 16023 n x 2 16024 </span> 16025 <span class="entry_type_visibility"> [public]</span> 16026 <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> 16027 16028 16029 </td> <!-- entry_type --> 16030 16031 <td class="entry_description"> 16032 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 16033channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 16034CONTRAST_<wbr/>CURVE.<wbr/></p> 16035 </td> 16036 16037 <td class="entry_units"> 16038 same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 16039 </td> 16040 16041 <td class="entry_range"> 16042 <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> 16043 </td> 16044 16045 <td class="entry_tags"> 16046 </td> 16047 16048 </tr> 16049 <tr class="entries_header"> 16050 <th class="th_details" colspan="5">Details</th> 16051 </tr> 16052 <tr class="entry_cont"> 16053 <td class="entry_details" colspan="5"> 16054 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 16055 </td> 16056 </tr> 16057 16058 16059 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16060 <!-- end of entry --> 16061 16062 16063 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 16064 <td class="entry_name" rowspan="3"> 16065 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 16066 </td> 16067 <td class="entry_type"> 16068 <span class="entry_type_name">float</span> 16069 <span class="entry_type_container">x</span> 16070 16071 <span class="entry_type_array"> 16072 n x 2 16073 </span> 16074 <span class="entry_type_visibility"> [public]</span> 16075 <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> 16076 16077 16078 </td> <!-- entry_type --> 16079 16080 <td class="entry_description"> 16081 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 16082channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 16083CONTRAST_<wbr/>CURVE.<wbr/></p> 16084 </td> 16085 16086 <td class="entry_units"> 16087 same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 16088 </td> 16089 16090 <td class="entry_range"> 16091 <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> 16092 </td> 16093 16094 <td class="entry_tags"> 16095 </td> 16096 16097 </tr> 16098 <tr class="entries_header"> 16099 <th class="th_details" colspan="5">Details</th> 16100 </tr> 16101 <tr class="entry_cont"> 16102 <td class="entry_details" colspan="5"> 16103 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 16104 </td> 16105 </tr> 16106 16107 16108 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16109 <!-- end of entry --> 16110 16111 16112 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 16113 <td class="entry_name" rowspan="5"> 16114 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 16115 </td> 16116 <td class="entry_type"> 16117 <span class="entry_type_name">float</span> 16118 <span class="entry_type_container">x</span> 16119 16120 <span class="entry_type_array"> 16121 n x 2 16122 </span> 16123 <span class="entry_type_visibility"> [public]</span> 16124 <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> 16125 16126 16127 </td> <!-- entry_type --> 16128 16129 <td class="entry_description"> 16130 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 16131channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 16132CONTRAST_<wbr/>CURVE.<wbr/></p> 16133 </td> 16134 16135 <td class="entry_units"> 16136 </td> 16137 16138 <td class="entry_range"> 16139 <p>0-1 on both input and output coordinates,<wbr/> normalized 16140as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 16141 </td> 16142 16143 <td class="entry_tags"> 16144 </td> 16145 16146 </tr> 16147 <tr class="entries_header"> 16148 <th class="th_details" colspan="5">Details</th> 16149 </tr> 16150 <tr class="entry_cont"> 16151 <td class="entry_details" colspan="5"> 16152 <p>Each channel's curve is defined by an array of control points:</p> 16153<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 16154 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 161552 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 16156<p>These are sorted in order of increasing <code>Pin</code>; it is always 16157guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 16158define a complete mapping.<wbr/> For input values between control points,<wbr/> 16159the camera device must linearly interpolate between the control 16160points.<wbr/></p> 16161<p>Each curve can have an independent number of points,<wbr/> and the number 16162of points can be less than max (that is,<wbr/> the request doesn't have to 16163always provide a curve with number of points equivalent to 16164<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 16165<p>A few examples,<wbr/> and their corresponding graphical mappings; these 16166only specify the red channel and the precision is limited to 4 16167digits,<wbr/> for conciseness.<wbr/></p> 16168<p>Linear mapping:</p> 16169<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 ] 16170</code></pre> 16171<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 16172<p>Invert mapping:</p> 16173<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 ] 16174</code></pre> 16175<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 16176<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 16177<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 16178 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/> 16179 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/> 16180 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/> 16181 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 ] 16182</code></pre> 16183<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 16184<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 16185<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 16186 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/> 16187 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/> 16188 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/> 16189 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 ] 16190</code></pre> 16191<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 16192 </td> 16193 </tr> 16194 16195 <tr class="entries_header"> 16196 <th class="th_details" colspan="5">HAL Implementation Details</th> 16197 </tr> 16198 <tr class="entry_cont"> 16199 <td class="entry_details" colspan="5"> 16200 <p>For good quality of mapping,<wbr/> at least 128 control points are 16201preferred.<wbr/></p> 16202<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 16203control points used as are available.<wbr/></p> 16204 </td> 16205 </tr> 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="dynamic_android.tonemap.mode"> 16212 <td class="entry_name" rowspan="3"> 16213 android.<wbr/>tonemap.<wbr/>mode 16214 </td> 16215 <td class="entry_type"> 16216 <span class="entry_type_name entry_type_name_enum">byte</span> 16217 16218 <span class="entry_type_visibility"> [public]</span> 16219 16220 <ul class="entry_type_enum"> 16221 <li> 16222 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 16223 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 16224the android.<wbr/>tonemap.<wbr/>curve* entries.<wbr/></p> 16225<p>All color enhancement and tonemapping must be disabled,<wbr/> except 16226for applying the tonemapping curve specified by 16227<a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a>,<wbr/> <a href="#controls_android.tonemap.curveBlue">android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue</a>,<wbr/> or 16228<a href="#controls_android.tonemap.curveGreen">android.<wbr/>tonemap.<wbr/>curve<wbr/>Green</a>.<wbr/></p> 16229<p>Must not slow down frame rate relative to raw 16230sensor output.<wbr/></p></span> 16231 </li> 16232 <li> 16233 <span class="entry_type_enum_name">FAST</span> 16234 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> 16235<p>Should not slow down frame rate relative to raw sensor output.<wbr/></p></span> 16236 </li> 16237 <li> 16238 <span class="entry_type_enum_name">HIGH_QUALITY</span> 16239 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> 16240<p>May slow down frame rate relative to raw sensor output.<wbr/></p></span> 16241 </li> 16242 </ul> 16243 16244 </td> <!-- entry_type --> 16245 16246 <td class="entry_description"> 16247 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 16248 </td> 16249 16250 <td class="entry_units"> 16251 </td> 16252 16253 <td class="entry_range"> 16254 </td> 16255 16256 <td class="entry_tags"> 16257 </td> 16258 16259 </tr> 16260 <tr class="entries_header"> 16261 <th class="th_details" colspan="5">Details</th> 16262 </tr> 16263 <tr class="entry_cont"> 16264 <td class="entry_details" colspan="5"> 16265 <p>When switching to an application-defined contrast curve by setting 16266<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 16267per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 16268mapping from input high-bit-depth pixel value to the output 16269low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 16270and output may change depending on the camera pipeline,<wbr/> the values 16271are specified by normalized floating-point numbers.<wbr/></p> 16272<p>More-complex color mapping operations such as 3D color look-up 16273tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 16274transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 16275CONTRAST_<wbr/>CURVE.<wbr/></p> 16276<p>This must be set to a valid mode in 16277<a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a>.<wbr/></p> 16278<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 16279emit its own tonemap curve in <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a>,<wbr/> 16280<a href="#controls_android.tonemap.curveGreen">android.<wbr/>tonemap.<wbr/>curve<wbr/>Green</a>,<wbr/> and <a href="#controls_android.tonemap.curveBlue">android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue</a>.<wbr/> 16281These values are always available,<wbr/> and as close as possible to the 16282actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 16283<p>If a request is sent with TRANSFORM_<wbr/>MATRIX with the camera device's 16284provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 16285roughly the same.<wbr/></p> 16286 </td> 16287 </tr> 16288 16289 16290 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16291 <!-- end of entry --> 16292 16293 16294 16295 <!-- end of kind --> 16296 </tbody> 16297 16298 <!-- end of section --> 16299 <tr><td colspan="6" id="section_led" class="section">led</td></tr> 16300 16301 16302 <tr><td colspan="6" class="kind">controls</td></tr> 16303 16304 <thead class="entries_header"> 16305 <tr> 16306 <th class="th_name">Property Name</th> 16307 <th class="th_type">Type</th> 16308 <th class="th_description">Description</th> 16309 <th class="th_units">Units</th> 16310 <th class="th_range">Range</th> 16311 <th class="th_tags">Tags</th> 16312 </tr> 16313 </thead> 16314 16315 <tbody> 16316 16317 16318 16319 16320 16321 16322 16323 16324 16325 16326 <tr class="entry" id="controls_android.led.transmit"> 16327 <td class="entry_name" rowspan="1"> 16328 android.<wbr/>led.<wbr/>transmit 16329 </td> 16330 <td class="entry_type"> 16331 <span class="entry_type_name entry_type_name_enum">byte</span> 16332 16333 <span class="entry_type_visibility"> [hidden as boolean]</span> 16334 16335 <ul class="entry_type_enum"> 16336 <li> 16337 <span class="entry_type_enum_name">OFF</span> 16338 </li> 16339 <li> 16340 <span class="entry_type_enum_name">ON</span> 16341 </li> 16342 </ul> 16343 16344 </td> <!-- entry_type --> 16345 16346 <td class="entry_description"> 16347 <p>This LED is nominally used to indicate to the user 16348that the camera is powered on and may be streaming images back to the 16349Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 16350disable this when video is processed locally and not transmitted to 16351any untrusted applications.<wbr/></p> 16352<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 16353transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 16354data is stored locally on the device.<wbr/></p> 16355<p>The LED <em>may</em> be off if a trusted application is using the data that 16356doesn't violate the above rules.<wbr/></p> 16357 </td> 16358 16359 <td class="entry_units"> 16360 </td> 16361 16362 <td class="entry_range"> 16363 </td> 16364 16365 <td class="entry_tags"> 16366 </td> 16367 16368 </tr> 16369 16370 16371 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16372 <!-- end of entry --> 16373 16374 16375 16376 <!-- end of kind --> 16377 </tbody> 16378 <tr><td colspan="6" class="kind">dynamic</td></tr> 16379 16380 <thead class="entries_header"> 16381 <tr> 16382 <th class="th_name">Property Name</th> 16383 <th class="th_type">Type</th> 16384 <th class="th_description">Description</th> 16385 <th class="th_units">Units</th> 16386 <th class="th_range">Range</th> 16387 <th class="th_tags">Tags</th> 16388 </tr> 16389 </thead> 16390 16391 <tbody> 16392 16393 16394 16395 16396 16397 16398 16399 16400 16401 16402 <tr class="entry" id="dynamic_android.led.transmit"> 16403 <td class="entry_name" rowspan="1"> 16404 android.<wbr/>led.<wbr/>transmit 16405 </td> 16406 <td class="entry_type"> 16407 <span class="entry_type_name entry_type_name_enum">byte</span> 16408 16409 <span class="entry_type_visibility"> [hidden as boolean]</span> 16410 16411 <ul class="entry_type_enum"> 16412 <li> 16413 <span class="entry_type_enum_name">OFF</span> 16414 </li> 16415 <li> 16416 <span class="entry_type_enum_name">ON</span> 16417 </li> 16418 </ul> 16419 16420 </td> <!-- entry_type --> 16421 16422 <td class="entry_description"> 16423 <p>This LED is nominally used to indicate to the user 16424that the camera is powered on and may be streaming images back to the 16425Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 16426disable this when video is processed locally and not transmitted to 16427any untrusted applications.<wbr/></p> 16428<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 16429transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 16430data is stored locally on the device.<wbr/></p> 16431<p>The LED <em>may</em> be off if a trusted application is using the data that 16432doesn't violate the above rules.<wbr/></p> 16433 </td> 16434 16435 <td class="entry_units"> 16436 </td> 16437 16438 <td class="entry_range"> 16439 </td> 16440 16441 <td class="entry_tags"> 16442 </td> 16443 16444 </tr> 16445 16446 16447 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16448 <!-- end of entry --> 16449 16450 16451 16452 <!-- end of kind --> 16453 </tbody> 16454 <tr><td colspan="6" class="kind">static</td></tr> 16455 16456 <thead class="entries_header"> 16457 <tr> 16458 <th class="th_name">Property Name</th> 16459 <th class="th_type">Type</th> 16460 <th class="th_description">Description</th> 16461 <th class="th_units">Units</th> 16462 <th class="th_range">Range</th> 16463 <th class="th_tags">Tags</th> 16464 </tr> 16465 </thead> 16466 16467 <tbody> 16468 16469 16470 16471 16472 16473 16474 16475 16476 16477 16478 <tr class="entry" id="static_android.led.availableLeds"> 16479 <td class="entry_name" rowspan="1"> 16480 android.<wbr/>led.<wbr/>available<wbr/>Leds 16481 </td> 16482 <td class="entry_type"> 16483 <span class="entry_type_name entry_type_name_enum">byte</span> 16484 <span class="entry_type_container">x</span> 16485 16486 <span class="entry_type_array"> 16487 n 16488 </span> 16489 <span class="entry_type_visibility"> [hidden]</span> 16490 16491 <ul class="entry_type_enum"> 16492 <li> 16493 <span class="entry_type_enum_name">TRANSMIT</span> 16494 <span class="entry_type_enum_notes"><p><a href="#controls_android.led.transmit">android.<wbr/>led.<wbr/>transmit</a> control is used</p></span> 16495 </li> 16496 </ul> 16497 16498 </td> <!-- entry_type --> 16499 16500 <td class="entry_description"> 16501 <p>A list of camera LEDs that are available on this system.<wbr/></p> 16502 </td> 16503 16504 <td class="entry_units"> 16505 </td> 16506 16507 <td class="entry_range"> 16508 </td> 16509 16510 <td class="entry_tags"> 16511 </td> 16512 16513 </tr> 16514 16515 16516 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16517 <!-- end of entry --> 16518 16519 16520 16521 <!-- end of kind --> 16522 </tbody> 16523 16524 <!-- end of section --> 16525 <tr><td colspan="6" id="section_info" class="section">info</td></tr> 16526 16527 16528 <tr><td colspan="6" class="kind">static</td></tr> 16529 16530 <thead class="entries_header"> 16531 <tr> 16532 <th class="th_name">Property Name</th> 16533 <th class="th_type">Type</th> 16534 <th class="th_description">Description</th> 16535 <th class="th_units">Units</th> 16536 <th class="th_range">Range</th> 16537 <th class="th_tags">Tags</th> 16538 </tr> 16539 </thead> 16540 16541 <tbody> 16542 16543 16544 16545 16546 16547 16548 16549 16550 16551 16552 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 16553 <td class="entry_name" rowspan="5"> 16554 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 16555 </td> 16556 <td class="entry_type"> 16557 <span class="entry_type_name entry_type_name_enum">byte</span> 16558 16559 <span class="entry_type_visibility"> [public]</span> 16560 16561 <ul class="entry_type_enum"> 16562 <li> 16563 <span class="entry_type_enum_name">LIMITED</span> 16564 </li> 16565 <li> 16566 <span class="entry_type_enum_name">FULL</span> 16567 </li> 16568 </ul> 16569 16570 </td> <!-- entry_type --> 16571 16572 <td class="entry_description"> 16573 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> 16574 </td> 16575 16576 <td class="entry_units"> 16577 </td> 16578 16579 <td class="entry_range"> 16580 <p>Optional.<wbr/> Default value is LIMITED.<wbr/></p> 16581 </td> 16582 16583 <td class="entry_tags"> 16584 </td> 16585 16586 </tr> 16587 <tr class="entries_header"> 16588 <th class="th_details" colspan="5">Details</th> 16589 </tr> 16590 <tr class="entry_cont"> 16591 <td class="entry_details" colspan="5"> 16592 <p>Camera devices will come in two flavors: LIMITED and FULL.<wbr/></p> 16593<p>A FULL device has the most support possible and will enable the 16594widest range of use cases such as:</p> 16595<ul> 16596<li>30 FPS at maximum resolution (== sensor resolution)</li> 16597<li>Per frame control</li> 16598<li>Manual sensor control</li> 16599<li>Zero Shutter Lag (ZSL)</li> 16600</ul> 16601<p>A LIMITED device may have some or none of the above characteristics.<wbr/> 16602To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 16603 </td> 16604 </tr> 16605 16606 <tr class="entries_header"> 16607 <th class="th_details" colspan="5">HAL Implementation Details</th> 16608 </tr> 16609 <tr class="entry_cont"> 16610 <td class="entry_details" colspan="5"> 16611 <p>The camera 3 HAL device can implement one of two possible 16612operational modes; limited and full.<wbr/> Full support is 16613expected from new higher-end devices.<wbr/> Limited mode has 16614hardware requirements roughly in line with those for a 16615camera HAL device v1 implementation,<wbr/> and is expected from 16616older or inexpensive devices.<wbr/> Full is a strict superset of 16617limited,<wbr/> and they share the same essential operational flow.<wbr/></p> 16618<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 16619 </td> 16620 </tr> 16621 16622 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16623 <!-- end of entry --> 16624 16625 16626 16627 <!-- end of kind --> 16628 </tbody> 16629 16630 <!-- end of section --> 16631 <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr> 16632 16633 16634 <tr><td colspan="6" class="kind">controls</td></tr> 16635 16636 <thead class="entries_header"> 16637 <tr> 16638 <th class="th_name">Property Name</th> 16639 <th class="th_type">Type</th> 16640 <th class="th_description">Description</th> 16641 <th class="th_units">Units</th> 16642 <th class="th_range">Range</th> 16643 <th class="th_tags">Tags</th> 16644 </tr> 16645 </thead> 16646 16647 <tbody> 16648 16649 16650 16651 16652 16653 16654 16655 16656 16657 16658 <tr class="entry" id="controls_android.blackLevel.lock"> 16659 <td class="entry_name" rowspan="5"> 16660 android.<wbr/>black<wbr/>Level.<wbr/>lock 16661 </td> 16662 <td class="entry_type"> 16663 <span class="entry_type_name entry_type_name_enum">byte</span> 16664 16665 <span class="entry_type_visibility"> [public as boolean]</span> 16666 16667 <ul class="entry_type_enum"> 16668 <li> 16669 <span class="entry_type_enum_name">OFF</span> 16670 </li> 16671 <li> 16672 <span class="entry_type_enum_name">ON</span> 16673 </li> 16674 </ul> 16675 16676 </td> <!-- entry_type --> 16677 16678 <td class="entry_description"> 16679 <p>Whether black-level compensation is locked 16680to its current values,<wbr/> or is free to vary.<wbr/></p> 16681 </td> 16682 16683 <td class="entry_units"> 16684 </td> 16685 16686 <td class="entry_range"> 16687 </td> 16688 16689 <td class="entry_tags"> 16690 <ul class="entry_tags"> 16691 <li><a href="#tag_HAL2">HAL2</a></li> 16692 </ul> 16693 </td> 16694 16695 </tr> 16696 <tr class="entries_header"> 16697 <th class="th_details" colspan="5">Details</th> 16698 </tr> 16699 <tr class="entry_cont"> 16700 <td class="entry_details" colspan="5"> 16701 <p>When set to ON,<wbr/> the values used for black-level 16702compensation will not change until the lock is set to 16703OFF.<wbr/></p> 16704<p>Since changes to certain capture parameters (such as 16705exposure time) may require resetting of black level 16706compensation,<wbr/> the camera device must report whether setting 16707the black level lock was successful in the output result 16708metadata.<wbr/></p> 16709<p>For example,<wbr/> if a sequence of requests is as follows:</p> 16710<ul> 16711<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 16712<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 16713<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 16714<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 16715<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 16716<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 16717</ul> 16718<p>And the exposure change in Request 4 requires the camera 16719device to reset the black level offsets,<wbr/> then the output 16720result metadata is expected to be:</p> 16721<ul> 16722<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 16723<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 16724<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 16725<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 16726<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 16727<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 16728</ul> 16729<p>This indicates to the application that on frame 4,<wbr/> black 16730levels were reset due to exposure value changes,<wbr/> and pixel 16731values may not be consistent across captures.<wbr/></p> 16732<p>The camera device will maintain the lock to the extent 16733possible,<wbr/> only overriding the lock to OFF when changes to 16734other request parameters require a black level recalculation 16735or reset.<wbr/></p> 16736 </td> 16737 </tr> 16738 16739 <tr class="entries_header"> 16740 <th class="th_details" colspan="5">HAL Implementation Details</th> 16741 </tr> 16742 <tr class="entry_cont"> 16743 <td class="entry_details" colspan="5"> 16744 <p>If for some reason black level locking is no longer possible 16745(for example,<wbr/> the analog gain has changed,<wbr/> which forces 16746black level offsets to be recalculated),<wbr/> then the HAL must 16747override this request (and it must report 'OFF' when this 16748does happen) until the next capture for which locking is 16749possible again.<wbr/></p> 16750 </td> 16751 </tr> 16752 16753 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16754 <!-- end of entry --> 16755 16756 16757 16758 <!-- end of kind --> 16759 </tbody> 16760 <tr><td colspan="6" class="kind">dynamic</td></tr> 16761 16762 <thead class="entries_header"> 16763 <tr> 16764 <th class="th_name">Property Name</th> 16765 <th class="th_type">Type</th> 16766 <th class="th_description">Description</th> 16767 <th class="th_units">Units</th> 16768 <th class="th_range">Range</th> 16769 <th class="th_tags">Tags</th> 16770 </tr> 16771 </thead> 16772 16773 <tbody> 16774 16775 16776 16777 16778 16779 16780 16781 16782 16783 16784 <tr class="entry" id="dynamic_android.blackLevel.lock"> 16785 <td class="entry_name" rowspan="5"> 16786 android.<wbr/>black<wbr/>Level.<wbr/>lock 16787 </td> 16788 <td class="entry_type"> 16789 <span class="entry_type_name entry_type_name_enum">byte</span> 16790 16791 <span class="entry_type_visibility"> [public as boolean]</span> 16792 16793 <ul class="entry_type_enum"> 16794 <li> 16795 <span class="entry_type_enum_name">OFF</span> 16796 </li> 16797 <li> 16798 <span class="entry_type_enum_name">ON</span> 16799 </li> 16800 </ul> 16801 16802 </td> <!-- entry_type --> 16803 16804 <td class="entry_description"> 16805 <p>Whether black-level compensation is locked 16806to its current values,<wbr/> or is free to vary.<wbr/></p> 16807 </td> 16808 16809 <td class="entry_units"> 16810 </td> 16811 16812 <td class="entry_range"> 16813 </td> 16814 16815 <td class="entry_tags"> 16816 <ul class="entry_tags"> 16817 <li><a href="#tag_HAL2">HAL2</a></li> 16818 </ul> 16819 </td> 16820 16821 </tr> 16822 <tr class="entries_header"> 16823 <th class="th_details" colspan="5">Details</th> 16824 </tr> 16825 <tr class="entry_cont"> 16826 <td class="entry_details" colspan="5"> 16827 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 16828ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 16829a change in other capture settings forced the camera device to 16830perform a black level reset.<wbr/></p> 16831 </td> 16832 </tr> 16833 16834 <tr class="entries_header"> 16835 <th class="th_details" colspan="5">HAL Implementation Details</th> 16836 </tr> 16837 <tr class="entry_cont"> 16838 <td class="entry_details" colspan="5"> 16839 <p>If for some reason black level locking is no longer possible 16840(for example,<wbr/> the analog gain has changed,<wbr/> which forces 16841black level offsets to be recalculated),<wbr/> then the HAL must 16842override this request (and it must report 'OFF' when this 16843does happen) until the next capture for which locking is 16844possible again.<wbr/></p> 16845 </td> 16846 </tr> 16847 16848 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16849 <!-- end of entry --> 16850 16851 16852 16853 <!-- end of kind --> 16854 </tbody> 16855 16856 <!-- end of section --> 16857 <tr><td colspan="6" id="section_sync" class="section">sync</td></tr> 16858 16859 16860 <tr><td colspan="6" class="kind">dynamic</td></tr> 16861 16862 <thead class="entries_header"> 16863 <tr> 16864 <th class="th_name">Property Name</th> 16865 <th class="th_type">Type</th> 16866 <th class="th_description">Description</th> 16867 <th class="th_units">Units</th> 16868 <th class="th_range">Range</th> 16869 <th class="th_tags">Tags</th> 16870 </tr> 16871 </thead> 16872 16873 <tbody> 16874 16875 16876 16877 16878 16879 16880 16881 16882 16883 16884 <tr class="entry" id="dynamic_android.sync.frameNumber"> 16885 <td class="entry_name" rowspan="5"> 16886 android.<wbr/>sync.<wbr/>frame<wbr/>Number 16887 </td> 16888 <td class="entry_type"> 16889 <span class="entry_type_name entry_type_name_enum">int64</span> 16890 16891 <span class="entry_type_visibility"> [hidden]</span> 16892 16893 <ul class="entry_type_enum"> 16894 <li> 16895 <span class="entry_type_enum_name">CONVERGING</span> 16896 <span class="entry_type_enum_value">-1</span> 16897 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/> 16898Synchronization is in progress,<wbr/> and reading metadata from this 16899result may include a mix of data that have taken effect since the 16900last synchronization time.<wbr/></p> 16901<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 16902this value will update to the actual frame number frame number 16903the result is guaranteed to be synchronized to (as long as the 16904request settings remain constant).<wbr/></p></span> 16905 </li> 16906 <li> 16907 <span class="entry_type_enum_name">UNKNOWN</span> 16908 <span class="entry_type_enum_value">-2</span> 16909 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/> The 16910result may have already converged,<wbr/> or it may be in progress.<wbr/> 16911Reading from this result may include some mix of settings from 16912past requests.<wbr/></p> 16913<p>After a settings change,<wbr/> the new settings will eventually all 16914take effect for the output buffers and results.<wbr/> However,<wbr/> this 16915value will not change when that happens.<wbr/> Altering settings 16916rapidly may provide outcomes using mixes of settings from recent 16917requests.<wbr/></p> 16918<p>This value is intended primarily for backwards compatibility with 16919the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 16920 </li> 16921 </ul> 16922 16923 </td> <!-- entry_type --> 16924 16925 <td class="entry_description"> 16926 <p>The frame number corresponding to the last request 16927with which the output result (metadata + buffers) has been fully 16928synchronized.<wbr/></p> 16929 </td> 16930 16931 <td class="entry_units"> 16932 </td> 16933 16934 <td class="entry_range"> 16935 <p>Either a non-negative value corresponding to a 16936<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 16937 </td> 16938 16939 <td class="entry_tags"> 16940 <ul class="entry_tags"> 16941 <li><a href="#tag_LIMITED">LIMITED</a></li> 16942 </ul> 16943 </td> 16944 16945 </tr> 16946 <tr class="entries_header"> 16947 <th class="th_details" colspan="5">Details</th> 16948 </tr> 16949 <tr class="entry_cont"> 16950 <td class="entry_details" colspan="5"> 16951 <p>When a request is submitted to the camera device,<wbr/> there is usually a 16952delay of several frames before the controls get applied.<wbr/> A camera 16953device may either choose to account for this delay by implementing a 16954pipeline and carefully submit well-timed atomic control updates,<wbr/> or 16955it may start streaming control changes that span over several frame 16956boundaries.<wbr/></p> 16957<p>In the latter case,<wbr/> whenever a request's settings change relative to 16958the previous submitted request,<wbr/> the full set of changes may take 16959multiple frame durations to fully take effect.<wbr/> Some settings may 16960take effect sooner (in less frame durations) than others.<wbr/></p> 16961<p>While a set of control changes are being propagated,<wbr/> this value 16962will be CONVERGING.<wbr/></p> 16963<p>Once it is fully known that a set of control changes have been 16964finished propagating,<wbr/> and the resulting updated control settings 16965have been read back by the camera device,<wbr/> this value will be set 16966to a non-negative frame number (corresponding to the request to 16967which the results have synchronized to).<wbr/></p> 16968<p>Older camera device implementations may not have a way to detect 16969when all camera controls have been applied,<wbr/> and will always set this 16970value to UNKNOWN.<wbr/></p> 16971<p>FULL capability devices will always have this value set to the 16972frame number of the request corresponding to this result.<wbr/></p> 16973<p><em>Further details</em>:</p> 16974<ul> 16975<li>Whenever a request differs from the last request,<wbr/> any future 16976results not yet returned may have this value set to CONVERGING (this 16977could include any in-progress captures not yet returned by the camera 16978device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 16979<li>Submitting a series of multiple requests that differ from the 16980previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 16981moves the new synchronization frame to the last non-repeating 16982request (using the smallest frame number from the contiguous list of 16983repeating requests).<wbr/></li> 16984<li>Submitting the same request repeatedly will not change this value 16985to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 16986<li>When this value changes to non-negative,<wbr/> that means that all of the 16987metadata controls from the request have been applied,<wbr/> all of the 16988metadata controls from the camera device have been read to the 16989updated values (into the result),<wbr/> and all of the graphics buffers 16990corresponding to this result are also synchronized to the request.<wbr/></li> 16991</ul> 16992<p><em>Pipeline considerations</em>:</p> 16993<p>Submitting a request with updated controls relative to the previously 16994submitted requests may also invalidate the synchronization state 16995of all the results corresponding to currently in-flight requests.<wbr/></p> 16996<p>In other words,<wbr/> results for this current request and up to 16997<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 16998<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 16999 </td> 17000 </tr> 17001 17002 <tr class="entries_header"> 17003 <th class="th_details" colspan="5">HAL Implementation Details</th> 17004 </tr> 17005 <tr class="entry_cont"> 17006 <td class="entry_details" colspan="5"> 17007 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> 17008is also UNKNOWN.<wbr/></p> 17009<p>FULL capability devices should simply set this value to the 17010<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 17011 </td> 17012 </tr> 17013 17014 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17015 <!-- end of entry --> 17016 17017 17018 17019 <!-- end of kind --> 17020 </tbody> 17021 <tr><td colspan="6" class="kind">static</td></tr> 17022 17023 <thead class="entries_header"> 17024 <tr> 17025 <th class="th_name">Property Name</th> 17026 <th class="th_type">Type</th> 17027 <th class="th_description">Description</th> 17028 <th class="th_units">Units</th> 17029 <th class="th_range">Range</th> 17030 <th class="th_tags">Tags</th> 17031 </tr> 17032 </thead> 17033 17034 <tbody> 17035 17036 17037 17038 17039 17040 17041 17042 17043 17044 17045 <tr class="entry" id="static_android.sync.maxLatency"> 17046 <td class="entry_name" rowspan="5"> 17047 android.<wbr/>sync.<wbr/>max<wbr/>Latency 17048 </td> 17049 <td class="entry_type"> 17050 <span class="entry_type_name entry_type_name_enum">int32</span> 17051 17052 <span class="entry_type_visibility"> [public]</span> 17053 17054 <ul class="entry_type_enum"> 17055 <li> 17056 <span class="entry_type_enum_name">PER_FRAME_CONTROL</span> 17057 <span class="entry_type_enum_value">0</span> 17058 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/> 17059(and furthermore for all results,<wbr/> 17060<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> 17061<p>Changing controls over multiple requests one after another will 17062produce results that have those controls applied atomically 17063each frame.<wbr/></p> 17064<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 17065 </li> 17066 <li> 17067 <span class="entry_type_enum_name">UNKNOWN</span> 17068 <span class="entry_type_enum_value">-1</span> 17069 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 17070of the past requests applied to the camera settings.<wbr/></p> 17071<p>By submitting a series of identical requests,<wbr/> the camera device 17072will eventually have the camera settings applied,<wbr/> but it is 17073unknown when that exact point will be.<wbr/></p></span> 17074 </li> 17075 </ul> 17076 17077 </td> <!-- entry_type --> 17078 17079 <td class="entry_description"> 17080 <p>The maximum number of frames that can occur after a request 17081(different than the previous) has been submitted,<wbr/> and before the 17082result's state becomes synchronized (by setting 17083<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> to a non-negative value).<wbr/></p> 17084 </td> 17085 17086 <td class="entry_units"> 17087 number of processed requests 17088 </td> 17089 17090 <td class="entry_range"> 17091 <p>>= -1</p> 17092 </td> 17093 17094 <td class="entry_tags"> 17095 <ul class="entry_tags"> 17096 <li><a href="#tag_LIMITED">LIMITED</a></li> 17097 </ul> 17098 </td> 17099 17100 </tr> 17101 <tr class="entries_header"> 17102 <th class="th_details" colspan="5">Details</th> 17103 </tr> 17104 <tr class="entry_cont"> 17105 <td class="entry_details" colspan="5"> 17106 <p>This defines the maximum distance (in number of metadata results),<wbr/> 17107between <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> and the equivalent 17108<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a>.<wbr/></p> 17109<p>In other words this acts as an upper boundary for how many frames 17110must occur before the camera device knows for a fact that the new 17111submitted camera settings have been applied in outgoing frames.<wbr/></p> 17112<p>For example if the distance was 2,<wbr/></p> 17113<pre><code>initial request = X (repeating) 17114request1 = X 17115request2 = Y 17116request3 = Y 17117request4 = Y 17118 17119where requestN has frameNumber N,<wbr/> and the first of the repeating 17120initial request's has frameNumber F (and F < 1).<wbr/> 17121 17122initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 17123result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 17124result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 17125result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 17126result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 17127 17128where resultN has frameNumber N.<wbr/> 17129</code></pre> 17130<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 17131<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 17132<code>4 - 2 = 2</code>.<wbr/></p> 17133 </td> 17134 </tr> 17135 17136 <tr class="entries_header"> 17137 <th class="th_details" colspan="5">HAL Implementation Details</th> 17138 </tr> 17139 <tr class="entry_cont"> 17140 <td class="entry_details" colspan="5"> 17141 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 17142<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a>.<wbr/></p> 17143<p>LIMITED devices are strongly encouraged to use a non-negative 17144value.<wbr/> If UNKNOWN is used here then app developers do not have a way 17145to know when sensor settings have been applied.<wbr/></p> 17146 </td> 17147 </tr> 17148 17149 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17150 <!-- end of entry --> 17151 17152 17153 17154 <!-- end of kind --> 17155 </tbody> 17156 17157 <!-- end of section --> 17158<!-- </namespace> --> 17159 </table> 17160 17161 <div class="tags" id="tag_index"> 17162 <h2>Tags</h2> 17163 <ul> 17164 <li id="tag_AWB">AWB - 17165 Needed for auto white balance 17166 17167 <ul class="tags_entries"> 17168 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 17169 </ul> 17170 </li> <!-- tag_AWB --> 17171 <li id="tag_BC">BC - 17172 Needed for backwards compatibility with old Java API 17173 17174 <ul class="tags_entries"> 17175 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 17176 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 17177 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 17178 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 17179 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 17180 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 17181 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 17182 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 17183 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 17184 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 17185 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 17186 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 17187 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 17188 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 17189 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 17190 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 17191 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 17192 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 17193 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 17194 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 17195 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 17196 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 17197 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 17198 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 17199 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 17200 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 17201 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 17202 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 17203 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 17204 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 17205 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 17206 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 17207 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 17208 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 17209 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 17210 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 17211 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 17212 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 17213 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 17214 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 17215 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 17216 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 17217 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 17218 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 17219 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 17220 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 17221 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 17222 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 17223 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 17224 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 17225 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> 17226 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> 17227 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 17228 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 17229 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 17230 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 17231 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 17232 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 17233 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 17234 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 17235 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 17236 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 17237 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 17238 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 17239 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 17240 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 17241 </ul> 17242 </li> <!-- tag_BC --> 17243 <li id="tag_V1">V1 - 17244 New features for first camera 2 release (API1) 17245 17246 <ul class="tags_entries"> 17247 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 17248 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 17249 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> 17250 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 17251 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 17252 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 17253 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 17254 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 17255 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 17256 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 17257 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 17258 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 17259 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 17260 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 17261 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 17262 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 17263 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 17264 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 17265 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 17266 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 17267 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 17268 <li><a href="#static_android.lens.position">android.lens.position</a> (static)</li> 17269 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 17270 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 17271 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 17272 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 17273 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 17274 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 17275 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 17276 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 17277 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 17278 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 17279 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 17280 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 17281 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 17282 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 17283 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 17284 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 17285 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 17286 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 17287 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 17288 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 17289 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 17290 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 17291 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 17292 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 17293 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 17294 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 17295 </ul> 17296 </li> <!-- tag_V1 --> 17297 <li id="tag_ADV">ADV - None 17298 <ul class="tags_entries"> 17299 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 17300 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 17301 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 17302 <li><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a> (static)</li> 17303 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 17304 </ul> 17305 </li> <!-- tag_ADV --> 17306 <li id="tag_DNG">DNG - 17307 Needed for DNG file support 17308 17309 <ul class="tags_entries"> 17310 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 17311 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 17312 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 17313 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 17314 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 17315 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 17316 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 17317 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> 17318 <li><a href="#dynamic_android.sensor.referenceIlluminant">android.sensor.referenceIlluminant</a> (dynamic)</li> 17319 <li><a href="#dynamic_android.sensor.calibrationTransform">android.sensor.calibrationTransform</a> (dynamic)</li> 17320 <li><a href="#dynamic_android.sensor.colorTransform">android.sensor.colorTransform</a> (dynamic)</li> 17321 <li><a href="#dynamic_android.sensor.forwardMatrix">android.sensor.forwardMatrix</a> (dynamic)</li> 17322 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> 17323 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> 17324 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> 17325 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> 17326 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 17327 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 17328 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 17329 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 17330 </ul> 17331 </li> <!-- tag_DNG --> 17332 <li id="tag_EXIF">EXIF - None 17333 <ul class="tags_entries"> 17334 <li><a href="#dynamic_android.sensor.referenceIlluminant">android.sensor.referenceIlluminant</a> (dynamic)</li> 17335 </ul> 17336 </li> <!-- tag_EXIF --> 17337 <li id="tag_HAL2">HAL2 - 17338 Entry is only used by camera device HAL 2.x 17339 17340 <ul class="tags_entries"> 17341 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 17342 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 17343 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 17344 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 17345 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 17346 </ul> 17347 </li> <!-- tag_HAL2 --> 17348 <li id="tag_FULL">FULL - 17349 Entry is required for full hardware level devices, and optional for other hardware levels 17350 17351 <ul class="tags_entries"> 17352 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 17353 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 17354 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 17355 </ul> 17356 </li> <!-- tag_FULL --> 17357 <li id="tag_LIMITED">LIMITED - 17358 Entry assists with LIMITED device implementation. LIMITED devices 17359 must implement all entries with this tag. Optional for FULL devices. 17360 17361 <ul class="tags_entries"> 17362 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 17363 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 17364 </ul> 17365 </li> <!-- tag_LIMITED --> 17366 </ul> 17367 </div> 17368 17369 [ <a href="#">top</a> ] 17370 17371</body> 17372</html> 17373