docs.html revision f92c76aca3e7c56c188b18956a00c42b194f796d
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.0 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.0 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">dynamic</span> 210 <ul class="toc_section"> 211 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a></li> 212 </ul> 213 </li> 214 </ul> <!-- toc_section --> 215 </li> 216 <li> 217 <span class="toc_section_header"><a href="#section_flash">flash</a></span> 218 <ul class="toc_section"> 219 <li> 220 <span class="toc_kind_header">controls</span> 221 <ul class="toc_section"> 222 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li> 223 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li> 224 <li><a href="#controls_android.flash.mode">android.flash.mode</a></li> 225 </ul> 226 </li> 227 <li> 228 <span class="toc_kind_header">static</span> 229 <ul class="toc_section"> 230 231 <li><a href="#static_android.flash.info.available">android.flash.info.available</a></li> 232 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li> 233 234 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li> 235 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li> 236 </ul> 237 </li> 238 <li> 239 <span class="toc_kind_header">dynamic</span> 240 <ul class="toc_section"> 241 <li><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li> 242 <li><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li> 243 <li><a href="#dynamic_android.flash.mode">android.flash.mode</a></li> 244 <li><a href="#dynamic_android.flash.state">android.flash.state</a></li> 245 </ul> 246 </li> 247 </ul> <!-- toc_section --> 248 </li> 249 <li> 250 <span class="toc_section_header"><a href="#section_geometric">geometric</a></span> 251 <ul class="toc_section"> 252 <li> 253 <span class="toc_kind_header">controls</span> 254 <ul class="toc_section"> 255 <li><a href="#controls_android.geometric.mode">android.geometric.mode</a></li> 256 <li><a href="#controls_android.geometric.strength">android.geometric.strength</a></li> 257 </ul> 258 </li> 259 </ul> <!-- toc_section --> 260 </li> 261 <li> 262 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span> 263 <ul class="toc_section"> 264 <li> 265 <span class="toc_kind_header">controls</span> 266 <ul class="toc_section"> 267 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li> 268 </ul> 269 </li> 270 <li> 271 <span class="toc_kind_header">static</span> 272 <ul class="toc_section"> 273 274 <li><a href="#static_android.hotPixel.info.map">android.hotPixel.info.map</a></li> 275 276 </ul> 277 </li> 278 <li> 279 <span class="toc_kind_header">dynamic</span> 280 <ul class="toc_section"> 281 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li> 282 </ul> 283 </li> 284 </ul> <!-- toc_section --> 285 </li> 286 <li> 287 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span> 288 <ul class="toc_section"> 289 <li> 290 <span class="toc_kind_header">controls</span> 291 <ul class="toc_section"> 292 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 293 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 294 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 295 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li> 296 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li> 297 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 298 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 299 </ul> 300 </li> 301 <li> 302 <span class="toc_kind_header">static</span> 303 <ul class="toc_section"> 304 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li> 305 <li><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li> 306 </ul> 307 </li> 308 <li> 309 <span class="toc_kind_header">dynamic</span> 310 <ul class="toc_section"> 311 <li><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 312 <li><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 313 <li><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 314 <li><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li> 315 <li><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li> 316 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li> 317 <li><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 318 <li><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 319 </ul> 320 </li> 321 </ul> <!-- toc_section --> 322 </li> 323 <li> 324 <span class="toc_section_header"><a href="#section_lens">lens</a></span> 325 <ul class="toc_section"> 326 <li> 327 <span class="toc_kind_header">controls</span> 328 <ul class="toc_section"> 329 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a></li> 330 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li> 331 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li> 332 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li> 333 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 334 </ul> 335 </li> 336 <li> 337 <span class="toc_kind_header">static</span> 338 <ul class="toc_section"> 339 340 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li> 341 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li> 342 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li> 343 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li> 344 <li><a href="#static_android.lens.info.geometricCorrectionMap">android.lens.info.geometricCorrectionMap</a></li> 345 <li><a href="#static_android.lens.info.geometricCorrectionMapSize">android.lens.info.geometricCorrectionMapSize</a></li> 346 <li><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li> 347 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li> 348 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li> 349 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li> 350 351 <li><a href="#static_android.lens.facing">android.lens.facing</a></li> 352 <li><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a></li> 353 <li><a href="#static_android.lens.position">android.lens.position</a></li> 354 </ul> 355 </li> 356 <li> 357 <span class="toc_kind_header">dynamic</span> 358 <ul class="toc_section"> 359 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li> 360 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li> 361 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li> 362 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li> 363 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li> 364 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 365 <li><a href="#dynamic_android.lens.state">android.lens.state</a></li> 366 </ul> 367 </li> 368 </ul> <!-- toc_section --> 369 </li> 370 <li> 371 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span> 372 <ul class="toc_section"> 373 <li> 374 <span class="toc_kind_header">controls</span> 375 <ul class="toc_section"> 376 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 377 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li> 378 </ul> 379 </li> 380 <li> 381 <span class="toc_kind_header">dynamic</span> 382 <ul class="toc_section"> 383 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 384 </ul> 385 </li> 386 </ul> <!-- toc_section --> 387 </li> 388 <li> 389 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span> 390 <ul class="toc_section"> 391 <li> 392 <span class="toc_kind_header">static</span> 393 <ul class="toc_section"> 394 <li><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li> 395 <li><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li> 396 <li><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li> 397 <li><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li> 398 </ul> 399 </li> 400 <li> 401 <span class="toc_kind_header">dynamic</span> 402 <ul class="toc_section"> 403 <li><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li> 404 </ul> 405 </li> 406 </ul> <!-- toc_section --> 407 </li> 408 <li> 409 <span class="toc_section_header"><a href="#section_request">request</a></span> 410 <ul class="toc_section"> 411 <li> 412 <span class="toc_kind_header">controls</span> 413 <ul class="toc_section"> 414 <li><a href="#controls_android.request.frameCount">android.request.frameCount</a></li> 415 <li><a href="#controls_android.request.id">android.request.id</a></li> 416 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li> 417 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li> 418 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li> 419 <li><a href="#controls_android.request.type">android.request.type</a></li> 420 </ul> 421 </li> 422 <li> 423 <span class="toc_kind_header">static</span> 424 <ul class="toc_section"> 425 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li> 426 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li> 427 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li> 428 <li><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li> 429 <li><a href="#static_android.request.partialResultCount">android.request.partialResultCount</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 </ul> 465 </li> 466 <li> 467 <span class="toc_kind_header">dynamic</span> 468 <ul class="toc_section"> 469 <li><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 470 </ul> 471 </li> 472 </ul> <!-- toc_section --> 473 </li> 474 <li> 475 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span> 476 <ul class="toc_section"> 477 <li> 478 <span class="toc_kind_header">controls</span> 479 <ul class="toc_section"> 480 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 481 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 482 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 483 <li><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 484 <li><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 485 </ul> 486 </li> 487 <li> 488 <span class="toc_kind_header">static</span> 489 <ul class="toc_section"> 490 491 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li> 492 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li> 493 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li> 494 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li> 495 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li> 496 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li> 497 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li> 498 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li> 499 500 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> 501 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li> 502 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li> 503 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li> 504 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li> 505 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li> 506 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li> 507 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li> 508 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> 509 <li><a href="#static_android.sensor.noiseModelCoefficients">android.sensor.noiseModelCoefficients</a></li> 510 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li> 511 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li> 512 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li> 513 <li><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li> 514 </ul> 515 </li> 516 <li> 517 <span class="toc_kind_header">dynamic</span> 518 <ul class="toc_section"> 519 <li><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 520 <li><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 521 <li><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 522 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> 523 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> 524 <li><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 525 </ul> 526 </li> 527 </ul> <!-- toc_section --> 528 </li> 529 <li> 530 <span class="toc_section_header"><a href="#section_shading">shading</a></span> 531 <ul class="toc_section"> 532 <li> 533 <span class="toc_kind_header">controls</span> 534 <ul class="toc_section"> 535 <li><a href="#controls_android.shading.mode">android.shading.mode</a></li> 536 <li><a href="#controls_android.shading.strength">android.shading.strength</a></li> 537 </ul> 538 </li> 539 <li> 540 <span class="toc_kind_header">dynamic</span> 541 <ul class="toc_section"> 542 <li><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> 543 </ul> 544 </li> 545 </ul> <!-- toc_section --> 546 </li> 547 <li> 548 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span> 549 <ul class="toc_section"> 550 <li> 551 <span class="toc_kind_header">controls</span> 552 <ul class="toc_section"> 553 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 554 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 555 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 556 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 557 </ul> 558 </li> 559 <li> 560 <span class="toc_kind_header">static</span> 561 <ul class="toc_section"> 562 563 <li><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> 564 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> 565 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> 566 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> 567 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> 568 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> 569 570 </ul> 571 </li> 572 <li> 573 <span class="toc_kind_header">dynamic</span> 574 <ul class="toc_section"> 575 <li><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 576 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> 577 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> 578 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> 579 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> 580 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> 581 <li><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 582 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> 583 <li><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 584 <li><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> 585 <li><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> 586 <li><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> 587 <li><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> 588 </ul> 589 </li> 590 </ul> <!-- toc_section --> 591 </li> 592 <li> 593 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> 594 <ul class="toc_section"> 595 <li> 596 <span class="toc_kind_header">controls</span> 597 <ul class="toc_section"> 598 <li><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 599 <li><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 600 <li><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 601 <li><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> 602 </ul> 603 </li> 604 <li> 605 <span class="toc_kind_header">static</span> 606 <ul class="toc_section"> 607 <li><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> 608 </ul> 609 </li> 610 <li> 611 <span class="toc_kind_header">dynamic</span> 612 <ul class="toc_section"> 613 <li><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 614 <li><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 615 <li><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 616 <li><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> 617 </ul> 618 </li> 619 </ul> <!-- toc_section --> 620 </li> 621 <li> 622 <span class="toc_section_header"><a href="#section_led">led</a></span> 623 <ul class="toc_section"> 624 <li> 625 <span class="toc_kind_header">controls</span> 626 <ul class="toc_section"> 627 <li><a href="#controls_android.led.transmit">android.led.transmit</a></li> 628 </ul> 629 </li> 630 <li> 631 <span class="toc_kind_header">dynamic</span> 632 <ul class="toc_section"> 633 <li><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> 634 </ul> 635 </li> 636 <li> 637 <span class="toc_kind_header">static</span> 638 <ul class="toc_section"> 639 <li><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> 640 </ul> 641 </li> 642 </ul> <!-- toc_section --> 643 </li> 644 <li> 645 <span class="toc_section_header"><a href="#section_info">info</a></span> 646 <ul class="toc_section"> 647 <li> 648 <span class="toc_kind_header">static</span> 649 <ul class="toc_section"> 650 <li><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> 651 </ul> 652 </li> 653 </ul> <!-- toc_section --> 654 </li> 655 <li> 656 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> 657 <ul class="toc_section"> 658 <li> 659 <span class="toc_kind_header">controls</span> 660 <ul class="toc_section"> 661 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> 662 </ul> 663 </li> 664 <li> 665 <span class="toc_kind_header">dynamic</span> 666 <ul class="toc_section"> 667 <li><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> 668 </ul> 669 </li> 670 </ul> <!-- toc_section --> 671 </li> 672 <li> 673 <span class="toc_section_header"><a href="#section_sync">sync</a></span> 674 <ul class="toc_section"> 675 <li> 676 <span class="toc_kind_header">dynamic</span> 677 <ul class="toc_section"> 678 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> 679 </ul> 680 </li> 681 <li> 682 <span class="toc_kind_header">static</span> 683 <ul class="toc_section"> 684 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> 685 </ul> 686 </li> 687 </ul> <!-- toc_section --> 688 </li> 689 </ul> 690 691 692 <h1>Properties</h1> 693 <table class="properties"> 694 695 <thead class="thead_dummy"> 696 <tr> 697 <th class="th_name">Property Name</th> 698 <th class="th_type">Type</th> 699 <th class="th_description">Description</th> 700 <th class="th_units">Units</th> 701 <th class="th_range">Range</th> 702 <th class="th_tags">Tags</th> 703 </tr> 704 </thead> <!-- so that the first occurrence of thead is not 705 above the first occurrence of tr --> 706<!-- <namespace name="android"> --> 707 <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr> 708 709 710 <tr><td colspan="6" class="kind">controls</td></tr> 711 712 <thead class="entries_header"> 713 <tr> 714 <th class="th_name">Property Name</th> 715 <th class="th_type">Type</th> 716 <th class="th_description">Description</th> 717 <th class="th_units">Units</th> 718 <th class="th_range">Range</th> 719 <th class="th_tags">Tags</th> 720 </tr> 721 </thead> 722 723 <tbody> 724 725 726 727 728 729 730 731 732 733 734 <tr class="entry" id="controls_android.colorCorrection.mode"> 735 <td class="entry_name" rowspan="3"> 736 android.<wbr/>color<wbr/>Correction.<wbr/>mode 737 </td> 738 <td class="entry_type"> 739 <span class="entry_type_name entry_type_name_enum">byte</span> 740 741 <span class="entry_type_visibility"> [public]</span> 742 743 <ul class="entry_type_enum"> 744 <li> 745 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 746 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 747and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 748<p>All advanced white balance adjustments (not specified 749by our white balance pipeline) must be disabled.<wbr/></p> 750<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 751TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 752this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 753 </li> 754 <li> 755 <span class="entry_type_enum_name">FAST</span> 756 <span class="entry_type_enum_notes"><p>Must not slow down capture rate relative to sensor raw 757output.<wbr/></p> 758<p>Advanced white balance adjustments above and beyond 759the specified white balance pipeline may be applied.<wbr/></p> 760<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 761the camera device uses the last frame's AWB values 762(or defaults if AWB has never been run).<wbr/></p></span> 763 </li> 764 <li> 765 <span class="entry_type_enum_name">HIGH_QUALITY</span> 766 <span class="entry_type_enum_notes"><p>Capture rate (relative to sensor raw output) 767may be reduced by high quality.<wbr/></p> 768<p>Advanced white balance adjustments above and beyond 769the specified white balance pipeline may be applied.<wbr/></p> 770<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 771the camera device uses the last frame's AWB values 772(or defaults if AWB has never been run).<wbr/></p></span> 773 </li> 774 </ul> 775 776 </td> <!-- entry_type --> 777 778 <td class="entry_description"> 779 <p>The mode control selects how the image data is converted from the 780sensor's native color into linear sRGB color.<wbr/></p> 781 </td> 782 783 <td class="entry_units"> 784 </td> 785 786 <td class="entry_range"> 787 </td> 788 789 <td class="entry_tags"> 790 </td> 791 792 </tr> 793 <tr class="entries_header"> 794 <th class="th_details" colspan="5">Details</th> 795 </tr> 796 <tr class="entry_cont"> 797 <td class="entry_details" colspan="5"> 798 <p>When auto-white balance is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this 799control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 800application controls how the color mapping is performed.<wbr/></p> 801<p>We define the expected processing pipeline below.<wbr/> For consistency 802across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 803<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 804do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 805<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 806camera device (in the results) and be roughly correct.<wbr/></p> 807<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 808FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 809as what was produced by the camera device in the earlier frame.<wbr/></p> 810<p>The expected processing pipeline is as follows:</p> 811<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 812<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 813gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 814matrix (applied after demosaic).<wbr/></p> 815<p>The 4-channel white-balance gains are defined as:</p> 816<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 817</code></pre> 818<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 819output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 820These may be identical for a given camera device implementation; if 821the camera device does not support a separate gain for even/<wbr/>odd green 822channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 823<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 824<p>The matrices for color transforms are defined as a 9-entry vector:</p> 825<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 ] 826</code></pre> 827<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 828to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 829<p>with colors as follows:</p> 830<pre><code>r' = I0r + I1g + I2b 831g' = I3r + I4g + I5b 832b' = I6r + I7g + I8b 833</code></pre> 834<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 835values are clipped to fit within the range.<wbr/></p> 836 </td> 837 </tr> 838 839 840 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 841 <!-- end of entry --> 842 843 844 <tr class="entry" id="controls_android.colorCorrection.transform"> 845 <td class="entry_name" rowspan="3"> 846 android.<wbr/>color<wbr/>Correction.<wbr/>transform 847 </td> 848 <td class="entry_type"> 849 <span class="entry_type_name">rational</span> 850 <span class="entry_type_container">x</span> 851 852 <span class="entry_type_array"> 853 3 x 3 854 </span> 855 <span class="entry_type_visibility"> [public]</span> 856 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 857 858 859 </td> <!-- entry_type --> 860 861 <td class="entry_description"> 862 <p>A color transform matrix to use to transform 863from sensor RGB color space to output linear sRGB color space</p> 864 </td> 865 866 <td class="entry_units"> 867 </td> 868 869 <td class="entry_range"> 870 </td> 871 872 <td class="entry_tags"> 873 </td> 874 875 </tr> 876 <tr class="entries_header"> 877 <th class="th_details" colspan="5">Details</th> 878 </tr> 879 <tr class="entry_cont"> 880 <td class="entry_details" colspan="5"> 881 <p>This matrix is either set by the camera device when the request 882<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 883directly by the application in the request when the 884<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 885<p>In the latter case,<wbr/> the camera device may round the matrix to account 886for precision issues; the final rounded matrix should be reported back 887in this matrix result metadata.<wbr/> The transform should keep the magnitude 888of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 889values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 890 </td> 891 </tr> 892 893 894 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 895 <!-- end of entry --> 896 897 898 <tr class="entry" id="controls_android.colorCorrection.gains"> 899 <td class="entry_name" rowspan="3"> 900 android.<wbr/>color<wbr/>Correction.<wbr/>gains 901 </td> 902 <td class="entry_type"> 903 <span class="entry_type_name">float</span> 904 <span class="entry_type_container">x</span> 905 906 <span class="entry_type_array"> 907 4 908 </span> 909 <span class="entry_type_visibility"> [public]</span> 910 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 911 912 913 </td> <!-- entry_type --> 914 915 <td class="entry_description"> 916 <p>Gains applying to Bayer raw color channels for 917white-balance</p> 918 </td> 919 920 <td class="entry_units"> 921 </td> 922 923 <td class="entry_range"> 924 </td> 925 926 <td class="entry_tags"> 927 </td> 928 929 </tr> 930 <tr class="entries_header"> 931 <th class="th_details" colspan="5">Details</th> 932 </tr> 933 <tr class="entry_cont"> 934 <td class="entry_details" colspan="5"> 935 <p>The 4-channel white-balance gains are defined in 936the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 937for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 938is the gain for green pixels on the odd rows.<wbr/> if a HAL 939does not support a separate gain for even/<wbr/>odd green channels,<wbr/> 940it should use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 941<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 942<p>This array is either set by HAL when the request 943<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 944directly by the application in the request when the 945<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 946<p>The output should be the gains actually applied by the HAL to 947the current frame.<wbr/></p> 948 </td> 949 </tr> 950 951 952 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 953 <!-- end of entry --> 954 955 956 957 <!-- end of kind --> 958 </tbody> 959 <tr><td colspan="6" class="kind">dynamic</td></tr> 960 961 <thead class="entries_header"> 962 <tr> 963 <th class="th_name">Property Name</th> 964 <th class="th_type">Type</th> 965 <th class="th_description">Description</th> 966 <th class="th_units">Units</th> 967 <th class="th_range">Range</th> 968 <th class="th_tags">Tags</th> 969 </tr> 970 </thead> 971 972 <tbody> 973 974 975 976 977 978 979 980 981 982 983 <tr class="entry" id="dynamic_android.colorCorrection.transform"> 984 <td class="entry_name" rowspan="3"> 985 android.<wbr/>color<wbr/>Correction.<wbr/>transform 986 </td> 987 <td class="entry_type"> 988 <span class="entry_type_name">rational</span> 989 <span class="entry_type_container">x</span> 990 991 <span class="entry_type_array"> 992 3 x 3 993 </span> 994 <span class="entry_type_visibility"> [public]</span> 995 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 996 997 998 </td> <!-- entry_type --> 999 1000 <td class="entry_description"> 1001 <p>A color transform matrix to use to transform 1002from sensor RGB color space to output linear sRGB color space</p> 1003 </td> 1004 1005 <td class="entry_units"> 1006 </td> 1007 1008 <td class="entry_range"> 1009 </td> 1010 1011 <td class="entry_tags"> 1012 </td> 1013 1014 </tr> 1015 <tr class="entries_header"> 1016 <th class="th_details" colspan="5">Details</th> 1017 </tr> 1018 <tr class="entry_cont"> 1019 <td class="entry_details" colspan="5"> 1020 <p>This matrix is either set by the camera device when the request 1021<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1022directly by the application in the request when the 1023<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1024<p>In the latter case,<wbr/> the camera device may round the matrix to account 1025for precision issues; the final rounded matrix should be reported back 1026in this matrix result metadata.<wbr/> The transform should keep the magnitude 1027of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1028values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1029 </td> 1030 </tr> 1031 1032 1033 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1034 <!-- end of entry --> 1035 1036 1037 <tr class="entry" id="dynamic_android.colorCorrection.gains"> 1038 <td class="entry_name" rowspan="3"> 1039 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1040 </td> 1041 <td class="entry_type"> 1042 <span class="entry_type_name">float</span> 1043 <span class="entry_type_container">x</span> 1044 1045 <span class="entry_type_array"> 1046 4 1047 </span> 1048 <span class="entry_type_visibility"> [public]</span> 1049 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1050 1051 1052 </td> <!-- entry_type --> 1053 1054 <td class="entry_description"> 1055 <p>Gains applying to Bayer raw color channels for 1056white-balance</p> 1057 </td> 1058 1059 <td class="entry_units"> 1060 </td> 1061 1062 <td class="entry_range"> 1063 </td> 1064 1065 <td class="entry_tags"> 1066 </td> 1067 1068 </tr> 1069 <tr class="entries_header"> 1070 <th class="th_details" colspan="5">Details</th> 1071 </tr> 1072 <tr class="entry_cont"> 1073 <td class="entry_details" colspan="5"> 1074 <p>The 4-channel white-balance gains are defined in 1075the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1076for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1077is the gain for green pixels on the odd rows.<wbr/> if a HAL 1078does not support a separate gain for even/<wbr/>odd green channels,<wbr/> 1079it should use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1080<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1081<p>This array is either set by HAL when the request 1082<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1083directly by the application in the request when the 1084<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1085<p>The output should be the gains actually applied by the HAL to 1086the current frame.<wbr/></p> 1087 </td> 1088 </tr> 1089 1090 1091 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1092 <!-- end of entry --> 1093 1094 1095 1096 <!-- end of kind --> 1097 </tbody> 1098 1099 <!-- end of section --> 1100 <tr><td colspan="6" id="section_control" class="section">control</td></tr> 1101 1102 1103 <tr><td colspan="6" class="kind">controls</td></tr> 1104 1105 <thead class="entries_header"> 1106 <tr> 1107 <th class="th_name">Property Name</th> 1108 <th class="th_type">Type</th> 1109 <th class="th_description">Description</th> 1110 <th class="th_units">Units</th> 1111 <th class="th_range">Range</th> 1112 <th class="th_tags">Tags</th> 1113 </tr> 1114 </thead> 1115 1116 <tbody> 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 <tr class="entry" id="controls_android.control.aeAntibandingMode"> 1128 <td class="entry_name" rowspan="5"> 1129 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 1130 </td> 1131 <td class="entry_type"> 1132 <span class="entry_type_name entry_type_name_enum">byte</span> 1133 1134 <span class="entry_type_visibility"> [public]</span> 1135 1136 <ul class="entry_type_enum"> 1137 <li> 1138 <span class="entry_type_enum_name">OFF</span> 1139 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 1140avoid banding problems.<wbr/></p></span> 1141 </li> 1142 <li> 1143 <span class="entry_type_enum_name">50HZ</span> 1144 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 1145avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 1146 </li> 1147 <li> 1148 <span class="entry_type_enum_name">60HZ</span> 1149 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 1150avoid banding problems with 60Hz illumination 1151sources.<wbr/></p></span> 1152 </li> 1153 <li> 1154 <span class="entry_type_enum_name">AUTO</span> 1155 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 1156antibanding routine to the current illumination 1157conditions.<wbr/> This is the default.<wbr/></p></span> 1158 </li> 1159 </ul> 1160 1161 </td> <!-- entry_type --> 1162 1163 <td class="entry_description"> 1164 <p>The desired setting for the camera device's auto-exposure 1165algorithm's antibanding compensation.<wbr/></p> 1166 </td> 1167 1168 <td class="entry_units"> 1169 </td> 1170 1171 <td class="entry_range"> 1172 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 1173 </td> 1174 1175 <td class="entry_tags"> 1176 <ul class="entry_tags"> 1177 <li><a href="#tag_BC">BC</a></li> 1178 </ul> 1179 </td> 1180 1181 </tr> 1182 <tr class="entries_header"> 1183 <th class="th_details" colspan="5">Details</th> 1184 </tr> 1185 <tr class="entry_cont"> 1186 <td class="entry_details" colspan="5"> 1187 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 1188lights,<wbr/> flicker at the rate of the power supply frequency 1189(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 1190typically not noticeable to a person,<wbr/> it can be visible to 1191a camera device.<wbr/> If a camera sets its exposure time to the 1192wrong value,<wbr/> the flicker may become visible in the 1193viewfinder as flicker or in a final captured image,<wbr/> as a 1194set of variable-brightness bands across the image.<wbr/></p> 1195<p>Therefore,<wbr/> the auto-exposure routines of camera devices 1196include antibanding routines that ensure that the chosen 1197exposure value will not cause such banding.<wbr/> The choice of 1198exposure time depends on the rate of flicker,<wbr/> which the 1199camera device can detect automatically,<wbr/> or the expected 1200rate can be selected by the application using this 1201control.<wbr/></p> 1202<p>A given camera device may not support all of the possible 1203options for the antibanding mode.<wbr/> The 1204<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 1205the available modes for a given camera device.<wbr/></p> 1206<p>The default mode is AUTO,<wbr/> which must be supported by all 1207camera devices.<wbr/></p> 1208<p>If manual exposure control is enabled (by setting 1209<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/> 1210then this setting has no effect,<wbr/> and the application must 1211ensure it selects exposure times that do not cause banding 1212issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 1213the application in this.<wbr/></p> 1214 </td> 1215 </tr> 1216 1217 <tr class="entries_header"> 1218 <th class="th_details" colspan="5">HAL Implementation Details</th> 1219 </tr> 1220 <tr class="entry_cont"> 1221 <td class="entry_details" colspan="5"> 1222 <p>For all capture request templates,<wbr/> this field must be set 1223to AUTO.<wbr/> AUTO is the only mode that must supported; 1224OFF,<wbr/> 50HZ,<wbr/> 60HZ are all optional.<wbr/></p> 1225<p>If manual exposure control is enabled (by setting 1226<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/> 1227then the exposure values provided by the application must not be 1228adjusted for antibanding.<wbr/></p> 1229 </td> 1230 </tr> 1231 1232 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1233 <!-- end of entry --> 1234 1235 1236 <tr class="entry" id="controls_android.control.aeExposureCompensation"> 1237 <td class="entry_name" rowspan="3"> 1238 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 1239 </td> 1240 <td class="entry_type"> 1241 <span class="entry_type_name">int32</span> 1242 1243 <span class="entry_type_visibility"> [public]</span> 1244 1245 1246 </td> <!-- entry_type --> 1247 1248 <td class="entry_description"> 1249 <p>Adjustment to AE target image 1250brightness</p> 1251 </td> 1252 1253 <td class="entry_units"> 1254 count of positive/<wbr/>negative EV steps 1255 </td> 1256 1257 <td class="entry_range"> 1258 </td> 1259 1260 <td class="entry_tags"> 1261 <ul class="entry_tags"> 1262 <li><a href="#tag_BC">BC</a></li> 1263 </ul> 1264 </td> 1265 1266 </tr> 1267 <tr class="entries_header"> 1268 <th class="th_details" colspan="5">Details</th> 1269 </tr> 1270 <tr class="entry_cont"> 1271 <td class="entry_details" colspan="5"> 1272 <p>For example,<wbr/> if EV step is 0.<wbr/>333,<wbr/> '6' will mean an 1273exposure compensation of +2 EV; -3 will mean an exposure 1274compensation of -1</p> 1275 </td> 1276 </tr> 1277 1278 1279 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1280 <!-- end of entry --> 1281 1282 1283 <tr class="entry" id="controls_android.control.aeLock"> 1284 <td class="entry_name" rowspan="3"> 1285 android.<wbr/>control.<wbr/>ae<wbr/>Lock 1286 </td> 1287 <td class="entry_type"> 1288 <span class="entry_type_name entry_type_name_enum">byte</span> 1289 1290 <span class="entry_type_visibility"> [public as boolean]</span> 1291 1292 <ul class="entry_type_enum"> 1293 <li> 1294 <span class="entry_type_enum_name">OFF</span> 1295 <span class="entry_type_enum_notes"><p>Autoexposure lock is disabled; the AE algorithm 1296is free to update its parameters.<wbr/></p></span> 1297 </li> 1298 <li> 1299 <span class="entry_type_enum_name">ON</span> 1300 <span class="entry_type_enum_notes"><p>Autoexposure lock is enabled; the AE algorithm 1301must not update the exposure and sensitivity parameters 1302while the lock is active</p></span> 1303 </li> 1304 </ul> 1305 1306 </td> <!-- entry_type --> 1307 1308 <td class="entry_description"> 1309 <p>Whether AE is currently locked to its latest 1310calculated values.<wbr/></p> 1311 </td> 1312 1313 <td class="entry_units"> 1314 </td> 1315 1316 <td class="entry_range"> 1317 </td> 1318 1319 <td class="entry_tags"> 1320 <ul class="entry_tags"> 1321 <li><a href="#tag_BC">BC</a></li> 1322 </ul> 1323 </td> 1324 1325 </tr> 1326 <tr class="entries_header"> 1327 <th class="th_details" colspan="5">Details</th> 1328 </tr> 1329 <tr class="entry_cont"> 1330 <td class="entry_details" colspan="5"> 1331 <p>Note that even when AE is locked,<wbr/> the flash may be 1332fired 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/> 1333ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 1334<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 1335when AE is already locked,<wbr/> the camera device will not change the exposure time 1336(<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>) 1337parameters.<wbr/> The flash may be fired if the android.<wbr/>control.<wbr/>ae<wbr/>Mode 1338is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 1339<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> 1340<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> 1341 </td> 1342 </tr> 1343 1344 1345 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1346 <!-- end of entry --> 1347 1348 1349 <tr class="entry" id="controls_android.control.aeMode"> 1350 <td class="entry_name" rowspan="3"> 1351 android.<wbr/>control.<wbr/>ae<wbr/>Mode 1352 </td> 1353 <td class="entry_type"> 1354 <span class="entry_type_name entry_type_name_enum">byte</span> 1355 1356 <span class="entry_type_visibility"> [public]</span> 1357 1358 <ul class="entry_type_enum"> 1359 <li> 1360 <span class="entry_type_enum_name">OFF</span> 1361 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled; 1362the application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 1363<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 1364<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 1365device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 1366a flash unit for this camera device.<wbr/></p></span> 1367 </li> 1368 <li> 1369 <span class="entry_type_enum_name">ON</span> 1370 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 1371with no flash control.<wbr/> The application's values for 1372<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 1373<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 1374<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 1375application has control over the various 1376android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 1377 </li> 1378 <li> 1379 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 1380 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 1381the camera's flash unit,<wbr/> firing it in low-light 1382conditions.<wbr/> The flash may be fired during a 1383precapture sequence (triggered by 1384<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and may be fired 1385for captures for which the 1386<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 1387STILL_<wbr/>CAPTURE</p></span> 1388 </li> 1389 <li> 1390 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 1391 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 1392the camera's flash unit,<wbr/> always firing it for still 1393captures.<wbr/> The flash may be fired during a precapture 1394sequence (triggered by 1395<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and will always 1396be fired for captures for which the 1397<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 1398STILL_<wbr/>CAPTURE</p></span> 1399 </li> 1400 <li> 1401 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 1402 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 1403reduction.<wbr/> If deemed necessary by the camera device,<wbr/> 1404a red eye reduction flash will fire during the 1405precapture sequence.<wbr/></p></span> 1406 </li> 1407 </ul> 1408 1409 </td> <!-- entry_type --> 1410 1411 <td class="entry_description"> 1412 <p>The desired mode for the camera device's 1413auto-exposure routine.<wbr/></p> 1414 </td> 1415 1416 <td class="entry_units"> 1417 </td> 1418 1419 <td class="entry_range"> 1420 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 1421 </td> 1422 1423 <td class="entry_tags"> 1424 <ul class="entry_tags"> 1425 <li><a href="#tag_BC">BC</a></li> 1426 </ul> 1427 </td> 1428 1429 </tr> 1430 <tr class="entries_header"> 1431 <th class="th_details" colspan="5">Details</th> 1432 </tr> 1433 <tr class="entry_cont"> 1434 <td class="entry_details" colspan="5"> 1435 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 1436AUTO.<wbr/></p> 1437<p>When set to any of the ON modes,<wbr/> the camera device's 1438auto-exposure routine is enabled,<wbr/> overriding the 1439application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 1440and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 1441<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 1442<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 1443is selected,<wbr/> the camera device's flash unit controls are 1444also overridden.<wbr/></p> 1445<p>The FLASH modes are only available if the camera device 1446has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 1447<p>If flash TORCH mode is desired,<wbr/> this field must be set to 1448ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 1449<p>When set to any of the ON modes,<wbr/> the values chosen by the 1450camera device auto-exposure routine for the overridden 1451fields for a given capture will be available in its 1452CaptureResult.<wbr/></p> 1453 </td> 1454 </tr> 1455 1456 1457 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1458 <!-- end of entry --> 1459 1460 1461 <tr class="entry" id="controls_android.control.aeRegions"> 1462 <td class="entry_name" rowspan="3"> 1463 android.<wbr/>control.<wbr/>ae<wbr/>Regions 1464 </td> 1465 <td class="entry_type"> 1466 <span class="entry_type_name">int32</span> 1467 <span class="entry_type_container">x</span> 1468 1469 <span class="entry_type_array"> 1470 5 x area_count 1471 </span> 1472 <span class="entry_type_visibility"> [public]</span> 1473 1474 1475 </td> <!-- entry_type --> 1476 1477 <td class="entry_description"> 1478 <p>List of areas to use for 1479metering.<wbr/></p> 1480 </td> 1481 1482 <td class="entry_units"> 1483 </td> 1484 1485 <td class="entry_range"> 1486 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[0]</code></p> 1487 </td> 1488 1489 <td class="entry_tags"> 1490 <ul class="entry_tags"> 1491 <li><a href="#tag_BC">BC</a></li> 1492 </ul> 1493 </td> 1494 1495 </tr> 1496 <tr class="entries_header"> 1497 <th class="th_details" colspan="5">Details</th> 1498 </tr> 1499 <tr class="entry_cont"> 1500 <td class="entry_details" colspan="5"> 1501 <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> 1502xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the 1503specified coordinates.<wbr/></p> 1504<p>The coordinate system is based on the active pixel array,<wbr/> 1505with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 1506(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 1507<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 1508bottom-right pixel in the active pixel array.<wbr/> The weight 1509should be nonnegative.<wbr/></p> 1510<p>If all regions have 0 weight,<wbr/> then no specific metering area 1511needs to be used by the HAL.<wbr/> If the metering region is 1512outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the HAL 1513should ignore the sections outside the region and output the 1514used sections in the frame metadata.<wbr/></p> 1515 </td> 1516 </tr> 1517 1518 1519 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1520 <!-- end of entry --> 1521 1522 1523 <tr class="entry" id="controls_android.control.aeTargetFpsRange"> 1524 <td class="entry_name" rowspan="3"> 1525 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 1526 </td> 1527 <td class="entry_type"> 1528 <span class="entry_type_name">int32</span> 1529 <span class="entry_type_container">x</span> 1530 1531 <span class="entry_type_array"> 1532 2 1533 </span> 1534 <span class="entry_type_visibility"> [public]</span> 1535 1536 1537 </td> <!-- entry_type --> 1538 1539 <td class="entry_description"> 1540 <p>Range over which fps can be adjusted to 1541maintain exposure</p> 1542 </td> 1543 1544 <td class="entry_units"> 1545 </td> 1546 1547 <td class="entry_range"> 1548 <p><a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p> 1549 </td> 1550 1551 <td class="entry_tags"> 1552 <ul class="entry_tags"> 1553 <li><a href="#tag_BC">BC</a></li> 1554 </ul> 1555 </td> 1556 1557 </tr> 1558 <tr class="entries_header"> 1559 <th class="th_details" colspan="5">Details</th> 1560 </tr> 1561 <tr class="entry_cont"> 1562 <td class="entry_details" colspan="5"> 1563 <p>Only constrains AE algorithm,<wbr/> not manual control 1564of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></p> 1565 </td> 1566 </tr> 1567 1568 1569 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1570 <!-- end of entry --> 1571 1572 1573 <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> 1574 <td class="entry_name" rowspan="3"> 1575 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 1576 </td> 1577 <td class="entry_type"> 1578 <span class="entry_type_name entry_type_name_enum">byte</span> 1579 1580 <span class="entry_type_visibility"> [public]</span> 1581 1582 <ul class="entry_type_enum"> 1583 <li> 1584 <span class="entry_type_enum_name">IDLE</span> 1585 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 1586 </li> 1587 <li> 1588 <span class="entry_type_enum_name">START</span> 1589 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 1590by the camera device.<wbr/> The exact effect of the precapture 1591trigger depends on the current AE mode and state.<wbr/></p></span> 1592 </li> 1593 </ul> 1594 1595 </td> <!-- entry_type --> 1596 1597 <td class="entry_description"> 1598 <p>Whether the camera device will trigger a precapture 1599metering sequence when it processes this request.<wbr/></p> 1600 </td> 1601 1602 <td class="entry_units"> 1603 </td> 1604 1605 <td class="entry_range"> 1606 </td> 1607 1608 <td class="entry_tags"> 1609 <ul class="entry_tags"> 1610 <li><a href="#tag_BC">BC</a></li> 1611 </ul> 1612 </td> 1613 1614 </tr> 1615 <tr class="entries_header"> 1616 <th class="th_details" colspan="5">Details</th> 1617 </tr> 1618 <tr class="entry_cont"> 1619 <td class="entry_details" colspan="5"> 1620 <p>This entry is normally set to IDLE,<wbr/> or is not 1621included at all in the request settings.<wbr/> When included and 1622set to START,<wbr/> the camera device will trigger the autoexposure 1623precapture metering sequence.<wbr/></p> 1624<p>The effect of AE precapture trigger depends on the current 1625AE mode and state; see <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture 1626state transition details.<wbr/></p> 1627 </td> 1628 </tr> 1629 1630 1631 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1632 <!-- end of entry --> 1633 1634 1635 <tr class="entry" id="controls_android.control.afMode"> 1636 <td class="entry_name" rowspan="3"> 1637 android.<wbr/>control.<wbr/>af<wbr/>Mode 1638 </td> 1639 <td class="entry_type"> 1640 <span class="entry_type_name entry_type_name_enum">byte</span> 1641 1642 <span class="entry_type_visibility"> [public]</span> 1643 1644 <ul class="entry_type_enum"> 1645 <li> 1646 <span class="entry_type_enum_name">OFF</span> 1647 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 1648<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 1649application</p></span> 1650 </li> 1651 <li> 1652 <span class="entry_type_enum_name">AUTO</span> 1653 <span class="entry_type_enum_notes"><p>If lens is not fixed focus.<wbr/></p> 1654<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 1655is fixed-focus.<wbr/> In this mode,<wbr/> the lens does not move unless 1656the autofocus trigger action is called.<wbr/> When that trigger 1657is activated,<wbr/> AF must transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 1658the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 1659<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 1660and sets the AF state to INACTIVE.<wbr/></p></span> 1661 </li> 1662 <li> 1663 <span class="entry_type_enum_name">MACRO</span> 1664 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the lens does not move unless the 1665autofocus trigger action is called.<wbr/></p> 1666<p>When that trigger is activated,<wbr/> AF must transition to 1667ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 1668NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 1669position to default,<wbr/> and sets the AF state to 1670INACTIVE.<wbr/></p></span> 1671 </li> 1672 <li> 1673 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 1674 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 1675position continually to attempt to provide a 1676constantly-in-focus image stream.<wbr/></p> 1677<p>The focusing behavior should be suitable for good quality 1678video recording; typically this means slower focus 1679movement and no overshoots.<wbr/> When the AF trigger is not 1680involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 1681and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 1682states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 1683the algorithm should immediately transition into 1684AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 1685lens position until a cancel AF trigger is received.<wbr/></p> 1686<p>Once cancel is received,<wbr/> the algorithm should transition 1687back to INACTIVE and resume passive scan.<wbr/> Note that this 1688behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 1689ongoing PASSIVE_<wbr/>SCAN must immediately be 1690canceled.<wbr/></p></span> 1691 </li> 1692 <li> 1693 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 1694 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 1695position continually to attempt to provide a 1696constantly-in-focus image stream.<wbr/></p> 1697<p>The focusing behavior should be suitable for still image 1698capture; typically this means focusing as fast as 1699possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 1700algorithm should start in INACTIVE state,<wbr/> and then 1701transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 1702appropriate as it attempts to maintain focus.<wbr/> When the AF 1703trigger is activated,<wbr/> the algorithm should finish its 1704PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 1705AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 1706lens position until a cancel AF trigger is received.<wbr/></p> 1707<p>When the AF cancel trigger is activated,<wbr/> the algorithm 1708should transition back to INACTIVE and then act as if it 1709has just been started.<wbr/></p></span> 1710 </li> 1711 <li> 1712 <span class="entry_type_enum_name">EDOF</span> 1713 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus).<wbr/> AF 1714trigger is ignored,<wbr/> AF state should always be 1715INACTIVE.<wbr/></p></span> 1716 </li> 1717 </ul> 1718 1719 </td> <!-- entry_type --> 1720 1721 <td class="entry_description"> 1722 <p>Whether AF is currently enabled,<wbr/> and what 1723mode it is set to</p> 1724 </td> 1725 1726 <td class="entry_units"> 1727 </td> 1728 1729 <td class="entry_range"> 1730 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 1731 </td> 1732 1733 <td class="entry_tags"> 1734 <ul class="entry_tags"> 1735 <li><a href="#tag_BC">BC</a></li> 1736 </ul> 1737 </td> 1738 1739 </tr> 1740 <tr class="entries_header"> 1741 <th class="th_details" colspan="5">Details</th> 1742 </tr> 1743 <tr class="entry_cont"> 1744 <td class="entry_details" colspan="5"> 1745 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO.<wbr/></p> 1746<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 1747the camera device will report the current AF status in android.<wbr/>control.<wbr/>af<wbr/>State 1748in result metadata.<wbr/></p> 1749 </td> 1750 </tr> 1751 1752 1753 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1754 <!-- end of entry --> 1755 1756 1757 <tr class="entry" id="controls_android.control.afRegions"> 1758 <td class="entry_name" rowspan="3"> 1759 android.<wbr/>control.<wbr/>af<wbr/>Regions 1760 </td> 1761 <td class="entry_type"> 1762 <span class="entry_type_name">int32</span> 1763 <span class="entry_type_container">x</span> 1764 1765 <span class="entry_type_array"> 1766 5 x area_count 1767 </span> 1768 <span class="entry_type_visibility"> [public]</span> 1769 1770 1771 </td> <!-- entry_type --> 1772 1773 <td class="entry_description"> 1774 <p>List of areas to use for focus 1775estimation.<wbr/></p> 1776 </td> 1777 1778 <td class="entry_units"> 1779 </td> 1780 1781 <td class="entry_range"> 1782 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[2]</code></p> 1783 </td> 1784 1785 <td class="entry_tags"> 1786 <ul class="entry_tags"> 1787 <li><a href="#tag_BC">BC</a></li> 1788 </ul> 1789 </td> 1790 1791 </tr> 1792 <tr class="entries_header"> 1793 <th class="th_details" colspan="5">Details</th> 1794 </tr> 1795 <tr class="entry_cont"> 1796 <td class="entry_details" colspan="5"> 1797 <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> 1798xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the 1799specified coordinates.<wbr/></p> 1800<p>The coordinate system is based on the active pixel array,<wbr/> 1801with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 1802(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 1803<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 1804bottom-right pixel in the active pixel array.<wbr/> The weight 1805should be nonnegative.<wbr/></p> 1806<p>If all regions have 0 weight,<wbr/> then no specific focus area 1807needs to be used by the HAL.<wbr/> If the focusing region is 1808outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the HAL 1809should ignore the sections outside the region and output the 1810used sections in the frame metadata.<wbr/></p> 1811 </td> 1812 </tr> 1813 1814 1815 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1816 <!-- end of entry --> 1817 1818 1819 <tr class="entry" id="controls_android.control.afTrigger"> 1820 <td class="entry_name" rowspan="3"> 1821 android.<wbr/>control.<wbr/>af<wbr/>Trigger 1822 </td> 1823 <td class="entry_type"> 1824 <span class="entry_type_name entry_type_name_enum">byte</span> 1825 1826 <span class="entry_type_visibility"> [public]</span> 1827 1828 <ul class="entry_type_enum"> 1829 <li> 1830 <span class="entry_type_enum_name">IDLE</span> 1831 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 1832 </li> 1833 <li> 1834 <span class="entry_type_enum_name">START</span> 1835 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 1836 </li> 1837 <li> 1838 <span class="entry_type_enum_name">CANCEL</span> 1839 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 1840state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 1841 </li> 1842 </ul> 1843 1844 </td> <!-- entry_type --> 1845 1846 <td class="entry_description"> 1847 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 1848 </td> 1849 1850 <td class="entry_units"> 1851 </td> 1852 1853 <td class="entry_range"> 1854 </td> 1855 1856 <td class="entry_tags"> 1857 <ul class="entry_tags"> 1858 <li><a href="#tag_BC">BC</a></li> 1859 </ul> 1860 </td> 1861 1862 </tr> 1863 <tr class="entries_header"> 1864 <th class="th_details" colspan="5">Details</th> 1865 </tr> 1866 <tr class="entry_cont"> 1867 <td class="entry_details" colspan="5"> 1868 <p>This entry is normally set to IDLE,<wbr/> or is not 1869included at all in the request settings.<wbr/></p> 1870<p>When included and set to START,<wbr/> the camera device will trigger the 1871autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 1872<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 1873and return to its initial AF state.<wbr/></p> 1874<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> 1875 </td> 1876 </tr> 1877 1878 1879 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1880 <!-- end of entry --> 1881 1882 1883 <tr class="entry" id="controls_android.control.awbLock"> 1884 <td class="entry_name" rowspan="3"> 1885 android.<wbr/>control.<wbr/>awb<wbr/>Lock 1886 </td> 1887 <td class="entry_type"> 1888 <span class="entry_type_name entry_type_name_enum">byte</span> 1889 1890 <span class="entry_type_visibility"> [public as boolean]</span> 1891 1892 <ul class="entry_type_enum"> 1893 <li> 1894 <span class="entry_type_enum_name">OFF</span> 1895 <span class="entry_type_enum_notes"><p>Auto-whitebalance lock is disabled; the AWB 1896algorithm is free to update its parameters if in AUTO 1897mode.<wbr/></p></span> 1898 </li> 1899 <li> 1900 <span class="entry_type_enum_name">ON</span> 1901 <span class="entry_type_enum_notes"><p>Auto-whitebalance lock is enabled; the AWB 1902algorithm must not update the exposure and sensitivity 1903parameters while the lock is active</p></span> 1904 </li> 1905 </ul> 1906 1907 </td> <!-- entry_type --> 1908 1909 <td class="entry_description"> 1910 <p>Whether AWB is currently locked to its 1911latest calculated values</p> 1912 </td> 1913 1914 <td class="entry_units"> 1915 </td> 1916 1917 <td class="entry_range"> 1918 </td> 1919 1920 <td class="entry_tags"> 1921 <ul class="entry_tags"> 1922 <li><a href="#tag_BC">BC</a></li> 1923 </ul> 1924 </td> 1925 1926 </tr> 1927 <tr class="entries_header"> 1928 <th class="th_details" colspan="5">Details</th> 1929 </tr> 1930 <tr class="entry_cont"> 1931 <td class="entry_details" colspan="5"> 1932 <p>Note that AWB lock is only meaningful for AUTO 1933mode; in other modes,<wbr/> AWB is already fixed to a specific 1934setting</p> 1935 </td> 1936 </tr> 1937 1938 1939 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1940 <!-- end of entry --> 1941 1942 1943 <tr class="entry" id="controls_android.control.awbMode"> 1944 <td class="entry_name" rowspan="3"> 1945 android.<wbr/>control.<wbr/>awb<wbr/>Mode 1946 </td> 1947 <td class="entry_type"> 1948 <span class="entry_type_name entry_type_name_enum">byte</span> 1949 1950 <span class="entry_type_visibility"> [public]</span> 1951 1952 <ul class="entry_type_enum"> 1953 <li> 1954 <span class="entry_type_enum_name">OFF</span> 1955 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 1956the application-selected color transform matrix 1957(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 1958(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 1959device for manual white balance control.<wbr/></p></span> 1960 </li> 1961 <li> 1962 <span class="entry_type_enum_name">AUTO</span> 1963 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is active; 1964the application's values for android.<wbr/>color<wbr/>Correction.<wbr/>transform 1965and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/></p></span> 1966 </li> 1967 <li> 1968 <span class="entry_type_enum_name">INCANDESCENT</span> 1969 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 1970the camera device uses incandescent light as the assumed scene 1971illumination for white balance.<wbr/> While the exact white balance 1972transforms are up to the camera device,<wbr/> they will approximately 1973match the CIE standard illuminant A.<wbr/></p></span> 1974 </li> 1975 <li> 1976 <span class="entry_type_enum_name">FLUORESCENT</span> 1977 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 1978the camera device uses fluorescent light as the assumed scene 1979illumination for white balance.<wbr/> While the exact white balance 1980transforms are up to the camera device,<wbr/> they will approximately 1981match the CIE standard illuminant F2.<wbr/></p></span> 1982 </li> 1983 <li> 1984 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 1985 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 1986the camera device uses warm fluorescent light as the assumed scene 1987illumination for white balance.<wbr/> While the exact white balance 1988transforms are up to the camera device,<wbr/> they will approximately 1989match the CIE standard illuminant F4.<wbr/></p></span> 1990 </li> 1991 <li> 1992 <span class="entry_type_enum_name">DAYLIGHT</span> 1993 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 1994the camera device uses daylight light as the assumed scene 1995illumination for white balance.<wbr/> While the exact white balance 1996transforms are up to the camera device,<wbr/> they will approximately 1997match the CIE standard illuminant D65.<wbr/></p></span> 1998 </li> 1999 <li> 2000 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 2001 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2002the camera device uses cloudy daylight light as the assumed scene 2003illumination for white balance.<wbr/></p></span> 2004 </li> 2005 <li> 2006 <span class="entry_type_enum_name">TWILIGHT</span> 2007 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2008the camera device uses twilight light as the assumed scene 2009illumination for white balance.<wbr/></p></span> 2010 </li> 2011 <li> 2012 <span class="entry_type_enum_name">SHADE</span> 2013 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 2014the camera device uses shade light as the assumed scene 2015illumination for white balance.<wbr/></p></span> 2016 </li> 2017 </ul> 2018 2019 </td> <!-- entry_type --> 2020 2021 <td class="entry_description"> 2022 <p>Whether AWB is currently setting the color 2023transform fields,<wbr/> and what its illumination target 2024is</p> 2025 </td> 2026 2027 <td class="entry_units"> 2028 </td> 2029 2030 <td class="entry_range"> 2031 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 2032 </td> 2033 2034 <td class="entry_tags"> 2035 <ul class="entry_tags"> 2036 <li><a href="#tag_BC">BC</a></li> 2037 <li><a href="#tag_AWB">AWB</a></li> 2038 </ul> 2039 </td> 2040 2041 </tr> 2042 <tr class="entries_header"> 2043 <th class="th_details" colspan="5">Details</th> 2044 </tr> 2045 <tr class="entry_cont"> 2046 <td class="entry_details" colspan="5"> 2047 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 2048<p>When set to the ON mode,<wbr/> the camera device's auto white balance 2049routine is enabled,<wbr/> overriding the application's selected 2050<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 2051<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 2052<p>When set to the OFF mode,<wbr/> the camera device's auto white balance 2053routine is disabled.<wbr/> The applicantion manually controls the white 2054balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> android.<wbr/>color<wbr/>Correction.<wbr/>gains 2055and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 2056<p>When set to any other modes,<wbr/> the camera device's auto white balance 2057routine is disabled.<wbr/> The camera device uses each particular illumination 2058target for white balance adjustment.<wbr/></p> 2059 </td> 2060 </tr> 2061 2062 2063 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2064 <!-- end of entry --> 2065 2066 2067 <tr class="entry" id="controls_android.control.awbRegions"> 2068 <td class="entry_name" rowspan="3"> 2069 android.<wbr/>control.<wbr/>awb<wbr/>Regions 2070 </td> 2071 <td class="entry_type"> 2072 <span class="entry_type_name">int32</span> 2073 <span class="entry_type_container">x</span> 2074 2075 <span class="entry_type_array"> 2076 5 x area_count 2077 </span> 2078 <span class="entry_type_visibility"> [public]</span> 2079 2080 2081 </td> <!-- entry_type --> 2082 2083 <td class="entry_description"> 2084 <p>List of areas to use for illuminant 2085estimation.<wbr/></p> 2086 </td> 2087 2088 <td class="entry_units"> 2089 </td> 2090 2091 <td class="entry_range"> 2092 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[1]</code></p> 2093 </td> 2094 2095 <td class="entry_tags"> 2096 <ul class="entry_tags"> 2097 <li><a href="#tag_BC">BC</a></li> 2098 </ul> 2099 </td> 2100 2101 </tr> 2102 <tr class="entries_header"> 2103 <th class="th_details" colspan="5">Details</th> 2104 </tr> 2105 <tr class="entry_cont"> 2106 <td class="entry_details" colspan="5"> 2107 <p>Only used in AUTO mode.<wbr/></p> 2108<p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> 2109xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the 2110specified coordinates.<wbr/></p> 2111<p>The coordinate system is based on the active pixel array,<wbr/> 2112with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2113(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2114<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2115bottom-right pixel in the active pixel array.<wbr/> The weight 2116should be nonnegative.<wbr/></p> 2117<p>If all regions have 0 weight,<wbr/> then no specific metering area 2118needs to be used by the HAL.<wbr/> If the metering region is 2119outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the HAL 2120should ignore the sections outside the region and output the 2121used sections in the frame metadata.<wbr/></p> 2122 </td> 2123 </tr> 2124 2125 2126 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2127 <!-- end of entry --> 2128 2129 2130 <tr class="entry" id="controls_android.control.captureIntent"> 2131 <td class="entry_name" rowspan="3"> 2132 android.<wbr/>control.<wbr/>capture<wbr/>Intent 2133 </td> 2134 <td class="entry_type"> 2135 <span class="entry_type_name entry_type_name_enum">byte</span> 2136 2137 <span class="entry_type_visibility"> [public]</span> 2138 2139 <ul class="entry_type_enum"> 2140 <li> 2141 <span class="entry_type_enum_name">CUSTOM</span> 2142 <span class="entry_type_enum_notes"><p>This request doesn't fall into the other 2143categories.<wbr/> Default to preview-like 2144behavior.<wbr/></p></span> 2145 </li> 2146 <li> 2147 <span class="entry_type_enum_name">PREVIEW</span> 2148 <span class="entry_type_enum_notes"><p>This request is for a preview-like usecase.<wbr/> The 2149precapture trigger may be used to start off a metering 2150w/<wbr/>flash sequence</p></span> 2151 </li> 2152 <li> 2153 <span class="entry_type_enum_name">STILL_CAPTURE</span> 2154 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 2155usecase.<wbr/></p></span> 2156 </li> 2157 <li> 2158 <span class="entry_type_enum_name">VIDEO_RECORD</span> 2159 <span class="entry_type_enum_notes"><p>This request is for a video recording 2160usecase.<wbr/></p></span> 2161 </li> 2162 <li> 2163 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 2164 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 2165image while recording video) usecase</p></span> 2166 </li> 2167 <li> 2168 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 2169 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 2170application will stream full-resolution images and 2171reprocess one or several later for a final 2172capture</p></span> 2173 </li> 2174 </ul> 2175 2176 </td> <!-- entry_type --> 2177 2178 <td class="entry_description"> 2179 <p>Information to the camera device 3A (auto-exposure,<wbr/> 2180auto-focus,<wbr/> auto-white balance) routines about the purpose 2181of this capture,<wbr/> to help the camera device to decide optimal 3A 2182strategy.<wbr/></p> 2183 </td> 2184 2185 <td class="entry_units"> 2186 </td> 2187 2188 <td class="entry_range"> 2189 <p>All must be supported</p> 2190 </td> 2191 2192 <td class="entry_tags"> 2193 <ul class="entry_tags"> 2194 <li><a href="#tag_BC">BC</a></li> 2195 </ul> 2196 </td> 2197 2198 </tr> 2199 <tr class="entries_header"> 2200 <th class="th_details" colspan="5">Details</th> 2201 </tr> 2202 <tr class="entry_cont"> 2203 <td class="entry_details" colspan="5"> 2204 <p>This control is only effective if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> 2205and any 3A routine is active.<wbr/></p> 2206 </td> 2207 </tr> 2208 2209 2210 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2211 <!-- end of entry --> 2212 2213 2214 <tr class="entry" id="controls_android.control.effectMode"> 2215 <td class="entry_name" rowspan="3"> 2216 android.<wbr/>control.<wbr/>effect<wbr/>Mode 2217 </td> 2218 <td class="entry_type"> 2219 <span class="entry_type_name entry_type_name_enum">byte</span> 2220 2221 <span class="entry_type_visibility"> [public]</span> 2222 2223 <ul class="entry_type_enum"> 2224 <li> 2225 <span class="entry_type_enum_name">OFF</span> 2226 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 2227 </li> 2228 <li> 2229 <span class="entry_type_enum_name">MONO</span> 2230 <span class="entry_type_enum_optional">optional</span> 2231 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 2232a single color.<wbr/> This will typically be grayscale.<wbr/></p></span> 2233 </li> 2234 <li> 2235 <span class="entry_type_enum_name">NEGATIVE</span> 2236 <span class="entry_type_enum_optional">optional</span> 2237 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 2238are inverted.<wbr/></p></span> 2239 </li> 2240 <li> 2241 <span class="entry_type_enum_name">SOLARIZE</span> 2242 <span class="entry_type_enum_optional">optional</span> 2243 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 2244image is wholly or partially reversed in 2245tone.<wbr/></p></span> 2246 </li> 2247 <li> 2248 <span class="entry_type_enum_name">SEPIA</span> 2249 <span class="entry_type_enum_optional">optional</span> 2250 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 2251gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 2252 </li> 2253 <li> 2254 <span class="entry_type_enum_name">POSTERIZE</span> 2255 <span class="entry_type_enum_optional">optional</span> 2256 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 2257discrete regions of tone rather than a continuous 2258gradient of tones.<wbr/></p></span> 2259 </li> 2260 <li> 2261 <span class="entry_type_enum_name">WHITEBOARD</span> 2262 <span class="entry_type_enum_optional">optional</span> 2263 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 2264as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 2265 </li> 2266 <li> 2267 <span class="entry_type_enum_name">BLACKBOARD</span> 2268 <span class="entry_type_enum_optional">optional</span> 2269 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 2270as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 2271 </li> 2272 <li> 2273 <span class="entry_type_enum_name">AQUA</span> 2274 <span class="entry_type_enum_optional">optional</span> 2275 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 2276 </li> 2277 </ul> 2278 2279 </td> <!-- entry_type --> 2280 2281 <td class="entry_description"> 2282 <p>A special color effect to apply.<wbr/></p> 2283 </td> 2284 2285 <td class="entry_units"> 2286 </td> 2287 2288 <td class="entry_range"> 2289 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 2290 </td> 2291 2292 <td class="entry_tags"> 2293 <ul class="entry_tags"> 2294 <li><a href="#tag_BC">BC</a></li> 2295 </ul> 2296 </td> 2297 2298 </tr> 2299 <tr class="entries_header"> 2300 <th class="th_details" colspan="5">Details</th> 2301 </tr> 2302 <tr class="entry_cont"> 2303 <td class="entry_details" colspan="5"> 2304 <p>When this mode is set,<wbr/> a color effect will be applied 2305to images produced by the camera device.<wbr/> The interpretation 2306and implementation of these color effects is left to the 2307implementor of the camera device,<wbr/> and should not be 2308depended on to be consistent (or present) across all 2309devices.<wbr/></p> 2310<p>A color effect will only be applied if 2311<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/></p> 2312 </td> 2313 </tr> 2314 2315 2316 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2317 <!-- end of entry --> 2318 2319 2320 <tr class="entry" id="controls_android.control.mode"> 2321 <td class="entry_name" rowspan="3"> 2322 android.<wbr/>control.<wbr/>mode 2323 </td> 2324 <td class="entry_type"> 2325 <span class="entry_type_name entry_type_name_enum">byte</span> 2326 2327 <span class="entry_type_visibility"> [public]</span> 2328 2329 <ul class="entry_type_enum"> 2330 <li> 2331 <span class="entry_type_enum_name">OFF</span> 2332 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/> All 3A 2333routines are disabled,<wbr/> no other settings in 2334android.<wbr/>control.<wbr/>* have any effect</p></span> 2335 </li> 2336 <li> 2337 <span class="entry_type_enum_name">AUTO</span> 2338 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/> 2339Manual control of capture parameters is disabled.<wbr/> All 2340controls in android.<wbr/>control.<wbr/>* besides sceneMode take 2341effect</p></span> 2342 </li> 2343 <li> 2344 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 2345 <span class="entry_type_enum_notes"><p>Use specific scene mode.<wbr/> Enabling this disables 2346control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and control.<wbr/>afMode 2347controls; the HAL must ignore those settings while 2348USE_<wbr/>SCENE_<wbr/>MODE is active (except for FACE_<wbr/>PRIORITY 2349scene mode).<wbr/> Other control entries are still active.<wbr/> 2350This setting can only be used if availableSceneModes != 2351UNSUPPORTED</p></span> 2352 </li> 2353 </ul> 2354 2355 </td> <!-- entry_type --> 2356 2357 <td class="entry_description"> 2358 <p>Overall mode of 3A control 2359routines</p> 2360 </td> 2361 2362 <td class="entry_units"> 2363 </td> 2364 2365 <td class="entry_range"> 2366 <p>all must be supported</p> 2367 </td> 2368 2369 <td class="entry_tags"> 2370 <ul class="entry_tags"> 2371 <li><a href="#tag_BC">BC</a></li> 2372 </ul> 2373 </td> 2374 2375 </tr> 2376 <tr class="entries_header"> 2377 <th class="th_details" colspan="5">Details</th> 2378 </tr> 2379 <tr class="entry_cont"> 2380 <td class="entry_details" colspan="5"> 2381 <p>High-level 3A control.<wbr/> When set to OFF,<wbr/> all 3A control 2382by the camera device is disabled.<wbr/> The application must set the fields for 2383capture parameters itself.<wbr/></p> 2384<p>When set to AUTO,<wbr/> the individual algorithm controls in 2385android.<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> 2386<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 2387android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 2388one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 2389as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 2390<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 2391 </td> 2392 </tr> 2393 2394 2395 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2396 <!-- end of entry --> 2397 2398 2399 <tr class="entry" id="controls_android.control.sceneMode"> 2400 <td class="entry_name" rowspan="5"> 2401 android.<wbr/>control.<wbr/>scene<wbr/>Mode 2402 </td> 2403 <td class="entry_type"> 2404 <span class="entry_type_name entry_type_name_enum">byte</span> 2405 2406 <span class="entry_type_visibility"> [public]</span> 2407 2408 <ul class="entry_type_enum"> 2409 <li> 2410 <span class="entry_type_enum_name">DISABLED</span> 2411 <span class="entry_type_enum_value">0</span> 2412 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 2413 </li> 2414 <li> 2415 <span class="entry_type_enum_name">FACE_PRIORITY</span> 2416 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 2417detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 2418auto-exposure routines.<wbr/> If face detection statistics are 2419disabled (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/> 2420this should still operate correctly (but will not return 2421face detection statistics to the framework).<wbr/></p> 2422<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 2423<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and android.<wbr/>control.<wbr/>af<wbr/>Mode 2424remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 2425 </li> 2426 <li> 2427 <span class="entry_type_enum_name">ACTION</span> 2428 <span class="entry_type_enum_optional">optional</span> 2429 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/> 2430Similar to SPORTS.<wbr/></p></span> 2431 </li> 2432 <li> 2433 <span class="entry_type_enum_name">PORTRAIT</span> 2434 <span class="entry_type_enum_optional">optional</span> 2435 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 2436 </li> 2437 <li> 2438 <span class="entry_type_enum_name">LANDSCAPE</span> 2439 <span class="entry_type_enum_optional">optional</span> 2440 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 2441 </li> 2442 <li> 2443 <span class="entry_type_enum_name">NIGHT</span> 2444 <span class="entry_type_enum_optional">optional</span> 2445 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 2446 </li> 2447 <li> 2448 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 2449 <span class="entry_type_enum_optional">optional</span> 2450 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 2451settings.<wbr/></p></span> 2452 </li> 2453 <li> 2454 <span class="entry_type_enum_name">THEATRE</span> 2455 <span class="entry_type_enum_optional">optional</span> 2456 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 2457remain off.<wbr/></p></span> 2458 </li> 2459 <li> 2460 <span class="entry_type_enum_name">BEACH</span> 2461 <span class="entry_type_enum_optional">optional</span> 2462 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 2463 </li> 2464 <li> 2465 <span class="entry_type_enum_name">SNOW</span> 2466 <span class="entry_type_enum_optional">optional</span> 2467 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 2468 </li> 2469 <li> 2470 <span class="entry_type_enum_name">SUNSET</span> 2471 <span class="entry_type_enum_optional">optional</span> 2472 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 2473 </li> 2474 <li> 2475 <span class="entry_type_enum_name">STEADYPHOTO</span> 2476 <span class="entry_type_enum_optional">optional</span> 2477 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 2478device motion (for example: due to hand shake).<wbr/></p></span> 2479 </li> 2480 <li> 2481 <span class="entry_type_enum_name">FIREWORKS</span> 2482 <span class="entry_type_enum_optional">optional</span> 2483 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 2484 </li> 2485 <li> 2486 <span class="entry_type_enum_name">SPORTS</span> 2487 <span class="entry_type_enum_optional">optional</span> 2488 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/> 2489Similar to ACTION.<wbr/></p></span> 2490 </li> 2491 <li> 2492 <span class="entry_type_enum_name">PARTY</span> 2493 <span class="entry_type_enum_optional">optional</span> 2494 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 2495people.<wbr/></p></span> 2496 </li> 2497 <li> 2498 <span class="entry_type_enum_name">CANDLELIGHT</span> 2499 <span class="entry_type_enum_optional">optional</span> 2500 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 2501is a flame.<wbr/></p></span> 2502 </li> 2503 <li> 2504 <span class="entry_type_enum_name">BARCODE</span> 2505 <span class="entry_type_enum_optional">optional</span> 2506 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 2507for use by camera applications that wish to read the 2508barcode value.<wbr/></p></span> 2509 </li> 2510 </ul> 2511 2512 </td> <!-- entry_type --> 2513 2514 <td class="entry_description"> 2515 <p>A camera mode optimized for conditions typical in a particular 2516capture setting.<wbr/></p> 2517 </td> 2518 2519 <td class="entry_units"> 2520 </td> 2521 2522 <td class="entry_range"> 2523 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 2524 </td> 2525 2526 <td class="entry_tags"> 2527 <ul class="entry_tags"> 2528 <li><a href="#tag_BC">BC</a></li> 2529 </ul> 2530 </td> 2531 2532 </tr> 2533 <tr class="entries_header"> 2534 <th class="th_details" colspan="5">Details</th> 2535 </tr> 2536 <tr class="entry_cont"> 2537 <td class="entry_details" colspan="5"> 2538 <p>This is the mode that that is active when 2539<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/> 2540these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 2541<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> 2542<p>The interpretation and implementation of these scene modes is left 2543to the implementor of the camera device.<wbr/> Their behavior will not be 2544consistent across all devices,<wbr/> and any given device may only implement 2545a subset of these modes.<wbr/></p> 2546 </td> 2547 </tr> 2548 2549 <tr class="entries_header"> 2550 <th class="th_details" colspan="5">HAL Implementation Details</th> 2551 </tr> 2552 <tr class="entry_cont"> 2553 <td class="entry_details" colspan="5"> 2554 <p>HAL implementations that include scene modes are expected to provide 2555the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 2556<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 2557<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 2558 </td> 2559 </tr> 2560 2561 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2562 <!-- end of entry --> 2563 2564 2565 <tr class="entry" id="controls_android.control.videoStabilizationMode"> 2566 <td class="entry_name" rowspan="3"> 2567 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 2568 </td> 2569 <td class="entry_type"> 2570 <span class="entry_type_name entry_type_name_enum">byte</span> 2571 2572 <span class="entry_type_visibility"> [public as boolean]</span> 2573 2574 <ul class="entry_type_enum"> 2575 <li> 2576 <span class="entry_type_enum_name">OFF</span> 2577 </li> 2578 <li> 2579 <span class="entry_type_enum_name">ON</span> 2580 </li> 2581 </ul> 2582 2583 </td> <!-- entry_type --> 2584 2585 <td class="entry_description"> 2586 <p>Whether video stabilization is 2587active</p> 2588 </td> 2589 2590 <td class="entry_units"> 2591 </td> 2592 2593 <td class="entry_range"> 2594 </td> 2595 2596 <td class="entry_tags"> 2597 <ul class="entry_tags"> 2598 <li><a href="#tag_BC">BC</a></li> 2599 </ul> 2600 </td> 2601 2602 </tr> 2603 <tr class="entries_header"> 2604 <th class="th_details" colspan="5">Details</th> 2605 </tr> 2606 <tr class="entry_cont"> 2607 <td class="entry_details" colspan="5"> 2608 <p>If enabled,<wbr/> video stabilization can modify the 2609<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream 2610stabilized</p> 2611 </td> 2612 </tr> 2613 2614 2615 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2616 <!-- end of entry --> 2617 2618 2619 2620 <!-- end of kind --> 2621 </tbody> 2622 <tr><td colspan="6" class="kind">static</td></tr> 2623 2624 <thead class="entries_header"> 2625 <tr> 2626 <th class="th_name">Property Name</th> 2627 <th class="th_type">Type</th> 2628 <th class="th_description">Description</th> 2629 <th class="th_units">Units</th> 2630 <th class="th_range">Range</th> 2631 <th class="th_tags">Tags</th> 2632 </tr> 2633 </thead> 2634 2635 <tbody> 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> 2647 <td class="entry_name" rowspan="3"> 2648 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes 2649 </td> 2650 <td class="entry_type"> 2651 <span class="entry_type_name">byte</span> 2652 <span class="entry_type_container">x</span> 2653 2654 <span class="entry_type_array"> 2655 n 2656 </span> 2657 <span class="entry_type_visibility"> [public]</span> 2658 <div class="entry_type_notes">list of enums</div> 2659 2660 2661 </td> <!-- entry_type --> 2662 2663 <td class="entry_description"> 2664 <p>The set of auto-exposure antibanding modes that are 2665supported by this camera device.<wbr/></p> 2666 </td> 2667 2668 <td class="entry_units"> 2669 </td> 2670 2671 <td class="entry_range"> 2672 </td> 2673 2674 <td class="entry_tags"> 2675 </td> 2676 2677 </tr> 2678 <tr class="entries_header"> 2679 <th class="th_details" colspan="5">Details</th> 2680 </tr> 2681 <tr class="entry_cont"> 2682 <td class="entry_details" colspan="5"> 2683 <p>Not all of the auto-exposure anti-banding modes may be 2684supported by a given camera device.<wbr/> This field lists the 2685valid anti-banding modes that the application may request 2686for this camera device; they must include AUTO.<wbr/></p> 2687 </td> 2688 </tr> 2689 2690 2691 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2692 <!-- end of entry --> 2693 2694 2695 <tr class="entry" id="static_android.control.aeAvailableModes"> 2696 <td class="entry_name" rowspan="3"> 2697 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes 2698 </td> 2699 <td class="entry_type"> 2700 <span class="entry_type_name">byte</span> 2701 <span class="entry_type_container">x</span> 2702 2703 <span class="entry_type_array"> 2704 n 2705 </span> 2706 <span class="entry_type_visibility"> [public]</span> 2707 <div class="entry_type_notes">list of enums</div> 2708 2709 2710 </td> <!-- entry_type --> 2711 2712 <td class="entry_description"> 2713 <p>The set of auto-exposure modes that are supported by this 2714camera device.<wbr/></p> 2715 </td> 2716 2717 <td class="entry_units"> 2718 </td> 2719 2720 <td class="entry_range"> 2721 </td> 2722 2723 <td class="entry_tags"> 2724 <ul class="entry_tags"> 2725 <li><a href="#tag_BC">BC</a></li> 2726 </ul> 2727 </td> 2728 2729 </tr> 2730 <tr class="entries_header"> 2731 <th class="th_details" colspan="5">Details</th> 2732 </tr> 2733 <tr class="entry_cont"> 2734 <td class="entry_details" colspan="5"> 2735 <p>Not all the auto-exposure modes may be supported by a 2736given camera device,<wbr/> especially if no flash unit is 2737available.<wbr/> This entry lists the valid modes for 2738<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> 2739<p>All camera devices support ON,<wbr/> and all camera devices with 2740flash units support ON_<wbr/>AUTO_<wbr/>FLASH and 2741ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> 2742<p>Full-capability camera devices always support OFF mode,<wbr/> 2743which enables application control of camera exposure time,<wbr/> 2744sensitivity,<wbr/> and frame duration.<wbr/></p> 2745 </td> 2746 </tr> 2747 2748 2749 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2750 <!-- end of entry --> 2751 2752 2753 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> 2754 <td class="entry_name" rowspan="1"> 2755 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges 2756 </td> 2757 <td class="entry_type"> 2758 <span class="entry_type_name">int32</span> 2759 <span class="entry_type_container">x</span> 2760 2761 <span class="entry_type_array"> 2762 2 x n 2763 </span> 2764 <span class="entry_type_visibility"> [public]</span> 2765 <div class="entry_type_notes">list of pairs of frame rates</div> 2766 2767 2768 </td> <!-- entry_type --> 2769 2770 <td class="entry_description"> 2771 <p>List of frame rate ranges supported by the 2772AE algorithm/<wbr/>hardware</p> 2773 </td> 2774 2775 <td class="entry_units"> 2776 </td> 2777 2778 <td class="entry_range"> 2779 </td> 2780 2781 <td class="entry_tags"> 2782 </td> 2783 2784 </tr> 2785 2786 2787 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2788 <!-- end of entry --> 2789 2790 2791 <tr class="entry" id="static_android.control.aeCompensationRange"> 2792 <td class="entry_name" rowspan="1"> 2793 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 2794 </td> 2795 <td class="entry_type"> 2796 <span class="entry_type_name">int32</span> 2797 <span class="entry_type_container">x</span> 2798 2799 <span class="entry_type_array"> 2800 2 2801 </span> 2802 <span class="entry_type_visibility"> [public]</span> 2803 2804 2805 </td> <!-- entry_type --> 2806 2807 <td class="entry_description"> 2808 <p>Maximum and minimum exposure compensation 2809setting,<wbr/> in counts of 2810android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step<wbr/>Size</p> 2811 </td> 2812 2813 <td class="entry_units"> 2814 </td> 2815 2816 <td class="entry_range"> 2817 <p>At least (-2,<wbr/>2)/<wbr/>(exp compensation step 2818size)</p> 2819 </td> 2820 2821 <td class="entry_tags"> 2822 <ul class="entry_tags"> 2823 <li><a href="#tag_BC">BC</a></li> 2824 </ul> 2825 </td> 2826 2827 </tr> 2828 2829 2830 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2831 <!-- end of entry --> 2832 2833 2834 <tr class="entry" id="static_android.control.aeCompensationStep"> 2835 <td class="entry_name" rowspan="1"> 2836 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 2837 </td> 2838 <td class="entry_type"> 2839 <span class="entry_type_name">rational</span> 2840 2841 <span class="entry_type_visibility"> [public]</span> 2842 2843 2844 </td> <!-- entry_type --> 2845 2846 <td class="entry_description"> 2847 <p>Smallest step by which exposure compensation 2848can be changed</p> 2849 </td> 2850 2851 <td class="entry_units"> 2852 </td> 2853 2854 <td class="entry_range"> 2855 <p><= 1/<wbr/>2</p> 2856 </td> 2857 2858 <td class="entry_tags"> 2859 <ul class="entry_tags"> 2860 <li><a href="#tag_BC">BC</a></li> 2861 </ul> 2862 </td> 2863 2864 </tr> 2865 2866 2867 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2868 <!-- end of entry --> 2869 2870 2871 <tr class="entry" id="static_android.control.afAvailableModes"> 2872 <td class="entry_name" rowspan="3"> 2873 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 2874 </td> 2875 <td class="entry_type"> 2876 <span class="entry_type_name">byte</span> 2877 <span class="entry_type_container">x</span> 2878 2879 <span class="entry_type_array"> 2880 n 2881 </span> 2882 <span class="entry_type_visibility"> [public]</span> 2883 <div class="entry_type_notes">List of enums</div> 2884 2885 2886 </td> <!-- entry_type --> 2887 2888 <td class="entry_description"> 2889 <p>List of AF modes that can be 2890selected with <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p> 2891 </td> 2892 2893 <td class="entry_units"> 2894 </td> 2895 2896 <td class="entry_range"> 2897 </td> 2898 2899 <td class="entry_tags"> 2900 <ul class="entry_tags"> 2901 <li><a href="#tag_BC">BC</a></li> 2902 </ul> 2903 </td> 2904 2905 </tr> 2906 <tr class="entries_header"> 2907 <th class="th_details" colspan="5">Details</th> 2908 </tr> 2909 <tr class="entry_cont"> 2910 <td class="entry_details" colspan="5"> 2911 <p>Not all the auto-focus modes may be supported by a 2912given camera device.<wbr/> This entry lists the valid modes for 2913<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 2914<p>All camera devices will support OFF mode,<wbr/> and all camera devices with 2915adjustable focuser units (<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>) 2916will support AUTO mode.<wbr/></p> 2917 </td> 2918 </tr> 2919 2920 2921 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2922 <!-- end of entry --> 2923 2924 2925 <tr class="entry" id="static_android.control.availableEffects"> 2926 <td class="entry_name" rowspan="3"> 2927 android.<wbr/>control.<wbr/>available<wbr/>Effects 2928 </td> 2929 <td class="entry_type"> 2930 <span class="entry_type_name">byte</span> 2931 <span class="entry_type_container">x</span> 2932 2933 <span class="entry_type_array"> 2934 n 2935 </span> 2936 <span class="entry_type_visibility"> [public]</span> 2937 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 2938 2939 2940 </td> <!-- entry_type --> 2941 2942 <td class="entry_description"> 2943 <p>List containing the subset of color effects 2944specified in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a> that is supported by 2945this device.<wbr/></p> 2946 </td> 2947 2948 <td class="entry_units"> 2949 </td> 2950 2951 <td class="entry_range"> 2952 <p>Any subset of enums from those specified in 2953<a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a>.<wbr/> OFF must be included in any subset.<wbr/></p> 2954 </td> 2955 2956 <td class="entry_tags"> 2957 <ul class="entry_tags"> 2958 <li><a href="#tag_BC">BC</a></li> 2959 </ul> 2960 </td> 2961 2962 </tr> 2963 <tr class="entries_header"> 2964 <th class="th_details" colspan="5">Details</th> 2965 </tr> 2966 <tr class="entry_cont"> 2967 <td class="entry_details" colspan="5"> 2968 <p>This list contains the color effect modes that can be applied to 2969images produced by the camera device.<wbr/> Only modes that have 2970been fully implemented for the current device may be included here.<wbr/> 2971Implementations are not expected to be consistent across all devices.<wbr/> 2972If no color effect modes are available for a device,<wbr/> this should 2973simply be set to OFF.<wbr/></p> 2974<p>A color effect will only be applied if 2975<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/></p> 2976 </td> 2977 </tr> 2978 2979 2980 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2981 <!-- end of entry --> 2982 2983 2984 <tr class="entry" id="static_android.control.availableSceneModes"> 2985 <td class="entry_name" rowspan="3"> 2986 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 2987 </td> 2988 <td class="entry_type"> 2989 <span class="entry_type_name">byte</span> 2990 <span class="entry_type_container">x</span> 2991 2992 <span class="entry_type_array"> 2993 n 2994 </span> 2995 <span class="entry_type_visibility"> [public]</span> 2996 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 2997 2998 2999 </td> <!-- entry_type --> 3000 3001 <td class="entry_description"> 3002 <p>List containing a subset of scene modes 3003specified in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a>.<wbr/></p> 3004 </td> 3005 3006 <td class="entry_units"> 3007 </td> 3008 3009 <td class="entry_range"> 3010 <p>Any subset of the enums specified in android.<wbr/>control.<wbr/>scene<wbr/>Mode 3011not including DISABLED,<wbr/> or solely DISABLED if no 3012scene modes are available.<wbr/> FACE_<wbr/>PRIORITY must be included 3013if 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> 3014 </td> 3015 3016 <td class="entry_tags"> 3017 <ul class="entry_tags"> 3018 <li><a href="#tag_BC">BC</a></li> 3019 </ul> 3020 </td> 3021 3022 </tr> 3023 <tr class="entries_header"> 3024 <th class="th_details" colspan="5">Details</th> 3025 </tr> 3026 <tr class="entry_cont"> 3027 <td class="entry_details" colspan="5"> 3028 <p>This list contains scene modes that can be set for the camera device.<wbr/> 3029Only scene modes that have been fully implemented for the 3030camera device may be included here.<wbr/> Implementations are not expected 3031to be consistent across all devices.<wbr/> If no scene modes are supported 3032by the camera device,<wbr/> this will be set to <code>[DISABLED]</code>.<wbr/></p> 3033 </td> 3034 </tr> 3035 3036 3037 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3038 <!-- end of entry --> 3039 3040 3041 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 3042 <td class="entry_name" rowspan="1"> 3043 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 3044 </td> 3045 <td class="entry_type"> 3046 <span class="entry_type_name">byte</span> 3047 <span class="entry_type_container">x</span> 3048 3049 <span class="entry_type_array"> 3050 n 3051 </span> 3052 <span class="entry_type_visibility"> [public]</span> 3053 <div class="entry_type_notes">List of enums.<wbr/></div> 3054 3055 3056 </td> <!-- entry_type --> 3057 3058 <td class="entry_description"> 3059 <p>List of video stabilization modes that can 3060be supported</p> 3061 </td> 3062 3063 <td class="entry_units"> 3064 </td> 3065 3066 <td class="entry_range"> 3067 <p>OFF must be included</p> 3068 </td> 3069 3070 <td class="entry_tags"> 3071 <ul class="entry_tags"> 3072 <li><a href="#tag_BC">BC</a></li> 3073 </ul> 3074 </td> 3075 3076 </tr> 3077 3078 3079 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3080 <!-- end of entry --> 3081 3082 3083 <tr class="entry" id="static_android.control.awbAvailableModes"> 3084 <td class="entry_name" rowspan="3"> 3085 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 3086 </td> 3087 <td class="entry_type"> 3088 <span class="entry_type_name">byte</span> 3089 <span class="entry_type_container">x</span> 3090 3091 <span class="entry_type_array"> 3092 n 3093 </span> 3094 <span class="entry_type_visibility"> [public]</span> 3095 <div class="entry_type_notes">List of enums</div> 3096 3097 3098 </td> <!-- entry_type --> 3099 3100 <td class="entry_description"> 3101 <p>The set of auto-white-balance modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) 3102that are supported by this camera device.<wbr/></p> 3103 </td> 3104 3105 <td class="entry_units"> 3106 </td> 3107 3108 <td class="entry_range"> 3109 </td> 3110 3111 <td class="entry_tags"> 3112 <ul class="entry_tags"> 3113 <li><a href="#tag_BC">BC</a></li> 3114 </ul> 3115 </td> 3116 3117 </tr> 3118 <tr class="entries_header"> 3119 <th class="th_details" colspan="5">Details</th> 3120 </tr> 3121 <tr class="entry_cont"> 3122 <td class="entry_details" colspan="5"> 3123 <p>Not all the auto-white-balance modes may be supported by a 3124given camera device.<wbr/> This entry lists the valid modes for 3125<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 3126<p>All camera devices will support ON mode.<wbr/></p> 3127<p>Full-capability camera devices will always support OFF mode,<wbr/> 3128which enables application control of white balance,<wbr/> by using 3129<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> 3130 </td> 3131 </tr> 3132 3133 3134 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3135 <!-- end of entry --> 3136 3137 3138 <tr class="entry" id="static_android.control.maxRegions"> 3139 <td class="entry_name" rowspan="1"> 3140 android.<wbr/>control.<wbr/>max<wbr/>Regions 3141 </td> 3142 <td class="entry_type"> 3143 <span class="entry_type_name">int32</span> 3144 <span class="entry_type_container">x</span> 3145 3146 <span class="entry_type_array"> 3147 3 3148 </span> 3149 <span class="entry_type_visibility"> [public]</span> 3150 3151 3152 </td> <!-- entry_type --> 3153 3154 <td class="entry_description"> 3155 <p>List of the maximum number of regions that can be used for metering in 3156auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 3157this corresponds to the the maximum number of elements in 3158<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/> 3159and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 3160 </td> 3161 3162 <td class="entry_units"> 3163 </td> 3164 3165 <td class="entry_range"> 3166 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 3167this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 3168<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 3169 </td> 3170 3171 <td class="entry_tags"> 3172 <ul class="entry_tags"> 3173 <li><a href="#tag_BC">BC</a></li> 3174 </ul> 3175 </td> 3176 3177 </tr> 3178 3179 3180 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3181 <!-- end of entry --> 3182 3183 3184 <tr class="entry" id="static_android.control.sceneModeOverrides"> 3185 <td class="entry_name" rowspan="5"> 3186 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 3187 </td> 3188 <td class="entry_type"> 3189 <span class="entry_type_name">byte</span> 3190 <span class="entry_type_container">x</span> 3191 3192 <span class="entry_type_array"> 3193 3 x length(availableSceneModes) 3194 </span> 3195 <span class="entry_type_visibility"> [system]</span> 3196 3197 3198 </td> <!-- entry_type --> 3199 3200 <td class="entry_description"> 3201 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 3202settings to use with each available scene mode.<wbr/></p> 3203 </td> 3204 3205 <td class="entry_units"> 3206 </td> 3207 3208 <td class="entry_range"> 3209 <p>For each available scene mode,<wbr/> the list must contain three 3210entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3211<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 3212by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 3213where aeMode has the lowest index position.<wbr/></p> 3214 </td> 3215 3216 <td class="entry_tags"> 3217 <ul class="entry_tags"> 3218 <li><a href="#tag_BC">BC</a></li> 3219 </ul> 3220 </td> 3221 3222 </tr> 3223 <tr class="entries_header"> 3224 <th class="th_details" colspan="5">Details</th> 3225 </tr> 3226 <tr class="entry_cont"> 3227 <td class="entry_details" colspan="5"> 3228 <p>When a scene mode is enabled,<wbr/> the camera device is expected 3229to 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/> 3230and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 3231that scene mode.<wbr/></p> 3232<p>The order of this list matches that of availableSceneModes,<wbr/> 3233with 3 entries for each mode.<wbr/> The overrides listed 3234for FACE_<wbr/>PRIORITY are ignored,<wbr/> since for that 3235mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3236<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 3237used instead,<wbr/> matching the behavior when android.<wbr/>control.<wbr/>mode 3238is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY 3239overrides should be set to 0.<wbr/></p> 3240<p>For example,<wbr/> if availableSceneModes contains 3241<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 3242expects sceneModeOverrides to have 9 entries formatted like: 3243<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 3244ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 3245 </td> 3246 </tr> 3247 3248 <tr class="entries_header"> 3249 <th class="th_details" colspan="5">HAL Implementation Details</th> 3250 </tr> 3251 <tr class="entry_cont"> 3252 <td class="entry_details" colspan="5"> 3253 <p>To maintain backward compatibility,<wbr/> this list will be made available 3254in the static metadata of the camera service.<wbr/> The camera service will 3255use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3256<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 3257mode other than FACE_<wbr/>PRIORITY.<wbr/></p> 3258 </td> 3259 </tr> 3260 3261 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3262 <!-- end of entry --> 3263 3264 3265 3266 <!-- end of kind --> 3267 </tbody> 3268 <tr><td colspan="6" class="kind">dynamic</td></tr> 3269 3270 <thead class="entries_header"> 3271 <tr> 3272 <th class="th_name">Property Name</th> 3273 <th class="th_type">Type</th> 3274 <th class="th_description">Description</th> 3275 <th class="th_units">Units</th> 3276 <th class="th_range">Range</th> 3277 <th class="th_tags">Tags</th> 3278 </tr> 3279 </thead> 3280 3281 <tbody> 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 3293 <td class="entry_name" rowspan="3"> 3294 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 3295 </td> 3296 <td class="entry_type"> 3297 <span class="entry_type_name">int32</span> 3298 3299 <span class="entry_type_visibility"> [hidden]</span> 3300 3301 3302 </td> <!-- entry_type --> 3303 3304 <td class="entry_description"> 3305 <p>The ID sent with the latest 3306CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 3307 </td> 3308 3309 <td class="entry_units"> 3310 </td> 3311 3312 <td class="entry_range"> 3313 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 3314 </td> 3315 3316 <td class="entry_tags"> 3317 </td> 3318 3319 </tr> 3320 <tr class="entries_header"> 3321 <th class="th_details" colspan="5">Details</th> 3322 </tr> 3323 <tr class="entry_cont"> 3324 <td class="entry_details" colspan="5"> 3325 <p>Must be 0 if no 3326CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 3327by HAL.<wbr/> Always updated even if AE algorithm ignores the 3328trigger</p> 3329 </td> 3330 </tr> 3331 3332 3333 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3334 <!-- end of entry --> 3335 3336 3337 <tr class="entry" id="dynamic_android.control.aeMode"> 3338 <td class="entry_name" rowspan="3"> 3339 android.<wbr/>control.<wbr/>ae<wbr/>Mode 3340 </td> 3341 <td class="entry_type"> 3342 <span class="entry_type_name entry_type_name_enum">byte</span> 3343 3344 <span class="entry_type_visibility"> [public]</span> 3345 3346 <ul class="entry_type_enum"> 3347 <li> 3348 <span class="entry_type_enum_name">OFF</span> 3349 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled; 3350the application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 3351<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 3352<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 3353device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 3354a flash unit for this camera device.<wbr/></p></span> 3355 </li> 3356 <li> 3357 <span class="entry_type_enum_name">ON</span> 3358 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 3359with no flash control.<wbr/> The application's values for 3360<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 3361<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 3362<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 3363application has control over the various 3364android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 3365 </li> 3366 <li> 3367 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 3368 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 3369the camera's flash unit,<wbr/> firing it in low-light 3370conditions.<wbr/> The flash may be fired during a 3371precapture sequence (triggered by 3372<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and may be fired 3373for captures for which the 3374<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 3375STILL_<wbr/>CAPTURE</p></span> 3376 </li> 3377 <li> 3378 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 3379 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 3380the camera's flash unit,<wbr/> always firing it for still 3381captures.<wbr/> The flash may be fired during a precapture 3382sequence (triggered by 3383<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and will always 3384be fired for captures for which the 3385<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 3386STILL_<wbr/>CAPTURE</p></span> 3387 </li> 3388 <li> 3389 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 3390 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 3391reduction.<wbr/> If deemed necessary by the camera device,<wbr/> 3392a red eye reduction flash will fire during the 3393precapture sequence.<wbr/></p></span> 3394 </li> 3395 </ul> 3396 3397 </td> <!-- entry_type --> 3398 3399 <td class="entry_description"> 3400 <p>The desired mode for the camera device's 3401auto-exposure routine.<wbr/></p> 3402 </td> 3403 3404 <td class="entry_units"> 3405 </td> 3406 3407 <td class="entry_range"> 3408 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 3409 </td> 3410 3411 <td class="entry_tags"> 3412 <ul class="entry_tags"> 3413 <li><a href="#tag_BC">BC</a></li> 3414 </ul> 3415 </td> 3416 3417 </tr> 3418 <tr class="entries_header"> 3419 <th class="th_details" colspan="5">Details</th> 3420 </tr> 3421 <tr class="entry_cont"> 3422 <td class="entry_details" colspan="5"> 3423 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 3424AUTO.<wbr/></p> 3425<p>When set to any of the ON modes,<wbr/> the camera device's 3426auto-exposure routine is enabled,<wbr/> overriding the 3427application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 3428and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 3429<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 3430<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 3431is selected,<wbr/> the camera device's flash unit controls are 3432also overridden.<wbr/></p> 3433<p>The FLASH modes are only available if the camera device 3434has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 3435<p>If flash TORCH mode is desired,<wbr/> this field must be set to 3436ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 3437<p>When set to any of the ON modes,<wbr/> the values chosen by the 3438camera device auto-exposure routine for the overridden 3439fields for a given capture will be available in its 3440CaptureResult.<wbr/></p> 3441 </td> 3442 </tr> 3443 3444 3445 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3446 <!-- end of entry --> 3447 3448 3449 <tr class="entry" id="dynamic_android.control.aeRegions"> 3450 <td class="entry_name" rowspan="3"> 3451 android.<wbr/>control.<wbr/>ae<wbr/>Regions 3452 </td> 3453 <td class="entry_type"> 3454 <span class="entry_type_name">int32</span> 3455 <span class="entry_type_container">x</span> 3456 3457 <span class="entry_type_array"> 3458 5 x area_count 3459 </span> 3460 <span class="entry_type_visibility"> [public]</span> 3461 3462 3463 </td> <!-- entry_type --> 3464 3465 <td class="entry_description"> 3466 <p>List of areas to use for 3467metering.<wbr/></p> 3468 </td> 3469 3470 <td class="entry_units"> 3471 </td> 3472 3473 <td class="entry_range"> 3474 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[0]</code></p> 3475 </td> 3476 3477 <td class="entry_tags"> 3478 <ul class="entry_tags"> 3479 <li><a href="#tag_BC">BC</a></li> 3480 </ul> 3481 </td> 3482 3483 </tr> 3484 <tr class="entries_header"> 3485 <th class="th_details" colspan="5">Details</th> 3486 </tr> 3487 <tr class="entry_cont"> 3488 <td class="entry_details" colspan="5"> 3489 <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> 3490xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the 3491specified coordinates.<wbr/></p> 3492<p>The coordinate system is based on the active pixel array,<wbr/> 3493with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 3494(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3495<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 3496bottom-right pixel in the active pixel array.<wbr/> The weight 3497should be nonnegative.<wbr/></p> 3498<p>If all regions have 0 weight,<wbr/> then no specific metering area 3499needs to be used by the HAL.<wbr/> If the metering region is 3500outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the HAL 3501should ignore the sections outside the region and output the 3502used sections in the frame metadata.<wbr/></p> 3503 </td> 3504 </tr> 3505 3506 3507 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3508 <!-- end of entry --> 3509 3510 3511 <tr class="entry" id="dynamic_android.control.aeState"> 3512 <td class="entry_name" rowspan="3"> 3513 android.<wbr/>control.<wbr/>ae<wbr/>State 3514 </td> 3515 <td class="entry_type"> 3516 <span class="entry_type_name entry_type_name_enum">byte</span> 3517 3518 <span class="entry_type_visibility"> [public]</span> 3519 3520 <ul class="entry_type_enum"> 3521 <li> 3522 <span class="entry_type_enum_name">INACTIVE</span> 3523 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/> When a camera device is opened,<wbr/> it starts in 3524this state.<wbr/></p></span> 3525 </li> 3526 <li> 3527 <span class="entry_type_enum_name">SEARCHING</span> 3528 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 3529for the current scene.<wbr/></p></span> 3530 </li> 3531 <li> 3532 <span class="entry_type_enum_name">CONVERGED</span> 3533 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 3534current scene.<wbr/></p></span> 3535 </li> 3536 <li> 3537 <span class="entry_type_enum_name">LOCKED</span> 3538 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 3539 </li> 3540 <li> 3541 <span class="entry_type_enum_name">FLASH_REQUIRED</span> 3542 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 3543needs to be fired for good quality still 3544capture.<wbr/></p></span> 3545 </li> 3546 <li> 3547 <span class="entry_type_enum_name">PRECAPTURE</span> 3548 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 3549(through the <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> START),<wbr/> 3550and is currently executing it.<wbr/> Once PRECAPTURE 3551completes,<wbr/> AE will transition to CONVERGED or 3552FLASH_<wbr/>REQUIRED as appropriate.<wbr/></p></span> 3553 </li> 3554 </ul> 3555 3556 </td> <!-- entry_type --> 3557 3558 <td class="entry_description"> 3559 <p>Current state of AE algorithm</p> 3560 </td> 3561 3562 <td class="entry_units"> 3563 </td> 3564 3565 <td class="entry_range"> 3566 </td> 3567 3568 <td class="entry_tags"> 3569 </td> 3570 3571 </tr> 3572 <tr class="entries_header"> 3573 <th class="th_details" colspan="5">Details</th> 3574 </tr> 3575 <tr class="entry_cont"> 3576 <td class="entry_details" colspan="5"> 3577 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 3578resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 3579or <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 3580the algorithm states to INACTIVE.<wbr/></p> 3581<p>The camera device can do several state transitions between two results,<wbr/> if it is 3582allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 3583seen in a result.<wbr/></p> 3584<p>The state in the result is the state for this image (in sync with this image): if 3585AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 3586be good to use.<wbr/></p> 3587<p>Below are state transition tables for different AE modes.<wbr/></p> 3588<table> 3589<thead> 3590<tr> 3591<th align="center">State</th> 3592<th align="center">Transition Cause</th> 3593<th align="center">New State</th> 3594<th align="center">Notes</th> 3595</tr> 3596</thead> 3597<tbody> 3598<tr> 3599<td align="center">INACTIVE</td> 3600<td align="center"></td> 3601<td align="center">INACTIVE</td> 3602<td align="center">Camera device auto exposure algorithm is disabled</td> 3603</tr> 3604</tbody> 3605</table> 3606<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p> 3607<table> 3608<thead> 3609<tr> 3610<th align="center">State</th> 3611<th align="center">Transition Cause</th> 3612<th align="center">New State</th> 3613<th align="center">Notes</th> 3614</tr> 3615</thead> 3616<tbody> 3617<tr> 3618<td align="center">INACTIVE</td> 3619<td align="center">Camera device initiates AE scan</td> 3620<td align="center">SEARCHING</td> 3621<td align="center">Values changing</td> 3622</tr> 3623<tr> 3624<td align="center">INACTIVE</td> 3625<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 3626<td align="center">LOCKED</td> 3627<td align="center">Values locked</td> 3628</tr> 3629<tr> 3630<td align="center">SEARCHING</td> 3631<td align="center">Camera device finishes AE scan</td> 3632<td align="center">CONVERGED</td> 3633<td align="center">Good values,<wbr/> not changing</td> 3634</tr> 3635<tr> 3636<td align="center">SEARCHING</td> 3637<td align="center">Camera device finishes AE scan</td> 3638<td align="center">FLASH_<wbr/>REQUIRED</td> 3639<td align="center">Converged but too dark w/<wbr/>o flash</td> 3640</tr> 3641<tr> 3642<td align="center">SEARCHING</td> 3643<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 3644<td align="center">LOCKED</td> 3645<td align="center">Values locked</td> 3646</tr> 3647<tr> 3648<td align="center">CONVERGED</td> 3649<td align="center">Camera device initiates AE scan</td> 3650<td align="center">SEARCHING</td> 3651<td align="center">Values changing</td> 3652</tr> 3653<tr> 3654<td align="center">CONVERGED</td> 3655<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 3656<td align="center">LOCKED</td> 3657<td align="center">Values locked</td> 3658</tr> 3659<tr> 3660<td align="center">FLASH_<wbr/>REQUIRED</td> 3661<td align="center">Camera device initiates AE scan</td> 3662<td align="center">SEARCHING</td> 3663<td align="center">Values changing</td> 3664</tr> 3665<tr> 3666<td align="center">FLASH_<wbr/>REQUIRED</td> 3667<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 3668<td align="center">LOCKED</td> 3669<td align="center">Values locked</td> 3670</tr> 3671<tr> 3672<td align="center">LOCKED</td> 3673<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 3674<td align="center">SEARCHING</td> 3675<td align="center">Values not good after unlock</td> 3676</tr> 3677<tr> 3678<td align="center">LOCKED</td> 3679<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 3680<td align="center">CONVERGED</td> 3681<td align="center">Values good after unlock</td> 3682</tr> 3683<tr> 3684<td align="center">LOCKED</td> 3685<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 3686<td align="center">FLASH_<wbr/>REQUIRED</td> 3687<td align="center">Exposure good,<wbr/> but too dark</td> 3688</tr> 3689<tr> 3690<td align="center">PRECAPTURE</td> 3691<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 3692<td align="center">CONVERGED</td> 3693<td align="center">Ready for high-quality capture</td> 3694</tr> 3695<tr> 3696<td align="center">PRECAPTURE</td> 3697<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 3698<td align="center">LOCKED</td> 3699<td align="center">Ready for high-quality capture</td> 3700</tr> 3701<tr> 3702<td align="center">Any state</td> 3703<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 3704<td align="center">PRECAPTURE</td> 3705<td align="center">Start AE precapture metering sequence</td> 3706</tr> 3707</tbody> 3708</table> 3709 </td> 3710 </tr> 3711 3712 3713 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3714 <!-- end of entry --> 3715 3716 3717 <tr class="entry" id="dynamic_android.control.afMode"> 3718 <td class="entry_name" rowspan="3"> 3719 android.<wbr/>control.<wbr/>af<wbr/>Mode 3720 </td> 3721 <td class="entry_type"> 3722 <span class="entry_type_name entry_type_name_enum">byte</span> 3723 3724 <span class="entry_type_visibility"> [public]</span> 3725 3726 <ul class="entry_type_enum"> 3727 <li> 3728 <span class="entry_type_enum_name">OFF</span> 3729 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 3730<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 3731application</p></span> 3732 </li> 3733 <li> 3734 <span class="entry_type_enum_name">AUTO</span> 3735 <span class="entry_type_enum_notes"><p>If lens is not fixed focus.<wbr/></p> 3736<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 3737is fixed-focus.<wbr/> In this mode,<wbr/> the lens does not move unless 3738the autofocus trigger action is called.<wbr/> When that trigger 3739is activated,<wbr/> AF must transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 3740the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 3741<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 3742and sets the AF state to INACTIVE.<wbr/></p></span> 3743 </li> 3744 <li> 3745 <span class="entry_type_enum_name">MACRO</span> 3746 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the lens does not move unless the 3747autofocus trigger action is called.<wbr/></p> 3748<p>When that trigger is activated,<wbr/> AF must transition to 3749ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 3750NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 3751position to default,<wbr/> and sets the AF state to 3752INACTIVE.<wbr/></p></span> 3753 </li> 3754 <li> 3755 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 3756 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 3757position continually to attempt to provide a 3758constantly-in-focus image stream.<wbr/></p> 3759<p>The focusing behavior should be suitable for good quality 3760video recording; typically this means slower focus 3761movement and no overshoots.<wbr/> When the AF trigger is not 3762involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 3763and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 3764states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 3765the algorithm should immediately transition into 3766AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 3767lens position until a cancel AF trigger is received.<wbr/></p> 3768<p>Once cancel is received,<wbr/> the algorithm should transition 3769back to INACTIVE and resume passive scan.<wbr/> Note that this 3770behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 3771ongoing PASSIVE_<wbr/>SCAN must immediately be 3772canceled.<wbr/></p></span> 3773 </li> 3774 <li> 3775 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 3776 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 3777position continually to attempt to provide a 3778constantly-in-focus image stream.<wbr/></p> 3779<p>The focusing behavior should be suitable for still image 3780capture; typically this means focusing as fast as 3781possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 3782algorithm should start in INACTIVE state,<wbr/> and then 3783transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 3784appropriate as it attempts to maintain focus.<wbr/> When the AF 3785trigger is activated,<wbr/> the algorithm should finish its 3786PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 3787AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 3788lens position until a cancel AF trigger is received.<wbr/></p> 3789<p>When the AF cancel trigger is activated,<wbr/> the algorithm 3790should transition back to INACTIVE and then act as if it 3791has just been started.<wbr/></p></span> 3792 </li> 3793 <li> 3794 <span class="entry_type_enum_name">EDOF</span> 3795 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus).<wbr/> AF 3796trigger is ignored,<wbr/> AF state should always be 3797INACTIVE.<wbr/></p></span> 3798 </li> 3799 </ul> 3800 3801 </td> <!-- entry_type --> 3802 3803 <td class="entry_description"> 3804 <p>Whether AF is currently enabled,<wbr/> and what 3805mode it is set to</p> 3806 </td> 3807 3808 <td class="entry_units"> 3809 </td> 3810 3811 <td class="entry_range"> 3812 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 3813 </td> 3814 3815 <td class="entry_tags"> 3816 <ul class="entry_tags"> 3817 <li><a href="#tag_BC">BC</a></li> 3818 </ul> 3819 </td> 3820 3821 </tr> 3822 <tr class="entries_header"> 3823 <th class="th_details" colspan="5">Details</th> 3824 </tr> 3825 <tr class="entry_cont"> 3826 <td class="entry_details" colspan="5"> 3827 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO.<wbr/></p> 3828<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 3829the camera device will report the current AF status in android.<wbr/>control.<wbr/>af<wbr/>State 3830in result metadata.<wbr/></p> 3831 </td> 3832 </tr> 3833 3834 3835 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3836 <!-- end of entry --> 3837 3838 3839 <tr class="entry" id="dynamic_android.control.afRegions"> 3840 <td class="entry_name" rowspan="3"> 3841 android.<wbr/>control.<wbr/>af<wbr/>Regions 3842 </td> 3843 <td class="entry_type"> 3844 <span class="entry_type_name">int32</span> 3845 <span class="entry_type_container">x</span> 3846 3847 <span class="entry_type_array"> 3848 5 x area_count 3849 </span> 3850 <span class="entry_type_visibility"> [public]</span> 3851 3852 3853 </td> <!-- entry_type --> 3854 3855 <td class="entry_description"> 3856 <p>List of areas to use for focus 3857estimation.<wbr/></p> 3858 </td> 3859 3860 <td class="entry_units"> 3861 </td> 3862 3863 <td class="entry_range"> 3864 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[2]</code></p> 3865 </td> 3866 3867 <td class="entry_tags"> 3868 <ul class="entry_tags"> 3869 <li><a href="#tag_BC">BC</a></li> 3870 </ul> 3871 </td> 3872 3873 </tr> 3874 <tr class="entries_header"> 3875 <th class="th_details" colspan="5">Details</th> 3876 </tr> 3877 <tr class="entry_cont"> 3878 <td class="entry_details" colspan="5"> 3879 <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> 3880xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the 3881specified coordinates.<wbr/></p> 3882<p>The coordinate system is based on the active pixel array,<wbr/> 3883with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 3884(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3885<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 3886bottom-right pixel in the active pixel array.<wbr/> The weight 3887should be nonnegative.<wbr/></p> 3888<p>If all regions have 0 weight,<wbr/> then no specific focus area 3889needs to be used by the HAL.<wbr/> If the focusing region is 3890outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the HAL 3891should ignore the sections outside the region and output the 3892used sections in the frame metadata.<wbr/></p> 3893 </td> 3894 </tr> 3895 3896 3897 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3898 <!-- end of entry --> 3899 3900 3901 <tr class="entry" id="dynamic_android.control.afState"> 3902 <td class="entry_name" rowspan="3"> 3903 android.<wbr/>control.<wbr/>af<wbr/>State 3904 </td> 3905 <td class="entry_type"> 3906 <span class="entry_type_name entry_type_name_enum">byte</span> 3907 3908 <span class="entry_type_visibility"> [public]</span> 3909 3910 <ul class="entry_type_enum"> 3911 <li> 3912 <span class="entry_type_enum_name">INACTIVE</span> 3913 <span class="entry_type_enum_notes"><p>AF off or has not yet tried to scan/<wbr/>been asked 3914to scan.<wbr/> When a camera device is opened,<wbr/> it starts in 3915this state.<wbr/></p></span> 3916 </li> 3917 <li> 3918 <span class="entry_type_enum_name">PASSIVE_SCAN</span> 3919 <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF is 3920currently doing an AF scan initiated by a continuous 3921autofocus mode</p></span> 3922 </li> 3923 <li> 3924 <span class="entry_type_enum_name">PASSIVE_FOCUSED</span> 3925 <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF currently 3926believes it is in focus,<wbr/> but may restart scanning at 3927any time.<wbr/></p></span> 3928 </li> 3929 <li> 3930 <span class="entry_type_enum_name">ACTIVE_SCAN</span> 3931 <span class="entry_type_enum_notes"><p>if AUTO or MACRO modes are supported.<wbr/> AF is doing 3932an AF scan because it was triggered by AF 3933trigger</p></span> 3934 </li> 3935 <li> 3936 <span class="entry_type_enum_name">FOCUSED_LOCKED</span> 3937 <span class="entry_type_enum_notes"><p>if any AF mode besides OFF is supported.<wbr/> AF 3938believes it is focused correctly and is 3939locked</p></span> 3940 </li> 3941 <li> 3942 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span> 3943 <span class="entry_type_enum_notes"><p>if any AF mode besides OFF is supported.<wbr/> AF has 3944failed to focus successfully and is 3945locked</p></span> 3946 </li> 3947 <li> 3948 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span> 3949 <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF finished a 3950passive scan without finding focus,<wbr/> and may restart 3951scanning at any time.<wbr/></p></span> 3952 </li> 3953 </ul> 3954 3955 </td> <!-- entry_type --> 3956 3957 <td class="entry_description"> 3958 <p>Current state of AF algorithm</p> 3959 </td> 3960 3961 <td class="entry_units"> 3962 </td> 3963 3964 <td class="entry_range"> 3965 </td> 3966 3967 <td class="entry_tags"> 3968 </td> 3969 3970 </tr> 3971 <tr class="entries_header"> 3972 <th class="th_details" colspan="5">Details</th> 3973 </tr> 3974 <tr class="entry_cont"> 3975 <td class="entry_details" colspan="5"> 3976 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 3977resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 3978or <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 3979the algorithm states to INACTIVE.<wbr/></p> 3980<p>The camera device can do several state transitions between two results,<wbr/> if it is 3981allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 3982seen in a result.<wbr/></p> 3983<p>The state in the result is the state for this image (in sync with this image): if 3984AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 3985be sharp.<wbr/></p> 3986<p>Below are state transition tables for different AF modes.<wbr/></p> 3987<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> 3988<table> 3989<thead> 3990<tr> 3991<th align="center">State</th> 3992<th align="center">Transition Cause</th> 3993<th align="center">New State</th> 3994<th align="center">Notes</th> 3995</tr> 3996</thead> 3997<tbody> 3998<tr> 3999<td align="center">INACTIVE</td> 4000<td align="center"></td> 4001<td align="center">INACTIVE</td> 4002<td align="center">Never changes</td> 4003</tr> 4004</tbody> 4005</table> 4006<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> 4007<table> 4008<thead> 4009<tr> 4010<th align="center">State</th> 4011<th align="center">Transition Cause</th> 4012<th align="center">New State</th> 4013<th align="center">Notes</th> 4014</tr> 4015</thead> 4016<tbody> 4017<tr> 4018<td align="center">INACTIVE</td> 4019<td align="center">AF_<wbr/>TRIGGER</td> 4020<td align="center">ACTIVE_<wbr/>SCAN</td> 4021<td align="center">Start AF sweep,<wbr/> Lens now moving</td> 4022</tr> 4023<tr> 4024<td align="center">ACTIVE_<wbr/>SCAN</td> 4025<td align="center">AF sweep done</td> 4026<td align="center">FOCUSED_<wbr/>LOCKED</td> 4027<td align="center">Focused,<wbr/> Lens now locked</td> 4028</tr> 4029<tr> 4030<td align="center">ACTIVE_<wbr/>SCAN</td> 4031<td align="center">AF sweep done</td> 4032<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4033<td align="center">Not focused,<wbr/> Lens now locked</td> 4034</tr> 4035<tr> 4036<td align="center">ACTIVE_<wbr/>SCAN</td> 4037<td align="center">AF_<wbr/>CANCEL</td> 4038<td align="center">INACTIVE</td> 4039<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 4040</tr> 4041<tr> 4042<td align="center">FOCUSED_<wbr/>LOCKED</td> 4043<td align="center">AF_<wbr/>CANCEL</td> 4044<td align="center">INACTIVE</td> 4045<td align="center">Cancel/<wbr/>reset AF</td> 4046</tr> 4047<tr> 4048<td align="center">FOCUSED_<wbr/>LOCKED</td> 4049<td align="center">AF_<wbr/>TRIGGER</td> 4050<td align="center">ACTIVE_<wbr/>SCAN</td> 4051<td align="center">Start new sweep,<wbr/> Lens now moving</td> 4052</tr> 4053<tr> 4054<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4055<td align="center">AF_<wbr/>CANCEL</td> 4056<td align="center">INACTIVE</td> 4057<td align="center">Cancel/<wbr/>reset AF</td> 4058</tr> 4059<tr> 4060<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4061<td align="center">AF_<wbr/>TRIGGER</td> 4062<td align="center">ACTIVE_<wbr/>SCAN</td> 4063<td align="center">Start new sweep,<wbr/> Lens now moving</td> 4064</tr> 4065<tr> 4066<td align="center">Any state</td> 4067<td align="center">Mode change</td> 4068<td align="center">INACTIVE</td> 4069<td align="center"></td> 4070</tr> 4071</tbody> 4072</table> 4073<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> 4074<table> 4075<thead> 4076<tr> 4077<th align="center">State</th> 4078<th align="center">Transition Cause</th> 4079<th align="center">New State</th> 4080<th align="center">Notes</th> 4081</tr> 4082</thead> 4083<tbody> 4084<tr> 4085<td align="center">INACTIVE</td> 4086<td align="center">Camera device initiates new scan</td> 4087<td align="center">PASSIVE_<wbr/>SCAN</td> 4088<td align="center">Start AF scan,<wbr/> Lens now moving</td> 4089</tr> 4090<tr> 4091<td align="center">INACTIVE</td> 4092<td align="center">AF_<wbr/>TRIGGER</td> 4093<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4094<td align="center">AF state query,<wbr/> Lens now locked</td> 4095</tr> 4096<tr> 4097<td align="center">PASSIVE_<wbr/>SCAN</td> 4098<td align="center">Camera device completes current scan</td> 4099<td align="center">PASSIVE_<wbr/>FOCUSED</td> 4100<td align="center">End AF scan,<wbr/> Lens now locked</td> 4101</tr> 4102<tr> 4103<td align="center">PASSIVE_<wbr/>SCAN</td> 4104<td align="center">Camera device fails current scan</td> 4105<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 4106<td align="center">End AF scan,<wbr/> Lens now locked</td> 4107</tr> 4108<tr> 4109<td align="center">PASSIVE_<wbr/>SCAN</td> 4110<td align="center">AF_<wbr/>TRIGGER</td> 4111<td align="center">FOCUSED_<wbr/>LOCKED</td> 4112<td align="center">Immediate trans.<wbr/> If focus is good,<wbr/> Lens now locked</td> 4113</tr> 4114<tr> 4115<td align="center">PASSIVE_<wbr/>SCAN</td> 4116<td align="center">AF_<wbr/>TRIGGER</td> 4117<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4118<td align="center">Immediate trans.<wbr/> if focus is bad,<wbr/> Lens now locked</td> 4119</tr> 4120<tr> 4121<td align="center">PASSIVE_<wbr/>SCAN</td> 4122<td align="center">AF_<wbr/>CANCEL</td> 4123<td align="center">INACTIVE</td> 4124<td align="center">Reset lens position,<wbr/> Lens now locked</td> 4125</tr> 4126<tr> 4127<td align="center">PASSIVE_<wbr/>FOCUSED</td> 4128<td align="center">Camera device initiates new scan</td> 4129<td align="center">PASSIVE_<wbr/>SCAN</td> 4130<td align="center">Start AF scan,<wbr/> Lens now moving</td> 4131</tr> 4132<tr> 4133<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 4134<td align="center">Camera device initiates new scan</td> 4135<td align="center">PASSIVE_<wbr/>SCAN</td> 4136<td align="center">Start AF scan,<wbr/> Lens now moving</td> 4137</tr> 4138<tr> 4139<td align="center">PASSIVE_<wbr/>FOCUSED</td> 4140<td align="center">AF_<wbr/>TRIGGER</td> 4141<td align="center">FOCUSED_<wbr/>LOCKED</td> 4142<td align="center">Immediate trans.<wbr/> Lens now locked</td> 4143</tr> 4144<tr> 4145<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 4146<td align="center">AF_<wbr/>TRIGGER</td> 4147<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4148<td align="center">Immediate trans.<wbr/> Lens now locked</td> 4149</tr> 4150<tr> 4151<td align="center">FOCUSED_<wbr/>LOCKED</td> 4152<td align="center">AF_<wbr/>TRIGGER</td> 4153<td align="center">FOCUSED_<wbr/>LOCKED</td> 4154<td align="center">No effect</td> 4155</tr> 4156<tr> 4157<td align="center">FOCUSED_<wbr/>LOCKED</td> 4158<td align="center">AF_<wbr/>CANCEL</td> 4159<td align="center">INACTIVE</td> 4160<td align="center">Restart AF scan</td> 4161</tr> 4162<tr> 4163<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4164<td align="center">AF_<wbr/>TRIGGER</td> 4165<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4166<td align="center">No effect</td> 4167</tr> 4168<tr> 4169<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4170<td align="center">AF_<wbr/>CANCEL</td> 4171<td align="center">INACTIVE</td> 4172<td align="center">Restart AF scan</td> 4173</tr> 4174</tbody> 4175</table> 4176<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> 4177<table> 4178<thead> 4179<tr> 4180<th align="center">State</th> 4181<th align="center">Transition Cause</th> 4182<th align="center">New State</th> 4183<th align="center">Notes</th> 4184</tr> 4185</thead> 4186<tbody> 4187<tr> 4188<td align="center">INACTIVE</td> 4189<td align="center">Camera device initiates new scan</td> 4190<td align="center">PASSIVE_<wbr/>SCAN</td> 4191<td align="center">Start AF scan,<wbr/> Lens now moving</td> 4192</tr> 4193<tr> 4194<td align="center">INACTIVE</td> 4195<td align="center">AF_<wbr/>TRIGGER</td> 4196<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4197<td align="center">AF state query,<wbr/> Lens now locked</td> 4198</tr> 4199<tr> 4200<td align="center">PASSIVE_<wbr/>SCAN</td> 4201<td align="center">Camera device completes current scan</td> 4202<td align="center">PASSIVE_<wbr/>FOCUSED</td> 4203<td align="center">End AF scan,<wbr/> Lens now locked</td> 4204</tr> 4205<tr> 4206<td align="center">PASSIVE_<wbr/>SCAN</td> 4207<td align="center">Camera device fails current scan</td> 4208<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 4209<td align="center">End AF scan,<wbr/> Lens now locked</td> 4210</tr> 4211<tr> 4212<td align="center">PASSIVE_<wbr/>SCAN</td> 4213<td align="center">AF_<wbr/>TRIGGER</td> 4214<td align="center">FOCUSED_<wbr/>LOCKED</td> 4215<td align="center">Eventual trans.<wbr/> once focus good,<wbr/> Lens now locked</td> 4216</tr> 4217<tr> 4218<td align="center">PASSIVE_<wbr/>SCAN</td> 4219<td align="center">AF_<wbr/>TRIGGER</td> 4220<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4221<td align="center">Eventual trans.<wbr/> if cannot focus,<wbr/> Lens now locked</td> 4222</tr> 4223<tr> 4224<td align="center">PASSIVE_<wbr/>SCAN</td> 4225<td align="center">AF_<wbr/>CANCEL</td> 4226<td align="center">INACTIVE</td> 4227<td align="center">Reset lens position,<wbr/> Lens now locked</td> 4228</tr> 4229<tr> 4230<td align="center">PASSIVE_<wbr/>FOCUSED</td> 4231<td align="center">Camera device initiates new scan</td> 4232<td align="center">PASSIVE_<wbr/>SCAN</td> 4233<td align="center">Start AF scan,<wbr/> Lens now moving</td> 4234</tr> 4235<tr> 4236<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 4237<td align="center">Camera device initiates new scan</td> 4238<td align="center">PASSIVE_<wbr/>SCAN</td> 4239<td align="center">Start AF scan,<wbr/> Lens now moving</td> 4240</tr> 4241<tr> 4242<td align="center">PASSIVE_<wbr/>FOCUSED</td> 4243<td align="center">AF_<wbr/>TRIGGER</td> 4244<td align="center">FOCUSED_<wbr/>LOCKED</td> 4245<td align="center">Immediate trans.<wbr/> Lens now locked</td> 4246</tr> 4247<tr> 4248<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 4249<td align="center">AF_<wbr/>TRIGGER</td> 4250<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4251<td align="center">Immediate trans.<wbr/> Lens now locked</td> 4252</tr> 4253<tr> 4254<td align="center">FOCUSED_<wbr/>LOCKED</td> 4255<td align="center">AF_<wbr/>TRIGGER</td> 4256<td align="center">FOCUSED_<wbr/>LOCKED</td> 4257<td align="center">No effect</td> 4258</tr> 4259<tr> 4260<td align="center">FOCUSED_<wbr/>LOCKED</td> 4261<td align="center">AF_<wbr/>CANCEL</td> 4262<td align="center">INACTIVE</td> 4263<td align="center">Restart AF scan</td> 4264</tr> 4265<tr> 4266<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4267<td align="center">AF_<wbr/>TRIGGER</td> 4268<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4269<td align="center">No effect</td> 4270</tr> 4271<tr> 4272<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 4273<td align="center">AF_<wbr/>CANCEL</td> 4274<td align="center">INACTIVE</td> 4275<td align="center">Restart AF scan</td> 4276</tr> 4277</tbody> 4278</table> 4279 </td> 4280 </tr> 4281 4282 4283 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4284 <!-- end of entry --> 4285 4286 4287 <tr class="entry" id="dynamic_android.control.afTriggerId"> 4288 <td class="entry_name" rowspan="3"> 4289 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 4290 </td> 4291 <td class="entry_type"> 4292 <span class="entry_type_name">int32</span> 4293 4294 <span class="entry_type_visibility"> [hidden]</span> 4295 4296 4297 </td> <!-- entry_type --> 4298 4299 <td class="entry_description"> 4300 <p>The ID sent with the latest 4301CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 4302 </td> 4303 4304 <td class="entry_units"> 4305 </td> 4306 4307 <td class="entry_range"> 4308 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 4309 </td> 4310 4311 <td class="entry_tags"> 4312 </td> 4313 4314 </tr> 4315 <tr class="entries_header"> 4316 <th class="th_details" colspan="5">Details</th> 4317 </tr> 4318 <tr class="entry_cont"> 4319 <td class="entry_details" colspan="5"> 4320 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 4321received yet by HAL.<wbr/> Always updated even if AF algorithm 4322ignores the trigger</p> 4323 </td> 4324 </tr> 4325 4326 4327 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4328 <!-- end of entry --> 4329 4330 4331 <tr class="entry" id="dynamic_android.control.awbMode"> 4332 <td class="entry_name" rowspan="3"> 4333 android.<wbr/>control.<wbr/>awb<wbr/>Mode 4334 </td> 4335 <td class="entry_type"> 4336 <span class="entry_type_name entry_type_name_enum">byte</span> 4337 4338 <span class="entry_type_visibility"> [public]</span> 4339 4340 <ul class="entry_type_enum"> 4341 <li> 4342 <span class="entry_type_enum_name">OFF</span> 4343 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4344the application-selected color transform matrix 4345(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 4346(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 4347device for manual white balance control.<wbr/></p></span> 4348 </li> 4349 <li> 4350 <span class="entry_type_enum_name">AUTO</span> 4351 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is active; 4352the application's values for android.<wbr/>color<wbr/>Correction.<wbr/>transform 4353and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/></p></span> 4354 </li> 4355 <li> 4356 <span class="entry_type_enum_name">INCANDESCENT</span> 4357 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4358the camera device uses incandescent light as the assumed scene 4359illumination for white balance.<wbr/> While the exact white balance 4360transforms are up to the camera device,<wbr/> they will approximately 4361match the CIE standard illuminant A.<wbr/></p></span> 4362 </li> 4363 <li> 4364 <span class="entry_type_enum_name">FLUORESCENT</span> 4365 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4366the camera device uses fluorescent light as the assumed scene 4367illumination for white balance.<wbr/> While the exact white balance 4368transforms are up to the camera device,<wbr/> they will approximately 4369match the CIE standard illuminant F2.<wbr/></p></span> 4370 </li> 4371 <li> 4372 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 4373 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4374the camera device uses warm fluorescent light as the assumed scene 4375illumination for white balance.<wbr/> While the exact white balance 4376transforms are up to the camera device,<wbr/> they will approximately 4377match the CIE standard illuminant F4.<wbr/></p></span> 4378 </li> 4379 <li> 4380 <span class="entry_type_enum_name">DAYLIGHT</span> 4381 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4382the camera device uses daylight light as the assumed scene 4383illumination for white balance.<wbr/> While the exact white balance 4384transforms are up to the camera device,<wbr/> they will approximately 4385match the CIE standard illuminant D65.<wbr/></p></span> 4386 </li> 4387 <li> 4388 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 4389 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4390the camera device uses cloudy daylight light as the assumed scene 4391illumination for white balance.<wbr/></p></span> 4392 </li> 4393 <li> 4394 <span class="entry_type_enum_name">TWILIGHT</span> 4395 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4396the camera device uses twilight light as the assumed scene 4397illumination for white balance.<wbr/></p></span> 4398 </li> 4399 <li> 4400 <span class="entry_type_enum_name">SHADE</span> 4401 <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; 4402the camera device uses shade light as the assumed scene 4403illumination for white balance.<wbr/></p></span> 4404 </li> 4405 </ul> 4406 4407 </td> <!-- entry_type --> 4408 4409 <td class="entry_description"> 4410 <p>Whether AWB is currently setting the color 4411transform fields,<wbr/> and what its illumination target 4412is</p> 4413 </td> 4414 4415 <td class="entry_units"> 4416 </td> 4417 4418 <td class="entry_range"> 4419 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 4420 </td> 4421 4422 <td class="entry_tags"> 4423 <ul class="entry_tags"> 4424 <li><a href="#tag_BC">BC</a></li> 4425 <li><a href="#tag_AWB">AWB</a></li> 4426 </ul> 4427 </td> 4428 4429 </tr> 4430 <tr class="entries_header"> 4431 <th class="th_details" colspan="5">Details</th> 4432 </tr> 4433 <tr class="entry_cont"> 4434 <td class="entry_details" colspan="5"> 4435 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 4436<p>When set to the ON mode,<wbr/> the camera device's auto white balance 4437routine is enabled,<wbr/> overriding the application's selected 4438<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 4439<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 4440<p>When set to the OFF mode,<wbr/> the camera device's auto white balance 4441routine is disabled.<wbr/> The applicantion manually controls the white 4442balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> android.<wbr/>color<wbr/>Correction.<wbr/>gains 4443and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 4444<p>When set to any other modes,<wbr/> the camera device's auto white balance 4445routine is disabled.<wbr/> The camera device uses each particular illumination 4446target for white balance adjustment.<wbr/></p> 4447 </td> 4448 </tr> 4449 4450 4451 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4452 <!-- end of entry --> 4453 4454 4455 <tr class="entry" id="dynamic_android.control.awbRegions"> 4456 <td class="entry_name" rowspan="3"> 4457 android.<wbr/>control.<wbr/>awb<wbr/>Regions 4458 </td> 4459 <td class="entry_type"> 4460 <span class="entry_type_name">int32</span> 4461 <span class="entry_type_container">x</span> 4462 4463 <span class="entry_type_array"> 4464 5 x area_count 4465 </span> 4466 <span class="entry_type_visibility"> [public]</span> 4467 4468 4469 </td> <!-- entry_type --> 4470 4471 <td class="entry_description"> 4472 <p>List of areas to use for illuminant 4473estimation.<wbr/></p> 4474 </td> 4475 4476 <td class="entry_units"> 4477 </td> 4478 4479 <td class="entry_range"> 4480 <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[1]</code></p> 4481 </td> 4482 4483 <td class="entry_tags"> 4484 <ul class="entry_tags"> 4485 <li><a href="#tag_BC">BC</a></li> 4486 </ul> 4487 </td> 4488 4489 </tr> 4490 <tr class="entries_header"> 4491 <th class="th_details" colspan="5">Details</th> 4492 </tr> 4493 <tr class="entry_cont"> 4494 <td class="entry_details" colspan="5"> 4495 <p>Only used in AUTO mode.<wbr/></p> 4496<p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> 4497xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the 4498specified coordinates.<wbr/></p> 4499<p>The coordinate system is based on the active pixel array,<wbr/> 4500with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 4501(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 4502<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 4503bottom-right pixel in the active pixel array.<wbr/> The weight 4504should be nonnegative.<wbr/></p> 4505<p>If all regions have 0 weight,<wbr/> then no specific metering area 4506needs to be used by the HAL.<wbr/> If the metering region is 4507outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the HAL 4508should ignore the sections outside the region and output the 4509used sections in the frame metadata.<wbr/></p> 4510 </td> 4511 </tr> 4512 4513 4514 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4515 <!-- end of entry --> 4516 4517 4518 <tr class="entry" id="dynamic_android.control.awbState"> 4519 <td class="entry_name" rowspan="3"> 4520 android.<wbr/>control.<wbr/>awb<wbr/>State 4521 </td> 4522 <td class="entry_type"> 4523 <span class="entry_type_name entry_type_name_enum">byte</span> 4524 4525 <span class="entry_type_visibility"> [public]</span> 4526 4527 <ul class="entry_type_enum"> 4528 <li> 4529 <span class="entry_type_enum_name">INACTIVE</span> 4530 <span class="entry_type_enum_notes"><p>AWB is not in auto mode.<wbr/> When a camera device is opened,<wbr/> it 4531starts in this state.<wbr/></p></span> 4532 </li> 4533 <li> 4534 <span class="entry_type_enum_name">SEARCHING</span> 4535 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 4536values for the current scene.<wbr/></p></span> 4537 </li> 4538 <li> 4539 <span class="entry_type_enum_name">CONVERGED</span> 4540 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 4541current scene.<wbr/></p></span> 4542 </li> 4543 <li> 4544 <span class="entry_type_enum_name">LOCKED</span> 4545 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 4546 </li> 4547 </ul> 4548 4549 </td> <!-- entry_type --> 4550 4551 <td class="entry_description"> 4552 <p>Current state of AWB algorithm</p> 4553 </td> 4554 4555 <td class="entry_units"> 4556 </td> 4557 4558 <td class="entry_range"> 4559 </td> 4560 4561 <td class="entry_tags"> 4562 </td> 4563 4564 </tr> 4565 <tr class="entries_header"> 4566 <th class="th_details" colspan="5">Details</th> 4567 </tr> 4568 <tr class="entry_cont"> 4569 <td class="entry_details" colspan="5"> 4570 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 4571resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 4572or <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 4573the algorithm states to INACTIVE.<wbr/></p> 4574<p>The camera device can do several state transitions between two results,<wbr/> if it is 4575allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 4576a result.<wbr/></p> 4577<p>The state in the result is the state for this image (in sync with this image): if 4578AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 4579be good to use.<wbr/></p> 4580<p>Below are state transition tables for different AWB modes.<wbr/></p> 4581<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 4582<table> 4583<thead> 4584<tr> 4585<th align="center">State</th> 4586<th align="center">Transition Cause</th> 4587<th align="center">New State</th> 4588<th align="center">Notes</th> 4589</tr> 4590</thead> 4591<tbody> 4592<tr> 4593<td align="center">INACTIVE</td> 4594<td align="center"></td> 4595<td align="center">INACTIVE</td> 4596<td align="center">Camera device auto white balance algorithm is disabled</td> 4597</tr> 4598</tbody> 4599</table> 4600<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 4601<table> 4602<thead> 4603<tr> 4604<th align="center">State</th> 4605<th align="center">Transition Cause</th> 4606<th align="center">New State</th> 4607<th align="center">Notes</th> 4608</tr> 4609</thead> 4610<tbody> 4611<tr> 4612<td align="center">INACTIVE</td> 4613<td align="center">Camera device initiates AWB scan</td> 4614<td align="center">SEARCHING</td> 4615<td align="center">Values changing</td> 4616</tr> 4617<tr> 4618<td align="center">INACTIVE</td> 4619<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 4620<td align="center">LOCKED</td> 4621<td align="center">Values locked</td> 4622</tr> 4623<tr> 4624<td align="center">SEARCHING</td> 4625<td align="center">Camera device finishes AWB scan</td> 4626<td align="center">CONVERGED</td> 4627<td align="center">Good values,<wbr/> not changing</td> 4628</tr> 4629<tr> 4630<td align="center">SEARCHING</td> 4631<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 4632<td align="center">LOCKED</td> 4633<td align="center">Values locked</td> 4634</tr> 4635<tr> 4636<td align="center">CONVERGED</td> 4637<td align="center">Camera device initiates AWB scan</td> 4638<td align="center">SEARCHING</td> 4639<td align="center">Values changing</td> 4640</tr> 4641<tr> 4642<td align="center">CONVERGED</td> 4643<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 4644<td align="center">LOCKED</td> 4645<td align="center">Values locked</td> 4646</tr> 4647<tr> 4648<td align="center">LOCKED</td> 4649<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 4650<td align="center">SEARCHING</td> 4651<td align="center">Values not good after unlock</td> 4652</tr> 4653<tr> 4654<td align="center">LOCKED</td> 4655<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 4656<td align="center">CONVERGED</td> 4657<td align="center">Values good after unlock</td> 4658</tr> 4659</tbody> 4660</table> 4661 </td> 4662 </tr> 4663 4664 4665 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4666 <!-- end of entry --> 4667 4668 4669 <tr class="entry" id="dynamic_android.control.mode"> 4670 <td class="entry_name" rowspan="3"> 4671 android.<wbr/>control.<wbr/>mode 4672 </td> 4673 <td class="entry_type"> 4674 <span class="entry_type_name entry_type_name_enum">byte</span> 4675 4676 <span class="entry_type_visibility"> [public]</span> 4677 4678 <ul class="entry_type_enum"> 4679 <li> 4680 <span class="entry_type_enum_name">OFF</span> 4681 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/> All 3A 4682routines are disabled,<wbr/> no other settings in 4683android.<wbr/>control.<wbr/>* have any effect</p></span> 4684 </li> 4685 <li> 4686 <span class="entry_type_enum_name">AUTO</span> 4687 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/> 4688Manual control of capture parameters is disabled.<wbr/> All 4689controls in android.<wbr/>control.<wbr/>* besides sceneMode take 4690effect</p></span> 4691 </li> 4692 <li> 4693 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 4694 <span class="entry_type_enum_notes"><p>Use specific scene mode.<wbr/> Enabling this disables 4695control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and control.<wbr/>afMode 4696controls; the HAL must ignore those settings while 4697USE_<wbr/>SCENE_<wbr/>MODE is active (except for FACE_<wbr/>PRIORITY 4698scene mode).<wbr/> Other control entries are still active.<wbr/> 4699This setting can only be used if availableSceneModes != 4700UNSUPPORTED</p></span> 4701 </li> 4702 </ul> 4703 4704 </td> <!-- entry_type --> 4705 4706 <td class="entry_description"> 4707 <p>Overall mode of 3A control 4708routines</p> 4709 </td> 4710 4711 <td class="entry_units"> 4712 </td> 4713 4714 <td class="entry_range"> 4715 <p>all must be supported</p> 4716 </td> 4717 4718 <td class="entry_tags"> 4719 <ul class="entry_tags"> 4720 <li><a href="#tag_BC">BC</a></li> 4721 </ul> 4722 </td> 4723 4724 </tr> 4725 <tr class="entries_header"> 4726 <th class="th_details" colspan="5">Details</th> 4727 </tr> 4728 <tr class="entry_cont"> 4729 <td class="entry_details" colspan="5"> 4730 <p>High-level 3A control.<wbr/> When set to OFF,<wbr/> all 3A control 4731by the camera device is disabled.<wbr/> The application must set the fields for 4732capture parameters itself.<wbr/></p> 4733<p>When set to AUTO,<wbr/> the individual algorithm controls in 4734android.<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> 4735<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 4736android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 4737one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 4738as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 4739<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 4740 </td> 4741 </tr> 4742 4743 4744 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4745 <!-- end of entry --> 4746 4747 4748 4749 <!-- end of kind --> 4750 </tbody> 4751 4752 <!-- end of section --> 4753 <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr> 4754 4755 4756 <tr><td colspan="6" class="kind">controls</td></tr> 4757 4758 <thead class="entries_header"> 4759 <tr> 4760 <th class="th_name">Property Name</th> 4761 <th class="th_type">Type</th> 4762 <th class="th_description">Description</th> 4763 <th class="th_units">Units</th> 4764 <th class="th_range">Range</th> 4765 <th class="th_tags">Tags</th> 4766 </tr> 4767 </thead> 4768 4769 <tbody> 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 <tr class="entry" id="controls_android.demosaic.mode"> 4781 <td class="entry_name" rowspan="1"> 4782 android.<wbr/>demosaic.<wbr/>mode 4783 </td> 4784 <td class="entry_type"> 4785 <span class="entry_type_name entry_type_name_enum">byte</span> 4786 4787 <span class="entry_type_visibility"> [system]</span> 4788 4789 <ul class="entry_type_enum"> 4790 <li> 4791 <span class="entry_type_enum_name">FAST</span> 4792 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 4793Bayer RAW output</p></span> 4794 </li> 4795 <li> 4796 <span class="entry_type_enum_name">HIGH_QUALITY</span> 4797 <span class="entry_type_enum_notes"><p>High-quality may reduce output frame 4798rate</p></span> 4799 </li> 4800 </ul> 4801 4802 </td> <!-- entry_type --> 4803 4804 <td class="entry_description"> 4805 <p>Controls the quality of the demosaicing 4806processing</p> 4807 </td> 4808 4809 <td class="entry_units"> 4810 </td> 4811 4812 <td class="entry_range"> 4813 </td> 4814 4815 <td class="entry_tags"> 4816 <ul class="entry_tags"> 4817 <li><a href="#tag_V1">V1</a></li> 4818 </ul> 4819 </td> 4820 4821 </tr> 4822 4823 4824 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4825 <!-- end of entry --> 4826 4827 4828 4829 <!-- end of kind --> 4830 </tbody> 4831 4832 <!-- end of section --> 4833 <tr><td colspan="6" id="section_edge" class="section">edge</td></tr> 4834 4835 4836 <tr><td colspan="6" class="kind">controls</td></tr> 4837 4838 <thead class="entries_header"> 4839 <tr> 4840 <th class="th_name">Property Name</th> 4841 <th class="th_type">Type</th> 4842 <th class="th_description">Description</th> 4843 <th class="th_units">Units</th> 4844 <th class="th_range">Range</th> 4845 <th class="th_tags">Tags</th> 4846 </tr> 4847 </thead> 4848 4849 <tbody> 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 <tr class="entry" id="controls_android.edge.mode"> 4861 <td class="entry_name" rowspan="3"> 4862 android.<wbr/>edge.<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>No edge enhancement is applied</p></span> 4873 </li> 4874 <li> 4875 <span class="entry_type_enum_name">FAST</span> 4876 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor 4877output</p></span> 4878 </li> 4879 <li> 4880 <span class="entry_type_enum_name">HIGH_QUALITY</span> 4881 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high 4882quality</p></span> 4883 </li> 4884 </ul> 4885 4886 </td> <!-- entry_type --> 4887 4888 <td class="entry_description"> 4889 <p>Operation mode for edge 4890enhancement</p> 4891 </td> 4892 4893 <td class="entry_units"> 4894 </td> 4895 4896 <td class="entry_range"> 4897 </td> 4898 4899 <td class="entry_tags"> 4900 </td> 4901 4902 </tr> 4903 <tr class="entries_header"> 4904 <th class="th_details" colspan="5">Details</th> 4905 </tr> 4906 <tr class="entry_cont"> 4907 <td class="entry_details" colspan="5"> 4908 <p>Edge/<wbr/>sharpness/<wbr/>detail enhancement.<wbr/> OFF means no 4909enhancement will be applied by the HAL.<wbr/></p> 4910<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 4911will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 4912camera device will use the highest-quality enhancement algorithms,<wbr/> 4913even if it slows down capture rate.<wbr/> FAST means the camera device will 4914not slow down capture rate when applying edge enhancement.<wbr/></p> 4915 </td> 4916 </tr> 4917 4918 4919 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4920 <!-- end of entry --> 4921 4922 4923 <tr class="entry" id="controls_android.edge.strength"> 4924 <td class="entry_name" rowspan="1"> 4925 android.<wbr/>edge.<wbr/>strength 4926 </td> 4927 <td class="entry_type"> 4928 <span class="entry_type_name">byte</span> 4929 4930 <span class="entry_type_visibility"> [system]</span> 4931 4932 4933 </td> <!-- entry_type --> 4934 4935 <td class="entry_description"> 4936 <p>Control the amount of edge enhancement 4937applied to the images</p> 4938 </td> 4939 4940 <td class="entry_units"> 4941 1-10; 10 is maximum sharpening 4942 </td> 4943 4944 <td class="entry_range"> 4945 </td> 4946 4947 <td class="entry_tags"> 4948 </td> 4949 4950 </tr> 4951 4952 4953 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4954 <!-- end of entry --> 4955 4956 4957 4958 <!-- end of kind --> 4959 </tbody> 4960 <tr><td colspan="6" class="kind">dynamic</td></tr> 4961 4962 <thead class="entries_header"> 4963 <tr> 4964 <th class="th_name">Property Name</th> 4965 <th class="th_type">Type</th> 4966 <th class="th_description">Description</th> 4967 <th class="th_units">Units</th> 4968 <th class="th_range">Range</th> 4969 <th class="th_tags">Tags</th> 4970 </tr> 4971 </thead> 4972 4973 <tbody> 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 <tr class="entry" id="dynamic_android.edge.mode"> 4985 <td class="entry_name" rowspan="3"> 4986 android.<wbr/>edge.<wbr/>mode 4987 </td> 4988 <td class="entry_type"> 4989 <span class="entry_type_name entry_type_name_enum">byte</span> 4990 4991 <span class="entry_type_visibility"> [public]</span> 4992 4993 <ul class="entry_type_enum"> 4994 <li> 4995 <span class="entry_type_enum_name">OFF</span> 4996 <span class="entry_type_enum_notes"><p>No edge enhancement is applied</p></span> 4997 </li> 4998 <li> 4999 <span class="entry_type_enum_name">FAST</span> 5000 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor 5001output</p></span> 5002 </li> 5003 <li> 5004 <span class="entry_type_enum_name">HIGH_QUALITY</span> 5005 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high 5006quality</p></span> 5007 </li> 5008 </ul> 5009 5010 </td> <!-- entry_type --> 5011 5012 <td class="entry_description"> 5013 <p>Operation mode for edge 5014enhancement</p> 5015 </td> 5016 5017 <td class="entry_units"> 5018 </td> 5019 5020 <td class="entry_range"> 5021 </td> 5022 5023 <td class="entry_tags"> 5024 </td> 5025 5026 </tr> 5027 <tr class="entries_header"> 5028 <th class="th_details" colspan="5">Details</th> 5029 </tr> 5030 <tr class="entry_cont"> 5031 <td class="entry_details" colspan="5"> 5032 <p>Edge/<wbr/>sharpness/<wbr/>detail enhancement.<wbr/> OFF means no 5033enhancement will be applied by the HAL.<wbr/></p> 5034<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 5035will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 5036camera device will use the highest-quality enhancement algorithms,<wbr/> 5037even if it slows down capture rate.<wbr/> FAST means the camera device will 5038not slow down capture rate when applying edge enhancement.<wbr/></p> 5039 </td> 5040 </tr> 5041 5042 5043 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5044 <!-- end of entry --> 5045 5046 5047 5048 <!-- end of kind --> 5049 </tbody> 5050 5051 <!-- end of section --> 5052 <tr><td colspan="6" id="section_flash" class="section">flash</td></tr> 5053 5054 5055 <tr><td colspan="6" class="kind">controls</td></tr> 5056 5057 <thead class="entries_header"> 5058 <tr> 5059 <th class="th_name">Property Name</th> 5060 <th class="th_type">Type</th> 5061 <th class="th_description">Description</th> 5062 <th class="th_units">Units</th> 5063 <th class="th_range">Range</th> 5064 <th class="th_tags">Tags</th> 5065 </tr> 5066 </thead> 5067 5068 <tbody> 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 <tr class="entry" id="controls_android.flash.firingPower"> 5080 <td class="entry_name" rowspan="3"> 5081 android.<wbr/>flash.<wbr/>firing<wbr/>Power 5082 </td> 5083 <td class="entry_type"> 5084 <span class="entry_type_name">byte</span> 5085 5086 <span class="entry_type_visibility"> [system]</span> 5087 5088 5089 </td> <!-- entry_type --> 5090 5091 <td class="entry_description"> 5092 <p>Power for flash firing/<wbr/>torch</p> 5093 </td> 5094 5095 <td class="entry_units"> 5096 10 is max power; 0 is no flash.<wbr/> Linear 5097 </td> 5098 5099 <td class="entry_range"> 5100 <p>0 - 10</p> 5101 </td> 5102 5103 <td class="entry_tags"> 5104 <ul class="entry_tags"> 5105 <li><a href="#tag_V1">V1</a></li> 5106 </ul> 5107 </td> 5108 5109 </tr> 5110 <tr class="entries_header"> 5111 <th class="th_details" colspan="5">Details</th> 5112 </tr> 5113 <tr class="entry_cont"> 5114 <td class="entry_details" colspan="5"> 5115 <p>Power for snapshot may use a different scale than 5116for torch mode.<wbr/> Only one entry for torch mode will be 5117used</p> 5118 </td> 5119 </tr> 5120 5121 5122 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5123 <!-- end of entry --> 5124 5125 5126 <tr class="entry" id="controls_android.flash.firingTime"> 5127 <td class="entry_name" rowspan="3"> 5128 android.<wbr/>flash.<wbr/>firing<wbr/>Time 5129 </td> 5130 <td class="entry_type"> 5131 <span class="entry_type_name">int64</span> 5132 5133 <span class="entry_type_visibility"> [system]</span> 5134 5135 5136 </td> <!-- entry_type --> 5137 5138 <td class="entry_description"> 5139 <p>Firing time of flash relative to start of 5140exposure</p> 5141 </td> 5142 5143 <td class="entry_units"> 5144 nanoseconds 5145 </td> 5146 5147 <td class="entry_range"> 5148 <p>0-(exposure time-flash duration)</p> 5149 </td> 5150 5151 <td class="entry_tags"> 5152 <ul class="entry_tags"> 5153 <li><a href="#tag_V1">V1</a></li> 5154 </ul> 5155 </td> 5156 5157 </tr> 5158 <tr class="entries_header"> 5159 <th class="th_details" colspan="5">Details</th> 5160 </tr> 5161 <tr class="entry_cont"> 5162 <td class="entry_details" colspan="5"> 5163 <p>Clamped to (0,<wbr/> exposure time - flash 5164duration).<wbr/></p> 5165 </td> 5166 </tr> 5167 5168 5169 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5170 <!-- end of entry --> 5171 5172 5173 <tr class="entry" id="controls_android.flash.mode"> 5174 <td class="entry_name" rowspan="3"> 5175 android.<wbr/>flash.<wbr/>mode 5176 </td> 5177 <td class="entry_type"> 5178 <span class="entry_type_name entry_type_name_enum">byte</span> 5179 5180 <span class="entry_type_visibility"> [public]</span> 5181 5182 <ul class="entry_type_enum"> 5183 <li> 5184 <span class="entry_type_enum_name">OFF</span> 5185 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 5186 </li> 5187 <li> 5188 <span class="entry_type_enum_name">SINGLE</span> 5189 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 5190for this capture based on <a href="#controls_android.flash.firingPower">android.<wbr/>flash.<wbr/>firing<wbr/>Power</a> and 5191<a href="#controls_android.flash.firingTime">android.<wbr/>flash.<wbr/>firing<wbr/>Time</a>.<wbr/></p></span> 5192 </li> 5193 <li> 5194 <span class="entry_type_enum_name">TORCH</span> 5195 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 5196 </li> 5197 </ul> 5198 5199 </td> <!-- entry_type --> 5200 5201 <td class="entry_description"> 5202 <p>The desired mode for for the camera device's flash control.<wbr/></p> 5203 </td> 5204 5205 <td class="entry_units"> 5206 </td> 5207 5208 <td class="entry_range"> 5209 </td> 5210 5211 <td class="entry_tags"> 5212 <ul class="entry_tags"> 5213 <li><a href="#tag_BC">BC</a></li> 5214 </ul> 5215 </td> 5216 5217 </tr> 5218 <tr class="entries_header"> 5219 <th class="th_details" colspan="5">Details</th> 5220 </tr> 5221 <tr class="entry_cont"> 5222 <td class="entry_details" colspan="5"> 5223 <p>This control is only effective when flash unit is available 5224(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 5225<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/> 5226Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 5227ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 5228<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 5229<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 5230device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 5231control should be used along with AE precapture metering sequence 5232(<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> 5233<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 5234for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 5235<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> 5236 </td> 5237 </tr> 5238 5239 5240 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5241 <!-- end of entry --> 5242 5243 5244 5245 <!-- end of kind --> 5246 </tbody> 5247 <tr><td colspan="6" class="kind">static</td></tr> 5248 5249 <thead class="entries_header"> 5250 <tr> 5251 <th class="th_name">Property Name</th> 5252 <th class="th_type">Type</th> 5253 <th class="th_description">Description</th> 5254 <th class="th_units">Units</th> 5255 <th class="th_range">Range</th> 5256 <th class="th_tags">Tags</th> 5257 </tr> 5258 </thead> 5259 5260 <tbody> 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 <tr class="entry" id="static_android.flash.info.available"> 5274 <td class="entry_name" rowspan="3"> 5275 android.<wbr/>flash.<wbr/>info.<wbr/>available 5276 </td> 5277 <td class="entry_type"> 5278 <span class="entry_type_name entry_type_name_enum">byte</span> 5279 5280 <span class="entry_type_visibility"> [public as boolean]</span> 5281 5282 <ul class="entry_type_enum"> 5283 <li> 5284 <span class="entry_type_enum_name">FALSE</span> 5285 </li> 5286 <li> 5287 <span class="entry_type_enum_name">TRUE</span> 5288 </li> 5289 </ul> 5290 5291 </td> <!-- entry_type --> 5292 5293 <td class="entry_description"> 5294 <p>Whether this camera device has a 5295flash.<wbr/></p> 5296 </td> 5297 5298 <td class="entry_units"> 5299 </td> 5300 5301 <td class="entry_range"> 5302 </td> 5303 5304 <td class="entry_tags"> 5305 <ul class="entry_tags"> 5306 <li><a href="#tag_BC">BC</a></li> 5307 </ul> 5308 </td> 5309 5310 </tr> 5311 <tr class="entries_header"> 5312 <th class="th_details" colspan="5">Details</th> 5313 </tr> 5314 <tr class="entry_cont"> 5315 <td class="entry_details" colspan="5"> 5316 <p>If no flash,<wbr/> none of the flash controls do 5317anything.<wbr/> All other metadata should return 0.<wbr/></p> 5318 </td> 5319 </tr> 5320 5321 5322 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5323 <!-- end of entry --> 5324 5325 5326 <tr class="entry" id="static_android.flash.info.chargeDuration"> 5327 <td class="entry_name" rowspan="3"> 5328 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 5329 </td> 5330 <td class="entry_type"> 5331 <span class="entry_type_name">int64</span> 5332 5333 <span class="entry_type_visibility"> [system]</span> 5334 5335 5336 </td> <!-- entry_type --> 5337 5338 <td class="entry_description"> 5339 <p>Time taken before flash can fire 5340again</p> 5341 </td> 5342 5343 <td class="entry_units"> 5344 nanoseconds 5345 </td> 5346 5347 <td class="entry_range"> 5348 <p>0-1e9</p> 5349 </td> 5350 5351 <td class="entry_tags"> 5352 <ul class="entry_tags"> 5353 <li><a href="#tag_V1">V1</a></li> 5354 </ul> 5355 </td> 5356 5357 </tr> 5358 <tr class="entries_header"> 5359 <th class="th_details" colspan="5">Details</th> 5360 </tr> 5361 <tr class="entry_cont"> 5362 <td class="entry_details" colspan="5"> 5363 <p>1 second too long/<wbr/>too short for recharge? Should 5364this be power-dependent?</p> 5365 </td> 5366 </tr> 5367 5368 5369 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5370 <!-- end of entry --> 5371 5372 5373 5374 5375 5376 <tr class="entry" id="static_android.flash.colorTemperature"> 5377 <td class="entry_name" rowspan="1"> 5378 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 5379 </td> 5380 <td class="entry_type"> 5381 <span class="entry_type_name">byte</span> 5382 5383 <span class="entry_type_visibility"> [system]</span> 5384 5385 5386 </td> <!-- entry_type --> 5387 5388 <td class="entry_description"> 5389 <p>The x,<wbr/>y whitepoint of the 5390flash</p> 5391 </td> 5392 5393 <td class="entry_units"> 5394 pair of floats 5395 </td> 5396 5397 <td class="entry_range"> 5398 <p>0-1 for both</p> 5399 </td> 5400 5401 <td class="entry_tags"> 5402 <ul class="entry_tags"> 5403 <li><a href="#tag_ADV">ADV</a></li> 5404 </ul> 5405 </td> 5406 5407 </tr> 5408 5409 5410 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5411 <!-- end of entry --> 5412 5413 5414 <tr class="entry" id="static_android.flash.maxEnergy"> 5415 <td class="entry_name" rowspan="1"> 5416 android.<wbr/>flash.<wbr/>max<wbr/>Energy 5417 </td> 5418 <td class="entry_type"> 5419 <span class="entry_type_name">byte</span> 5420 5421 <span class="entry_type_visibility"> [system]</span> 5422 5423 5424 </td> <!-- entry_type --> 5425 5426 <td class="entry_description"> 5427 <p>Max energy output of the flash for a full 5428power single flash</p> 5429 </td> 5430 5431 <td class="entry_units"> 5432 lumen-seconds 5433 </td> 5434 5435 <td class="entry_range"> 5436 <p>>= 0</p> 5437 </td> 5438 5439 <td class="entry_tags"> 5440 <ul class="entry_tags"> 5441 <li><a href="#tag_ADV">ADV</a></li> 5442 </ul> 5443 </td> 5444 5445 </tr> 5446 5447 5448 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5449 <!-- end of entry --> 5450 5451 5452 5453 <!-- end of kind --> 5454 </tbody> 5455 <tr><td colspan="6" class="kind">dynamic</td></tr> 5456 5457 <thead class="entries_header"> 5458 <tr> 5459 <th class="th_name">Property Name</th> 5460 <th class="th_type">Type</th> 5461 <th class="th_description">Description</th> 5462 <th class="th_units">Units</th> 5463 <th class="th_range">Range</th> 5464 <th class="th_tags">Tags</th> 5465 </tr> 5466 </thead> 5467 5468 <tbody> 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 <tr class="entry" id="dynamic_android.flash.firingPower"> 5480 <td class="entry_name" rowspan="3"> 5481 android.<wbr/>flash.<wbr/>firing<wbr/>Power 5482 </td> 5483 <td class="entry_type"> 5484 <span class="entry_type_name">byte</span> 5485 5486 <span class="entry_type_visibility"> [system]</span> 5487 5488 5489 </td> <!-- entry_type --> 5490 5491 <td class="entry_description"> 5492 <p>Power for flash firing/<wbr/>torch</p> 5493 </td> 5494 5495 <td class="entry_units"> 5496 10 is max power; 0 is no flash.<wbr/> Linear 5497 </td> 5498 5499 <td class="entry_range"> 5500 <p>0 - 10</p> 5501 </td> 5502 5503 <td class="entry_tags"> 5504 <ul class="entry_tags"> 5505 <li><a href="#tag_V1">V1</a></li> 5506 </ul> 5507 </td> 5508 5509 </tr> 5510 <tr class="entries_header"> 5511 <th class="th_details" colspan="5">Details</th> 5512 </tr> 5513 <tr class="entry_cont"> 5514 <td class="entry_details" colspan="5"> 5515 <p>Power for snapshot may use a different scale than 5516for torch mode.<wbr/> Only one entry for torch mode will be 5517used</p> 5518 </td> 5519 </tr> 5520 5521 5522 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5523 <!-- end of entry --> 5524 5525 5526 <tr class="entry" id="dynamic_android.flash.firingTime"> 5527 <td class="entry_name" rowspan="3"> 5528 android.<wbr/>flash.<wbr/>firing<wbr/>Time 5529 </td> 5530 <td class="entry_type"> 5531 <span class="entry_type_name">int64</span> 5532 5533 <span class="entry_type_visibility"> [system]</span> 5534 5535 5536 </td> <!-- entry_type --> 5537 5538 <td class="entry_description"> 5539 <p>Firing time of flash relative to start of 5540exposure</p> 5541 </td> 5542 5543 <td class="entry_units"> 5544 nanoseconds 5545 </td> 5546 5547 <td class="entry_range"> 5548 <p>0-(exposure time-flash duration)</p> 5549 </td> 5550 5551 <td class="entry_tags"> 5552 <ul class="entry_tags"> 5553 <li><a href="#tag_V1">V1</a></li> 5554 </ul> 5555 </td> 5556 5557 </tr> 5558 <tr class="entries_header"> 5559 <th class="th_details" colspan="5">Details</th> 5560 </tr> 5561 <tr class="entry_cont"> 5562 <td class="entry_details" colspan="5"> 5563 <p>Clamped to (0,<wbr/> exposure time - flash 5564duration).<wbr/></p> 5565 </td> 5566 </tr> 5567 5568 5569 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5570 <!-- end of entry --> 5571 5572 5573 <tr class="entry" id="dynamic_android.flash.mode"> 5574 <td class="entry_name" rowspan="3"> 5575 android.<wbr/>flash.<wbr/>mode 5576 </td> 5577 <td class="entry_type"> 5578 <span class="entry_type_name entry_type_name_enum">byte</span> 5579 5580 <span class="entry_type_visibility"> [public]</span> 5581 5582 <ul class="entry_type_enum"> 5583 <li> 5584 <span class="entry_type_enum_name">OFF</span> 5585 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 5586 </li> 5587 <li> 5588 <span class="entry_type_enum_name">SINGLE</span> 5589 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 5590for this capture based on <a href="#controls_android.flash.firingPower">android.<wbr/>flash.<wbr/>firing<wbr/>Power</a> and 5591<a href="#controls_android.flash.firingTime">android.<wbr/>flash.<wbr/>firing<wbr/>Time</a>.<wbr/></p></span> 5592 </li> 5593 <li> 5594 <span class="entry_type_enum_name">TORCH</span> 5595 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 5596 </li> 5597 </ul> 5598 5599 </td> <!-- entry_type --> 5600 5601 <td class="entry_description"> 5602 <p>The desired mode for for the camera device's flash control.<wbr/></p> 5603 </td> 5604 5605 <td class="entry_units"> 5606 </td> 5607 5608 <td class="entry_range"> 5609 </td> 5610 5611 <td class="entry_tags"> 5612 <ul class="entry_tags"> 5613 <li><a href="#tag_BC">BC</a></li> 5614 </ul> 5615 </td> 5616 5617 </tr> 5618 <tr class="entries_header"> 5619 <th class="th_details" colspan="5">Details</th> 5620 </tr> 5621 <tr class="entry_cont"> 5622 <td class="entry_details" colspan="5"> 5623 <p>This control is only effective when flash unit is available 5624(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 5625<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/> 5626Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 5627ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 5628<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 5629<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 5630device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 5631control should be used along with AE precapture metering sequence 5632(<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> 5633<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 5634for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 5635<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> 5636 </td> 5637 </tr> 5638 5639 5640 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5641 <!-- end of entry --> 5642 5643 5644 <tr class="entry" id="dynamic_android.flash.state"> 5645 <td class="entry_name" rowspan="3"> 5646 android.<wbr/>flash.<wbr/>state 5647 </td> 5648 <td class="entry_type"> 5649 <span class="entry_type_name entry_type_name_enum">byte</span> 5650 5651 <span class="entry_type_visibility"> [public]</span> 5652 5653 <ul class="entry_type_enum"> 5654 <li> 5655 <span class="entry_type_enum_name">UNAVAILABLE</span> 5656 <span class="entry_type_enum_notes"><p>No flash on camera</p></span> 5657 </li> 5658 <li> 5659 <span class="entry_type_enum_name">CHARGING</span> 5660 <span class="entry_type_enum_notes"><p>if <a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is true Flash is 5661charging and cannot be fired</p></span> 5662 </li> 5663 <li> 5664 <span class="entry_type_enum_name">READY</span> 5665 <span class="entry_type_enum_notes"><p>if <a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is true Flash is 5666ready to fire</p></span> 5667 </li> 5668 <li> 5669 <span class="entry_type_enum_name">FIRED</span> 5670 <span class="entry_type_enum_notes"><p>if <a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is true Flash fired 5671for this capture</p></span> 5672 </li> 5673 </ul> 5674 5675 </td> <!-- entry_type --> 5676 5677 <td class="entry_description"> 5678 <p>Current state of the flash 5679unit.<wbr/></p> 5680 </td> 5681 5682 <td class="entry_units"> 5683 </td> 5684 5685 <td class="entry_range"> 5686 </td> 5687 5688 <td class="entry_tags"> 5689 </td> 5690 5691 </tr> 5692 <tr class="entries_header"> 5693 <th class="th_details" colspan="5">Details</th> 5694 </tr> 5695 <tr class="entry_cont"> 5696 <td class="entry_details" colspan="5"> 5697 <p>When the camera device doesn't have flash unit 5698(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/> 5699Other states indicate the current flash status.<wbr/></p> 5700 </td> 5701 </tr> 5702 5703 5704 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5705 <!-- end of entry --> 5706 5707 5708 5709 <!-- end of kind --> 5710 </tbody> 5711 5712 <!-- end of section --> 5713 <tr><td colspan="6" id="section_geometric" class="section">geometric</td></tr> 5714 5715 5716 <tr><td colspan="6" class="kind">controls</td></tr> 5717 5718 <thead class="entries_header"> 5719 <tr> 5720 <th class="th_name">Property Name</th> 5721 <th class="th_type">Type</th> 5722 <th class="th_description">Description</th> 5723 <th class="th_units">Units</th> 5724 <th class="th_range">Range</th> 5725 <th class="th_tags">Tags</th> 5726 </tr> 5727 </thead> 5728 5729 <tbody> 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 <tr class="entry" id="controls_android.geometric.mode"> 5741 <td class="entry_name" rowspan="1"> 5742 android.<wbr/>geometric.<wbr/>mode 5743 </td> 5744 <td class="entry_type"> 5745 <span class="entry_type_name entry_type_name_enum">byte</span> 5746 5747 <span class="entry_type_visibility"> [system]</span> 5748 5749 <ul class="entry_type_enum"> 5750 <li> 5751 <span class="entry_type_enum_name">OFF</span> 5752 <span class="entry_type_enum_notes"><p>No geometric correction is 5753applied</p></span> 5754 </li> 5755 <li> 5756 <span class="entry_type_enum_name">FAST</span> 5757 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to raw 5758bayer output</p></span> 5759 </li> 5760 <li> 5761 <span class="entry_type_enum_name">HIGH_QUALITY</span> 5762 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high 5763quality</p></span> 5764 </li> 5765 </ul> 5766 5767 </td> <!-- entry_type --> 5768 5769 <td class="entry_description"> 5770 <p>Operating mode of geometric 5771correction</p> 5772 </td> 5773 5774 <td class="entry_units"> 5775 </td> 5776 5777 <td class="entry_range"> 5778 </td> 5779 5780 <td class="entry_tags"> 5781 </td> 5782 5783 </tr> 5784 5785 5786 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5787 <!-- end of entry --> 5788 5789 5790 <tr class="entry" id="controls_android.geometric.strength"> 5791 <td class="entry_name" rowspan="1"> 5792 android.<wbr/>geometric.<wbr/>strength 5793 </td> 5794 <td class="entry_type"> 5795 <span class="entry_type_name">byte</span> 5796 5797 <span class="entry_type_visibility"> [system]</span> 5798 5799 5800 </td> <!-- entry_type --> 5801 5802 <td class="entry_description"> 5803 <p>Control the amount of shading correction 5804applied to the images</p> 5805 </td> 5806 5807 <td class="entry_units"> 5808 unitless: 1-10; 10 is full shading 5809 compensation 5810 </td> 5811 5812 <td class="entry_range"> 5813 </td> 5814 5815 <td class="entry_tags"> 5816 <ul class="entry_tags"> 5817 <li><a href="#tag_ADV">ADV</a></li> 5818 </ul> 5819 </td> 5820 5821 </tr> 5822 5823 5824 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5825 <!-- end of entry --> 5826 5827 5828 5829 <!-- end of kind --> 5830 </tbody> 5831 5832 <!-- end of section --> 5833 <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr> 5834 5835 5836 <tr><td colspan="6" class="kind">controls</td></tr> 5837 5838 <thead class="entries_header"> 5839 <tr> 5840 <th class="th_name">Property Name</th> 5841 <th class="th_type">Type</th> 5842 <th class="th_description">Description</th> 5843 <th class="th_units">Units</th> 5844 <th class="th_range">Range</th> 5845 <th class="th_tags">Tags</th> 5846 </tr> 5847 </thead> 5848 5849 <tbody> 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 <tr class="entry" id="controls_android.hotPixel.mode"> 5861 <td class="entry_name" rowspan="1"> 5862 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 5863 </td> 5864 <td class="entry_type"> 5865 <span class="entry_type_name entry_type_name_enum">byte</span> 5866 5867 <span class="entry_type_visibility"> [system]</span> 5868 5869 <ul class="entry_type_enum"> 5870 <li> 5871 <span class="entry_type_enum_name">OFF</span> 5872 <span class="entry_type_enum_notes"><p>No hot pixel correction can be 5873applied</p></span> 5874 </li> 5875 <li> 5876 <span class="entry_type_enum_name">FAST</span> 5877 <span class="entry_type_enum_notes"><p>Frame rate must not be reduced compared to raw 5878Bayer output</p></span> 5879 </li> 5880 <li> 5881 <span class="entry_type_enum_name">HIGH_QUALITY</span> 5882 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high 5883quality</p></span> 5884 </li> 5885 </ul> 5886 5887 </td> <!-- entry_type --> 5888 5889 <td class="entry_description"> 5890 <p>Set operational mode for hot pixel 5891correction</p> 5892 </td> 5893 5894 <td class="entry_units"> 5895 </td> 5896 5897 <td class="entry_range"> 5898 </td> 5899 5900 <td class="entry_tags"> 5901 <ul class="entry_tags"> 5902 <li><a href="#tag_V1">V1</a></li> 5903 </ul> 5904 </td> 5905 5906 </tr> 5907 5908 5909 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5910 <!-- end of entry --> 5911 5912 5913 5914 <!-- end of kind --> 5915 </tbody> 5916 <tr><td colspan="6" class="kind">static</td></tr> 5917 5918 <thead class="entries_header"> 5919 <tr> 5920 <th class="th_name">Property Name</th> 5921 <th class="th_type">Type</th> 5922 <th class="th_description">Description</th> 5923 <th class="th_units">Units</th> 5924 <th class="th_range">Range</th> 5925 <th class="th_tags">Tags</th> 5926 </tr> 5927 </thead> 5928 5929 <tbody> 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 <tr class="entry" id="static_android.hotPixel.info.map"> 5943 <td class="entry_name" rowspan="1"> 5944 android.<wbr/>hot<wbr/>Pixel.<wbr/>info.<wbr/>map 5945 </td> 5946 <td class="entry_type"> 5947 <span class="entry_type_name">int32</span> 5948 <span class="entry_type_container">x</span> 5949 5950 <span class="entry_type_array"> 5951 2 x n 5952 </span> 5953 <span class="entry_type_visibility"> [system]</span> 5954 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 5955 5956 5957 </td> <!-- entry_type --> 5958 5959 <td class="entry_description"> 5960 <p>Location of hot/<wbr/>defective pixels on 5961sensor</p> 5962 </td> 5963 5964 <td class="entry_units"> 5965 </td> 5966 5967 <td class="entry_range"> 5968 </td> 5969 5970 <td class="entry_tags"> 5971 <ul class="entry_tags"> 5972 <li><a href="#tag_ADV">ADV</a></li> 5973 </ul> 5974 </td> 5975 5976 </tr> 5977 5978 5979 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5980 <!-- end of entry --> 5981 5982 5983 5984 5985 5986 5987 <!-- end of kind --> 5988 </tbody> 5989 <tr><td colspan="6" class="kind">dynamic</td></tr> 5990 5991 <thead class="entries_header"> 5992 <tr> 5993 <th class="th_name">Property Name</th> 5994 <th class="th_type">Type</th> 5995 <th class="th_description">Description</th> 5996 <th class="th_units">Units</th> 5997 <th class="th_range">Range</th> 5998 <th class="th_tags">Tags</th> 5999 </tr> 6000 </thead> 6001 6002 <tbody> 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 <tr class="entry" id="dynamic_android.hotPixel.mode"> 6014 <td class="entry_name" rowspan="1"> 6015 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 6016 </td> 6017 <td class="entry_type"> 6018 <span class="entry_type_name entry_type_name_enum">byte</span> 6019 6020 <span class="entry_type_visibility"> [system]</span> 6021 6022 <ul class="entry_type_enum"> 6023 <li> 6024 <span class="entry_type_enum_name">OFF</span> 6025 <span class="entry_type_enum_notes"><p>No hot pixel correction can be 6026applied</p></span> 6027 </li> 6028 <li> 6029 <span class="entry_type_enum_name">FAST</span> 6030 <span class="entry_type_enum_notes"><p>Frame rate must not be reduced compared to raw 6031Bayer output</p></span> 6032 </li> 6033 <li> 6034 <span class="entry_type_enum_name">HIGH_QUALITY</span> 6035 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high 6036quality</p></span> 6037 </li> 6038 </ul> 6039 6040 </td> <!-- entry_type --> 6041 6042 <td class="entry_description"> 6043 <p>Set operational mode for hot pixel 6044correction</p> 6045 </td> 6046 6047 <td class="entry_units"> 6048 </td> 6049 6050 <td class="entry_range"> 6051 </td> 6052 6053 <td class="entry_tags"> 6054 <ul class="entry_tags"> 6055 <li><a href="#tag_V1">V1</a></li> 6056 </ul> 6057 </td> 6058 6059 </tr> 6060 6061 6062 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6063 <!-- end of entry --> 6064 6065 6066 6067 <!-- end of kind --> 6068 </tbody> 6069 6070 <!-- end of section --> 6071 <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr> 6072 6073 6074 <tr><td colspan="6" class="kind">controls</td></tr> 6075 6076 <thead class="entries_header"> 6077 <tr> 6078 <th class="th_name">Property Name</th> 6079 <th class="th_type">Type</th> 6080 <th class="th_description">Description</th> 6081 <th class="th_units">Units</th> 6082 <th class="th_range">Range</th> 6083 <th class="th_tags">Tags</th> 6084 </tr> 6085 </thead> 6086 6087 <tbody> 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 6099 <td class="entry_name" rowspan="1"> 6100 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 6101 </td> 6102 <td class="entry_type"> 6103 <span class="entry_type_name">double</span> 6104 <span class="entry_type_container">x</span> 6105 6106 <span class="entry_type_array"> 6107 3 6108 </span> 6109 <span class="entry_type_visibility"> [public]</span> 6110 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 6111 6112 6113 </td> <!-- entry_type --> 6114 6115 <td class="entry_description"> 6116 <p>GPS coordinates to include in output JPEG 6117EXIF</p> 6118 </td> 6119 6120 <td class="entry_units"> 6121 </td> 6122 6123 <td class="entry_range"> 6124 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 6125 </td> 6126 6127 <td class="entry_tags"> 6128 <ul class="entry_tags"> 6129 <li><a href="#tag_BC">BC</a></li> 6130 </ul> 6131 </td> 6132 6133 </tr> 6134 6135 6136 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6137 <!-- end of entry --> 6138 6139 6140 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 6141 <td class="entry_name" rowspan="1"> 6142 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 6143 </td> 6144 <td class="entry_type"> 6145 <span class="entry_type_name">byte</span> 6146 6147 <span class="entry_type_visibility"> [public as string]</span> 6148 6149 6150 </td> <!-- entry_type --> 6151 6152 <td class="entry_description"> 6153 <p>32 characters describing GPS algorithm to 6154include in EXIF</p> 6155 </td> 6156 6157 <td class="entry_units"> 6158 UTF-8 null-terminated string 6159 </td> 6160 6161 <td class="entry_range"> 6162 </td> 6163 6164 <td class="entry_tags"> 6165 <ul class="entry_tags"> 6166 <li><a href="#tag_BC">BC</a></li> 6167 </ul> 6168 </td> 6169 6170 </tr> 6171 6172 6173 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6174 <!-- end of entry --> 6175 6176 6177 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 6178 <td class="entry_name" rowspan="1"> 6179 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 6180 </td> 6181 <td class="entry_type"> 6182 <span class="entry_type_name">int64</span> 6183 6184 <span class="entry_type_visibility"> [public]</span> 6185 6186 6187 </td> <!-- entry_type --> 6188 6189 <td class="entry_description"> 6190 <p>Time GPS fix was made to include in 6191EXIF</p> 6192 </td> 6193 6194 <td class="entry_units"> 6195 UTC in seconds since January 1,<wbr/> 1970 6196 </td> 6197 6198 <td class="entry_range"> 6199 </td> 6200 6201 <td class="entry_tags"> 6202 <ul class="entry_tags"> 6203 <li><a href="#tag_BC">BC</a></li> 6204 </ul> 6205 </td> 6206 6207 </tr> 6208 6209 6210 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6211 <!-- end of entry --> 6212 6213 6214 <tr class="entry" id="controls_android.jpeg.orientation"> 6215 <td class="entry_name" rowspan="1"> 6216 android.<wbr/>jpeg.<wbr/>orientation 6217 </td> 6218 <td class="entry_type"> 6219 <span class="entry_type_name">int32</span> 6220 6221 <span class="entry_type_visibility"> [public]</span> 6222 6223 6224 </td> <!-- entry_type --> 6225 6226 <td class="entry_description"> 6227 <p>Orientation of JPEG image to 6228write</p> 6229 </td> 6230 6231 <td class="entry_units"> 6232 Degrees in multiples of 90 6233 </td> 6234 6235 <td class="entry_range"> 6236 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 6237 </td> 6238 6239 <td class="entry_tags"> 6240 <ul class="entry_tags"> 6241 <li><a href="#tag_BC">BC</a></li> 6242 </ul> 6243 </td> 6244 6245 </tr> 6246 6247 6248 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6249 <!-- end of entry --> 6250 6251 6252 <tr class="entry" id="controls_android.jpeg.quality"> 6253 <td class="entry_name" rowspan="3"> 6254 android.<wbr/>jpeg.<wbr/>quality 6255 </td> 6256 <td class="entry_type"> 6257 <span class="entry_type_name">byte</span> 6258 6259 <span class="entry_type_visibility"> [public]</span> 6260 6261 6262 </td> <!-- entry_type --> 6263 6264 <td class="entry_description"> 6265 <p>Compression quality of the final JPEG 6266image</p> 6267 </td> 6268 6269 <td class="entry_units"> 6270 </td> 6271 6272 <td class="entry_range"> 6273 <p>1-100; larger is higher quality</p> 6274 </td> 6275 6276 <td class="entry_tags"> 6277 <ul class="entry_tags"> 6278 <li><a href="#tag_BC">BC</a></li> 6279 </ul> 6280 </td> 6281 6282 </tr> 6283 <tr class="entries_header"> 6284 <th class="th_details" colspan="5">Details</th> 6285 </tr> 6286 <tr class="entry_cont"> 6287 <td class="entry_details" colspan="5"> 6288 <p>85-95 is typical usage range</p> 6289 </td> 6290 </tr> 6291 6292 6293 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6294 <!-- end of entry --> 6295 6296 6297 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 6298 <td class="entry_name" rowspan="1"> 6299 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 6300 </td> 6301 <td class="entry_type"> 6302 <span class="entry_type_name">byte</span> 6303 6304 <span class="entry_type_visibility"> [public]</span> 6305 6306 6307 </td> <!-- entry_type --> 6308 6309 <td class="entry_description"> 6310 <p>Compression quality of JPEG 6311thumbnail</p> 6312 </td> 6313 6314 <td class="entry_units"> 6315 </td> 6316 6317 <td class="entry_range"> 6318 <p>1-100; larger is higher quality</p> 6319 </td> 6320 6321 <td class="entry_tags"> 6322 <ul class="entry_tags"> 6323 <li><a href="#tag_BC">BC</a></li> 6324 </ul> 6325 </td> 6326 6327 </tr> 6328 6329 6330 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6331 <!-- end of entry --> 6332 6333 6334 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 6335 <td class="entry_name" rowspan="3"> 6336 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 6337 </td> 6338 <td class="entry_type"> 6339 <span class="entry_type_name">int32</span> 6340 <span class="entry_type_container">x</span> 6341 6342 <span class="entry_type_array"> 6343 2 6344 </span> 6345 <span class="entry_type_visibility"> [public as size]</span> 6346 6347 6348 </td> <!-- entry_type --> 6349 6350 <td class="entry_description"> 6351 <p>Resolution of embedded JPEG thumbnail</p> 6352 </td> 6353 6354 <td class="entry_units"> 6355 </td> 6356 6357 <td class="entry_range"> 6358 <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> 6359 </td> 6360 6361 <td class="entry_tags"> 6362 <ul class="entry_tags"> 6363 <li><a href="#tag_BC">BC</a></li> 6364 </ul> 6365 </td> 6366 6367 </tr> 6368 <tr class="entries_header"> 6369 <th class="th_details" colspan="5">Details</th> 6370 </tr> 6371 <tr class="entry_cont"> 6372 <td class="entry_details" colspan="5"> 6373 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 6374but the captured JPEG will still be a valid image.<wbr/></p> 6375<p>When a jpeg image capture is issued,<wbr/> the thumbnail size selected should have 6376the same aspect ratio as the jpeg image.<wbr/></p> 6377 </td> 6378 </tr> 6379 6380 6381 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6382 <!-- end of entry --> 6383 6384 6385 6386 <!-- end of kind --> 6387 </tbody> 6388 <tr><td colspan="6" class="kind">static</td></tr> 6389 6390 <thead class="entries_header"> 6391 <tr> 6392 <th class="th_name">Property Name</th> 6393 <th class="th_type">Type</th> 6394 <th class="th_description">Description</th> 6395 <th class="th_units">Units</th> 6396 <th class="th_range">Range</th> 6397 <th class="th_tags">Tags</th> 6398 </tr> 6399 </thead> 6400 6401 <tbody> 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 6413 <td class="entry_name" rowspan="3"> 6414 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 6415 </td> 6416 <td class="entry_type"> 6417 <span class="entry_type_name">int32</span> 6418 <span class="entry_type_container">x</span> 6419 6420 <span class="entry_type_array"> 6421 2 x n 6422 </span> 6423 <span class="entry_type_visibility"> [public as size]</span> 6424 6425 6426 </td> <!-- entry_type --> 6427 6428 <td class="entry_description"> 6429 <p>Supported resolutions for the JPEG thumbnail</p> 6430 </td> 6431 6432 <td class="entry_units"> 6433 </td> 6434 6435 <td class="entry_range"> 6436 <p>Will include at least one valid resolution,<wbr/> plus 6437(0,<wbr/>0) for no thumbnail generation,<wbr/> and each size will be distinct.<wbr/></p> 6438 </td> 6439 6440 <td class="entry_tags"> 6441 <ul class="entry_tags"> 6442 <li><a href="#tag_BC">BC</a></li> 6443 </ul> 6444 </td> 6445 6446 </tr> 6447 <tr class="entries_header"> 6448 <th class="th_details" colspan="5">Details</th> 6449 </tr> 6450 <tr class="entry_cont"> 6451 <td class="entry_details" colspan="5"> 6452 <p>Below condiditions will be satisfied for this size list:</p> 6453<ul> 6454<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 6455If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 6456<li>The aspect ratio of the largest thumbnail size will be same as the 6457aspect ratio of largest size in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/> 6458The largest size is defined as the size that has the largest pixel area 6459in a given size list.<wbr/></li> 6460<li>Each size in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> will have at least 6461one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 6462and vice versa.<wbr/></li> 6463<li>All non (0,<wbr/> 0) sizes will have non-zero widths and heights.<wbr/></li> 6464</ul> 6465 </td> 6466 </tr> 6467 6468 6469 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6470 <!-- end of entry --> 6471 6472 6473 <tr class="entry" id="static_android.jpeg.maxSize"> 6474 <td class="entry_name" rowspan="3"> 6475 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 6476 </td> 6477 <td class="entry_type"> 6478 <span class="entry_type_name">int32</span> 6479 6480 <span class="entry_type_visibility"> [system]</span> 6481 6482 6483 </td> <!-- entry_type --> 6484 6485 <td class="entry_description"> 6486 <p>Maximum size in bytes for the compressed 6487JPEG buffer</p> 6488 </td> 6489 6490 <td class="entry_units"> 6491 </td> 6492 6493 <td class="entry_range"> 6494 <p>Must be large enough to fit any JPEG produced by 6495the camera</p> 6496 </td> 6497 6498 <td class="entry_tags"> 6499 </td> 6500 6501 </tr> 6502 <tr class="entries_header"> 6503 <th class="th_details" colspan="5">Details</th> 6504 </tr> 6505 <tr class="entry_cont"> 6506 <td class="entry_details" colspan="5"> 6507 <p>This is used for sizing the gralloc buffers for 6508JPEG</p> 6509 </td> 6510 </tr> 6511 6512 6513 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6514 <!-- end of entry --> 6515 6516 6517 6518 <!-- end of kind --> 6519 </tbody> 6520 <tr><td colspan="6" class="kind">dynamic</td></tr> 6521 6522 <thead class="entries_header"> 6523 <tr> 6524 <th class="th_name">Property Name</th> 6525 <th class="th_type">Type</th> 6526 <th class="th_description">Description</th> 6527 <th class="th_units">Units</th> 6528 <th class="th_range">Range</th> 6529 <th class="th_tags">Tags</th> 6530 </tr> 6531 </thead> 6532 6533 <tbody> 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 6545 <td class="entry_name" rowspan="1"> 6546 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 6547 </td> 6548 <td class="entry_type"> 6549 <span class="entry_type_name">double</span> 6550 <span class="entry_type_container">x</span> 6551 6552 <span class="entry_type_array"> 6553 3 6554 </span> 6555 <span class="entry_type_visibility"> [public]</span> 6556 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 6557 6558 6559 </td> <!-- entry_type --> 6560 6561 <td class="entry_description"> 6562 <p>GPS coordinates to include in output JPEG 6563EXIF</p> 6564 </td> 6565 6566 <td class="entry_units"> 6567 </td> 6568 6569 <td class="entry_range"> 6570 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 6571 </td> 6572 6573 <td class="entry_tags"> 6574 <ul class="entry_tags"> 6575 <li><a href="#tag_BC">BC</a></li> 6576 </ul> 6577 </td> 6578 6579 </tr> 6580 6581 6582 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6583 <!-- end of entry --> 6584 6585 6586 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 6587 <td class="entry_name" rowspan="1"> 6588 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 6589 </td> 6590 <td class="entry_type"> 6591 <span class="entry_type_name">byte</span> 6592 6593 <span class="entry_type_visibility"> [public as string]</span> 6594 6595 6596 </td> <!-- entry_type --> 6597 6598 <td class="entry_description"> 6599 <p>32 characters describing GPS algorithm to 6600include in EXIF</p> 6601 </td> 6602 6603 <td class="entry_units"> 6604 UTF-8 null-terminated string 6605 </td> 6606 6607 <td class="entry_range"> 6608 </td> 6609 6610 <td class="entry_tags"> 6611 <ul class="entry_tags"> 6612 <li><a href="#tag_BC">BC</a></li> 6613 </ul> 6614 </td> 6615 6616 </tr> 6617 6618 6619 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6620 <!-- end of entry --> 6621 6622 6623 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 6624 <td class="entry_name" rowspan="1"> 6625 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 6626 </td> 6627 <td class="entry_type"> 6628 <span class="entry_type_name">int64</span> 6629 6630 <span class="entry_type_visibility"> [public]</span> 6631 6632 6633 </td> <!-- entry_type --> 6634 6635 <td class="entry_description"> 6636 <p>Time GPS fix was made to include in 6637EXIF</p> 6638 </td> 6639 6640 <td class="entry_units"> 6641 UTC in seconds since January 1,<wbr/> 1970 6642 </td> 6643 6644 <td class="entry_range"> 6645 </td> 6646 6647 <td class="entry_tags"> 6648 <ul class="entry_tags"> 6649 <li><a href="#tag_BC">BC</a></li> 6650 </ul> 6651 </td> 6652 6653 </tr> 6654 6655 6656 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6657 <!-- end of entry --> 6658 6659 6660 <tr class="entry" id="dynamic_android.jpeg.orientation"> 6661 <td class="entry_name" rowspan="1"> 6662 android.<wbr/>jpeg.<wbr/>orientation 6663 </td> 6664 <td class="entry_type"> 6665 <span class="entry_type_name">int32</span> 6666 6667 <span class="entry_type_visibility"> [public]</span> 6668 6669 6670 </td> <!-- entry_type --> 6671 6672 <td class="entry_description"> 6673 <p>Orientation of JPEG image to 6674write</p> 6675 </td> 6676 6677 <td class="entry_units"> 6678 Degrees in multiples of 90 6679 </td> 6680 6681 <td class="entry_range"> 6682 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 6683 </td> 6684 6685 <td class="entry_tags"> 6686 <ul class="entry_tags"> 6687 <li><a href="#tag_BC">BC</a></li> 6688 </ul> 6689 </td> 6690 6691 </tr> 6692 6693 6694 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6695 <!-- end of entry --> 6696 6697 6698 <tr class="entry" id="dynamic_android.jpeg.quality"> 6699 <td class="entry_name" rowspan="3"> 6700 android.<wbr/>jpeg.<wbr/>quality 6701 </td> 6702 <td class="entry_type"> 6703 <span class="entry_type_name">byte</span> 6704 6705 <span class="entry_type_visibility"> [public]</span> 6706 6707 6708 </td> <!-- entry_type --> 6709 6710 <td class="entry_description"> 6711 <p>Compression quality of the final JPEG 6712image</p> 6713 </td> 6714 6715 <td class="entry_units"> 6716 </td> 6717 6718 <td class="entry_range"> 6719 <p>1-100; larger is higher quality</p> 6720 </td> 6721 6722 <td class="entry_tags"> 6723 <ul class="entry_tags"> 6724 <li><a href="#tag_BC">BC</a></li> 6725 </ul> 6726 </td> 6727 6728 </tr> 6729 <tr class="entries_header"> 6730 <th class="th_details" colspan="5">Details</th> 6731 </tr> 6732 <tr class="entry_cont"> 6733 <td class="entry_details" colspan="5"> 6734 <p>85-95 is typical usage range</p> 6735 </td> 6736 </tr> 6737 6738 6739 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6740 <!-- end of entry --> 6741 6742 6743 <tr class="entry" id="dynamic_android.jpeg.size"> 6744 <td class="entry_name" rowspan="3"> 6745 android.<wbr/>jpeg.<wbr/>size 6746 </td> 6747 <td class="entry_type"> 6748 <span class="entry_type_name">int32</span> 6749 6750 <span class="entry_type_visibility"> [system]</span> 6751 6752 6753 </td> <!-- entry_type --> 6754 6755 <td class="entry_description"> 6756 <p>The size of the compressed JPEG image,<wbr/> in 6757bytes</p> 6758 </td> 6759 6760 <td class="entry_units"> 6761 </td> 6762 6763 <td class="entry_range"> 6764 <p>>= 0</p> 6765 </td> 6766 6767 <td class="entry_tags"> 6768 </td> 6769 6770 </tr> 6771 <tr class="entries_header"> 6772 <th class="th_details" colspan="5">Details</th> 6773 </tr> 6774 <tr class="entry_cont"> 6775 <td class="entry_details" colspan="5"> 6776 <p>If no JPEG output is produced for the request,<wbr/> 6777this must be 0.<wbr/></p> 6778<p>Otherwise,<wbr/> this describes the real size of the compressed 6779JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 6780if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 6781has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 6782the JPEG stream will be 1000000 bytes,<wbr/> of which the first 6783500000 make up the real data.<wbr/></p> 6784 </td> 6785 </tr> 6786 6787 6788 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6789 <!-- end of entry --> 6790 6791 6792 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 6793 <td class="entry_name" rowspan="1"> 6794 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 6795 </td> 6796 <td class="entry_type"> 6797 <span class="entry_type_name">byte</span> 6798 6799 <span class="entry_type_visibility"> [public]</span> 6800 6801 6802 </td> <!-- entry_type --> 6803 6804 <td class="entry_description"> 6805 <p>Compression quality of JPEG 6806thumbnail</p> 6807 </td> 6808 6809 <td class="entry_units"> 6810 </td> 6811 6812 <td class="entry_range"> 6813 <p>1-100; larger is higher quality</p> 6814 </td> 6815 6816 <td class="entry_tags"> 6817 <ul class="entry_tags"> 6818 <li><a href="#tag_BC">BC</a></li> 6819 </ul> 6820 </td> 6821 6822 </tr> 6823 6824 6825 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6826 <!-- end of entry --> 6827 6828 6829 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 6830 <td class="entry_name" rowspan="3"> 6831 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 6832 </td> 6833 <td class="entry_type"> 6834 <span class="entry_type_name">int32</span> 6835 <span class="entry_type_container">x</span> 6836 6837 <span class="entry_type_array"> 6838 2 6839 </span> 6840 <span class="entry_type_visibility"> [public as size]</span> 6841 6842 6843 </td> <!-- entry_type --> 6844 6845 <td class="entry_description"> 6846 <p>Resolution of embedded JPEG thumbnail</p> 6847 </td> 6848 6849 <td class="entry_units"> 6850 </td> 6851 6852 <td class="entry_range"> 6853 <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> 6854 </td> 6855 6856 <td class="entry_tags"> 6857 <ul class="entry_tags"> 6858 <li><a href="#tag_BC">BC</a></li> 6859 </ul> 6860 </td> 6861 6862 </tr> 6863 <tr class="entries_header"> 6864 <th class="th_details" colspan="5">Details</th> 6865 </tr> 6866 <tr class="entry_cont"> 6867 <td class="entry_details" colspan="5"> 6868 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 6869but the captured JPEG will still be a valid image.<wbr/></p> 6870<p>When a jpeg image capture is issued,<wbr/> the thumbnail size selected should have 6871the same aspect ratio as the jpeg image.<wbr/></p> 6872 </td> 6873 </tr> 6874 6875 6876 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6877 <!-- end of entry --> 6878 6879 6880 6881 <!-- end of kind --> 6882 </tbody> 6883 6884 <!-- end of section --> 6885 <tr><td colspan="6" id="section_lens" class="section">lens</td></tr> 6886 6887 6888 <tr><td colspan="6" class="kind">controls</td></tr> 6889 6890 <thead class="entries_header"> 6891 <tr> 6892 <th class="th_name">Property Name</th> 6893 <th class="th_type">Type</th> 6894 <th class="th_description">Description</th> 6895 <th class="th_units">Units</th> 6896 <th class="th_range">Range</th> 6897 <th class="th_tags">Tags</th> 6898 </tr> 6899 </thead> 6900 6901 <tbody> 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 <tr class="entry" id="controls_android.lens.aperture"> 6913 <td class="entry_name" rowspan="3"> 6914 android.<wbr/>lens.<wbr/>aperture 6915 </td> 6916 <td class="entry_type"> 6917 <span class="entry_type_name">float</span> 6918 6919 <span class="entry_type_visibility"> [public]</span> 6920 6921 6922 </td> <!-- entry_type --> 6923 6924 <td class="entry_description"> 6925 <p>The ratio of lens focal length to the effective 6926aperture diameter.<wbr/></p> 6927 </td> 6928 6929 <td class="entry_units"> 6930 f-number (f/<wbr/>NNN) 6931 </td> 6932 6933 <td class="entry_range"> 6934 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 6935 </td> 6936 6937 <td class="entry_tags"> 6938 <ul class="entry_tags"> 6939 <li><a href="#tag_V1">V1</a></li> 6940 </ul> 6941 </td> 6942 6943 </tr> 6944 <tr class="entries_header"> 6945 <th class="th_details" colspan="5">Details</th> 6946 </tr> 6947 <tr class="entry_cont"> 6948 <td class="entry_details" colspan="5"> 6949 <p>This will only be supported on the camera devices that 6950have variable aperture lens.<wbr/> The aperture value can only be 6951one of the values listed in <a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a>.<wbr/></p> 6952<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 6953this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 6954<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 6955to achieve manual exposure control.<wbr/></p> 6956<p>The requested aperture value may take several frames to reach the 6957requested value; the camera device will report the current (intermediate) 6958aperture size in capture result metadata while the aperture is changing.<wbr/> 6959While 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> 6960<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 6961the ON modes,<wbr/> this will be overridden by the camera device 6962auto-exposure algorithm,<wbr/> the overridden values are then provided 6963back to the user in the corresponding result.<wbr/></p> 6964 </td> 6965 </tr> 6966 6967 6968 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6969 <!-- end of entry --> 6970 6971 6972 <tr class="entry" id="controls_android.lens.filterDensity"> 6973 <td class="entry_name" rowspan="3"> 6974 android.<wbr/>lens.<wbr/>filter<wbr/>Density 6975 </td> 6976 <td class="entry_type"> 6977 <span class="entry_type_name">float</span> 6978 6979 <span class="entry_type_visibility"> [public]</span> 6980 6981 6982 </td> <!-- entry_type --> 6983 6984 <td class="entry_description"> 6985 <p>State of lens neutral density filter(s).<wbr/></p> 6986 </td> 6987 6988 <td class="entry_units"> 6989 Steps of Exposure Value (EV).<wbr/> 6990 </td> 6991 6992 <td class="entry_range"> 6993 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 6994 </td> 6995 6996 <td class="entry_tags"> 6997 <ul class="entry_tags"> 6998 <li><a href="#tag_V1">V1</a></li> 6999 </ul> 7000 </td> 7001 7002 </tr> 7003 <tr class="entries_header"> 7004 <th class="th_details" colspan="5">Details</th> 7005 </tr> 7006 <tr class="entry_cont"> 7007 <td class="entry_details" colspan="5"> 7008 <p>This will not be supported on most camera devices.<wbr/> On devices 7009where this is supported,<wbr/> this may only be set to one of the 7010values included in <a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a>.<wbr/></p> 7011<p>Lens filters are typically used to lower the amount of light the 7012sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 7013step is the standard logarithmic representation,<wbr/> which are 7014non-negative,<wbr/> and inversely proportional to the amount of light 7015hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 7016in no reduction of the incoming light,<wbr/> and setting this to 2 would 7017mean that the filter is set to reduce incoming light by two stops 7018(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 7019<p>It may take several frames before the lens filter density changes 7020to the requested value.<wbr/> While the filter density is still changing,<wbr/> 7021<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 7022 </td> 7023 </tr> 7024 7025 7026 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7027 <!-- end of entry --> 7028 7029 7030 <tr class="entry" id="controls_android.lens.focalLength"> 7031 <td class="entry_name" rowspan="3"> 7032 android.<wbr/>lens.<wbr/>focal<wbr/>Length 7033 </td> 7034 <td class="entry_type"> 7035 <span class="entry_type_name">float</span> 7036 7037 <span class="entry_type_visibility"> [public]</span> 7038 7039 7040 </td> <!-- entry_type --> 7041 7042 <td class="entry_description"> 7043 <p>The current lens focal length; used for optical zoom.<wbr/></p> 7044 </td> 7045 7046 <td class="entry_units"> 7047 focal length in mm 7048 </td> 7049 7050 <td class="entry_range"> 7051 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 7052 </td> 7053 7054 <td class="entry_tags"> 7055 <ul class="entry_tags"> 7056 <li><a href="#tag_V1">V1</a></li> 7057 </ul> 7058 </td> 7059 7060 </tr> 7061 <tr class="entries_header"> 7062 <th class="th_details" colspan="5">Details</th> 7063 </tr> 7064 <tr class="entry_cont"> 7065 <td class="entry_details" colspan="5"> 7066 <p>This setting controls the physical focal length of the camera 7067device's lens.<wbr/> Changing the focal length changes the field of 7068view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 7069<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 7070setting won't be applied instantaneously,<wbr/> and it may take several 7071frames before the lens can change to the requested focal length.<wbr/> 7072While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 7073be set to MOVING.<wbr/></p> 7074<p>This is expected not to be supported on most devices.<wbr/></p> 7075 </td> 7076 </tr> 7077 7078 7079 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7080 <!-- end of entry --> 7081 7082 7083 <tr class="entry" id="controls_android.lens.focusDistance"> 7084 <td class="entry_name" rowspan="3"> 7085 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 7086 </td> 7087 <td class="entry_type"> 7088 <span class="entry_type_name">float</span> 7089 7090 <span class="entry_type_visibility"> [public]</span> 7091 7092 7093 </td> <!-- entry_type --> 7094 7095 <td class="entry_description"> 7096 <p>Distance to plane of sharpest focus,<wbr/> 7097measured from frontmost surface of the lens</p> 7098 </td> 7099 7100 <td class="entry_units"> 7101 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 7102 </td> 7103 7104 <td class="entry_range"> 7105 <p>>= 0</p> 7106 </td> 7107 7108 <td class="entry_tags"> 7109 <ul class="entry_tags"> 7110 <li><a href="#tag_BC">BC</a></li> 7111 <li><a href="#tag_V1">V1</a></li> 7112 </ul> 7113 </td> 7114 7115 </tr> 7116 <tr class="entries_header"> 7117 <th class="th_details" colspan="5">Details</th> 7118 </tr> 7119 <tr class="entry_cont"> 7120 <td class="entry_details" colspan="5"> 7121 <p>0 means infinity focus.<wbr/> Used value will be clamped 7122to [0,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>].<wbr/></p> 7123<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 7124instantaneously,<wbr/> and it may take several frames before the lens 7125can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 7126<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 7127 </td> 7128 </tr> 7129 7130 7131 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7132 <!-- end of entry --> 7133 7134 7135 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 7136 <td class="entry_name" rowspan="3"> 7137 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 7138 </td> 7139 <td class="entry_type"> 7140 <span class="entry_type_name entry_type_name_enum">byte</span> 7141 7142 <span class="entry_type_visibility"> [public]</span> 7143 7144 <ul class="entry_type_enum"> 7145 <li> 7146 <span class="entry_type_enum_name">OFF</span> 7147 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 7148 </li> 7149 <li> 7150 <span class="entry_type_enum_name">ON</span> 7151 <span class="entry_type_enum_optional">optional</span> 7152 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 7153 </li> 7154 </ul> 7155 7156 </td> <!-- entry_type --> 7157 7158 <td class="entry_description"> 7159 <p>Sets whether the camera device uses optical image stabilization (OIS) 7160when capturing images.<wbr/></p> 7161 </td> 7162 7163 <td class="entry_units"> 7164 </td> 7165 7166 <td class="entry_range"> 7167 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 7168 </td> 7169 7170 <td class="entry_tags"> 7171 <ul class="entry_tags"> 7172 <li><a href="#tag_V1">V1</a></li> 7173 </ul> 7174 </td> 7175 7176 </tr> 7177 <tr class="entries_header"> 7178 <th class="th_details" colspan="5">Details</th> 7179 </tr> 7180 <tr class="entry_cont"> 7181 <td class="entry_details" colspan="5"> 7182 <p>OIS is used to compensate for motion blur due to small movements of 7183the camera during capture.<wbr/> Unlike digital image stabilization,<wbr/> OIS makes 7184use of mechanical elements to stabilize the camera sensor,<wbr/> and thus 7185allows for longer exposure times before camera shake becomes 7186apparent.<wbr/></p> 7187<p>This is not expected to be supported on most devices.<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 7197 <!-- end of kind --> 7198 </tbody> 7199 <tr><td colspan="6" class="kind">static</td></tr> 7200 7201 <thead class="entries_header"> 7202 <tr> 7203 <th class="th_name">Property Name</th> 7204 <th class="th_type">Type</th> 7205 <th class="th_description">Description</th> 7206 <th class="th_units">Units</th> 7207 <th class="th_range">Range</th> 7208 <th class="th_tags">Tags</th> 7209 </tr> 7210 </thead> 7211 7212 <tbody> 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 <tr class="entry" id="static_android.lens.info.availableApertures"> 7226 <td class="entry_name" rowspan="3"> 7227 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 7228 </td> 7229 <td class="entry_type"> 7230 <span class="entry_type_name">float</span> 7231 <span class="entry_type_container">x</span> 7232 7233 <span class="entry_type_array"> 7234 n 7235 </span> 7236 <span class="entry_type_visibility"> [public]</span> 7237 7238 7239 </td> <!-- entry_type --> 7240 7241 <td class="entry_description"> 7242 <p>List of supported aperture 7243values.<wbr/></p> 7244 </td> 7245 7246 <td class="entry_units"> 7247 </td> 7248 7249 <td class="entry_range"> 7250 <p>one entry required,<wbr/> > 0</p> 7251 </td> 7252 7253 <td class="entry_tags"> 7254 <ul class="entry_tags"> 7255 <li><a href="#tag_V1">V1</a></li> 7256 </ul> 7257 </td> 7258 7259 </tr> 7260 <tr class="entries_header"> 7261 <th class="th_details" colspan="5">Details</th> 7262 </tr> 7263 <tr class="entry_cont"> 7264 <td class="entry_details" colspan="5"> 7265 <p>If the camera device doesn't support variable apertures,<wbr/> 7266listed value will be the fixed aperture.<wbr/></p> 7267<p>If the camera device supports variable apertures,<wbr/> the aperture value 7268in this list will be sorted in ascending order.<wbr/></p> 7269 </td> 7270 </tr> 7271 7272 7273 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7274 <!-- end of entry --> 7275 7276 7277 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 7278 <td class="entry_name" rowspan="3"> 7279 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 7280 </td> 7281 <td class="entry_type"> 7282 <span class="entry_type_name">float</span> 7283 <span class="entry_type_container">x</span> 7284 7285 <span class="entry_type_array"> 7286 n 7287 </span> 7288 <span class="entry_type_visibility"> [public]</span> 7289 7290 7291 </td> <!-- entry_type --> 7292 7293 <td class="entry_description"> 7294 <p>List of supported neutral density filter values for 7295<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a>.<wbr/></p> 7296 </td> 7297 7298 <td class="entry_units"> 7299 </td> 7300 7301 <td class="entry_range"> 7302 <p>At least one value is required.<wbr/> Values must be >= 0.<wbr/></p> 7303 </td> 7304 7305 <td class="entry_tags"> 7306 <ul class="entry_tags"> 7307 <li><a href="#tag_V1">V1</a></li> 7308 </ul> 7309 </td> 7310 7311 </tr> 7312 <tr class="entries_header"> 7313 <th class="th_details" colspan="5">Details</th> 7314 </tr> 7315 <tr class="entry_cont"> 7316 <td class="entry_details" colspan="5"> 7317 <p>If changing <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> is not supported,<wbr/> 7318availableFilterDensities must contain only 0.<wbr/> Otherwise,<wbr/> this 7319list contains only the exact filter density values available on 7320this camera device.<wbr/></p> 7321 </td> 7322 </tr> 7323 7324 7325 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7326 <!-- end of entry --> 7327 7328 7329 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 7330 <td class="entry_name" rowspan="3"> 7331 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 7332 </td> 7333 <td class="entry_type"> 7334 <span class="entry_type_name">float</span> 7335 <span class="entry_type_container">x</span> 7336 7337 <span class="entry_type_array"> 7338 n 7339 </span> 7340 <span class="entry_type_visibility"> [public]</span> 7341 <div class="entry_type_notes">The list of available focal lengths</div> 7342 7343 7344 </td> <!-- entry_type --> 7345 7346 <td class="entry_description"> 7347 <p>The available focal lengths for this device for use with 7348<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>.<wbr/></p> 7349 </td> 7350 7351 <td class="entry_units"> 7352 </td> 7353 7354 <td class="entry_range"> 7355 <p>Each value in this list must be > 0.<wbr/> This list must 7356contain at least one value.<wbr/></p> 7357 </td> 7358 7359 <td class="entry_tags"> 7360 <ul class="entry_tags"> 7361 <li><a href="#tag_BC">BC</a></li> 7362 <li><a href="#tag_V1">V1</a></li> 7363 </ul> 7364 </td> 7365 7366 </tr> 7367 <tr class="entries_header"> 7368 <th class="th_details" colspan="5">Details</th> 7369 </tr> 7370 <tr class="entry_cont"> 7371 <td class="entry_details" colspan="5"> 7372 <p>If optical zoom is not supported,<wbr/> this will only report 7373a single value corresponding to the static focal length of the 7374device.<wbr/> Otherwise,<wbr/> this will report every focal length supported 7375by the device.<wbr/></p> 7376 </td> 7377 </tr> 7378 7379 7380 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7381 <!-- end of entry --> 7382 7383 7384 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> 7385 <td class="entry_name" rowspan="3"> 7386 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 7387 </td> 7388 <td class="entry_type"> 7389 <span class="entry_type_name">byte</span> 7390 <span class="entry_type_container">x</span> 7391 7392 <span class="entry_type_array"> 7393 n 7394 </span> 7395 <span class="entry_type_visibility"> [public]</span> 7396 <div class="entry_type_notes">list of enums</div> 7397 7398 7399 </td> <!-- entry_type --> 7400 7401 <td class="entry_description"> 7402 <p>List containing a subset of the optical image 7403stabilization (OIS) modes specified in 7404<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>.<wbr/></p> 7405 </td> 7406 7407 <td class="entry_units"> 7408 </td> 7409 7410 <td class="entry_range"> 7411 </td> 7412 7413 <td class="entry_tags"> 7414 <ul class="entry_tags"> 7415 <li><a href="#tag_V1">V1</a></li> 7416 </ul> 7417 </td> 7418 7419 </tr> 7420 <tr class="entries_header"> 7421 <th class="th_details" colspan="5">Details</th> 7422 </tr> 7423 <tr class="entry_cont"> 7424 <td class="entry_details" colspan="5"> 7425 <p>If OIS is not implemented for a given camera device,<wbr/> this should 7426contain only OFF.<wbr/></p> 7427 </td> 7428 </tr> 7429 7430 7431 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7432 <!-- end of entry --> 7433 7434 7435 <tr class="entry" id="static_android.lens.info.geometricCorrectionMap"> 7436 <td class="entry_name" rowspan="3"> 7437 android.<wbr/>lens.<wbr/>info.<wbr/>geometric<wbr/>Correction<wbr/>Map 7438 </td> 7439 <td class="entry_type"> 7440 <span class="entry_type_name">float</span> 7441 <span class="entry_type_container">x</span> 7442 7443 <span class="entry_type_array"> 7444 2 x 3 x n x m 7445 </span> 7446 <span class="entry_type_visibility"> [system]</span> 7447 <div class="entry_type_notes">2D array of destination coordinate pairs for uniform grid points in source image,<wbr/> per color channel.<wbr/> Size in the range of 2x3x40x30</div> 7448 7449 7450 </td> <!-- entry_type --> 7451 7452 <td class="entry_description"> 7453 <p>A low-resolution map for correction of 7454geometric distortions and chromatic aberrations,<wbr/> per 7455color channel</p> 7456 </td> 7457 7458 <td class="entry_units"> 7459 </td> 7460 7461 <td class="entry_range"> 7462 <p>N,<wbr/> M >= 2</p> 7463 </td> 7464 7465 <td class="entry_tags"> 7466 <ul class="entry_tags"> 7467 <li><a href="#tag_DNG">DNG</a></li> 7468 </ul> 7469 </td> 7470 7471 </tr> 7472 <tr class="entries_header"> 7473 <th class="th_details" colspan="5">Details</th> 7474 </tr> 7475 <tr class="entry_cont"> 7476 <td class="entry_details" colspan="5"> 7477 <p>[DNG wants a function instead].<wbr/> What's easiest 7478for implementers? With an array size (M,<wbr/> N),<wbr/> entry (i,<wbr/> 7479j) provides the destination for pixel (i/<wbr/>(M-1) * width,<wbr/> 7480j/<wbr/>(N-1) * height).<wbr/> Data is row-major,<wbr/> with each array 7481entry being ( (X,<wbr/> Y)_<wbr/>r,<wbr/> (X,<wbr/> Y)_<wbr/>g,<wbr/> (X,<wbr/> Y)_<wbr/>b ) )</p> 7482 </td> 7483 </tr> 7484 7485 7486 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7487 <!-- end of entry --> 7488 7489 7490 <tr class="entry" id="static_android.lens.info.geometricCorrectionMapSize"> 7491 <td class="entry_name" rowspan="1"> 7492 android.<wbr/>lens.<wbr/>info.<wbr/>geometric<wbr/>Correction<wbr/>Map<wbr/>Size 7493 </td> 7494 <td class="entry_type"> 7495 <span class="entry_type_name">int32</span> 7496 <span class="entry_type_container">x</span> 7497 7498 <span class="entry_type_array"> 7499 2 7500 </span> 7501 <span class="entry_type_visibility"> [system as size]</span> 7502 <div class="entry_type_notes">width and height of geometric correction map</div> 7503 7504 7505 </td> <!-- entry_type --> 7506 7507 <td class="entry_description"> 7508 <p>Dimensions of geometric correction 7509map</p> 7510 </td> 7511 7512 <td class="entry_units"> 7513 </td> 7514 7515 <td class="entry_range"> 7516 <p>Both values >= 2</p> 7517 </td> 7518 7519 <td class="entry_tags"> 7520 <ul class="entry_tags"> 7521 <li><a href="#tag_V1">V1</a></li> 7522 </ul> 7523 </td> 7524 7525 </tr> 7526 7527 7528 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7529 <!-- end of entry --> 7530 7531 7532 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 7533 <td class="entry_name" rowspan="3"> 7534 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 7535 </td> 7536 <td class="entry_type"> 7537 <span class="entry_type_name">float</span> 7538 7539 <span class="entry_type_visibility"> [public]</span> 7540 7541 7542 </td> <!-- entry_type --> 7543 7544 <td class="entry_description"> 7545 <p>Optional.<wbr/> Hyperfocal distance for this lens.<wbr/></p> 7546 </td> 7547 7548 <td class="entry_units"> 7549 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 7550 </td> 7551 7552 <td class="entry_range"> 7553 <p>>= 0</p> 7554 </td> 7555 7556 <td class="entry_tags"> 7557 </td> 7558 7559 </tr> 7560 <tr class="entries_header"> 7561 <th class="th_details" colspan="5">Details</th> 7562 </tr> 7563 <tr class="entry_cont"> 7564 <td class="entry_details" colspan="5"> 7565 <p>If the lens is fixed focus,<wbr/> the camera device will report 0.<wbr/></p> 7566<p>If the lens is not fixed focus,<wbr/> the camera device will report this 7567field 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> 7568 </td> 7569 </tr> 7570 7571 7572 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7573 <!-- end of entry --> 7574 7575 7576 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 7577 <td class="entry_name" rowspan="3"> 7578 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 7579 </td> 7580 <td class="entry_type"> 7581 <span class="entry_type_name">float</span> 7582 7583 <span class="entry_type_visibility"> [public]</span> 7584 7585 7586 </td> <!-- entry_type --> 7587 7588 <td class="entry_description"> 7589 <p>Shortest distance from frontmost surface 7590of the lens that can be focused correctly.<wbr/></p> 7591 </td> 7592 7593 <td class="entry_units"> 7594 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 7595 </td> 7596 7597 <td class="entry_range"> 7598 <p>>= 0</p> 7599 </td> 7600 7601 <td class="entry_tags"> 7602 <ul class="entry_tags"> 7603 <li><a href="#tag_V1">V1</a></li> 7604 </ul> 7605 </td> 7606 7607 </tr> 7608 <tr class="entries_header"> 7609 <th class="th_details" colspan="5">Details</th> 7610 </tr> 7611 <tr class="entry_cont"> 7612 <td class="entry_details" colspan="5"> 7613 <p>If the lens is fixed-focus,<wbr/> this should be 76140.<wbr/></p> 7615 </td> 7616 </tr> 7617 7618 7619 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7620 <!-- end of entry --> 7621 7622 7623 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 7624 <td class="entry_name" rowspan="3"> 7625 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 7626 </td> 7627 <td class="entry_type"> 7628 <span class="entry_type_name">int32</span> 7629 <span class="entry_type_container">x</span> 7630 7631 <span class="entry_type_array"> 7632 2 7633 </span> 7634 <span class="entry_type_visibility"> [public as size]</span> 7635 <div class="entry_type_notes">width and height of lens shading map provided by the HAL.<wbr/> (N x M)</div> 7636 7637 7638 </td> <!-- entry_type --> 7639 7640 <td class="entry_description"> 7641 <p>Dimensions of lens shading map.<wbr/></p> 7642 </td> 7643 7644 <td class="entry_units"> 7645 </td> 7646 7647 <td class="entry_range"> 7648 <p>Both values >= 1</p> 7649 </td> 7650 7651 <td class="entry_tags"> 7652 <ul class="entry_tags"> 7653 <li><a href="#tag_V1">V1</a></li> 7654 </ul> 7655 </td> 7656 7657 </tr> 7658 <tr class="entries_header"> 7659 <th class="th_details" colspan="5">Details</th> 7660 </tr> 7661 <tr class="entry_cont"> 7662 <td class="entry_details" colspan="5"> 7663 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 7664must be smaller than 64x64.<wbr/></p> 7665 </td> 7666 </tr> 7667 7668 7669 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7670 <!-- end of entry --> 7671 7672 7673 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 7674 <td class="entry_name" rowspan="3"> 7675 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 7676 </td> 7677 <td class="entry_type"> 7678 <span class="entry_type_name entry_type_name_enum">byte</span> 7679 7680 <span class="entry_type_visibility"> [public]</span> 7681 7682 <ul class="entry_type_enum"> 7683 <li> 7684 <span class="entry_type_enum_name">UNCALIBRATED</span> 7685 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 7686<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/> 7687Setting the lens to the same focus distance on separate occasions may 7688result in a different real focus distance,<wbr/> depending on factors such 7689as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 7690and the device temperature.<wbr/> The focus distance value will still be 7691in 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 7692represents the farthest focus.<wbr/></p></span> 7693 </li> 7694 <li> 7695 <span class="entry_type_enum_name">APPROXIMATE</span> 7696 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/> However,<wbr/> setting the lens 7697to the same focus distance on separate occasions may result in a 7698different real focus distance,<wbr/> depending on factors such as the 7699orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> and 7700the device temperature.<wbr/></p></span> 7701 </li> 7702 <li> 7703 <span class="entry_type_enum_name">CALIBRATED</span> 7704 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/> The lens mechanism is 7705calibrated so that setting the same focus distance is repeatable on 7706multiple occasions with good accuracy,<wbr/> and the focus distance corresponds 7707to the real physical distance to the plane of best focus.<wbr/></p></span> 7708 </li> 7709 </ul> 7710 7711 </td> <!-- entry_type --> 7712 7713 <td class="entry_description"> 7714 <p>The lens focus distance calibration quality.<wbr/></p> 7715 </td> 7716 7717 <td class="entry_units"> 7718 </td> 7719 7720 <td class="entry_range"> 7721 </td> 7722 7723 <td class="entry_tags"> 7724 <ul class="entry_tags"> 7725 <li><a href="#tag_V1">V1</a></li> 7726 </ul> 7727 </td> 7728 7729 </tr> 7730 <tr class="entries_header"> 7731 <th class="th_details" colspan="5">Details</th> 7732 </tr> 7733 <tr class="entry_cont"> 7734 <td class="entry_details" colspan="5"> 7735 <p>The lens focus distance calibration quality determines the reliability of 7736focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 7737<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 7738<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 7739 </td> 7740 </tr> 7741 7742 7743 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7744 <!-- end of entry --> 7745 7746 7747 7748 7749 7750 <tr class="entry" id="static_android.lens.facing"> 7751 <td class="entry_name" rowspan="1"> 7752 android.<wbr/>lens.<wbr/>facing 7753 </td> 7754 <td class="entry_type"> 7755 <span class="entry_type_name entry_type_name_enum">byte</span> 7756 7757 <span class="entry_type_visibility"> [public]</span> 7758 7759 <ul class="entry_type_enum"> 7760 <li> 7761 <span class="entry_type_enum_name">FRONT</span> 7762 </li> 7763 <li> 7764 <span class="entry_type_enum_name">BACK</span> 7765 </li> 7766 </ul> 7767 7768 </td> <!-- entry_type --> 7769 7770 <td class="entry_description"> 7771 <p>Direction the camera faces relative to 7772device screen</p> 7773 </td> 7774 7775 <td class="entry_units"> 7776 </td> 7777 7778 <td class="entry_range"> 7779 </td> 7780 7781 <td class="entry_tags"> 7782 </td> 7783 7784 </tr> 7785 7786 7787 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7788 <!-- end of entry --> 7789 7790 7791 <tr class="entry" id="static_android.lens.opticalAxisAngle"> 7792 <td class="entry_name" rowspan="3"> 7793 android.<wbr/>lens.<wbr/>optical<wbr/>Axis<wbr/>Angle 7794 </td> 7795 <td class="entry_type"> 7796 <span class="entry_type_name">float</span> 7797 <span class="entry_type_container">x</span> 7798 7799 <span class="entry_type_array"> 7800 2 7801 </span> 7802 <span class="entry_type_visibility"> [system]</span> 7803 <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> 7804 7805 7806 </td> <!-- entry_type --> 7807 7808 <td class="entry_description"> 7809 <p>Relative angle of camera optical axis to the 7810perpendicular axis from the display</p> 7811 </td> 7812 7813 <td class="entry_units"> 7814 </td> 7815 7816 <td class="entry_range"> 7817 <p>[0-90) for first angle,<wbr/> [0-360) for second</p> 7818 </td> 7819 7820 <td class="entry_tags"> 7821 <ul class="entry_tags"> 7822 <li><a href="#tag_ADV">ADV</a></li> 7823 </ul> 7824 </td> 7825 7826 </tr> 7827 <tr class="entries_header"> 7828 <th class="th_details" colspan="5">Details</th> 7829 </tr> 7830 <tr class="entry_cont"> 7831 <td class="entry_details" colspan="5"> 7832 <p>Examples:</p> 7833<p>(0,<wbr/>0) means that the camera optical axis 7834is perpendicular to the display surface;</p> 7835<p>(45,<wbr/>0) means that the camera points 45 degrees up when 7836device is held upright;</p> 7837<p>(45,<wbr/>90) means the camera points 45 degrees to the right when 7838the device is held upright.<wbr/></p> 7839<p>Use FACING field to determine perpendicular outgoing 7840direction</p> 7841 </td> 7842 </tr> 7843 7844 7845 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7846 <!-- end of entry --> 7847 7848 7849 <tr class="entry" id="static_android.lens.position"> 7850 <td class="entry_name" rowspan="1"> 7851 android.<wbr/>lens.<wbr/>position 7852 </td> 7853 <td class="entry_type"> 7854 <span class="entry_type_name">float</span> 7855 <span class="entry_type_container">x</span> 7856 7857 <span class="entry_type_array"> 7858 3, location in mm, in the sensor coordinate 7859 system 7860 </span> 7861 <span class="entry_type_visibility"> [system]</span> 7862 7863 7864 </td> <!-- entry_type --> 7865 7866 <td class="entry_description"> 7867 <p>Coordinates of camera optical axis on 7868device</p> 7869 </td> 7870 7871 <td class="entry_units"> 7872 </td> 7873 7874 <td class="entry_range"> 7875 </td> 7876 7877 <td class="entry_tags"> 7878 <ul class="entry_tags"> 7879 <li><a href="#tag_V1">V1</a></li> 7880 </ul> 7881 </td> 7882 7883 </tr> 7884 7885 7886 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7887 <!-- end of entry --> 7888 7889 7890 7891 <!-- end of kind --> 7892 </tbody> 7893 <tr><td colspan="6" class="kind">dynamic</td></tr> 7894 7895 <thead class="entries_header"> 7896 <tr> 7897 <th class="th_name">Property Name</th> 7898 <th class="th_type">Type</th> 7899 <th class="th_description">Description</th> 7900 <th class="th_units">Units</th> 7901 <th class="th_range">Range</th> 7902 <th class="th_tags">Tags</th> 7903 </tr> 7904 </thead> 7905 7906 <tbody> 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 <tr class="entry" id="dynamic_android.lens.aperture"> 7918 <td class="entry_name" rowspan="3"> 7919 android.<wbr/>lens.<wbr/>aperture 7920 </td> 7921 <td class="entry_type"> 7922 <span class="entry_type_name">float</span> 7923 7924 <span class="entry_type_visibility"> [public]</span> 7925 7926 7927 </td> <!-- entry_type --> 7928 7929 <td class="entry_description"> 7930 <p>The ratio of lens focal length to the effective 7931aperture diameter.<wbr/></p> 7932 </td> 7933 7934 <td class="entry_units"> 7935 f-number (f/<wbr/>NNN) 7936 </td> 7937 7938 <td class="entry_range"> 7939 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 7940 </td> 7941 7942 <td class="entry_tags"> 7943 <ul class="entry_tags"> 7944 <li><a href="#tag_V1">V1</a></li> 7945 </ul> 7946 </td> 7947 7948 </tr> 7949 <tr class="entries_header"> 7950 <th class="th_details" colspan="5">Details</th> 7951 </tr> 7952 <tr class="entry_cont"> 7953 <td class="entry_details" colspan="5"> 7954 <p>This will only be supported on the camera devices that 7955have variable aperture lens.<wbr/> The aperture value can only be 7956one of the values listed in <a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a>.<wbr/></p> 7957<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 7958this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 7959<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 7960to achieve manual exposure control.<wbr/></p> 7961<p>The requested aperture value may take several frames to reach the 7962requested value; the camera device will report the current (intermediate) 7963aperture size in capture result metadata while the aperture is changing.<wbr/> 7964While 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> 7965<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 7966the ON modes,<wbr/> this will be overridden by the camera device 7967auto-exposure algorithm,<wbr/> the overridden values are then provided 7968back to the user in the corresponding result.<wbr/></p> 7969 </td> 7970 </tr> 7971 7972 7973 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7974 <!-- end of entry --> 7975 7976 7977 <tr class="entry" id="dynamic_android.lens.filterDensity"> 7978 <td class="entry_name" rowspan="3"> 7979 android.<wbr/>lens.<wbr/>filter<wbr/>Density 7980 </td> 7981 <td class="entry_type"> 7982 <span class="entry_type_name">float</span> 7983 7984 <span class="entry_type_visibility"> [public]</span> 7985 7986 7987 </td> <!-- entry_type --> 7988 7989 <td class="entry_description"> 7990 <p>State of lens neutral density filter(s).<wbr/></p> 7991 </td> 7992 7993 <td class="entry_units"> 7994 Steps of Exposure Value (EV).<wbr/> 7995 </td> 7996 7997 <td class="entry_range"> 7998 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 7999 </td> 8000 8001 <td class="entry_tags"> 8002 <ul class="entry_tags"> 8003 <li><a href="#tag_V1">V1</a></li> 8004 </ul> 8005 </td> 8006 8007 </tr> 8008 <tr class="entries_header"> 8009 <th class="th_details" colspan="5">Details</th> 8010 </tr> 8011 <tr class="entry_cont"> 8012 <td class="entry_details" colspan="5"> 8013 <p>This will not be supported on most camera devices.<wbr/> On devices 8014where this is supported,<wbr/> this may only be set to one of the 8015values included in <a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a>.<wbr/></p> 8016<p>Lens filters are typically used to lower the amount of light the 8017sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 8018step is the standard logarithmic representation,<wbr/> which are 8019non-negative,<wbr/> and inversely proportional to the amount of light 8020hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 8021in no reduction of the incoming light,<wbr/> and setting this to 2 would 8022mean that the filter is set to reduce incoming light by two stops 8023(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 8024<p>It may take several frames before the lens filter density changes 8025to the requested value.<wbr/> While the filter density is still changing,<wbr/> 8026<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 8027 </td> 8028 </tr> 8029 8030 8031 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8032 <!-- end of entry --> 8033 8034 8035 <tr class="entry" id="dynamic_android.lens.focalLength"> 8036 <td class="entry_name" rowspan="3"> 8037 android.<wbr/>lens.<wbr/>focal<wbr/>Length 8038 </td> 8039 <td class="entry_type"> 8040 <span class="entry_type_name">float</span> 8041 8042 <span class="entry_type_visibility"> [public]</span> 8043 8044 8045 </td> <!-- entry_type --> 8046 8047 <td class="entry_description"> 8048 <p>The current lens focal length; used for optical zoom.<wbr/></p> 8049 </td> 8050 8051 <td class="entry_units"> 8052 focal length in mm 8053 </td> 8054 8055 <td class="entry_range"> 8056 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 8057 </td> 8058 8059 <td class="entry_tags"> 8060 <ul class="entry_tags"> 8061 <li><a href="#tag_BC">BC</a></li> 8062 </ul> 8063 </td> 8064 8065 </tr> 8066 <tr class="entries_header"> 8067 <th class="th_details" colspan="5">Details</th> 8068 </tr> 8069 <tr class="entry_cont"> 8070 <td class="entry_details" colspan="5"> 8071 <p>This setting controls the physical focal length of the camera 8072device's lens.<wbr/> Changing the focal length changes the field of 8073view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 8074<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 8075setting won't be applied instantaneously,<wbr/> and it may take several 8076frames before the lens can change to the requested focal length.<wbr/> 8077While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 8078be set to MOVING.<wbr/></p> 8079<p>This is expected not to be supported on most devices.<wbr/></p> 8080 </td> 8081 </tr> 8082 8083 8084 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8085 <!-- end of entry --> 8086 8087 8088 <tr class="entry" id="dynamic_android.lens.focusDistance"> 8089 <td class="entry_name" rowspan="3"> 8090 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 8091 </td> 8092 <td class="entry_type"> 8093 <span class="entry_type_name">float</span> 8094 8095 <span class="entry_type_visibility"> [public]</span> 8096 8097 8098 </td> <!-- entry_type --> 8099 8100 <td class="entry_description"> 8101 <p>Distance to plane of sharpest focus,<wbr/> 8102measured from frontmost surface of the lens</p> 8103 </td> 8104 8105 <td class="entry_units"> 8106 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 8107 </td> 8108 8109 <td class="entry_range"> 8110 <p>>= 0</p> 8111 </td> 8112 8113 <td class="entry_tags"> 8114 <ul class="entry_tags"> 8115 <li><a href="#tag_BC">BC</a></li> 8116 </ul> 8117 </td> 8118 8119 </tr> 8120 <tr class="entries_header"> 8121 <th class="th_details" colspan="5">Details</th> 8122 </tr> 8123 <tr class="entry_cont"> 8124 <td class="entry_details" colspan="5"> 8125 <p>Should be zero for fixed-focus cameras</p> 8126 </td> 8127 </tr> 8128 8129 8130 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8131 <!-- end of entry --> 8132 8133 8134 <tr class="entry" id="dynamic_android.lens.focusRange"> 8135 <td class="entry_name" rowspan="3"> 8136 android.<wbr/>lens.<wbr/>focus<wbr/>Range 8137 </td> 8138 <td class="entry_type"> 8139 <span class="entry_type_name">float</span> 8140 <span class="entry_type_container">x</span> 8141 8142 <span class="entry_type_array"> 8143 2 8144 </span> 8145 <span class="entry_type_visibility"> [public]</span> 8146 <div class="entry_type_notes">Range of scene distances that are in focus</div> 8147 8148 8149 </td> <!-- entry_type --> 8150 8151 <td class="entry_description"> 8152 <p>The range of scene distances that are in 8153sharp focus (depth of field)</p> 8154 </td> 8155 8156 <td class="entry_units"> 8157 pair of focus distances in diopters: (near,<wbr/> 8158 far),<wbr/> see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 8159 </td> 8160 8161 <td class="entry_range"> 8162 <p>>=0</p> 8163 </td> 8164 8165 <td class="entry_tags"> 8166 <ul class="entry_tags"> 8167 <li><a href="#tag_BC">BC</a></li> 8168 </ul> 8169 </td> 8170 8171 </tr> 8172 <tr class="entries_header"> 8173 <th class="th_details" colspan="5">Details</th> 8174 </tr> 8175 <tr class="entry_cont"> 8176 <td class="entry_details" colspan="5"> 8177 <p>If variable focus not supported,<wbr/> can still report 8178fixed depth of field range</p> 8179 </td> 8180 </tr> 8181 8182 8183 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8184 <!-- end of entry --> 8185 8186 8187 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 8188 <td class="entry_name" rowspan="3"> 8189 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 8190 </td> 8191 <td class="entry_type"> 8192 <span class="entry_type_name entry_type_name_enum">byte</span> 8193 8194 <span class="entry_type_visibility"> [public]</span> 8195 8196 <ul class="entry_type_enum"> 8197 <li> 8198 <span class="entry_type_enum_name">OFF</span> 8199 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 8200 </li> 8201 <li> 8202 <span class="entry_type_enum_name">ON</span> 8203 <span class="entry_type_enum_optional">optional</span> 8204 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 8205 </li> 8206 </ul> 8207 8208 </td> <!-- entry_type --> 8209 8210 <td class="entry_description"> 8211 <p>Sets whether the camera device uses optical image stabilization (OIS) 8212when capturing images.<wbr/></p> 8213 </td> 8214 8215 <td class="entry_units"> 8216 </td> 8217 8218 <td class="entry_range"> 8219 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 8220 </td> 8221 8222 <td class="entry_tags"> 8223 <ul class="entry_tags"> 8224 <li><a href="#tag_V1">V1</a></li> 8225 </ul> 8226 </td> 8227 8228 </tr> 8229 <tr class="entries_header"> 8230 <th class="th_details" colspan="5">Details</th> 8231 </tr> 8232 <tr class="entry_cont"> 8233 <td class="entry_details" colspan="5"> 8234 <p>OIS is used to compensate for motion blur due to small movements of 8235the camera during capture.<wbr/> Unlike digital image stabilization,<wbr/> OIS makes 8236use of mechanical elements to stabilize the camera sensor,<wbr/> and thus 8237allows for longer exposure times before camera shake becomes 8238apparent.<wbr/></p> 8239<p>This is not expected to be supported on most devices.<wbr/></p> 8240 </td> 8241 </tr> 8242 8243 8244 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8245 <!-- end of entry --> 8246 8247 8248 <tr class="entry" id="dynamic_android.lens.state"> 8249 <td class="entry_name" rowspan="3"> 8250 android.<wbr/>lens.<wbr/>state 8251 </td> 8252 <td class="entry_type"> 8253 <span class="entry_type_name entry_type_name_enum">byte</span> 8254 8255 <span class="entry_type_visibility"> [public]</span> 8256 8257 <ul class="entry_type_enum"> 8258 <li> 8259 <span class="entry_type_enum_name">STATIONARY</span> 8260 <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/> android.<wbr/>lens.<wbr/>focus<wbr/>Distance 8261android.<wbr/>lens.<wbr/>filter<wbr/>Density and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) are not changing.<wbr/></p></span> 8262 </li> 8263 <li> 8264 <span class="entry_type_enum_name">MOVING</span> 8265 <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/> android.<wbr/>lens.<wbr/>focus<wbr/>Distance 8266android.<wbr/>lens.<wbr/>filter<wbr/>Density or <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) is changing.<wbr/></p></span> 8267 </li> 8268 </ul> 8269 8270 </td> <!-- entry_type --> 8271 8272 <td class="entry_description"> 8273 <p>Current lens status.<wbr/></p> 8274 </td> 8275 8276 <td class="entry_units"> 8277 </td> 8278 8279 <td class="entry_range"> 8280 </td> 8281 8282 <td class="entry_tags"> 8283 <ul class="entry_tags"> 8284 <li><a href="#tag_V1">V1</a></li> 8285 </ul> 8286 </td> 8287 8288 </tr> 8289 <tr class="entries_header"> 8290 <th class="th_details" colspan="5">Details</th> 8291 </tr> 8292 <tr class="entry_cont"> 8293 <td class="entry_details" colspan="5"> 8294 <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/> 8295<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/> 8296they may take several frames to reach the requested values.<wbr/> This state indicates 8297the current status of the lens parameters.<wbr/></p> 8298<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 8299either because the parameters are all fixed,<wbr/> or because the lens has had enough 8300time to reach the most recently-requested values.<wbr/> 8301If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> 8302<ul> 8303<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 8304<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 8305<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/> 8306which means the optical zoom is not supported.<wbr/></li> 8307<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> 8308<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> 8309</ul> 8310<p>Then this state will always be STATIONARY.<wbr/></p> 8311<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 8312is changing.<wbr/></p> 8313 </td> 8314 </tr> 8315 8316 8317 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8318 <!-- end of entry --> 8319 8320 8321 8322 <!-- end of kind --> 8323 </tbody> 8324 8325 <!-- end of section --> 8326 <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr> 8327 8328 8329 <tr><td colspan="6" class="kind">controls</td></tr> 8330 8331 <thead class="entries_header"> 8332 <tr> 8333 <th class="th_name">Property Name</th> 8334 <th class="th_type">Type</th> 8335 <th class="th_description">Description</th> 8336 <th class="th_units">Units</th> 8337 <th class="th_range">Range</th> 8338 <th class="th_tags">Tags</th> 8339 </tr> 8340 </thead> 8341 8342 <tbody> 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 <tr class="entry" id="controls_android.noiseReduction.mode"> 8354 <td class="entry_name" rowspan="3"> 8355 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 8356 </td> 8357 <td class="entry_type"> 8358 <span class="entry_type_name entry_type_name_enum">byte</span> 8359 8360 <span class="entry_type_visibility"> [public]</span> 8361 8362 <ul class="entry_type_enum"> 8363 <li> 8364 <span class="entry_type_enum_name">OFF</span> 8365 <span class="entry_type_enum_notes"><p>No noise reduction is applied</p></span> 8366 </li> 8367 <li> 8368 <span class="entry_type_enum_name">FAST</span> 8369 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor 8370output</p></span> 8371 </li> 8372 <li> 8373 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8374 <span class="entry_type_enum_notes"><p>May slow down frame rate to provide highest 8375quality</p></span> 8376 </li> 8377 </ul> 8378 8379 </td> <!-- entry_type --> 8380 8381 <td class="entry_description"> 8382 <p>Mode of operation for the noise reduction 8383algorithm</p> 8384 </td> 8385 8386 <td class="entry_units"> 8387 </td> 8388 8389 <td class="entry_range"> 8390 <p>android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Modes</p> 8391 </td> 8392 8393 <td class="entry_tags"> 8394 <ul class="entry_tags"> 8395 <li><a href="#tag_V1">V1</a></li> 8396 </ul> 8397 </td> 8398 8399 </tr> 8400 <tr class="entries_header"> 8401 <th class="th_details" colspan="5">Details</th> 8402 </tr> 8403 <tr class="entry_cont"> 8404 <td class="entry_details" colspan="5"> 8405 <p>Noise filtering control.<wbr/> OFF means no noise reduction 8406will be applied by the HAL.<wbr/></p> 8407<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 8408will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 8409will use the highest-quality noise filtering algorithms,<wbr/> 8410even if it slows down capture rate.<wbr/> FAST means the camera device should not 8411slow down capture rate when applying noise filtering.<wbr/></p> 8412 </td> 8413 </tr> 8414 8415 8416 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8417 <!-- end of entry --> 8418 8419 8420 <tr class="entry" id="controls_android.noiseReduction.strength"> 8421 <td class="entry_name" rowspan="1"> 8422 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 8423 </td> 8424 <td class="entry_type"> 8425 <span class="entry_type_name">byte</span> 8426 8427 <span class="entry_type_visibility"> [system]</span> 8428 8429 8430 </td> <!-- entry_type --> 8431 8432 <td class="entry_description"> 8433 <p>Control the amount of noise reduction 8434applied to the images</p> 8435 </td> 8436 8437 <td class="entry_units"> 8438 1-10; 10 is max noise reduction 8439 </td> 8440 8441 <td class="entry_range"> 8442 <p>1 - 10</p> 8443 </td> 8444 8445 <td class="entry_tags"> 8446 </td> 8447 8448 </tr> 8449 8450 8451 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8452 <!-- end of entry --> 8453 8454 8455 8456 <!-- end of kind --> 8457 </tbody> 8458 <tr><td colspan="6" class="kind">dynamic</td></tr> 8459 8460 <thead class="entries_header"> 8461 <tr> 8462 <th class="th_name">Property Name</th> 8463 <th class="th_type">Type</th> 8464 <th class="th_description">Description</th> 8465 <th class="th_units">Units</th> 8466 <th class="th_range">Range</th> 8467 <th class="th_tags">Tags</th> 8468 </tr> 8469 </thead> 8470 8471 <tbody> 8472 8473 8474 8475 8476 8477 8478 8479 8480 8481 8482 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 8483 <td class="entry_name" rowspan="3"> 8484 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 8485 </td> 8486 <td class="entry_type"> 8487 <span class="entry_type_name entry_type_name_enum">byte</span> 8488 8489 <span class="entry_type_visibility"> [public]</span> 8490 8491 <ul class="entry_type_enum"> 8492 <li> 8493 <span class="entry_type_enum_name">OFF</span> 8494 <span class="entry_type_enum_notes"><p>No noise reduction is applied</p></span> 8495 </li> 8496 <li> 8497 <span class="entry_type_enum_name">FAST</span> 8498 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor 8499output</p></span> 8500 </li> 8501 <li> 8502 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8503 <span class="entry_type_enum_notes"><p>May slow down frame rate to provide highest 8504quality</p></span> 8505 </li> 8506 </ul> 8507 8508 </td> <!-- entry_type --> 8509 8510 <td class="entry_description"> 8511 <p>Mode of operation for the noise reduction 8512algorithm</p> 8513 </td> 8514 8515 <td class="entry_units"> 8516 </td> 8517 8518 <td class="entry_range"> 8519 <p>android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Modes</p> 8520 </td> 8521 8522 <td class="entry_tags"> 8523 <ul class="entry_tags"> 8524 <li><a href="#tag_V1">V1</a></li> 8525 </ul> 8526 </td> 8527 8528 </tr> 8529 <tr class="entries_header"> 8530 <th class="th_details" colspan="5">Details</th> 8531 </tr> 8532 <tr class="entry_cont"> 8533 <td class="entry_details" colspan="5"> 8534 <p>Noise filtering control.<wbr/> OFF means no noise reduction 8535will be applied by the HAL.<wbr/></p> 8536<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 8537will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 8538will use the highest-quality noise filtering algorithms,<wbr/> 8539even if it slows down capture rate.<wbr/> FAST means the camera device should not 8540slow down capture rate when applying noise filtering.<wbr/></p> 8541 </td> 8542 </tr> 8543 8544 8545 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8546 <!-- end of entry --> 8547 8548 8549 8550 <!-- end of kind --> 8551 </tbody> 8552 8553 <!-- end of section --> 8554 <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr> 8555 8556 8557 <tr><td colspan="6" class="kind">static</td></tr> 8558 8559 <thead class="entries_header"> 8560 <tr> 8561 <th class="th_name">Property Name</th> 8562 <th class="th_type">Type</th> 8563 <th class="th_description">Description</th> 8564 <th class="th_units">Units</th> 8565 <th class="th_range">Range</th> 8566 <th class="th_tags">Tags</th> 8567 </tr> 8568 </thead> 8569 8570 <tbody> 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 8582 <td class="entry_name" rowspan="3"> 8583 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 8584 </td> 8585 <td class="entry_type"> 8586 <span class="entry_type_name">byte</span> 8587 8588 <span class="entry_type_visibility"> [system]</span> 8589 8590 8591 </td> <!-- entry_type --> 8592 8593 <td class="entry_description"> 8594 <p>If set to 1,<wbr/> the camera service does not 8595scale 'normalized' coordinates with respect to the crop 8596region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 8597and output (face rectangles).<wbr/></p> 8598 </td> 8599 8600 <td class="entry_units"> 8601 </td> 8602 8603 <td class="entry_range"> 8604 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 8605 </td> 8606 8607 <td class="entry_tags"> 8608 </td> 8609 8610 </tr> 8611 <tr class="entries_header"> 8612 <th class="th_details" colspan="5">Details</th> 8613 </tr> 8614 <tr class="entry_cont"> 8615 <td class="entry_details" colspan="5"> 8616 <p>Normalized coordinates refer to those in the 8617(-1000,<wbr/>1000) range mentioned in the 8618android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 8619<p>HAL implementations should instead always use and emit 8620sensor array-relative coordinates for all region data.<wbr/> Does 8621not need to be listed in static metadata.<wbr/> Support will be 8622removed in future versions of camera service.<wbr/></p> 8623 </td> 8624 </tr> 8625 8626 8627 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8628 <!-- end of entry --> 8629 8630 8631 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 8632 <td class="entry_name" rowspan="3"> 8633 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 8634 </td> 8635 <td class="entry_type"> 8636 <span class="entry_type_name">byte</span> 8637 8638 <span class="entry_type_visibility"> [system]</span> 8639 8640 8641 </td> <!-- entry_type --> 8642 8643 <td class="entry_description"> 8644 <p>If set to 1,<wbr/> then the camera service always 8645switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 8646trigger.<wbr/></p> 8647 </td> 8648 8649 <td class="entry_units"> 8650 </td> 8651 8652 <td class="entry_range"> 8653 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 8654 </td> 8655 8656 <td class="entry_tags"> 8657 </td> 8658 8659 </tr> 8660 <tr class="entries_header"> 8661 <th class="th_details" colspan="5">Details</th> 8662 </tr> 8663 <tr class="entry_cont"> 8664 <td class="entry_details" colspan="5"> 8665 <p>HAL implementations should implement AF trigger 8666modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 8667CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 8668not need to be listed in static metadata.<wbr/> Support will be 8669removed in future versions of camera service</p> 8670 </td> 8671 </tr> 8672 8673 8674 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8675 <!-- end of entry --> 8676 8677 8678 <tr class="entry" id="static_android.quirks.useZslFormat"> 8679 <td class="entry_name" rowspan="3"> 8680 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 8681 </td> 8682 <td class="entry_type"> 8683 <span class="entry_type_name">byte</span> 8684 8685 <span class="entry_type_visibility"> [system]</span> 8686 8687 8688 </td> <!-- entry_type --> 8689 8690 <td class="entry_description"> 8691 <p>If set to 1,<wbr/> the camera service uses 8692CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 8693HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 8694shutter lag stream</p> 8695 </td> 8696 8697 <td class="entry_units"> 8698 </td> 8699 8700 <td class="entry_range"> 8701 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 8702 </td> 8703 8704 <td class="entry_tags"> 8705 </td> 8706 8707 </tr> 8708 <tr class="entries_header"> 8709 <th class="th_details" colspan="5">Details</th> 8710 </tr> 8711 <tr class="entry_cont"> 8712 <td class="entry_details" colspan="5"> 8713 <p>HAL implementations should use gralloc usage flags 8714to determine that a stream will be used for 8715zero-shutter-lag,<wbr/> instead of relying on an explicit 8716format setting.<wbr/> Does not need to be listed in static 8717metadata.<wbr/> Support will be removed in future versions of 8718camera service.<wbr/></p> 8719 </td> 8720 </tr> 8721 8722 8723 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8724 <!-- end of entry --> 8725 8726 8727 <tr class="entry" id="static_android.quirks.usePartialResult"> 8728 <td class="entry_name" rowspan="5"> 8729 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 8730 </td> 8731 <td class="entry_type"> 8732 <span class="entry_type_name">byte</span> 8733 8734 <span class="entry_type_visibility"> [hidden]</span> 8735 8736 8737 </td> <!-- entry_type --> 8738 8739 <td class="entry_description"> 8740 <p>If set to 1,<wbr/> the HAL will always split result 8741metadata for a single capture into multiple buffers,<wbr/> 8742returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 8743 </td> 8744 8745 <td class="entry_units"> 8746 </td> 8747 8748 <td class="entry_range"> 8749 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 8750 </td> 8751 8752 <td class="entry_tags"> 8753 </td> 8754 8755 </tr> 8756 <tr class="entries_header"> 8757 <th class="th_details" colspan="5">Details</th> 8758 </tr> 8759 <tr class="entry_cont"> 8760 <td class="entry_details" colspan="5"> 8761 <p>Does not need to be listed in static 8762metadata.<wbr/> Support for partial results will be reworked in 8763future versions of camera service.<wbr/> This quirk will stop 8764working at that point; DO NOT USE without careful 8765consideration of future support.<wbr/></p> 8766 </td> 8767 </tr> 8768 8769 <tr class="entries_header"> 8770 <th class="th_details" colspan="5">HAL Implementation Details</th> 8771 </tr> 8772 <tr class="entry_cont"> 8773 <td class="entry_details" colspan="5"> 8774 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 8775for information on how to implement partial results.<wbr/></p> 8776 </td> 8777 </tr> 8778 8779 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8780 <!-- end of entry --> 8781 8782 8783 8784 <!-- end of kind --> 8785 </tbody> 8786 <tr><td colspan="6" class="kind">dynamic</td></tr> 8787 8788 <thead class="entries_header"> 8789 <tr> 8790 <th class="th_name">Property Name</th> 8791 <th class="th_type">Type</th> 8792 <th class="th_description">Description</th> 8793 <th class="th_units">Units</th> 8794 <th class="th_range">Range</th> 8795 <th class="th_tags">Tags</th> 8796 </tr> 8797 </thead> 8798 8799 <tbody> 8800 8801 8802 8803 8804 8805 8806 8807 8808 8809 8810 <tr class="entry" id="dynamic_android.quirks.partialResult"> 8811 <td class="entry_name" rowspan="5"> 8812 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 8813 </td> 8814 <td class="entry_type"> 8815 <span class="entry_type_name entry_type_name_enum">byte</span> 8816 8817 <span class="entry_type_visibility"> [hidden as boolean]</span> 8818 8819 <ul class="entry_type_enum"> 8820 <li> 8821 <span class="entry_type_enum_name">FINAL</span> 8822 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 8823for this capture.<wbr/></p></span> 8824 </li> 8825 <li> 8826 <span class="entry_type_enum_name">PARTIAL</span> 8827 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 8828capture.<wbr/> More result buffers for this capture will be sent 8829by the HAL,<wbr/> the last of which will be marked 8830FINAL.<wbr/></p></span> 8831 </li> 8832 </ul> 8833 8834 </td> <!-- entry_type --> 8835 8836 <td class="entry_description"> 8837 <p>Whether a result given to the framework is the 8838final one for the capture,<wbr/> or only a partial that contains a 8839subset of the full set of dynamic metadata 8840values.<wbr/></p> 8841 </td> 8842 8843 <td class="entry_units"> 8844 </td> 8845 8846 <td class="entry_range"> 8847 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> Optional.<wbr/> Default value is FINAL.<wbr/></p> 8848 </td> 8849 8850 <td class="entry_tags"> 8851 </td> 8852 8853 </tr> 8854 <tr class="entries_header"> 8855 <th class="th_details" colspan="5">Details</th> 8856 </tr> 8857 <tr class="entry_cont"> 8858 <td class="entry_details" colspan="5"> 8859 <p>The entries in the result metadata buffers for a 8860single capture may not overlap,<wbr/> except for this entry.<wbr/> The 8861FINAL buffers must retain FIFO ordering relative to the 8862requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 8863always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 8864before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 8865in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 8866capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 8867only be used by the HAL if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 8868 </td> 8869 </tr> 8870 8871 <tr class="entries_header"> 8872 <th class="th_details" colspan="5">HAL Implementation Details</th> 8873 </tr> 8874 <tr class="entry_cont"> 8875 <td class="entry_details" colspan="5"> 8876 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 8877for information on how to implement partial results.<wbr/></p> 8878 </td> 8879 </tr> 8880 8881 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8882 <!-- end of entry --> 8883 8884 8885 8886 <!-- end of kind --> 8887 </tbody> 8888 8889 <!-- end of section --> 8890 <tr><td colspan="6" id="section_request" class="section">request</td></tr> 8891 8892 8893 <tr><td colspan="6" class="kind">controls</td></tr> 8894 8895 <thead class="entries_header"> 8896 <tr> 8897 <th class="th_name">Property Name</th> 8898 <th class="th_type">Type</th> 8899 <th class="th_description">Description</th> 8900 <th class="th_units">Units</th> 8901 <th class="th_range">Range</th> 8902 <th class="th_tags">Tags</th> 8903 </tr> 8904 </thead> 8905 8906 <tbody> 8907 8908 8909 8910 8911 8912 8913 8914 8915 8916 8917 <tr class="entry" id="controls_android.request.frameCount"> 8918 <td class="entry_name" rowspan="1"> 8919 android.<wbr/>request.<wbr/>frame<wbr/>Count 8920 </td> 8921 <td class="entry_type"> 8922 <span class="entry_type_name">int32</span> 8923 8924 <span class="entry_type_visibility"> [system]</span> 8925 8926 8927 </td> <!-- entry_type --> 8928 8929 <td class="entry_description"> 8930 <p>A frame counter set by the framework.<wbr/> Must 8931be maintained unchanged in output frame.<wbr/> This value monotonically 8932increases with every new result (that is,<wbr/> each new result has a unique 8933frameCount value).<wbr/></p> 8934 </td> 8935 8936 <td class="entry_units"> 8937 incrementing integer 8938 </td> 8939 8940 <td class="entry_range"> 8941 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> Any int.<wbr/></p> 8942 </td> 8943 8944 <td class="entry_tags"> 8945 </td> 8946 8947 </tr> 8948 8949 8950 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8951 <!-- end of entry --> 8952 8953 8954 <tr class="entry" id="controls_android.request.id"> 8955 <td class="entry_name" rowspan="1"> 8956 android.<wbr/>request.<wbr/>id 8957 </td> 8958 <td class="entry_type"> 8959 <span class="entry_type_name">int32</span> 8960 8961 <span class="entry_type_visibility"> [hidden]</span> 8962 8963 8964 </td> <!-- entry_type --> 8965 8966 <td class="entry_description"> 8967 <p>An application-specified ID for the current 8968request.<wbr/> Must be maintained unchanged in output 8969frame</p> 8970 </td> 8971 8972 <td class="entry_units"> 8973 arbitrary integer assigned by application 8974 </td> 8975 8976 <td class="entry_range"> 8977 <p>Any int</p> 8978 </td> 8979 8980 <td class="entry_tags"> 8981 <ul class="entry_tags"> 8982 <li><a href="#tag_V1">V1</a></li> 8983 </ul> 8984 </td> 8985 8986 </tr> 8987 8988 8989 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8990 <!-- end of entry --> 8991 8992 8993 <tr class="entry" id="controls_android.request.inputStreams"> 8994 <td class="entry_name" rowspan="3"> 8995 android.<wbr/>request.<wbr/>input<wbr/>Streams 8996 </td> 8997 <td class="entry_type"> 8998 <span class="entry_type_name">int32</span> 8999 <span class="entry_type_container">x</span> 9000 9001 <span class="entry_type_array"> 9002 n 9003 </span> 9004 <span class="entry_type_visibility"> [system]</span> 9005 9006 9007 </td> <!-- entry_type --> 9008 9009 <td class="entry_description"> 9010 <p>List which camera reprocess stream is used 9011for the source of reprocessing data.<wbr/></p> 9012 </td> 9013 9014 <td class="entry_units"> 9015 List of camera reprocess stream IDs 9016 </td> 9017 9018 <td class="entry_range"> 9019 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 9020<p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 9021<p>If android.<wbr/>jpeg.<wbr/>needs<wbr/>Thumbnail is set,<wbr/> then multiple 9022reprocess streams may be included in a single request; they 9023must be different scaled versions of the same image.<wbr/></p> 9024 </td> 9025 9026 <td class="entry_tags"> 9027 <ul class="entry_tags"> 9028 <li><a href="#tag_HAL2">HAL2</a></li> 9029 </ul> 9030 </td> 9031 9032 </tr> 9033 <tr class="entries_header"> 9034 <th class="th_details" colspan="5">Details</th> 9035 </tr> 9036 <tr class="entry_cont"> 9037 <td class="entry_details" colspan="5"> 9038 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 9039REPROCESS.<wbr/> Ignored otherwise</p> 9040 </td> 9041 </tr> 9042 9043 9044 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9045 <!-- end of entry --> 9046 9047 9048 <tr class="entry" id="controls_android.request.metadataMode"> 9049 <td class="entry_name" rowspan="1"> 9050 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 9051 </td> 9052 <td class="entry_type"> 9053 <span class="entry_type_name entry_type_name_enum">byte</span> 9054 9055 <span class="entry_type_visibility"> [system]</span> 9056 9057 <ul class="entry_type_enum"> 9058 <li> 9059 <span class="entry_type_enum_name">NONE</span> 9060 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 9061for application-bound buffer data.<wbr/> If no 9062application-bound streams exist,<wbr/> no frame should be 9063placed in the output frame queue.<wbr/> If such streams 9064exist,<wbr/> a frame should be placed on the output queue 9065with null metadata but with the necessary output buffer 9066information.<wbr/> Timestamp information should still be 9067included with any output stream buffers</p></span> 9068 </li> 9069 <li> 9070 <span class="entry_type_enum_name">FULL</span> 9071 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 9072only be produced if they are separately 9073enabled</p></span> 9074 </li> 9075 </ul> 9076 9077 </td> <!-- entry_type --> 9078 9079 <td class="entry_description"> 9080 <p>How much metadata to produce on 9081output</p> 9082 </td> 9083 9084 <td class="entry_units"> 9085 </td> 9086 9087 <td class="entry_range"> 9088 </td> 9089 9090 <td class="entry_tags"> 9091 </td> 9092 9093 </tr> 9094 9095 9096 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9097 <!-- end of entry --> 9098 9099 9100 <tr class="entry" id="controls_android.request.outputStreams"> 9101 <td class="entry_name" rowspan="3"> 9102 android.<wbr/>request.<wbr/>output<wbr/>Streams 9103 </td> 9104 <td class="entry_type"> 9105 <span class="entry_type_name">int32</span> 9106 <span class="entry_type_container">x</span> 9107 9108 <span class="entry_type_array"> 9109 n 9110 </span> 9111 <span class="entry_type_visibility"> [system]</span> 9112 9113 9114 </td> <!-- entry_type --> 9115 9116 <td class="entry_description"> 9117 <p>Lists which camera output streams image data 9118from this capture must be sent to</p> 9119 </td> 9120 9121 <td class="entry_units"> 9122 List of camera stream IDs 9123 </td> 9124 9125 <td class="entry_range"> 9126 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> List must only include streams that have been 9127created</p> 9128 </td> 9129 9130 <td class="entry_tags"> 9131 <ul class="entry_tags"> 9132 <li><a href="#tag_HAL2">HAL2</a></li> 9133 </ul> 9134 </td> 9135 9136 </tr> 9137 <tr class="entries_header"> 9138 <th class="th_details" colspan="5">Details</th> 9139 </tr> 9140 <tr class="entry_cont"> 9141 <td class="entry_details" colspan="5"> 9142 <p>If no output streams are listed,<wbr/> then the image 9143data should simply be discarded.<wbr/> The image data must 9144still be captured for metadata and statistics production,<wbr/> 9145and the lens and flash must operate as requested.<wbr/></p> 9146 </td> 9147 </tr> 9148 9149 9150 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9151 <!-- end of entry --> 9152 9153 9154 <tr class="entry" id="controls_android.request.type"> 9155 <td class="entry_name" rowspan="1"> 9156 android.<wbr/>request.<wbr/>type 9157 </td> 9158 <td class="entry_type"> 9159 <span class="entry_type_name entry_type_name_enum">byte</span> 9160 9161 <span class="entry_type_visibility"> [system]</span> 9162 9163 <ul class="entry_type_enum"> 9164 <li> 9165 <span class="entry_type_enum_name">CAPTURE</span> 9166 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 9167and process it according to the 9168settings</p></span> 9169 </li> 9170 <li> 9171 <span class="entry_type_enum_name">REPROCESS</span> 9172 <span class="entry_type_enum_notes"><p>Process previously captured data; the 9173android.<wbr/>request.<wbr/>input<wbr/>Stream parameter determines the 9174source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 9175needed for reprocessing with [RP]</p></span> 9176 </li> 9177 </ul> 9178 9179 </td> <!-- entry_type --> 9180 9181 <td class="entry_description"> 9182 <p>The type of the request; either CAPTURE or 9183REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p> 9184 </td> 9185 9186 <td class="entry_units"> 9187 </td> 9188 9189 <td class="entry_range"> 9190 </td> 9191 9192 <td class="entry_tags"> 9193 <ul class="entry_tags"> 9194 <li><a href="#tag_HAL2">HAL2</a></li> 9195 </ul> 9196 </td> 9197 9198 </tr> 9199 9200 9201 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9202 <!-- end of entry --> 9203 9204 9205 9206 <!-- end of kind --> 9207 </tbody> 9208 <tr><td colspan="6" class="kind">static</td></tr> 9209 9210 <thead class="entries_header"> 9211 <tr> 9212 <th class="th_name">Property Name</th> 9213 <th class="th_type">Type</th> 9214 <th class="th_description">Description</th> 9215 <th class="th_units">Units</th> 9216 <th class="th_range">Range</th> 9217 <th class="th_tags">Tags</th> 9218 </tr> 9219 </thead> 9220 9221 <tbody> 9222 9223 9224 9225 9226 9227 9228 9229 9230 9231 9232 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 9233 <td class="entry_name" rowspan="3"> 9234 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 9235 </td> 9236 <td class="entry_type"> 9237 <span class="entry_type_name">int32</span> 9238 <span class="entry_type_container">x</span> 9239 9240 <span class="entry_type_array"> 9241 3 9242 </span> 9243 <span class="entry_type_visibility"> [public]</span> 9244 9245 9246 </td> <!-- entry_type --> 9247 9248 <td class="entry_description"> 9249 <p>The maximum numbers of different types of output streams 9250that can be configured and used simultaneously by a camera device.<wbr/></p> 9251 </td> 9252 9253 <td class="entry_units"> 9254 </td> 9255 9256 <td class="entry_range"> 9257 <p>>= 1 for JPEG-compressed format streams.<wbr/></p> 9258<p>>= 0 for Raw format streams.<wbr/></p> 9259<p>>= 3 for processed,<wbr/> uncompressed format streams.<wbr/></p> 9260 </td> 9261 9262 <td class="entry_tags"> 9263 <ul class="entry_tags"> 9264 <li><a href="#tag_BC">BC</a></li> 9265 </ul> 9266 </td> 9267 9268 </tr> 9269 <tr class="entries_header"> 9270 <th class="th_details" colspan="5">Details</th> 9271 </tr> 9272 <tr class="entry_cont"> 9273 <td class="entry_details" colspan="5"> 9274 <p>This is a 3 element tuple that contains the max number of output simultaneous 9275streams for raw sensor,<wbr/> processed (and uncompressed),<wbr/> and JPEG formats respectively.<wbr/> 9276For example,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 9277number 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> 9278<p>This lists the upper bound of the number of output streams supported by 9279the camera device.<wbr/> Using more streams simultaneously may require more hardware and 9280CPU resources that will consume more power.<wbr/> The image format for a output stream can 9281be any supported format provided by <a href="#static_android.scaler.availableFormats">android.<wbr/>scaler.<wbr/>available<wbr/>Formats</a>.<wbr/> The formats 9282defined in <a href="#static_android.scaler.availableFormats">android.<wbr/>scaler.<wbr/>available<wbr/>Formats</a> can be catergorized into the 3 stream types 9283as below:</p> 9284<ul> 9285<li>JPEG-compressed format: BLOB.<wbr/></li> 9286<li>Raw formats: RAW_<wbr/>SENSOR and RAW_<wbr/>OPAQUE.<wbr/></li> 9287<li>processed,<wbr/> uncompressed formats: YCb<wbr/>Cr_<wbr/>420_<wbr/>888,<wbr/> YCr<wbr/>Cb_<wbr/>420_<wbr/>SP,<wbr/> YV12.<wbr/></li> 9288</ul> 9289 </td> 9290 </tr> 9291 9292 9293 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9294 <!-- end of entry --> 9295 9296 9297 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 9298 <td class="entry_name" rowspan="3"> 9299 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 9300 </td> 9301 <td class="entry_type"> 9302 <span class="entry_type_name">int32</span> 9303 <span class="entry_type_container">x</span> 9304 9305 <span class="entry_type_array"> 9306 1 9307 </span> 9308 <span class="entry_type_visibility"> [system]</span> 9309 9310 9311 </td> <!-- entry_type --> 9312 9313 <td class="entry_description"> 9314 <p>How many reprocessing streams of any type 9315can be allocated at the same time.<wbr/></p> 9316 </td> 9317 9318 <td class="entry_units"> 9319 </td> 9320 9321 <td class="entry_range"> 9322 <p>>= 0</p> 9323 </td> 9324 9325 <td class="entry_tags"> 9326 <ul class="entry_tags"> 9327 <li><a href="#tag_HAL2">HAL2</a></li> 9328 </ul> 9329 </td> 9330 9331 </tr> 9332 <tr class="entries_header"> 9333 <th class="th_details" colspan="5">Details</th> 9334 </tr> 9335 <tr class="entry_cont"> 9336 <td class="entry_details" colspan="5"> 9337 <p><strong>Deprecated</strong>.<wbr/> Only used by HAL2.<wbr/>x.<wbr/></p> 9338<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 9339 </td> 9340 </tr> 9341 9342 9343 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9344 <!-- end of entry --> 9345 9346 9347 <tr class="entry" id="static_android.request.maxNumInputStreams"> 9348 <td class="entry_name" rowspan="3"> 9349 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 9350 </td> 9351 <td class="entry_type"> 9352 <span class="entry_type_name">int32</span> 9353 9354 <span class="entry_type_visibility"> [public]</span> 9355 9356 9357 </td> <!-- entry_type --> 9358 9359 <td class="entry_description"> 9360 <p>The maximum numbers of any type of input streams 9361that can be configured and used simultaneously by a camera device.<wbr/></p> 9362 </td> 9363 9364 <td class="entry_units"> 9365 </td> 9366 9367 <td class="entry_range"> 9368 <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/> 9369>= 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> 9370 </td> 9371 9372 <td class="entry_tags"> 9373 </td> 9374 9375 </tr> 9376 <tr class="entries_header"> 9377 <th class="th_details" colspan="5">Details</th> 9378 </tr> 9379 <tr class="entry_cont"> 9380 <td class="entry_details" colspan="5"> 9381 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 9382<p>The image format for a input stream can be any supported format provided 9383by android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Formats.<wbr/> When using an input stream,<wbr/> there must be 9384at least one output stream configured to to receive the reprocessed images.<wbr/></p> 9385<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 9386stream image format will be RAW_<wbr/>OPAQUE,<wbr/> the associated output stream image format 9387should be JPEG.<wbr/></p> 9388 </td> 9389 </tr> 9390 9391 9392 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9393 <!-- end of entry --> 9394 9395 9396 <tr class="entry" id="static_android.request.pipelineMaxDepth"> 9397 <td class="entry_name" rowspan="5"> 9398 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 9399 </td> 9400 <td class="entry_type"> 9401 <span class="entry_type_name">byte</span> 9402 9403 <span class="entry_type_visibility"> [public]</span> 9404 9405 9406 </td> <!-- entry_type --> 9407 9408 <td class="entry_description"> 9409 <p>Specifies the number of maximum pipeline stages a frame 9410has to go through from when it's exposed to when it's available 9411to the framework.<wbr/></p> 9412 </td> 9413 9414 <td class="entry_units"> 9415 </td> 9416 9417 <td class="entry_range"> 9418 </td> 9419 9420 <td class="entry_tags"> 9421 </td> 9422 9423 </tr> 9424 <tr class="entries_header"> 9425 <th class="th_details" colspan="5">Details</th> 9426 </tr> 9427 <tr class="entry_cont"> 9428 <td class="entry_details" colspan="5"> 9429 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 9430one stage to readout) from the sensor.<wbr/> The ISP then usually adds 9431its own stages to do custom HW processing.<wbr/> Further stages may be 9432added by SW processing.<wbr/></p> 9433<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 9434processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 9435depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 9436the max pipeline depth.<wbr/></p> 9437<p>A pipeline depth of X stages is equivalent to a pipeline latency of 9438X frame intervals.<wbr/></p> 9439<p>This value will be 8 or less.<wbr/></p> 9440 </td> 9441 </tr> 9442 9443 <tr class="entries_header"> 9444 <th class="th_details" colspan="5">HAL Implementation Details</th> 9445 </tr> 9446 <tr class="entry_cont"> 9447 <td class="entry_details" colspan="5"> 9448 <p>This value should be 4 or less.<wbr/></p> 9449 </td> 9450 </tr> 9451 9452 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9453 <!-- end of entry --> 9454 9455 9456 <tr class="entry" id="static_android.request.partialResultCount"> 9457 <td class="entry_name" rowspan="3"> 9458 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 9459 </td> 9460 <td class="entry_type"> 9461 <span class="entry_type_name">int32</span> 9462 9463 <span class="entry_type_visibility"> [public]</span> 9464 9465 9466 </td> <!-- entry_type --> 9467 9468 <td class="entry_description"> 9469 <p>Optional.<wbr/> Defaults to 1.<wbr/> Defines how many sub-components 9470a result will be composed of.<wbr/></p> 9471 </td> 9472 9473 <td class="entry_units"> 9474 </td> 9475 9476 <td class="entry_range"> 9477 <p>>= 1</p> 9478 </td> 9479 9480 <td class="entry_tags"> 9481 </td> 9482 9483 </tr> 9484 <tr class="entries_header"> 9485 <th class="th_details" colspan="5">Details</th> 9486 </tr> 9487 <tr class="entry_cont"> 9488 <td class="entry_details" colspan="5"> 9489 <p>In order to combat the pipeline latency,<wbr/> partial results 9490may be delivered to the application layer from the camera device as 9491soon as they are available.<wbr/></p> 9492<p>A value of 1 means that partial results are not supported.<wbr/></p> 9493<p>A typical use case for this might be: after requesting an AF lock the 9494new AF state might be available 50% of the way through the pipeline.<wbr/> 9495The camera device could then immediately dispatch this state via a 9496partial result to the framework/<wbr/>application layer,<wbr/> and the rest of 9497the metadata via later partial results.<wbr/></p> 9498 </td> 9499 </tr> 9500 9501 9502 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9503 <!-- end of entry --> 9504 9505 9506 9507 <!-- end of kind --> 9508 </tbody> 9509 <tr><td colspan="6" class="kind">dynamic</td></tr> 9510 9511 <thead class="entries_header"> 9512 <tr> 9513 <th class="th_name">Property Name</th> 9514 <th class="th_type">Type</th> 9515 <th class="th_description">Description</th> 9516 <th class="th_units">Units</th> 9517 <th class="th_range">Range</th> 9518 <th class="th_tags">Tags</th> 9519 </tr> 9520 </thead> 9521 9522 <tbody> 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 <tr class="entry" id="dynamic_android.request.frameCount"> 9534 <td class="entry_name" rowspan="3"> 9535 android.<wbr/>request.<wbr/>frame<wbr/>Count 9536 </td> 9537 <td class="entry_type"> 9538 <span class="entry_type_name">int32</span> 9539 9540 <span class="entry_type_visibility"> [public]</span> 9541 9542 9543 </td> <!-- entry_type --> 9544 9545 <td class="entry_description"> 9546 <p>A frame counter set by the framework.<wbr/> This value monotonically 9547increases with every new result (that is,<wbr/> each new result has a unique 9548frameCount value).<wbr/></p> 9549 </td> 9550 9551 <td class="entry_units"> 9552 count of frames 9553 </td> 9554 9555 <td class="entry_range"> 9556 <p>> 0</p> 9557 </td> 9558 9559 <td class="entry_tags"> 9560 </td> 9561 9562 </tr> 9563 <tr class="entries_header"> 9564 <th class="th_details" colspan="5">Details</th> 9565 </tr> 9566 <tr class="entry_cont"> 9567 <td class="entry_details" colspan="5"> 9568 <p>Reset on release()</p> 9569 </td> 9570 </tr> 9571 9572 9573 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9574 <!-- end of entry --> 9575 9576 9577 <tr class="entry" id="dynamic_android.request.id"> 9578 <td class="entry_name" rowspan="1"> 9579 android.<wbr/>request.<wbr/>id 9580 </td> 9581 <td class="entry_type"> 9582 <span class="entry_type_name">int32</span> 9583 9584 <span class="entry_type_visibility"> [hidden]</span> 9585 9586 9587 </td> <!-- entry_type --> 9588 9589 <td class="entry_description"> 9590 <p>An application-specified ID for the current 9591request.<wbr/> Must be maintained unchanged in output 9592frame</p> 9593 </td> 9594 9595 <td class="entry_units"> 9596 arbitrary integer assigned by application 9597 </td> 9598 9599 <td class="entry_range"> 9600 <p>Any int</p> 9601 </td> 9602 9603 <td class="entry_tags"> 9604 <ul class="entry_tags"> 9605 <li><a href="#tag_V1">V1</a></li> 9606 </ul> 9607 </td> 9608 9609 </tr> 9610 9611 9612 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9613 <!-- end of entry --> 9614 9615 9616 <tr class="entry" id="dynamic_android.request.metadataMode"> 9617 <td class="entry_name" rowspan="1"> 9618 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 9619 </td> 9620 <td class="entry_type"> 9621 <span class="entry_type_name entry_type_name_enum">byte</span> 9622 9623 <span class="entry_type_visibility"> [system]</span> 9624 9625 <ul class="entry_type_enum"> 9626 <li> 9627 <span class="entry_type_enum_name">NONE</span> 9628 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 9629for application-bound buffer data.<wbr/> If no 9630application-bound streams exist,<wbr/> no frame should be 9631placed in the output frame queue.<wbr/> If such streams 9632exist,<wbr/> a frame should be placed on the output queue 9633with null metadata but with the necessary output buffer 9634information.<wbr/> Timestamp information should still be 9635included with any output stream buffers</p></span> 9636 </li> 9637 <li> 9638 <span class="entry_type_enum_name">FULL</span> 9639 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 9640only be produced if they are separately 9641enabled</p></span> 9642 </li> 9643 </ul> 9644 9645 </td> <!-- entry_type --> 9646 9647 <td class="entry_description"> 9648 <p>How much metadata to produce on 9649output</p> 9650 </td> 9651 9652 <td class="entry_units"> 9653 </td> 9654 9655 <td class="entry_range"> 9656 </td> 9657 9658 <td class="entry_tags"> 9659 </td> 9660 9661 </tr> 9662 9663 9664 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9665 <!-- end of entry --> 9666 9667 9668 <tr class="entry" id="dynamic_android.request.outputStreams"> 9669 <td class="entry_name" rowspan="3"> 9670 android.<wbr/>request.<wbr/>output<wbr/>Streams 9671 </td> 9672 <td class="entry_type"> 9673 <span class="entry_type_name">int32</span> 9674 <span class="entry_type_container">x</span> 9675 9676 <span class="entry_type_array"> 9677 n 9678 </span> 9679 <span class="entry_type_visibility"> [system]</span> 9680 9681 9682 </td> <!-- entry_type --> 9683 9684 <td class="entry_description"> 9685 <p>Lists which camera output streams image data 9686from this capture must be sent to</p> 9687 </td> 9688 9689 <td class="entry_units"> 9690 List of camera stream IDs 9691 </td> 9692 9693 <td class="entry_range"> 9694 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> List must only include streams that have been 9695created</p> 9696 </td> 9697 9698 <td class="entry_tags"> 9699 <ul class="entry_tags"> 9700 <li><a href="#tag_HAL2">HAL2</a></li> 9701 </ul> 9702 </td> 9703 9704 </tr> 9705 <tr class="entries_header"> 9706 <th class="th_details" colspan="5">Details</th> 9707 </tr> 9708 <tr class="entry_cont"> 9709 <td class="entry_details" colspan="5"> 9710 <p>If no output streams are listed,<wbr/> then the image 9711data should simply be discarded.<wbr/> The image data must 9712still be captured for metadata and statistics production,<wbr/> 9713and the lens and flash must operate as requested.<wbr/></p> 9714 </td> 9715 </tr> 9716 9717 9718 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9719 <!-- end of entry --> 9720 9721 9722 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 9723 <td class="entry_name" rowspan="5"> 9724 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 9725 </td> 9726 <td class="entry_type"> 9727 <span class="entry_type_name">byte</span> 9728 9729 <span class="entry_type_visibility"> [public]</span> 9730 9731 9732 </td> <!-- entry_type --> 9733 9734 <td class="entry_description"> 9735 <p>Specifies the number of pipeline stages the frame went 9736through from when it was exposed to when the final completed result 9737was available to the framework.<wbr/></p> 9738 </td> 9739 9740 <td class="entry_units"> 9741 </td> 9742 9743 <td class="entry_range"> 9744 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 9745 </td> 9746 9747 <td class="entry_tags"> 9748 </td> 9749 9750 </tr> 9751 <tr class="entries_header"> 9752 <th class="th_details" colspan="5">Details</th> 9753 </tr> 9754 <tr class="entry_cont"> 9755 <td class="entry_details" colspan="5"> 9756 <p>Depending on what settings are used in the request,<wbr/> and 9757what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 9758and some pipeline stages skipped.<wbr/></p> 9759<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 9760 </td> 9761 </tr> 9762 9763 <tr class="entries_header"> 9764 <th class="th_details" colspan="5">HAL Implementation Details</th> 9765 </tr> 9766 <tr class="entry_cont"> 9767 <td class="entry_details" colspan="5"> 9768 <p>This value must always represent the accurate count of how many 9769pipeline stages were actually used.<wbr/></p> 9770 </td> 9771 </tr> 9772 9773 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9774 <!-- end of entry --> 9775 9776 9777 9778 <!-- end of kind --> 9779 </tbody> 9780 9781 <!-- end of section --> 9782 <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr> 9783 9784 9785 <tr><td colspan="6" class="kind">controls</td></tr> 9786 9787 <thead class="entries_header"> 9788 <tr> 9789 <th class="th_name">Property Name</th> 9790 <th class="th_type">Type</th> 9791 <th class="th_description">Description</th> 9792 <th class="th_units">Units</th> 9793 <th class="th_range">Range</th> 9794 <th class="th_tags">Tags</th> 9795 </tr> 9796 </thead> 9797 9798 <tbody> 9799 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 <tr class="entry" id="controls_android.scaler.cropRegion"> 9810 <td class="entry_name" rowspan="3"> 9811 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 9812 </td> 9813 <td class="entry_type"> 9814 <span class="entry_type_name">int32</span> 9815 <span class="entry_type_container">x</span> 9816 9817 <span class="entry_type_array"> 9818 4 9819 </span> 9820 <span class="entry_type_visibility"> [public as rectangle]</span> 9821 9822 9823 </td> <!-- entry_type --> 9824 9825 <td class="entry_description"> 9826 <p>(x,<wbr/> y,<wbr/> width,<wbr/> height).<wbr/></p> 9827<p>A rectangle with the top-level corner of (x,<wbr/>y) and size 9828(width,<wbr/> height).<wbr/> The region of the sensor that is used for 9829output.<wbr/> Each stream must use this rectangle to produce its 9830output,<wbr/> cropping to a smaller region if necessary to 9831maintain the stream's aspect ratio.<wbr/></p> 9832<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 9833 </td> 9834 9835 <td class="entry_units"> 9836 (x,<wbr/>y) of top-left corner,<wbr/> width and height of region 9837 in pixels; (0,<wbr/>0) is top-left corner of 9838 android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size 9839 </td> 9840 9841 <td class="entry_range"> 9842 </td> 9843 9844 <td class="entry_tags"> 9845 <ul class="entry_tags"> 9846 <li><a href="#tag_BC">BC</a></li> 9847 </ul> 9848 </td> 9849 9850 </tr> 9851 <tr class="entries_header"> 9852 <th class="th_details" colspan="5">Details</th> 9853 </tr> 9854 <tr class="entry_cont"> 9855 <td class="entry_details" colspan="5"> 9856 <p>Any additional per-stream cropping must be done to 9857maximize the final pixel area of the stream.<wbr/></p> 9858<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 9859ratio,<wbr/> then 4:3 streams should use the exact crop 9860region.<wbr/> 16:9 streams should further crop vertically 9861(letterbox).<wbr/></p> 9862<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 9863outputs should crop horizontally (pillarbox),<wbr/> and 16:9 9864streams should match exactly.<wbr/> These additional crops must 9865be centered within the crop region.<wbr/></p> 9866<p>The output streams must maintain square pixels at all 9867times,<wbr/> no matter what the relative aspect ratios of the 9868crop region and the stream are.<wbr/> Negative values for 9869corner are allowed for raw output if full pixel array is 9870larger than active pixel array.<wbr/> Width and height may be 9871rounded to nearest larger supportable width,<wbr/> especially 9872for raw output,<wbr/> where only a few fixed scales may be 9873possible.<wbr/> The width and height of the crop region cannot 9874be set to be smaller than floor( activeArraySize.<wbr/>width /<wbr/> 9875android.<wbr/>scaler.<wbr/>max<wbr/>Digital<wbr/>Zoom ) and floor( 9876activeArraySize.<wbr/>height /<wbr/> android.<wbr/>scaler.<wbr/>max<wbr/>Digital<wbr/>Zoom),<wbr/> 9877respectively.<wbr/></p> 9878 </td> 9879 </tr> 9880 9881 9882 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9883 <!-- end of entry --> 9884 9885 9886 9887 <!-- end of kind --> 9888 </tbody> 9889 <tr><td colspan="6" class="kind">static</td></tr> 9890 9891 <thead class="entries_header"> 9892 <tr> 9893 <th class="th_name">Property Name</th> 9894 <th class="th_type">Type</th> 9895 <th class="th_description">Description</th> 9896 <th class="th_units">Units</th> 9897 <th class="th_range">Range</th> 9898 <th class="th_tags">Tags</th> 9899 </tr> 9900 </thead> 9901 9902 <tbody> 9903 9904 9905 9906 9907 9908 9909 9910 9911 9912 9913 <tr class="entry" id="static_android.scaler.availableFormats"> 9914 <td class="entry_name" rowspan="5"> 9915 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 9916 </td> 9917 <td class="entry_type"> 9918 <span class="entry_type_name entry_type_name_enum">int32</span> 9919 <span class="entry_type_container">x</span> 9920 9921 <span class="entry_type_array"> 9922 n 9923 </span> 9924 <span class="entry_type_visibility"> [public as imageFormat]</span> 9925 9926 <ul class="entry_type_enum"> 9927 <li> 9928 <span class="entry_type_enum_name">RAW_SENSOR</span> 9929 <span class="entry_type_enum_optional">optional</span> 9930 <span class="entry_type_enum_value">0x20</span> 9931 </li> 9932 <li> 9933 <span class="entry_type_enum_name">YV12</span> 9934 <span class="entry_type_enum_optional">optional</span> 9935 <span class="entry_type_enum_value">0x32315659</span> 9936 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 9937 </li> 9938 <li> 9939 <span class="entry_type_enum_name">YCrCb_420_SP</span> 9940 <span class="entry_type_enum_optional">optional</span> 9941 <span class="entry_type_enum_value">0x11</span> 9942 <span class="entry_type_enum_notes"><p>NV21</p></span> 9943 </li> 9944 <li> 9945 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span> 9946 <span class="entry_type_enum_value">0x22</span> 9947 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 9948 </li> 9949 <li> 9950 <span class="entry_type_enum_name">YCbCr_420_888</span> 9951 <span class="entry_type_enum_value">0x23</span> 9952 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 9953 </li> 9954 <li> 9955 <span class="entry_type_enum_name">BLOB</span> 9956 <span class="entry_type_enum_value">0x21</span> 9957 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 9958 </li> 9959 </ul> 9960 9961 </td> <!-- entry_type --> 9962 9963 <td class="entry_description"> 9964 <p>The list of image formats that are supported by this 9965camera device.<wbr/></p> 9966 </td> 9967 9968 <td class="entry_units"> 9969 </td> 9970 9971 <td class="entry_range"> 9972 </td> 9973 9974 <td class="entry_tags"> 9975 <ul class="entry_tags"> 9976 <li><a href="#tag_BC">BC</a></li> 9977 </ul> 9978 </td> 9979 9980 </tr> 9981 <tr class="entries_header"> 9982 <th class="th_details" colspan="5">Details</th> 9983 </tr> 9984 <tr class="entry_cont"> 9985 <td class="entry_details" colspan="5"> 9986 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 9987<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 9988 </td> 9989 </tr> 9990 9991 <tr class="entries_header"> 9992 <th class="th_details" colspan="5">HAL Implementation Details</th> 9993 </tr> 9994 <tr class="entry_cont"> 9995 <td class="entry_details" colspan="5"> 9996 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 9997system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 9998<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 9999gralloc module will select a format based on the usage flags provided 10000by the camera HAL device and the other endpoint of the stream.<wbr/> It is 10001usually used by preview and recording streams,<wbr/> where the application doesn't 10002need access the image data.<wbr/></p> 10003<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 10004needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p> 10005<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 10006 </td> 10007 </tr> 10008 10009 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10010 <!-- end of entry --> 10011 10012 10013 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 10014 <td class="entry_name" rowspan="3"> 10015 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 10016 </td> 10017 <td class="entry_type"> 10018 <span class="entry_type_name">int64</span> 10019 <span class="entry_type_container">x</span> 10020 10021 <span class="entry_type_array"> 10022 n 10023 </span> 10024 <span class="entry_type_visibility"> [public]</span> 10025 10026 10027 </td> <!-- entry_type --> 10028 10029 <td class="entry_description"> 10030 <p>The minimum frame duration that is supported 10031for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 10032 </td> 10033 10034 <td class="entry_units"> 10035 ns 10036 </td> 10037 10038 <td class="entry_range"> 10039 </td> 10040 10041 <td class="entry_tags"> 10042 <ul class="entry_tags"> 10043 <li><a href="#tag_BC">BC</a></li> 10044 </ul> 10045 </td> 10046 10047 </tr> 10048 <tr class="entries_header"> 10049 <th class="th_details" colspan="5">Details</th> 10050 </tr> 10051 <tr class="entry_cont"> 10052 <td class="entry_details" colspan="5"> 10053 <p>This corresponds to the minimum steady-state frame duration when only 10054that JPEG stream is active and captured in a burst,<wbr/> with all 10055processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 10056<p>When multiple streams are configured,<wbr/> the minimum 10057frame duration will be >= max(individual stream min 10058durations)</p> 10059 </td> 10060 </tr> 10061 10062 10063 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10064 <!-- end of entry --> 10065 10066 10067 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 10068 <td class="entry_name" rowspan="5"> 10069 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 10070 </td> 10071 <td class="entry_type"> 10072 <span class="entry_type_name">int32</span> 10073 <span class="entry_type_container">x</span> 10074 10075 <span class="entry_type_array"> 10076 n x 2 10077 </span> 10078 <span class="entry_type_visibility"> [public as size]</span> 10079 10080 10081 </td> <!-- entry_type --> 10082 10083 <td class="entry_description"> 10084 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 10085 </td> 10086 10087 <td class="entry_units"> 10088 </td> 10089 10090 <td class="entry_range"> 10091 </td> 10092 10093 <td class="entry_tags"> 10094 <ul class="entry_tags"> 10095 <li><a href="#tag_BC">BC</a></li> 10096 </ul> 10097 </td> 10098 10099 </tr> 10100 <tr class="entries_header"> 10101 <th class="th_details" colspan="5">Details</th> 10102 </tr> 10103 <tr class="entry_cont"> 10104 <td class="entry_details" colspan="5"> 10105 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 10106sensor 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> 10107 </td> 10108 </tr> 10109 10110 <tr class="entries_header"> 10111 <th class="th_details" colspan="5">HAL Implementation Details</th> 10112 </tr> 10113 <tr class="entry_cont"> 10114 <td class="entry_details" colspan="5"> 10115 <p>The HAL must include sensor maximum resolution 10116(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 10117and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 10118 </td> 10119 </tr> 10120 10121 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10122 <!-- end of entry --> 10123 10124 10125 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 10126 <td class="entry_name" rowspan="1"> 10127 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 10128 </td> 10129 <td class="entry_type"> 10130 <span class="entry_type_name">float</span> 10131 10132 <span class="entry_type_visibility"> [public]</span> 10133 10134 10135 </td> <!-- entry_type --> 10136 10137 <td class="entry_description"> 10138 <p>The maximum ratio between active area width 10139and crop region width,<wbr/> or between active area height and 10140crop region height,<wbr/> if the crop region height is larger 10141than width</p> 10142 </td> 10143 10144 <td class="entry_units"> 10145 </td> 10146 10147 <td class="entry_range"> 10148 <p>>=1</p> 10149 </td> 10150 10151 <td class="entry_tags"> 10152 <ul class="entry_tags"> 10153 <li><a href="#tag_BC">BC</a></li> 10154 </ul> 10155 </td> 10156 10157 </tr> 10158 10159 10160 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10161 <!-- end of entry --> 10162 10163 10164 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 10165 <td class="entry_name" rowspan="3"> 10166 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 10167 </td> 10168 <td class="entry_type"> 10169 <span class="entry_type_name">int64</span> 10170 <span class="entry_type_container">x</span> 10171 10172 <span class="entry_type_array"> 10173 n 10174 </span> 10175 <span class="entry_type_visibility"> [public]</span> 10176 10177 10178 </td> <!-- entry_type --> 10179 10180 <td class="entry_description"> 10181 <p>For each available processed output size (defined in 10182<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 10183minimum supportable frame duration for that size.<wbr/></p> 10184 </td> 10185 10186 <td class="entry_units"> 10187 ns 10188 </td> 10189 10190 <td class="entry_range"> 10191 </td> 10192 10193 <td class="entry_tags"> 10194 <ul class="entry_tags"> 10195 <li><a href="#tag_BC">BC</a></li> 10196 </ul> 10197 </td> 10198 10199 </tr> 10200 <tr class="entries_header"> 10201 <th class="th_details" colspan="5">Details</th> 10202 </tr> 10203 <tr class="entry_cont"> 10204 <td class="entry_details" colspan="5"> 10205 <p>This should correspond to the frame duration when only that processed 10206stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 10207set to FAST.<wbr/></p> 10208<p>When multiple streams are configured,<wbr/> the minimum frame duration will 10209be >= max(individual stream min durations).<wbr/></p> 10210 </td> 10211 </tr> 10212 10213 10214 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10215 <!-- end of entry --> 10216 10217 10218 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 10219 <td class="entry_name" rowspan="5"> 10220 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 10221 </td> 10222 <td class="entry_type"> 10223 <span class="entry_type_name">int32</span> 10224 <span class="entry_type_container">x</span> 10225 10226 <span class="entry_type_array"> 10227 n x 2 10228 </span> 10229 <span class="entry_type_visibility"> [public as size]</span> 10230 10231 10232 </td> <!-- entry_type --> 10233 10234 <td class="entry_description"> 10235 <p>The resolutions available for use with 10236processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 10237platform opaque YUV/<wbr/>RGB streams to the GPU or video 10238encoders.<wbr/></p> 10239 </td> 10240 10241 <td class="entry_units"> 10242 </td> 10243 10244 <td class="entry_range"> 10245 </td> 10246 10247 <td class="entry_tags"> 10248 <ul class="entry_tags"> 10249 <li><a href="#tag_BC">BC</a></li> 10250 </ul> 10251 </td> 10252 10253 </tr> 10254 <tr class="entries_header"> 10255 <th class="th_details" colspan="5">Details</th> 10256 </tr> 10257 <tr class="entry_cont"> 10258 <td class="entry_details" colspan="5"> 10259 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 10260<p>For a given use case,<wbr/> the actual maximum supported resolution 10261may be lower than what is listed here,<wbr/> depending on the destination 10262Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 10263the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 10264smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 10265can provide.<wbr/></p> 10266<p>Please reference the documentation for the image data destination to 10267check if it limits the maximum size for image data.<wbr/></p> 10268 </td> 10269 </tr> 10270 10271 <tr class="entries_header"> 10272 <th class="th_details" colspan="5">HAL Implementation Details</th> 10273 </tr> 10274 <tr class="entry_cont"> 10275 <td class="entry_details" colspan="5"> 10276 <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/> 10277the HAL must include all JPEG sizes listed in android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 10278and each below resolution if it is smaller than or equal to the sensor 10279maximum resolution (if they are not listed in JPEG sizes already):</p> 10280<ul> 10281<li>240p (320 x 240)</li> 10282<li>480p (640 x 480)</li> 10283<li>720p (1280 x 720)</li> 10284<li>1080p (1920 x 1080)</li> 10285</ul> 10286<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/> 10287the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 10288 </td> 10289 </tr> 10290 10291 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10292 <!-- end of entry --> 10293 10294 10295 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 10296 <td class="entry_name" rowspan="3"> 10297 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 10298 </td> 10299 <td class="entry_type"> 10300 <span class="entry_type_name">int64</span> 10301 <span class="entry_type_container">x</span> 10302 10303 <span class="entry_type_array"> 10304 n 10305 </span> 10306 <span class="entry_type_visibility"> [system]</span> 10307 10308 10309 </td> <!-- entry_type --> 10310 10311 <td class="entry_description"> 10312 <p>For each available raw output size (defined in 10313<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 10314supportable frame duration for that size.<wbr/></p> 10315 </td> 10316 10317 <td class="entry_units"> 10318 ns 10319 </td> 10320 10321 <td class="entry_range"> 10322 </td> 10323 10324 <td class="entry_tags"> 10325 <ul class="entry_tags"> 10326 <li><a href="#tag_BC">BC</a></li> 10327 </ul> 10328 </td> 10329 10330 </tr> 10331 <tr class="entries_header"> 10332 <th class="th_details" colspan="5">Details</th> 10333 </tr> 10334 <tr class="entry_cont"> 10335 <td class="entry_details" colspan="5"> 10336 <p>Should correspond to the frame duration when only the raw stream is 10337active.<wbr/></p> 10338<p>When multiple streams are configured,<wbr/> the minimum 10339frame duration will be >= max(individual stream min 10340durations)</p> 10341 </td> 10342 </tr> 10343 10344 10345 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10346 <!-- end of entry --> 10347 10348 10349 <tr class="entry" id="static_android.scaler.availableRawSizes"> 10350 <td class="entry_name" rowspan="1"> 10351 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 10352 </td> 10353 <td class="entry_type"> 10354 <span class="entry_type_name">int32</span> 10355 <span class="entry_type_container">x</span> 10356 10357 <span class="entry_type_array"> 10358 n x 2 10359 </span> 10360 <span class="entry_type_visibility"> [system as size]</span> 10361 10362 10363 </td> <!-- entry_type --> 10364 10365 <td class="entry_description"> 10366 <p>The resolutions available for use with raw 10367sensor output streams,<wbr/> listed as width,<wbr/> 10368height</p> 10369 </td> 10370 10371 <td class="entry_units"> 10372 </td> 10373 10374 <td class="entry_range"> 10375 <p>Must include: - sensor maximum resolution</p> 10376 </td> 10377 10378 <td class="entry_tags"> 10379 </td> 10380 10381 </tr> 10382 10383 10384 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10385 <!-- end of entry --> 10386 10387 10388 10389 <!-- end of kind --> 10390 </tbody> 10391 <tr><td colspan="6" class="kind">dynamic</td></tr> 10392 10393 <thead class="entries_header"> 10394 <tr> 10395 <th class="th_name">Property Name</th> 10396 <th class="th_type">Type</th> 10397 <th class="th_description">Description</th> 10398 <th class="th_units">Units</th> 10399 <th class="th_range">Range</th> 10400 <th class="th_tags">Tags</th> 10401 </tr> 10402 </thead> 10403 10404 <tbody> 10405 10406 10407 10408 10409 10410 10411 10412 10413 10414 10415 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 10416 <td class="entry_name" rowspan="3"> 10417 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 10418 </td> 10419 <td class="entry_type"> 10420 <span class="entry_type_name">int32</span> 10421 <span class="entry_type_container">x</span> 10422 10423 <span class="entry_type_array"> 10424 4 10425 </span> 10426 <span class="entry_type_visibility"> [public as rectangle]</span> 10427 10428 10429 </td> <!-- entry_type --> 10430 10431 <td class="entry_description"> 10432 <p>(x,<wbr/> y,<wbr/> width,<wbr/> height).<wbr/></p> 10433<p>A rectangle with the top-level corner of (x,<wbr/>y) and size 10434(width,<wbr/> height).<wbr/> The region of the sensor that is used for 10435output.<wbr/> Each stream must use this rectangle to produce its 10436output,<wbr/> cropping to a smaller region if necessary to 10437maintain the stream's aspect ratio.<wbr/></p> 10438<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 10439 </td> 10440 10441 <td class="entry_units"> 10442 (x,<wbr/>y) of top-left corner,<wbr/> width and height of region 10443 in pixels; (0,<wbr/>0) is top-left corner of 10444 android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size 10445 </td> 10446 10447 <td class="entry_range"> 10448 </td> 10449 10450 <td class="entry_tags"> 10451 <ul class="entry_tags"> 10452 <li><a href="#tag_BC">BC</a></li> 10453 </ul> 10454 </td> 10455 10456 </tr> 10457 <tr class="entries_header"> 10458 <th class="th_details" colspan="5">Details</th> 10459 </tr> 10460 <tr class="entry_cont"> 10461 <td class="entry_details" colspan="5"> 10462 <p>Any additional per-stream cropping must be done to 10463maximize the final pixel area of the stream.<wbr/></p> 10464<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 10465ratio,<wbr/> then 4:3 streams should use the exact crop 10466region.<wbr/> 16:9 streams should further crop vertically 10467(letterbox).<wbr/></p> 10468<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 10469outputs should crop horizontally (pillarbox),<wbr/> and 16:9 10470streams should match exactly.<wbr/> These additional crops must 10471be centered within the crop region.<wbr/></p> 10472<p>The output streams must maintain square pixels at all 10473times,<wbr/> no matter what the relative aspect ratios of the 10474crop region and the stream are.<wbr/> Negative values for 10475corner are allowed for raw output if full pixel array is 10476larger than active pixel array.<wbr/> Width and height may be 10477rounded to nearest larger supportable width,<wbr/> especially 10478for raw output,<wbr/> where only a few fixed scales may be 10479possible.<wbr/> The width and height of the crop region cannot 10480be set to be smaller than floor( activeArraySize.<wbr/>width /<wbr/> 10481android.<wbr/>scaler.<wbr/>max<wbr/>Digital<wbr/>Zoom ) and floor( 10482activeArraySize.<wbr/>height /<wbr/> android.<wbr/>scaler.<wbr/>max<wbr/>Digital<wbr/>Zoom),<wbr/> 10483respectively.<wbr/></p> 10484 </td> 10485 </tr> 10486 10487 10488 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10489 <!-- end of entry --> 10490 10491 10492 10493 <!-- end of kind --> 10494 </tbody> 10495 10496 <!-- end of section --> 10497 <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr> 10498 10499 10500 <tr><td colspan="6" class="kind">controls</td></tr> 10501 10502 <thead class="entries_header"> 10503 <tr> 10504 <th class="th_name">Property Name</th> 10505 <th class="th_type">Type</th> 10506 <th class="th_description">Description</th> 10507 <th class="th_units">Units</th> 10508 <th class="th_range">Range</th> 10509 <th class="th_tags">Tags</th> 10510 </tr> 10511 </thead> 10512 10513 <tbody> 10514 10515 10516 10517 10518 10519 10520 10521 10522 10523 10524 <tr class="entry" id="controls_android.sensor.exposureTime"> 10525 <td class="entry_name" rowspan="3"> 10526 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 10527 </td> 10528 <td class="entry_type"> 10529 <span class="entry_type_name">int64</span> 10530 10531 <span class="entry_type_visibility"> [public]</span> 10532 10533 10534 </td> <!-- entry_type --> 10535 10536 <td class="entry_description"> 10537 <p>Duration each pixel is exposed to 10538light.<wbr/></p> 10539<p>If the sensor can't expose this exact duration,<wbr/> it should shorten the 10540duration exposed to the nearest possible value (rather than expose longer).<wbr/></p> 10541 </td> 10542 10543 <td class="entry_units"> 10544 nanoseconds 10545 </td> 10546 10547 <td class="entry_range"> 10548 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 10549 </td> 10550 10551 <td class="entry_tags"> 10552 <ul class="entry_tags"> 10553 <li><a href="#tag_V1">V1</a></li> 10554 </ul> 10555 </td> 10556 10557 </tr> 10558 <tr class="entries_header"> 10559 <th class="th_details" colspan="5">Details</th> 10560 </tr> 10561 <tr class="entry_cont"> 10562 <td class="entry_details" colspan="5"> 10563 <p>1/<wbr/>10000 - 30 sec range.<wbr/> No bulb mode</p> 10564 </td> 10565 </tr> 10566 10567 10568 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10569 <!-- end of entry --> 10570 10571 10572 <tr class="entry" id="controls_android.sensor.frameDuration"> 10573 <td class="entry_name" rowspan="3"> 10574 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 10575 </td> 10576 <td class="entry_type"> 10577 <span class="entry_type_name">int64</span> 10578 10579 <span class="entry_type_visibility"> [public]</span> 10580 10581 10582 </td> <!-- entry_type --> 10583 10584 <td class="entry_description"> 10585 <p>Duration from start of frame exposure to 10586start of next frame exposure.<wbr/></p> 10587 </td> 10588 10589 <td class="entry_units"> 10590 nanoseconds 10591 </td> 10592 10593 <td class="entry_range"> 10594 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 10595android.<wbr/>scaler.<wbr/>available*Min<wbr/>Durations.<wbr/> The duration 10596is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 10597 </td> 10598 10599 <td class="entry_tags"> 10600 <ul class="entry_tags"> 10601 <li><a href="#tag_V1">V1</a></li> 10602 <li><a href="#tag_BC">BC</a></li> 10603 </ul> 10604 </td> 10605 10606 </tr> 10607 <tr class="entries_header"> 10608 <th class="th_details" colspan="5">Details</th> 10609 </tr> 10610 <tr class="entry_cont"> 10611 <td class="entry_details" colspan="5"> 10612 <p>The maximum frame rate that can be supported by a camera subsystem is 10613a function of many factors:</p> 10614<ul> 10615<li>Requested resolutions of output image streams</li> 10616<li>Availability of binning /<wbr/> skipping modes on the imager</li> 10617<li>The bandwidth of the imager interface</li> 10618<li>The bandwidth of the various ISP processing blocks</li> 10619</ul> 10620<p>Since these factors can vary greatly between different ISPs and 10621sensors,<wbr/> the camera abstraction tries to represent the bandwidth 10622restrictions with as simple a model as possible.<wbr/></p> 10623<p>The model presented has the following characteristics:</p> 10624<ul> 10625<li>The image sensor is always configured to output the smallest 10626resolution possible given the application's requested output stream 10627sizes.<wbr/> The smallest resolution is defined as being at least as large 10628as the largest requested output stream size; the camera pipeline must 10629never digitally upsample sensor data when the crop region covers the 10630whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 10631resolutions are configured,<wbr/> the sensor can provide a higher frame 10632rate.<wbr/></li> 10633<li>Since any request may use any or all the currently configured 10634output streams,<wbr/> the sensor and ISP must be configured to support 10635scaling a single capture to all the streams at the same time.<wbr/> This 10636means the camera pipeline must be ready to produce the largest 10637requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 10638frame rate of a given configured stream set is governed only by the 10639largest requested stream resolution.<wbr/></li> 10640<li>Using more than one output stream in a request does not affect the 10641frame duration.<wbr/></li> 10642<li>JPEG streams act like processed YUV streams in requests for which 10643they are not included; in requests in which they are directly 10644referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 10645JPEG stream requires the underlying YUV data to always be ready for 10646use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 10647frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 10648<li>The JPEG processor can run concurrently to the rest of the camera 10649pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 10650</ul> 10651<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 10652is provided via the android.<wbr/>scaler.<wbr/>available*Min<wbr/>Durations fields.<wbr/> 10653These are used to determine the maximum frame rate /<wbr/> minimum frame 10654duration that is possible for a given stream configuration.<wbr/></p> 10655<p>Specifically,<wbr/> the application can use the following rules to 10656determine the minimum frame duration it can request from the HAL 10657device:</p> 10658<ol> 10659<li>Given the application's currently configured set of output 10660streams,<wbr/> <code>S</code>,<wbr/> divide them into three sets: streams in a JPEG format 10661<code>SJ</code>,<wbr/> streams in a raw sensor format <code>SR</code>,<wbr/> and the rest ('processed') 10662<code>SP</code>.<wbr/></li> 10663<li>For each subset of streams,<wbr/> find the largest resolution (by pixel 10664count) in the subset.<wbr/> This gives (at most) three resolutions <code>RJ</code>,<wbr/> 10665<code>RR</code>,<wbr/> and <code>RP</code>.<wbr/></li> 10666<li>If <code>RJ</code> is greater than <code>RP</code>,<wbr/> set <code>RP</code> equal to <code>RJ</code>.<wbr/> If there is 10667no exact match for <code>RP == RJ</code> (in particular there isn't an available 10668processed resolution at the same size as <code>RJ</code>),<wbr/> then set <code>RP</code> equal 10669to the smallest processed resolution that is larger than <code>RJ</code>.<wbr/> If 10670there are no processed resolutions larger than <code>RJ</code>,<wbr/> then set <code>RJ</code> to 10671the processed resolution closest to <code>RJ</code>.<wbr/></li> 10672<li>If <code>RP</code> is greater than <code>RR</code>,<wbr/> set <code>RR</code> equal to <code>RP</code>.<wbr/> If there is 10673no exact match for <code>RR == RP</code> (in particular there isn't an available 10674raw resolution at the same size as <code>RP</code>),<wbr/> then set <code>RR</code> equal to 10675or to the smallest raw resolution that is larger than <code>RP</code>.<wbr/> If 10676there are no raw resolutions larger than <code>RP</code>,<wbr/> then set <code>RR</code> to 10677the raw resolution closest to <code>RP</code>.<wbr/></li> 10678<li>Look up the matching minimum frame durations in the property lists 10679<a href="#static_android.scaler.availableJpegMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations</a>,<wbr/> 10680<a href="#static_android.scaler.availableRawMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations</a>,<wbr/> and 10681<a href="#static_android.scaler.availableProcessedMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations</a>.<wbr/> This gives three 10682minimum frame durations <code>FJ</code>,<wbr/> <code>FR</code>,<wbr/> and <code>FP</code>.<wbr/></li> 10683<li>If a stream of requests do not use a JPEG stream,<wbr/> then the minimum 10684supported frame duration for each request is <code>max(FR,<wbr/> FP)</code>.<wbr/></li> 10685<li>If a stream of requests all use the JPEG stream,<wbr/> then the minimum 10686supported frame duration for each request is <code>max(FR,<wbr/> FP,<wbr/> FJ)</code>.<wbr/></li> 10687<li>If a mix of JPEG-using and non-JPEG-using requests is submitted by 10688the application,<wbr/> then the HAL will have to delay JPEG-using requests 10689whenever the JPEG encoder is still busy processing an older capture.<wbr/> 10690This will happen whenever a JPEG-using request starts capture less 10691than <code>FJ</code> <em>ns</em> after a previous JPEG-using request.<wbr/> The minimum 10692supported frame duration will vary between the values calculated in 10693#6 and #7.<wbr/></li> 10694</ol> 10695 </td> 10696 </tr> 10697 10698 10699 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10700 <!-- end of entry --> 10701 10702 10703 <tr class="entry" id="controls_android.sensor.sensitivity"> 10704 <td class="entry_name" rowspan="3"> 10705 android.<wbr/>sensor.<wbr/>sensitivity 10706 </td> 10707 <td class="entry_type"> 10708 <span class="entry_type_name">int32</span> 10709 10710 <span class="entry_type_visibility"> [public]</span> 10711 10712 10713 </td> <!-- entry_type --> 10714 10715 <td class="entry_description"> 10716 <p>Gain applied to image data.<wbr/> Must be 10717implemented through analog gain only if set to values 10718below 'maximum analog sensitivity'.<wbr/></p> 10719<p>If the sensor can't apply this exact gain,<wbr/> it should lessen the 10720gain to the nearest possible value (rather than gain more).<wbr/></p> 10721 </td> 10722 10723 <td class="entry_units"> 10724 ISO arithmetic units 10725 </td> 10726 10727 <td class="entry_range"> 10728 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 10729 </td> 10730 10731 <td class="entry_tags"> 10732 <ul class="entry_tags"> 10733 <li><a href="#tag_V1">V1</a></li> 10734 </ul> 10735 </td> 10736 10737 </tr> 10738 <tr class="entries_header"> 10739 <th class="th_details" colspan="5">Details</th> 10740 </tr> 10741 <tr class="entry_cont"> 10742 <td class="entry_details" colspan="5"> 10743 <p>ISO 12232:2006 REI method</p> 10744 </td> 10745 </tr> 10746 10747 10748 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10749 <!-- end of entry --> 10750 10751 10752 <tr class="entry" id="controls_android.sensor.testPatternData"> 10753 <td class="entry_name" rowspan="5"> 10754 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 10755 </td> 10756 <td class="entry_type"> 10757 <span class="entry_type_name">int32</span> 10758 <span class="entry_type_container">x</span> 10759 10760 <span class="entry_type_array"> 10761 4 10762 </span> 10763 <span class="entry_type_visibility"> [public]</span> 10764 10765 10766 </td> <!-- entry_type --> 10767 10768 <td class="entry_description"> 10769 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 10770when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 10771 </td> 10772 10773 <td class="entry_units"> 10774 </td> 10775 10776 <td class="entry_range"> 10777 <p>Optional.<wbr/> 10778Must be supported if <a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a> contains 10779SOLID_<wbr/>COLOR.<wbr/></p> 10780 </td> 10781 10782 <td class="entry_tags"> 10783 </td> 10784 10785 </tr> 10786 <tr class="entries_header"> 10787 <th class="th_details" colspan="5">Details</th> 10788 </tr> 10789 <tr class="entry_cont"> 10790 <td class="entry_details" colspan="5"> 10791 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 10792The camera device then uses the most significant X bits 10793that correspond to how many bits are in its Bayer raw sensor 10794output.<wbr/></p> 10795<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 1079610 most significant bits from each color channel.<wbr/></p> 10797 </td> 10798 </tr> 10799 10800 <tr class="entries_header"> 10801 <th class="th_details" colspan="5">HAL Implementation Details</th> 10802 </tr> 10803 <tr class="entry_cont"> 10804 <td class="entry_details" colspan="5"> 10805 10806 </td> 10807 </tr> 10808 10809 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10810 <!-- end of entry --> 10811 10812 10813 <tr class="entry" id="controls_android.sensor.testPatternMode"> 10814 <td class="entry_name" rowspan="5"> 10815 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 10816 </td> 10817 <td class="entry_type"> 10818 <span class="entry_type_name entry_type_name_enum">int32</span> 10819 10820 <span class="entry_type_visibility"> [public]</span> 10821 10822 <ul class="entry_type_enum"> 10823 <li> 10824 <span class="entry_type_enum_name">OFF</span> 10825 <span class="entry_type_enum_notes"><p>Default.<wbr/> No test pattern mode is used,<wbr/> and the camera 10826device returns captures from the image sensor.<wbr/></p></span> 10827 </li> 10828 <li> 10829 <span class="entry_type_enum_name">SOLID_COLOR</span> 10830 <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 10831respective color channel provided in 10832<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 10833<p>For example:</p> 10834<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 10835</code></pre> 10836<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 10837<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 10838</code></pre> 10839<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 10840are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 10841 </li> 10842 <li> 10843 <span class="entry_type_enum_name">COLOR_BARS</span> 10844 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 10845<p>The vertical bars (left-to-right) are as follows:</p> 10846<ul> 10847<li>100% white</li> 10848<li>yellow</li> 10849<li>cyan</li> 10850<li>green</li> 10851<li>magenta</li> 10852<li>red</li> 10853<li>blue</li> 10854<li>black</li> 10855</ul> 10856<p>In general the image would look like the following:</p> 10857<pre><code>W Y C G M R B K 10858W Y C G M R B K 10859W Y C G M R B K 10860W Y C G M R B K 10861W Y C G M R B K 10862.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 10863.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 10864.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 10865 10866(B = Blue,<wbr/> K = Black) 10867</code></pre> 10868<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 10869When this is not possible,<wbr/> the bar size should be rounded 10870down to the nearest integer and the pattern can repeat 10871on the right side.<wbr/></p> 10872<p>Each bar's height must always take up the full sensor 10873pixel array height.<wbr/></p> 10874<p>Each pixel in this test pattern must be set to either 108750% intensity or 100% intensity.<wbr/></p></span> 10876 </li> 10877 <li> 10878 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 10879 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 10880each bar should start at its specified color at the top,<wbr/> 10881and fade to gray at the bottom.<wbr/></p> 10882<p>Furthermore each bar is further subdivided into a left and 10883right half.<wbr/> The left half should have a smooth gradient,<wbr/> 10884and the right half should have a quantized gradient.<wbr/></p> 10885<p>In particular,<wbr/> the right half's should consist of blocks of the 10886same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 10887<p>The least significant bits in the quantized gradient should 10888be copied from the most significant bits of the smooth gradient.<wbr/></p> 10889<p>The height of each bar should always be a multiple of 128.<wbr/> 10890When this is not the case,<wbr/> the pattern should repeat at the bottom 10891of the image.<wbr/></p></span> 10892 </li> 10893 <li> 10894 <span class="entry_type_enum_name">PN9</span> 10895 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 10896generated from a PN9 512-bit sequence (typically implemented 10897in hardware with a linear feedback shift register).<wbr/></p> 10898<p>The generator should be reset at the beginning of each frame,<wbr/> 10899and thus each subsequent raw frame with this test pattern should 10900be exactly the same as the last.<wbr/></p></span> 10901 </li> 10902 <li> 10903 <span class="entry_type_enum_name">CUSTOM1</span> 10904 <span class="entry_type_enum_value">256</span> 10905 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 10906available only on this camera device are at least this numeric 10907value.<wbr/></p> 10908<p>All of the custom test patterns will be static 10909(that is the raw image must not vary from frame to frame).<wbr/></p></span> 10910 </li> 10911 </ul> 10912 10913 </td> <!-- entry_type --> 10914 10915 <td class="entry_description"> 10916 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 10917doing a real exposure from the camera.<wbr/></p> 10918 </td> 10919 10920 <td class="entry_units"> 10921 </td> 10922 10923 <td class="entry_range"> 10924 <p>Optional.<wbr/> Defaults to OFF.<wbr/> Value must be one of 10925<a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 10926 </td> 10927 10928 <td class="entry_tags"> 10929 </td> 10930 10931 </tr> 10932 <tr class="entries_header"> 10933 <th class="th_details" colspan="5">Details</th> 10934 </tr> 10935 <tr class="entry_cont"> 10936 <td class="entry_details" colspan="5"> 10937 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 10938by android.<wbr/>sensor.<wbr/>* should be ignored.<wbr/> All other controls should 10939work as normal.<wbr/></p> 10940<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 10941occur (and that the test pattern remain unmodified,<wbr/> since the flash 10942would not actually affect it).<wbr/></p> 10943 </td> 10944 </tr> 10945 10946 <tr class="entries_header"> 10947 <th class="th_details" colspan="5">HAL Implementation Details</th> 10948 </tr> 10949 <tr class="entry_cont"> 10950 <td class="entry_details" colspan="5"> 10951 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 10952<p>The HAL may choose to substitute test patterns from the sensor 10953with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 10954indistinguishable to the ISP whether the data came from the 10955sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 10956 </td> 10957 </tr> 10958 10959 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10960 <!-- end of entry --> 10961 10962 10963 10964 <!-- end of kind --> 10965 </tbody> 10966 <tr><td colspan="6" class="kind">static</td></tr> 10967 10968 <thead class="entries_header"> 10969 <tr> 10970 <th class="th_name">Property Name</th> 10971 <th class="th_type">Type</th> 10972 <th class="th_description">Description</th> 10973 <th class="th_units">Units</th> 10974 <th class="th_range">Range</th> 10975 <th class="th_tags">Tags</th> 10976 </tr> 10977 </thead> 10978 10979 <tbody> 10980 10981 10982 10983 10984 10985 10986 10987 10988 10989 10990 10991 10992 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 10993 <td class="entry_name" rowspan="3"> 10994 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 10995 </td> 10996 <td class="entry_type"> 10997 <span class="entry_type_name">int32</span> 10998 <span class="entry_type_container">x</span> 10999 11000 <span class="entry_type_array"> 11001 4 11002 </span> 11003 <span class="entry_type_visibility"> [public as rectangle]</span> 11004 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 11005 11006 11007 </td> <!-- entry_type --> 11008 11009 <td class="entry_description"> 11010 <p>Area of raw data which corresponds to only 11011active pixels.<wbr/></p> 11012 </td> 11013 11014 <td class="entry_units"> 11015 </td> 11016 11017 <td class="entry_range"> 11018 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 11019>= <code>(0,<wbr/>0)</code>.<wbr/> The <code>(width,<wbr/> height)</code> must be <= 11020<code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p> 11021 </td> 11022 11023 <td class="entry_tags"> 11024 <ul class="entry_tags"> 11025 <li><a href="#tag_DNG">DNG</a></li> 11026 </ul> 11027 </td> 11028 11029 </tr> 11030 <tr class="entries_header"> 11031 <th class="th_details" colspan="5">Details</th> 11032 </tr> 11033 <tr class="entry_cont"> 11034 <td class="entry_details" colspan="5"> 11035 <p>It is smaller or equal to 11036sensor full pixel array,<wbr/> which could include the black calibration pixels.<wbr/></p> 11037 </td> 11038 </tr> 11039 11040 11041 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11042 <!-- end of entry --> 11043 11044 11045 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 11046 <td class="entry_name" rowspan="1"> 11047 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 11048 </td> 11049 <td class="entry_type"> 11050 <span class="entry_type_name">int32</span> 11051 <span class="entry_type_container">x</span> 11052 11053 <span class="entry_type_array"> 11054 2 11055 </span> 11056 <span class="entry_type_visibility"> [public]</span> 11057 <div class="entry_type_notes">Range of supported sensitivities</div> 11058 11059 11060 </td> <!-- entry_type --> 11061 11062 <td class="entry_description"> 11063 <p>Range of valid sensitivities</p> 11064 </td> 11065 11066 <td class="entry_units"> 11067 </td> 11068 11069 <td class="entry_range"> 11070 <p>Min <= 100,<wbr/> Max >= 1600</p> 11071 </td> 11072 11073 <td class="entry_tags"> 11074 <ul class="entry_tags"> 11075 <li><a href="#tag_BC">BC</a></li> 11076 <li><a href="#tag_V1">V1</a></li> 11077 </ul> 11078 </td> 11079 11080 </tr> 11081 11082 11083 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11084 <!-- end of entry --> 11085 11086 11087 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 11088 <td class="entry_name" rowspan="1"> 11089 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 11090 </td> 11091 <td class="entry_type"> 11092 <span class="entry_type_name entry_type_name_enum">byte</span> 11093 11094 <span class="entry_type_visibility"> [system]</span> 11095 11096 <ul class="entry_type_enum"> 11097 <li> 11098 <span class="entry_type_enum_name">RGGB</span> 11099 </li> 11100 <li> 11101 <span class="entry_type_enum_name">GRBG</span> 11102 </li> 11103 <li> 11104 <span class="entry_type_enum_name">GBRG</span> 11105 </li> 11106 <li> 11107 <span class="entry_type_enum_name">BGGR</span> 11108 </li> 11109 <li> 11110 <span class="entry_type_enum_name">RGB</span> 11111 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 11112values for each pixel,<wbr/> instead of just 1 16-bit value 11113per pixel.<wbr/></p></span> 11114 </li> 11115 </ul> 11116 11117 </td> <!-- entry_type --> 11118 11119 <td class="entry_description"> 11120 <p>Arrangement of color filters on sensor; 11121represents the colors in the top-left 2x2 section of 11122the sensor,<wbr/> in reading order</p> 11123 </td> 11124 11125 <td class="entry_units"> 11126 </td> 11127 11128 <td class="entry_range"> 11129 </td> 11130 11131 <td class="entry_tags"> 11132 <ul class="entry_tags"> 11133 <li><a href="#tag_DNG">DNG</a></li> 11134 </ul> 11135 </td> 11136 11137 </tr> 11138 11139 11140 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11141 <!-- end of entry --> 11142 11143 11144 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 11145 <td class="entry_name" rowspan="3"> 11146 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 11147 </td> 11148 <td class="entry_type"> 11149 <span class="entry_type_name">int64</span> 11150 <span class="entry_type_container">x</span> 11151 11152 <span class="entry_type_array"> 11153 2 11154 </span> 11155 <span class="entry_type_visibility"> [public]</span> 11156 <div class="entry_type_notes">nanoseconds</div> 11157 11158 11159 </td> <!-- entry_type --> 11160 11161 <td class="entry_description"> 11162 <p>Range of valid exposure 11163times used by <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>.<wbr/></p> 11164 </td> 11165 11166 <td class="entry_units"> 11167 </td> 11168 11169 <td class="entry_range"> 11170 <p>Min <= 100e3 (100 us),<wbr/> Max >= 1e9 (1 11171sec)</p> 11172 </td> 11173 11174 <td class="entry_tags"> 11175 <ul class="entry_tags"> 11176 <li><a href="#tag_V1">V1</a></li> 11177 </ul> 11178 </td> 11179 11180 </tr> 11181 11182 <tr class="entries_header"> 11183 <th class="th_details" colspan="5">HAL Implementation Details</th> 11184 </tr> 11185 <tr class="entry_cont"> 11186 <td class="entry_details" colspan="5"> 11187 <p>The maximum of the range must be at least 111881 second.<wbr/> It should be at least 30 seconds.<wbr/></p> 11189 </td> 11190 </tr> 11191 11192 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11193 <!-- end of entry --> 11194 11195 11196 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 11197 <td class="entry_name" rowspan="5"> 11198 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 11199 </td> 11200 <td class="entry_type"> 11201 <span class="entry_type_name">int64</span> 11202 11203 <span class="entry_type_visibility"> [public]</span> 11204 11205 11206 </td> <!-- entry_type --> 11207 11208 <td class="entry_description"> 11209 <p>Maximum possible frame duration (minimum frame 11210rate).<wbr/></p> 11211 </td> 11212 11213 <td class="entry_units"> 11214 nanoseconds 11215 </td> 11216 11217 <td class="entry_range"> 11218 <p>>= 30e9</p> 11219 </td> 11220 11221 <td class="entry_tags"> 11222 <ul class="entry_tags"> 11223 <li><a href="#tag_BC">BC</a></li> 11224 <li><a href="#tag_V1">V1</a></li> 11225 </ul> 11226 </td> 11227 11228 </tr> 11229 <tr class="entries_header"> 11230 <th class="th_details" colspan="5">Details</th> 11231 </tr> 11232 <tr class="entry_cont"> 11233 <td class="entry_details" colspan="5"> 11234 <p>The largest possible android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 11235that will be accepted by the camera device.<wbr/> Attempting to use 11236frame durations beyond the maximum will result in the frame duration 11237being clipped to the maximum.<wbr/> See that control 11238for a full definition of frame durations.<wbr/></p> 11239<p>Refer to 11240<a href="#static_android.scaler.availableProcessedMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations</a>,<wbr/> 11241<a href="#static_android.scaler.availableJpegMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations</a>,<wbr/> and 11242<a href="#static_android.scaler.availableRawMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations</a> for the minimum 11243frame duration values.<wbr/></p> 11244 </td> 11245 </tr> 11246 11247 <tr class="entries_header"> 11248 <th class="th_details" colspan="5">HAL Implementation Details</th> 11249 </tr> 11250 <tr class="entry_cont"> 11251 <td class="entry_details" colspan="5"> 11252 <p>This value must be at least 1 second.<wbr/> It should be at least 30 11253seconds (30e9 ns).<wbr/></p> 11254<p>android.<wbr/>sensor.<wbr/>max<wbr/>Frame<wbr/>Duration must be greater or equal to the 11255android.<wbr/>sensor.<wbr/>exposure<wbr/>Time<wbr/>Range max value (since exposure time 11256overrides frame duration).<wbr/></p> 11257 </td> 11258 </tr> 11259 11260 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11261 <!-- end of entry --> 11262 11263 11264 <tr class="entry" id="static_android.sensor.info.physicalSize"> 11265 <td class="entry_name" rowspan="3"> 11266 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 11267 </td> 11268 <td class="entry_type"> 11269 <span class="entry_type_name">float</span> 11270 <span class="entry_type_container">x</span> 11271 11272 <span class="entry_type_array"> 11273 2 11274 </span> 11275 <span class="entry_type_visibility"> [public]</span> 11276 <div class="entry_type_notes">width x height in millimeters</div> 11277 11278 11279 </td> <!-- entry_type --> 11280 11281 <td class="entry_description"> 11282 <p>The physical dimensions of the full pixel 11283array</p> 11284 </td> 11285 11286 <td class="entry_units"> 11287 </td> 11288 11289 <td class="entry_range"> 11290 </td> 11291 11292 <td class="entry_tags"> 11293 <ul class="entry_tags"> 11294 <li><a href="#tag_V1">V1</a></li> 11295 <li><a href="#tag_BC">BC</a></li> 11296 </ul> 11297 </td> 11298 11299 </tr> 11300 <tr class="entries_header"> 11301 <th class="th_details" colspan="5">Details</th> 11302 </tr> 11303 <tr class="entry_cont"> 11304 <td class="entry_details" colspan="5"> 11305 <p>Needed for FOV calculation for old API</p> 11306 </td> 11307 </tr> 11308 11309 11310 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11311 <!-- end of entry --> 11312 11313 11314 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 11315 <td class="entry_name" rowspan="3"> 11316 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 11317 </td> 11318 <td class="entry_type"> 11319 <span class="entry_type_name">int32</span> 11320 <span class="entry_type_container">x</span> 11321 11322 <span class="entry_type_array"> 11323 2 11324 </span> 11325 <span class="entry_type_visibility"> [system as size]</span> 11326 11327 11328 </td> <!-- entry_type --> 11329 11330 <td class="entry_description"> 11331 <p>Dimensions of full pixel array,<wbr/> possibly 11332including black calibration pixels.<wbr/></p> 11333 </td> 11334 11335 <td class="entry_units"> 11336 </td> 11337 11338 <td class="entry_range"> 11339 </td> 11340 11341 <td class="entry_tags"> 11342 <ul class="entry_tags"> 11343 <li><a href="#tag_DNG">DNG</a></li> 11344 <li><a href="#tag_BC">BC</a></li> 11345 </ul> 11346 </td> 11347 11348 </tr> 11349 <tr class="entries_header"> 11350 <th class="th_details" colspan="5">Details</th> 11351 </tr> 11352 <tr class="entry_cont"> 11353 <td class="entry_details" colspan="5"> 11354 <p>The maximum output resolution for raw format in 11355<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a> will be equal to this size.<wbr/></p> 11356 </td> 11357 </tr> 11358 11359 11360 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11361 <!-- end of entry --> 11362 11363 11364 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 11365 <td class="entry_name" rowspan="3"> 11366 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 11367 </td> 11368 <td class="entry_type"> 11369 <span class="entry_type_name">int32</span> 11370 11371 <span class="entry_type_visibility"> [system]</span> 11372 11373 11374 </td> <!-- entry_type --> 11375 11376 <td class="entry_description"> 11377 <p>Maximum raw value output by 11378sensor</p> 11379 </td> 11380 11381 <td class="entry_units"> 11382 </td> 11383 11384 <td class="entry_range"> 11385 <p>> 1024 (10-bit output)</p> 11386 </td> 11387 11388 <td class="entry_tags"> 11389 <ul class="entry_tags"> 11390 <li><a href="#tag_DNG">DNG</a></li> 11391 </ul> 11392 </td> 11393 11394 </tr> 11395 <tr class="entries_header"> 11396 <th class="th_details" colspan="5">Details</th> 11397 </tr> 11398 <tr class="entry_cont"> 11399 <td class="entry_details" colspan="5"> 11400 <p>Defines sensor bit depth (10-14 bits is 11401expected)</p> 11402 </td> 11403 </tr> 11404 11405 11406 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11407 <!-- end of entry --> 11408 11409 11410 11411 11412 11413 <tr class="entry" id="static_android.sensor.baseGainFactor"> 11414 <td class="entry_name" rowspan="1"> 11415 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 11416 </td> 11417 <td class="entry_type"> 11418 <span class="entry_type_name">rational</span> 11419 11420 <span class="entry_type_visibility"> [public]</span> 11421 11422 11423 </td> <!-- entry_type --> 11424 11425 <td class="entry_description"> 11426 <p>Gain factor from electrons to raw units when 11427ISO=100</p> 11428 </td> 11429 11430 <td class="entry_units"> 11431 </td> 11432 11433 <td class="entry_range"> 11434 </td> 11435 11436 <td class="entry_tags"> 11437 <ul class="entry_tags"> 11438 <li><a href="#tag_V1">V1</a></li> 11439 <li><a href="#tag_FULL">FULL</a></li> 11440 </ul> 11441 </td> 11442 11443 </tr> 11444 11445 11446 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11447 <!-- end of entry --> 11448 11449 11450 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 11451 <td class="entry_name" rowspan="3"> 11452 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 11453 </td> 11454 <td class="entry_type"> 11455 <span class="entry_type_name">int32</span> 11456 <span class="entry_type_container">x</span> 11457 11458 <span class="entry_type_array"> 11459 4 11460 </span> 11461 <span class="entry_type_visibility"> [system]</span> 11462 <div class="entry_type_notes">2x2 raw count block</div> 11463 11464 11465 </td> <!-- entry_type --> 11466 11467 <td class="entry_description"> 11468 <p>A fixed black level offset for each of the 11469Bayer mosaic channels</p> 11470 </td> 11471 11472 <td class="entry_units"> 11473 </td> 11474 11475 <td class="entry_range"> 11476 <p>>= 0 each</p> 11477 </td> 11478 11479 <td class="entry_tags"> 11480 <ul class="entry_tags"> 11481 <li><a href="#tag_DNG">DNG</a></li> 11482 </ul> 11483 </td> 11484 11485 </tr> 11486 <tr class="entries_header"> 11487 <th class="th_details" colspan="5">Details</th> 11488 </tr> 11489 <tr class="entry_cont"> 11490 <td class="entry_details" colspan="5"> 11491 <p>As per DNG BlackLevelRepeatDim /<wbr/> BlackLevel 11492tags</p> 11493 </td> 11494 </tr> 11495 11496 11497 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11498 <!-- end of entry --> 11499 11500 11501 <tr class="entry" id="static_android.sensor.calibrationTransform1"> 11502 <td class="entry_name" rowspan="1"> 11503 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 11504 </td> 11505 <td class="entry_type"> 11506 <span class="entry_type_name">rational</span> 11507 <span class="entry_type_container">x</span> 11508 11509 <span class="entry_type_array"> 11510 9 11511 </span> 11512 <span class="entry_type_visibility"> [system]</span> 11513 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 11514 11515 11516 </td> <!-- entry_type --> 11517 11518 <td class="entry_description"> 11519 <p>Per-device calibration on top of color space 11520transform 1</p> 11521 </td> 11522 11523 <td class="entry_units"> 11524 </td> 11525 11526 <td class="entry_range"> 11527 </td> 11528 11529 <td class="entry_tags"> 11530 <ul class="entry_tags"> 11531 <li><a href="#tag_DNG">DNG</a></li> 11532 </ul> 11533 </td> 11534 11535 </tr> 11536 11537 11538 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11539 <!-- end of entry --> 11540 11541 11542 <tr class="entry" id="static_android.sensor.calibrationTransform2"> 11543 <td class="entry_name" rowspan="1"> 11544 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 11545 </td> 11546 <td class="entry_type"> 11547 <span class="entry_type_name">rational</span> 11548 <span class="entry_type_container">x</span> 11549 11550 <span class="entry_type_array"> 11551 9 11552 </span> 11553 <span class="entry_type_visibility"> [system]</span> 11554 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 11555 11556 11557 </td> <!-- entry_type --> 11558 11559 <td class="entry_description"> 11560 <p>Per-device calibration on top of color space 11561transform 2</p> 11562 </td> 11563 11564 <td class="entry_units"> 11565 </td> 11566 11567 <td class="entry_range"> 11568 </td> 11569 11570 <td class="entry_tags"> 11571 <ul class="entry_tags"> 11572 <li><a href="#tag_DNG">DNG</a></li> 11573 </ul> 11574 </td> 11575 11576 </tr> 11577 11578 11579 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11580 <!-- end of entry --> 11581 11582 11583 <tr class="entry" id="static_android.sensor.colorTransform1"> 11584 <td class="entry_name" rowspan="3"> 11585 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 11586 </td> 11587 <td class="entry_type"> 11588 <span class="entry_type_name">rational</span> 11589 <span class="entry_type_container">x</span> 11590 11591 <span class="entry_type_array"> 11592 9 11593 </span> 11594 <span class="entry_type_visibility"> [system]</span> 11595 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 11596 11597 11598 </td> <!-- entry_type --> 11599 11600 <td class="entry_description"> 11601 <p>Linear mapping from XYZ (D50) color space to 11602reference linear sensor color,<wbr/> for first reference 11603illuminant</p> 11604 </td> 11605 11606 <td class="entry_units"> 11607 </td> 11608 11609 <td class="entry_range"> 11610 </td> 11611 11612 <td class="entry_tags"> 11613 <ul class="entry_tags"> 11614 <li><a href="#tag_DNG">DNG</a></li> 11615 </ul> 11616 </td> 11617 11618 </tr> 11619 <tr class="entries_header"> 11620 <th class="th_details" colspan="5">Details</th> 11621 </tr> 11622 <tr class="entry_cont"> 11623 <td class="entry_details" colspan="5"> 11624 <p>Use as follows XYZ = inv(transform) * clip( (raw - 11625black level(raw) ) /<wbr/> ( white level - max black level) ).<wbr/> 11626At least in the simple case</p> 11627 </td> 11628 </tr> 11629 11630 11631 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11632 <!-- end of entry --> 11633 11634 11635 <tr class="entry" id="static_android.sensor.colorTransform2"> 11636 <td class="entry_name" rowspan="1"> 11637 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 11638 </td> 11639 <td class="entry_type"> 11640 <span class="entry_type_name">rational</span> 11641 <span class="entry_type_container">x</span> 11642 11643 <span class="entry_type_array"> 11644 9 11645 </span> 11646 <span class="entry_type_visibility"> [system]</span> 11647 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 11648 11649 11650 </td> <!-- entry_type --> 11651 11652 <td class="entry_description"> 11653 <p>Linear mapping from XYZ (D50) color space to 11654reference linear sensor color,<wbr/> for second reference 11655illuminant</p> 11656 </td> 11657 11658 <td class="entry_units"> 11659 </td> 11660 11661 <td class="entry_range"> 11662 </td> 11663 11664 <td class="entry_tags"> 11665 <ul class="entry_tags"> 11666 <li><a href="#tag_DNG">DNG</a></li> 11667 </ul> 11668 </td> 11669 11670 </tr> 11671 11672 11673 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11674 <!-- end of entry --> 11675 11676 11677 <tr class="entry" id="static_android.sensor.forwardMatrix1"> 11678 <td class="entry_name" rowspan="1"> 11679 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 11680 </td> 11681 <td class="entry_type"> 11682 <span class="entry_type_name">rational</span> 11683 <span class="entry_type_container">x</span> 11684 11685 <span class="entry_type_array"> 11686 9 11687 </span> 11688 <span class="entry_type_visibility"> [system]</span> 11689 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 11690 11691 11692 </td> <!-- entry_type --> 11693 11694 <td class="entry_description"> 11695 <p>Used by DNG for better WB 11696adaptation</p> 11697 </td> 11698 11699 <td class="entry_units"> 11700 </td> 11701 11702 <td class="entry_range"> 11703 </td> 11704 11705 <td class="entry_tags"> 11706 <ul class="entry_tags"> 11707 <li><a href="#tag_DNG">DNG</a></li> 11708 </ul> 11709 </td> 11710 11711 </tr> 11712 11713 11714 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11715 <!-- end of entry --> 11716 11717 11718 <tr class="entry" id="static_android.sensor.forwardMatrix2"> 11719 <td class="entry_name" rowspan="1"> 11720 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 11721 </td> 11722 <td class="entry_type"> 11723 <span class="entry_type_name">rational</span> 11724 <span class="entry_type_container">x</span> 11725 11726 <span class="entry_type_array"> 11727 9 11728 </span> 11729 <span class="entry_type_visibility"> [system]</span> 11730 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 11731 11732 11733 </td> <!-- entry_type --> 11734 11735 <td class="entry_description"> 11736 <p>Used by DNG for better WB 11737adaptation</p> 11738 </td> 11739 11740 <td class="entry_units"> 11741 </td> 11742 11743 <td class="entry_range"> 11744 </td> 11745 11746 <td class="entry_tags"> 11747 <ul class="entry_tags"> 11748 <li><a href="#tag_DNG">DNG</a></li> 11749 </ul> 11750 </td> 11751 11752 </tr> 11753 11754 11755 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11756 <!-- end of entry --> 11757 11758 11759 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 11760 <td class="entry_name" rowspan="3"> 11761 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 11762 </td> 11763 <td class="entry_type"> 11764 <span class="entry_type_name">int32</span> 11765 11766 <span class="entry_type_visibility"> [public]</span> 11767 11768 11769 </td> <!-- entry_type --> 11770 11771 <td class="entry_description"> 11772 <p>Maximum sensitivity that is implemented 11773purely through analog gain.<wbr/></p> 11774 </td> 11775 11776 <td class="entry_units"> 11777 </td> 11778 11779 <td class="entry_range"> 11780 </td> 11781 11782 <td class="entry_tags"> 11783 <ul class="entry_tags"> 11784 <li><a href="#tag_V1">V1</a></li> 11785 <li><a href="#tag_FULL">FULL</a></li> 11786 </ul> 11787 </td> 11788 11789 </tr> 11790 <tr class="entries_header"> 11791 <th class="th_details" colspan="5">Details</th> 11792 </tr> 11793 <tr class="entry_cont"> 11794 <td class="entry_details" colspan="5"> 11795 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 11796equal to this,<wbr/> all applied gain must be analog.<wbr/> For 11797values above this,<wbr/> the gain applied can be a mix of analog and 11798digital.<wbr/></p> 11799 </td> 11800 </tr> 11801 11802 11803 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11804 <!-- end of entry --> 11805 11806 11807 <tr class="entry" id="static_android.sensor.noiseModelCoefficients"> 11808 <td class="entry_name" rowspan="3"> 11809 android.<wbr/>sensor.<wbr/>noise<wbr/>Model<wbr/>Coefficients 11810 </td> 11811 <td class="entry_type"> 11812 <span class="entry_type_name">float</span> 11813 <span class="entry_type_container">x</span> 11814 11815 <span class="entry_type_array"> 11816 2 11817 </span> 11818 <span class="entry_type_visibility"> [system]</span> 11819 <div class="entry_type_notes">float constants A,<wbr/> B for the noise variance model</div> 11820 11821 11822 </td> <!-- entry_type --> 11823 11824 <td class="entry_description"> 11825 <p>Estimation of sensor noise 11826characteristics</p> 11827 </td> 11828 11829 <td class="entry_units"> 11830 var(raw pixel value) = electrons * (baseGainFactor 11831 * iso/<wbr/>100)^2 + A * (baseGainFactor * iso/<wbr/>100)^2 + 11832 B 11833 </td> 11834 11835 <td class="entry_range"> 11836 </td> 11837 11838 <td class="entry_tags"> 11839 <ul class="entry_tags"> 11840 <li><a href="#tag_V1">V1</a></li> 11841 </ul> 11842 </td> 11843 11844 </tr> 11845 <tr class="entries_header"> 11846 <th class="th_details" colspan="5">Details</th> 11847 </tr> 11848 <tr class="entry_cont"> 11849 <td class="entry_details" colspan="5"> 11850 <p>A represents sensor read noise before analog 11851amplification; B represents noise from A/<wbr/>D conversion and 11852other circuits after amplification.<wbr/> Both noise sources 11853are assumed to be gaussian,<wbr/> independent,<wbr/> and not to vary 11854across the sensor</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="static_android.sensor.orientation"> 11864 <td class="entry_name" rowspan="1"> 11865 android.<wbr/>sensor.<wbr/>orientation 11866 </td> 11867 <td class="entry_type"> 11868 <span class="entry_type_name">int32</span> 11869 11870 <span class="entry_type_visibility"> [public]</span> 11871 11872 11873 </td> <!-- entry_type --> 11874 11875 <td class="entry_description"> 11876 <p>Clockwise angle through which the output 11877image needs to be rotated to be upright on the device 11878screen in its native orientation.<wbr/> Also defines the 11879direction of rolling shutter readout,<wbr/> which is from top 11880to bottom in the sensor's coordinate system</p> 11881 </td> 11882 11883 <td class="entry_units"> 11884 degrees clockwise rotation,<wbr/> only multiples of 11885 90 11886 </td> 11887 11888 <td class="entry_range"> 11889 <p>0,<wbr/>90,<wbr/>180,<wbr/>270</p> 11890 </td> 11891 11892 <td class="entry_tags"> 11893 <ul class="entry_tags"> 11894 <li><a href="#tag_BC">BC</a></li> 11895 </ul> 11896 </td> 11897 11898 </tr> 11899 11900 11901 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11902 <!-- end of entry --> 11903 11904 11905 <tr class="entry" id="static_android.sensor.referenceIlluminant1"> 11906 <td class="entry_name" rowspan="3"> 11907 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 11908 </td> 11909 <td class="entry_type"> 11910 <span class="entry_type_name entry_type_name_enum">byte</span> 11911 11912 <span class="entry_type_visibility"> [system]</span> 11913 11914 <ul class="entry_type_enum"> 11915 <li> 11916 <span class="entry_type_enum_name">DAYLIGHT</span> 11917 <span class="entry_type_enum_value">1</span> 11918 </li> 11919 <li> 11920 <span class="entry_type_enum_name">FLUORESCENT</span> 11921 <span class="entry_type_enum_value">2</span> 11922 </li> 11923 <li> 11924 <span class="entry_type_enum_name">TUNGSTEN</span> 11925 <span class="entry_type_enum_value">3</span> 11926 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 11927 </li> 11928 <li> 11929 <span class="entry_type_enum_name">FLASH</span> 11930 <span class="entry_type_enum_value">4</span> 11931 </li> 11932 <li> 11933 <span class="entry_type_enum_name">FINE_WEATHER</span> 11934 <span class="entry_type_enum_value">9</span> 11935 </li> 11936 <li> 11937 <span class="entry_type_enum_name">CLOUDY_WEATHER</span> 11938 <span class="entry_type_enum_value">10</span> 11939 </li> 11940 <li> 11941 <span class="entry_type_enum_name">SHADE</span> 11942 <span class="entry_type_enum_value">11</span> 11943 </li> 11944 <li> 11945 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span> 11946 <span class="entry_type_enum_value">12</span> 11947 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 11948 </li> 11949 <li> 11950 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span> 11951 <span class="entry_type_enum_value">13</span> 11952 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 11953 </li> 11954 <li> 11955 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span> 11956 <span class="entry_type_enum_value">14</span> 11957 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 11958 </li> 11959 <li> 11960 <span class="entry_type_enum_name">WHITE_FLUORESCENT</span> 11961 <span class="entry_type_enum_value">15</span> 11962 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 11963 </li> 11964 <li> 11965 <span class="entry_type_enum_name">STANDARD_A</span> 11966 <span class="entry_type_enum_value">17</span> 11967 </li> 11968 <li> 11969 <span class="entry_type_enum_name">STANDARD_B</span> 11970 <span class="entry_type_enum_value">18</span> 11971 </li> 11972 <li> 11973 <span class="entry_type_enum_name">STANDARD_C</span> 11974 <span class="entry_type_enum_value">19</span> 11975 </li> 11976 <li> 11977 <span class="entry_type_enum_name">D55</span> 11978 <span class="entry_type_enum_value">20</span> 11979 </li> 11980 <li> 11981 <span class="entry_type_enum_name">D65</span> 11982 <span class="entry_type_enum_value">21</span> 11983 </li> 11984 <li> 11985 <span class="entry_type_enum_name">D75</span> 11986 <span class="entry_type_enum_value">22</span> 11987 </li> 11988 <li> 11989 <span class="entry_type_enum_name">D50</span> 11990 <span class="entry_type_enum_value">23</span> 11991 </li> 11992 <li> 11993 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span> 11994 <span class="entry_type_enum_value">24</span> 11995 </li> 11996 </ul> 11997 11998 </td> <!-- entry_type --> 11999 12000 <td class="entry_description"> 12001 <p>Light source used to define transform 120021</p> 12003 </td> 12004 12005 <td class="entry_units"> 12006 </td> 12007 12008 <td class="entry_range"> 12009 </td> 12010 12011 <td class="entry_tags"> 12012 <ul class="entry_tags"> 12013 <li><a href="#tag_DNG">DNG</a></li> 12014 <li><a href="#tag_EXIF">EXIF</a></li> 12015 </ul> 12016 </td> 12017 12018 </tr> 12019 <tr class="entries_header"> 12020 <th class="th_details" colspan="5">Details</th> 12021 </tr> 12022 <tr class="entry_cont"> 12023 <td class="entry_details" colspan="5"> 12024 <p>[EXIF LightSource tag] Must all these be 12025supported? Need CCT for each!</p> 12026 </td> 12027 </tr> 12028 12029 12030 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12031 <!-- end of entry --> 12032 12033 12034 <tr class="entry" id="static_android.sensor.referenceIlluminant2"> 12035 <td class="entry_name" rowspan="1"> 12036 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 12037 </td> 12038 <td class="entry_type"> 12039 <span class="entry_type_name">byte</span> 12040 12041 <span class="entry_type_visibility"> [system]</span> 12042 12043 12044 </td> <!-- entry_type --> 12045 12046 <td class="entry_description"> 12047 <p>Light source used to define transform 120482</p> 12049 </td> 12050 12051 <td class="entry_units"> 12052 Same as illuminant 1 12053 </td> 12054 12055 <td class="entry_range"> 12056 </td> 12057 12058 <td class="entry_tags"> 12059 </td> 12060 12061 </tr> 12062 12063 12064 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12065 <!-- end of entry --> 12066 12067 12068 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 12069 <td class="entry_name" rowspan="1"> 12070 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 12071 </td> 12072 <td class="entry_type"> 12073 <span class="entry_type_name">byte</span> 12074 12075 <span class="entry_type_visibility"> [public]</span> 12076 12077 12078 </td> <!-- entry_type --> 12079 12080 <td class="entry_description"> 12081 <p>Optional.<wbr/> Defaults to [OFF].<wbr/> Lists the supported test 12082pattern modes for android.<wbr/>test.<wbr/>pattern<wbr/>Mode.<wbr/></p> 12083 </td> 12084 12085 <td class="entry_units"> 12086 </td> 12087 12088 <td class="entry_range"> 12089 <p>Must include OFF.<wbr/> All custom modes must be >= CUSTOM1</p> 12090 </td> 12091 12092 <td class="entry_tags"> 12093 </td> 12094 12095 </tr> 12096 12097 12098 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12099 <!-- end of entry --> 12100 12101 12102 12103 <!-- end of kind --> 12104 </tbody> 12105 <tr><td colspan="6" class="kind">dynamic</td></tr> 12106 12107 <thead class="entries_header"> 12108 <tr> 12109 <th class="th_name">Property Name</th> 12110 <th class="th_type">Type</th> 12111 <th class="th_description">Description</th> 12112 <th class="th_units">Units</th> 12113 <th class="th_range">Range</th> 12114 <th class="th_tags">Tags</th> 12115 </tr> 12116 </thead> 12117 12118 <tbody> 12119 12120 12121 12122 12123 12124 12125 12126 12127 12128 12129 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 12130 <td class="entry_name" rowspan="3"> 12131 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 12132 </td> 12133 <td class="entry_type"> 12134 <span class="entry_type_name">int64</span> 12135 12136 <span class="entry_type_visibility"> [public]</span> 12137 12138 12139 </td> <!-- entry_type --> 12140 12141 <td class="entry_description"> 12142 <p>Duration each pixel is exposed to 12143light.<wbr/></p> 12144<p>If the sensor can't expose this exact duration,<wbr/> it should shorten the 12145duration exposed to the nearest possible value (rather than expose longer).<wbr/></p> 12146 </td> 12147 12148 <td class="entry_units"> 12149 nanoseconds 12150 </td> 12151 12152 <td class="entry_range"> 12153 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 12154 </td> 12155 12156 <td class="entry_tags"> 12157 <ul class="entry_tags"> 12158 <li><a href="#tag_V1">V1</a></li> 12159 </ul> 12160 </td> 12161 12162 </tr> 12163 <tr class="entries_header"> 12164 <th class="th_details" colspan="5">Details</th> 12165 </tr> 12166 <tr class="entry_cont"> 12167 <td class="entry_details" colspan="5"> 12168 <p>1/<wbr/>10000 - 30 sec range.<wbr/> No bulb mode</p> 12169 </td> 12170 </tr> 12171 12172 12173 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12174 <!-- end of entry --> 12175 12176 12177 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 12178 <td class="entry_name" rowspan="3"> 12179 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 12180 </td> 12181 <td class="entry_type"> 12182 <span class="entry_type_name">int64</span> 12183 12184 <span class="entry_type_visibility"> [public]</span> 12185 12186 12187 </td> <!-- entry_type --> 12188 12189 <td class="entry_description"> 12190 <p>Duration from start of frame exposure to 12191start of next frame exposure.<wbr/></p> 12192 </td> 12193 12194 <td class="entry_units"> 12195 nanoseconds 12196 </td> 12197 12198 <td class="entry_range"> 12199 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 12200android.<wbr/>scaler.<wbr/>available*Min<wbr/>Durations.<wbr/> The duration 12201is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 12202 </td> 12203 12204 <td class="entry_tags"> 12205 <ul class="entry_tags"> 12206 <li><a href="#tag_V1">V1</a></li> 12207 <li><a href="#tag_BC">BC</a></li> 12208 </ul> 12209 </td> 12210 12211 </tr> 12212 <tr class="entries_header"> 12213 <th class="th_details" colspan="5">Details</th> 12214 </tr> 12215 <tr class="entry_cont"> 12216 <td class="entry_details" colspan="5"> 12217 <p>The maximum frame rate that can be supported by a camera subsystem is 12218a function of many factors:</p> 12219<ul> 12220<li>Requested resolutions of output image streams</li> 12221<li>Availability of binning /<wbr/> skipping modes on the imager</li> 12222<li>The bandwidth of the imager interface</li> 12223<li>The bandwidth of the various ISP processing blocks</li> 12224</ul> 12225<p>Since these factors can vary greatly between different ISPs and 12226sensors,<wbr/> the camera abstraction tries to represent the bandwidth 12227restrictions with as simple a model as possible.<wbr/></p> 12228<p>The model presented has the following characteristics:</p> 12229<ul> 12230<li>The image sensor is always configured to output the smallest 12231resolution possible given the application's requested output stream 12232sizes.<wbr/> The smallest resolution is defined as being at least as large 12233as the largest requested output stream size; the camera pipeline must 12234never digitally upsample sensor data when the crop region covers the 12235whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 12236resolutions are configured,<wbr/> the sensor can provide a higher frame 12237rate.<wbr/></li> 12238<li>Since any request may use any or all the currently configured 12239output streams,<wbr/> the sensor and ISP must be configured to support 12240scaling a single capture to all the streams at the same time.<wbr/> This 12241means the camera pipeline must be ready to produce the largest 12242requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 12243frame rate of a given configured stream set is governed only by the 12244largest requested stream resolution.<wbr/></li> 12245<li>Using more than one output stream in a request does not affect the 12246frame duration.<wbr/></li> 12247<li>JPEG streams act like processed YUV streams in requests for which 12248they are not included; in requests in which they are directly 12249referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 12250JPEG stream requires the underlying YUV data to always be ready for 12251use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 12252frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 12253<li>The JPEG processor can run concurrently to the rest of the camera 12254pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 12255</ul> 12256<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 12257is provided via the android.<wbr/>scaler.<wbr/>available*Min<wbr/>Durations fields.<wbr/> 12258These are used to determine the maximum frame rate /<wbr/> minimum frame 12259duration that is possible for a given stream configuration.<wbr/></p> 12260<p>Specifically,<wbr/> the application can use the following rules to 12261determine the minimum frame duration it can request from the HAL 12262device:</p> 12263<ol> 12264<li>Given the application's currently configured set of output 12265streams,<wbr/> <code>S</code>,<wbr/> divide them into three sets: streams in a JPEG format 12266<code>SJ</code>,<wbr/> streams in a raw sensor format <code>SR</code>,<wbr/> and the rest ('processed') 12267<code>SP</code>.<wbr/></li> 12268<li>For each subset of streams,<wbr/> find the largest resolution (by pixel 12269count) in the subset.<wbr/> This gives (at most) three resolutions <code>RJ</code>,<wbr/> 12270<code>RR</code>,<wbr/> and <code>RP</code>.<wbr/></li> 12271<li>If <code>RJ</code> is greater than <code>RP</code>,<wbr/> set <code>RP</code> equal to <code>RJ</code>.<wbr/> If there is 12272no exact match for <code>RP == RJ</code> (in particular there isn't an available 12273processed resolution at the same size as <code>RJ</code>),<wbr/> then set <code>RP</code> equal 12274to the smallest processed resolution that is larger than <code>RJ</code>.<wbr/> If 12275there are no processed resolutions larger than <code>RJ</code>,<wbr/> then set <code>RJ</code> to 12276the processed resolution closest to <code>RJ</code>.<wbr/></li> 12277<li>If <code>RP</code> is greater than <code>RR</code>,<wbr/> set <code>RR</code> equal to <code>RP</code>.<wbr/> If there is 12278no exact match for <code>RR == RP</code> (in particular there isn't an available 12279raw resolution at the same size as <code>RP</code>),<wbr/> then set <code>RR</code> equal to 12280or to the smallest raw resolution that is larger than <code>RP</code>.<wbr/> If 12281there are no raw resolutions larger than <code>RP</code>,<wbr/> then set <code>RR</code> to 12282the raw resolution closest to <code>RP</code>.<wbr/></li> 12283<li>Look up the matching minimum frame durations in the property lists 12284<a href="#static_android.scaler.availableJpegMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations</a>,<wbr/> 12285<a href="#static_android.scaler.availableRawMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations</a>,<wbr/> and 12286<a href="#static_android.scaler.availableProcessedMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations</a>.<wbr/> This gives three 12287minimum frame durations <code>FJ</code>,<wbr/> <code>FR</code>,<wbr/> and <code>FP</code>.<wbr/></li> 12288<li>If a stream of requests do not use a JPEG stream,<wbr/> then the minimum 12289supported frame duration for each request is <code>max(FR,<wbr/> FP)</code>.<wbr/></li> 12290<li>If a stream of requests all use the JPEG stream,<wbr/> then the minimum 12291supported frame duration for each request is <code>max(FR,<wbr/> FP,<wbr/> FJ)</code>.<wbr/></li> 12292<li>If a mix of JPEG-using and non-JPEG-using requests is submitted by 12293the application,<wbr/> then the HAL will have to delay JPEG-using requests 12294whenever the JPEG encoder is still busy processing an older capture.<wbr/> 12295This will happen whenever a JPEG-using request starts capture less 12296than <code>FJ</code> <em>ns</em> after a previous JPEG-using request.<wbr/> The minimum 12297supported frame duration will vary between the values calculated in 12298#6 and #7.<wbr/></li> 12299</ol> 12300 </td> 12301 </tr> 12302 12303 12304 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12305 <!-- end of entry --> 12306 12307 12308 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 12309 <td class="entry_name" rowspan="3"> 12310 android.<wbr/>sensor.<wbr/>sensitivity 12311 </td> 12312 <td class="entry_type"> 12313 <span class="entry_type_name">int32</span> 12314 12315 <span class="entry_type_visibility"> [public]</span> 12316 12317 12318 </td> <!-- entry_type --> 12319 12320 <td class="entry_description"> 12321 <p>Gain applied to image data.<wbr/> Must be 12322implemented through analog gain only if set to values 12323below 'maximum analog sensitivity'.<wbr/></p> 12324<p>If the sensor can't apply this exact gain,<wbr/> it should lessen the 12325gain to the nearest possible value (rather than gain more).<wbr/></p> 12326 </td> 12327 12328 <td class="entry_units"> 12329 ISO arithmetic units 12330 </td> 12331 12332 <td class="entry_range"> 12333 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 12334 </td> 12335 12336 <td class="entry_tags"> 12337 <ul class="entry_tags"> 12338 <li><a href="#tag_V1">V1</a></li> 12339 </ul> 12340 </td> 12341 12342 </tr> 12343 <tr class="entries_header"> 12344 <th class="th_details" colspan="5">Details</th> 12345 </tr> 12346 <tr class="entry_cont"> 12347 <td class="entry_details" colspan="5"> 12348 <p>ISO 12232:2006 REI method</p> 12349 </td> 12350 </tr> 12351 12352 12353 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12354 <!-- end of entry --> 12355 12356 12357 <tr class="entry" id="dynamic_android.sensor.timestamp"> 12358 <td class="entry_name" rowspan="3"> 12359 android.<wbr/>sensor.<wbr/>timestamp 12360 </td> 12361 <td class="entry_type"> 12362 <span class="entry_type_name">int64</span> 12363 12364 <span class="entry_type_visibility"> [public]</span> 12365 12366 12367 </td> <!-- entry_type --> 12368 12369 <td class="entry_description"> 12370 <p>Time at start of exposure of first 12371row</p> 12372 </td> 12373 12374 <td class="entry_units"> 12375 nanoseconds 12376 </td> 12377 12378 <td class="entry_range"> 12379 <p>> 0</p> 12380 </td> 12381 12382 <td class="entry_tags"> 12383 <ul class="entry_tags"> 12384 <li><a href="#tag_BC">BC</a></li> 12385 </ul> 12386 </td> 12387 12388 </tr> 12389 <tr class="entries_header"> 12390 <th class="th_details" colspan="5">Details</th> 12391 </tr> 12392 <tr class="entry_cont"> 12393 <td class="entry_details" colspan="5"> 12394 <p>Monotonic,<wbr/> should be synced to other timestamps in 12395system</p> 12396 </td> 12397 </tr> 12398 12399 12400 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12401 <!-- end of entry --> 12402 12403 12404 <tr class="entry" id="dynamic_android.sensor.temperature"> 12405 <td class="entry_name" rowspan="1"> 12406 android.<wbr/>sensor.<wbr/>temperature 12407 </td> 12408 <td class="entry_type"> 12409 <span class="entry_type_name">float</span> 12410 12411 <span class="entry_type_visibility"> [public]</span> 12412 12413 12414 </td> <!-- entry_type --> 12415 12416 <td class="entry_description"> 12417 <p>The temperature of the sensor,<wbr/> sampled at the time 12418exposure began for this frame.<wbr/></p> 12419<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 12420somewhere close to it.<wbr/></p> 12421 </td> 12422 12423 <td class="entry_units"> 12424 celsius 12425 </td> 12426 12427 <td class="entry_range"> 12428 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 12429 </td> 12430 12431 <td class="entry_tags"> 12432 <ul class="entry_tags"> 12433 <li><a href="#tag_FULL">FULL</a></li> 12434 </ul> 12435 </td> 12436 12437 </tr> 12438 12439 12440 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12441 <!-- end of entry --> 12442 12443 12444 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 12445 <td class="entry_name" rowspan="5"> 12446 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 12447 </td> 12448 <td class="entry_type"> 12449 <span class="entry_type_name entry_type_name_enum">int32</span> 12450 12451 <span class="entry_type_visibility"> [public]</span> 12452 12453 <ul class="entry_type_enum"> 12454 <li> 12455 <span class="entry_type_enum_name">OFF</span> 12456 <span class="entry_type_enum_notes"><p>Default.<wbr/> No test pattern mode is used,<wbr/> and the camera 12457device returns captures from the image sensor.<wbr/></p></span> 12458 </li> 12459 <li> 12460 <span class="entry_type_enum_name">SOLID_COLOR</span> 12461 <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 12462respective color channel provided in 12463<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 12464<p>For example:</p> 12465<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 12466</code></pre> 12467<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 12468<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 12469</code></pre> 12470<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 12471are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 12472 </li> 12473 <li> 12474 <span class="entry_type_enum_name">COLOR_BARS</span> 12475 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 12476<p>The vertical bars (left-to-right) are as follows:</p> 12477<ul> 12478<li>100% white</li> 12479<li>yellow</li> 12480<li>cyan</li> 12481<li>green</li> 12482<li>magenta</li> 12483<li>red</li> 12484<li>blue</li> 12485<li>black</li> 12486</ul> 12487<p>In general the image would look like the following:</p> 12488<pre><code>W Y C G M R B K 12489W Y C G M R B K 12490W Y C G M R B K 12491W Y C G M R B K 12492W Y C G M R B K 12493.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 12494.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 12495.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 12496 12497(B = Blue,<wbr/> K = Black) 12498</code></pre> 12499<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 12500When this is not possible,<wbr/> the bar size should be rounded 12501down to the nearest integer and the pattern can repeat 12502on the right side.<wbr/></p> 12503<p>Each bar's height must always take up the full sensor 12504pixel array height.<wbr/></p> 12505<p>Each pixel in this test pattern must be set to either 125060% intensity or 100% intensity.<wbr/></p></span> 12507 </li> 12508 <li> 12509 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 12510 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 12511each bar should start at its specified color at the top,<wbr/> 12512and fade to gray at the bottom.<wbr/></p> 12513<p>Furthermore each bar is further subdivided into a left and 12514right half.<wbr/> The left half should have a smooth gradient,<wbr/> 12515and the right half should have a quantized gradient.<wbr/></p> 12516<p>In particular,<wbr/> the right half's should consist of blocks of the 12517same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 12518<p>The least significant bits in the quantized gradient should 12519be copied from the most significant bits of the smooth gradient.<wbr/></p> 12520<p>The height of each bar should always be a multiple of 128.<wbr/> 12521When this is not the case,<wbr/> the pattern should repeat at the bottom 12522of the image.<wbr/></p></span> 12523 </li> 12524 <li> 12525 <span class="entry_type_enum_name">PN9</span> 12526 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 12527generated from a PN9 512-bit sequence (typically implemented 12528in hardware with a linear feedback shift register).<wbr/></p> 12529<p>The generator should be reset at the beginning of each frame,<wbr/> 12530and thus each subsequent raw frame with this test pattern should 12531be exactly the same as the last.<wbr/></p></span> 12532 </li> 12533 <li> 12534 <span class="entry_type_enum_name">CUSTOM1</span> 12535 <span class="entry_type_enum_value">256</span> 12536 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 12537available only on this camera device are at least this numeric 12538value.<wbr/></p> 12539<p>All of the custom test patterns will be static 12540(that is the raw image must not vary from frame to frame).<wbr/></p></span> 12541 </li> 12542 </ul> 12543 12544 </td> <!-- entry_type --> 12545 12546 <td class="entry_description"> 12547 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 12548doing a real exposure from the camera.<wbr/></p> 12549 </td> 12550 12551 <td class="entry_units"> 12552 </td> 12553 12554 <td class="entry_range"> 12555 <p>Optional.<wbr/> Defaults to OFF.<wbr/> Value must be one of 12556<a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 12557 </td> 12558 12559 <td class="entry_tags"> 12560 </td> 12561 12562 </tr> 12563 <tr class="entries_header"> 12564 <th class="th_details" colspan="5">Details</th> 12565 </tr> 12566 <tr class="entry_cont"> 12567 <td class="entry_details" colspan="5"> 12568 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 12569by android.<wbr/>sensor.<wbr/>* should be ignored.<wbr/> All other controls should 12570work as normal.<wbr/></p> 12571<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 12572occur (and that the test pattern remain unmodified,<wbr/> since the flash 12573would not actually affect it).<wbr/></p> 12574 </td> 12575 </tr> 12576 12577 <tr class="entries_header"> 12578 <th class="th_details" colspan="5">HAL Implementation Details</th> 12579 </tr> 12580 <tr class="entry_cont"> 12581 <td class="entry_details" colspan="5"> 12582 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 12583<p>The HAL may choose to substitute test patterns from the sensor 12584with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 12585indistinguishable to the ISP whether the data came from the 12586sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 12587 </td> 12588 </tr> 12589 12590 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12591 <!-- end of entry --> 12592 12593 12594 12595 <!-- end of kind --> 12596 </tbody> 12597 12598 <!-- end of section --> 12599 <tr><td colspan="6" id="section_shading" class="section">shading</td></tr> 12600 12601 12602 <tr><td colspan="6" class="kind">controls</td></tr> 12603 12604 <thead class="entries_header"> 12605 <tr> 12606 <th class="th_name">Property Name</th> 12607 <th class="th_type">Type</th> 12608 <th class="th_description">Description</th> 12609 <th class="th_units">Units</th> 12610 <th class="th_range">Range</th> 12611 <th class="th_tags">Tags</th> 12612 </tr> 12613 </thead> 12614 12615 <tbody> 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 12626 <tr class="entry" id="controls_android.shading.mode"> 12627 <td class="entry_name" rowspan="3"> 12628 android.<wbr/>shading.<wbr/>mode 12629 </td> 12630 <td class="entry_type"> 12631 <span class="entry_type_name entry_type_name_enum">byte</span> 12632 12633 <span class="entry_type_visibility"> [hidden]</span> 12634 12635 <ul class="entry_type_enum"> 12636 <li> 12637 <span class="entry_type_enum_name">OFF</span> 12638 <span class="entry_type_enum_notes"><p>No lens shading correction is applied</p></span> 12639 </li> 12640 <li> 12641 <span class="entry_type_enum_name">FAST</span> 12642 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor raw output</p></span> 12643 </li> 12644 <li> 12645 <span class="entry_type_enum_name">HIGH_QUALITY</span> 12646 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high quality</p></span> 12647 </li> 12648 </ul> 12649 12650 </td> <!-- entry_type --> 12651 12652 <td class="entry_description"> 12653 <p>Quality of lens shading correction applied 12654to the image data.<wbr/></p> 12655 </td> 12656 12657 <td class="entry_units"> 12658 </td> 12659 12660 <td class="entry_range"> 12661 </td> 12662 12663 <td class="entry_tags"> 12664 </td> 12665 12666 </tr> 12667 <tr class="entries_header"> 12668 <th class="th_details" colspan="5">Details</th> 12669 </tr> 12670 <tr class="entry_cont"> 12671 <td class="entry_details" colspan="5"> 12672 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 12673camera device,<wbr/> and an identity lens shading map data will be provided 12674if <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 12675shading 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/> 12676the 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 12677shown below:</p> 12678<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/> 12679 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/> 12680 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/> 12681 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/> 12682 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/> 12683 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 ] 12684</code></pre> 12685<p>When set to other modes,<wbr/> lens shading correction will be applied by the 12686camera device.<wbr/> Applications can request lens shading map data by setting 12687<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 12688lens shading map data in <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a>,<wbr/> with size specified 12689by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>.<wbr/></p> 12690 </td> 12691 </tr> 12692 12693 12694 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12695 <!-- end of entry --> 12696 12697 12698 <tr class="entry" id="controls_android.shading.strength"> 12699 <td class="entry_name" rowspan="1"> 12700 android.<wbr/>shading.<wbr/>strength 12701 </td> 12702 <td class="entry_type"> 12703 <span class="entry_type_name">byte</span> 12704 12705 <span class="entry_type_visibility"> [system]</span> 12706 12707 12708 </td> <!-- entry_type --> 12709 12710 <td class="entry_description"> 12711 <p>Control the amount of shading correction 12712applied to the images</p> 12713 </td> 12714 12715 <td class="entry_units"> 12716 unitless: 1-10; 10 is full shading 12717 compensation 12718 </td> 12719 12720 <td class="entry_range"> 12721 </td> 12722 12723 <td class="entry_tags"> 12724 <ul class="entry_tags"> 12725 <li><a href="#tag_ADV">ADV</a></li> 12726 </ul> 12727 </td> 12728 12729 </tr> 12730 12731 12732 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12733 <!-- end of entry --> 12734 12735 12736 12737 <!-- end of kind --> 12738 </tbody> 12739 <tr><td colspan="6" class="kind">dynamic</td></tr> 12740 12741 <thead class="entries_header"> 12742 <tr> 12743 <th class="th_name">Property Name</th> 12744 <th class="th_type">Type</th> 12745 <th class="th_description">Description</th> 12746 <th class="th_units">Units</th> 12747 <th class="th_range">Range</th> 12748 <th class="th_tags">Tags</th> 12749 </tr> 12750 </thead> 12751 12752 <tbody> 12753 12754 12755 12756 12757 12758 12759 12760 12761 12762 12763 <tr class="entry" id="dynamic_android.shading.mode"> 12764 <td class="entry_name" rowspan="3"> 12765 android.<wbr/>shading.<wbr/>mode 12766 </td> 12767 <td class="entry_type"> 12768 <span class="entry_type_name entry_type_name_enum">byte</span> 12769 12770 <span class="entry_type_visibility"> [hidden]</span> 12771 12772 <ul class="entry_type_enum"> 12773 <li> 12774 <span class="entry_type_enum_name">OFF</span> 12775 <span class="entry_type_enum_notes"><p>No lens shading correction is applied</p></span> 12776 </li> 12777 <li> 12778 <span class="entry_type_enum_name">FAST</span> 12779 <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor raw output</p></span> 12780 </li> 12781 <li> 12782 <span class="entry_type_enum_name">HIGH_QUALITY</span> 12783 <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high quality</p></span> 12784 </li> 12785 </ul> 12786 12787 </td> <!-- entry_type --> 12788 12789 <td class="entry_description"> 12790 <p>Quality of lens shading correction applied 12791to the image data.<wbr/></p> 12792 </td> 12793 12794 <td class="entry_units"> 12795 </td> 12796 12797 <td class="entry_range"> 12798 </td> 12799 12800 <td class="entry_tags"> 12801 </td> 12802 12803 </tr> 12804 <tr class="entries_header"> 12805 <th class="th_details" colspan="5">Details</th> 12806 </tr> 12807 <tr class="entry_cont"> 12808 <td class="entry_details" colspan="5"> 12809 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 12810camera device,<wbr/> and an identity lens shading map data will be provided 12811if <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 12812shading 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/> 12813the 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 12814shown below:</p> 12815<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/> 12816 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/> 12817 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/> 12818 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/> 12819 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/> 12820 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 ] 12821</code></pre> 12822<p>When set to other modes,<wbr/> lens shading correction will be applied by the 12823camera device.<wbr/> Applications can request lens shading map data by setting 12824<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 12825lens shading map data in <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a>,<wbr/> with size specified 12826by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>.<wbr/></p> 12827 </td> 12828 </tr> 12829 12830 12831 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12832 <!-- end of entry --> 12833 12834 12835 12836 <!-- end of kind --> 12837 </tbody> 12838 12839 <!-- end of section --> 12840 <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr> 12841 12842 12843 <tr><td colspan="6" class="kind">controls</td></tr> 12844 12845 <thead class="entries_header"> 12846 <tr> 12847 <th class="th_name">Property Name</th> 12848 <th class="th_type">Type</th> 12849 <th class="th_description">Description</th> 12850 <th class="th_units">Units</th> 12851 <th class="th_range">Range</th> 12852 <th class="th_tags">Tags</th> 12853 </tr> 12854 </thead> 12855 12856 <tbody> 12857 12858 12859 12860 12861 12862 12863 12864 12865 12866 12867 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 12868 <td class="entry_name" rowspan="3"> 12869 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 12870 </td> 12871 <td class="entry_type"> 12872 <span class="entry_type_name entry_type_name_enum">byte</span> 12873 12874 <span class="entry_type_visibility"> [public]</span> 12875 12876 <ul class="entry_type_enum"> 12877 <li> 12878 <span class="entry_type_enum_name">OFF</span> 12879 </li> 12880 <li> 12881 <span class="entry_type_enum_name">SIMPLE</span> 12882 <span class="entry_type_enum_notes"><p>Optional Return rectangle and confidence 12883only</p></span> 12884 </li> 12885 <li> 12886 <span class="entry_type_enum_name">FULL</span> 12887 <span class="entry_type_enum_notes"><p>Optional Return all face 12888metadata</p></span> 12889 </li> 12890 </ul> 12891 12892 </td> <!-- entry_type --> 12893 12894 <td class="entry_description"> 12895 <p>State of the face detector 12896unit</p> 12897 </td> 12898 12899 <td class="entry_units"> 12900 </td> 12901 12902 <td class="entry_range"> 12903 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 12904 </td> 12905 12906 <td class="entry_tags"> 12907 <ul class="entry_tags"> 12908 <li><a href="#tag_BC">BC</a></li> 12909 </ul> 12910 </td> 12911 12912 </tr> 12913 <tr class="entries_header"> 12914 <th class="th_details" colspan="5">Details</th> 12915 </tr> 12916 <tr class="entry_cont"> 12917 <td class="entry_details" colspan="5"> 12918 <p>Whether face detection is enabled,<wbr/> and whether it 12919should output just the basic fields or the full set of 12920fields.<wbr/> Value must be one of the 12921<a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>.<wbr/></p> 12922 </td> 12923 </tr> 12924 12925 12926 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12927 <!-- end of entry --> 12928 12929 12930 <tr class="entry" id="controls_android.statistics.histogramMode"> 12931 <td class="entry_name" rowspan="1"> 12932 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 12933 </td> 12934 <td class="entry_type"> 12935 <span class="entry_type_name entry_type_name_enum">byte</span> 12936 12937 <span class="entry_type_visibility"> [system as boolean]</span> 12938 12939 <ul class="entry_type_enum"> 12940 <li> 12941 <span class="entry_type_enum_name">OFF</span> 12942 </li> 12943 <li> 12944 <span class="entry_type_enum_name">ON</span> 12945 </li> 12946 </ul> 12947 12948 </td> <!-- entry_type --> 12949 12950 <td class="entry_description"> 12951 <p>Operating mode for histogram 12952generation</p> 12953 </td> 12954 12955 <td class="entry_units"> 12956 </td> 12957 12958 <td class="entry_range"> 12959 </td> 12960 12961 <td class="entry_tags"> 12962 <ul class="entry_tags"> 12963 <li><a href="#tag_V1">V1</a></li> 12964 </ul> 12965 </td> 12966 12967 </tr> 12968 12969 12970 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12971 <!-- end of entry --> 12972 12973 12974 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 12975 <td class="entry_name" rowspan="1"> 12976 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 12977 </td> 12978 <td class="entry_type"> 12979 <span class="entry_type_name entry_type_name_enum">byte</span> 12980 12981 <span class="entry_type_visibility"> [system as boolean]</span> 12982 12983 <ul class="entry_type_enum"> 12984 <li> 12985 <span class="entry_type_enum_name">OFF</span> 12986 </li> 12987 <li> 12988 <span class="entry_type_enum_name">ON</span> 12989 </li> 12990 </ul> 12991 12992 </td> <!-- entry_type --> 12993 12994 <td class="entry_description"> 12995 <p>Operating mode for sharpness map 12996generation</p> 12997 </td> 12998 12999 <td class="entry_units"> 13000 </td> 13001 13002 <td class="entry_range"> 13003 </td> 13004 13005 <td class="entry_tags"> 13006 <ul class="entry_tags"> 13007 <li><a href="#tag_V1">V1</a></li> 13008 </ul> 13009 </td> 13010 13011 </tr> 13012 13013 13014 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13015 <!-- end of entry --> 13016 13017 13018 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 13019 <td class="entry_name" rowspan="3"> 13020 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 13021 </td> 13022 <td class="entry_type"> 13023 <span class="entry_type_name entry_type_name_enum">byte</span> 13024 13025 <span class="entry_type_visibility"> [public]</span> 13026 13027 <ul class="entry_type_enum"> 13028 <li> 13029 <span class="entry_type_enum_name">OFF</span> 13030 </li> 13031 <li> 13032 <span class="entry_type_enum_name">ON</span> 13033 </li> 13034 </ul> 13035 13036 </td> <!-- entry_type --> 13037 13038 <td class="entry_description"> 13039 <p>Whether the HAL needs to output the lens 13040shading map in output result metadata</p> 13041 </td> 13042 13043 <td class="entry_units"> 13044 </td> 13045 13046 <td class="entry_range"> 13047 </td> 13048 13049 <td class="entry_tags"> 13050 </td> 13051 13052 </tr> 13053 <tr class="entries_header"> 13054 <th class="th_details" colspan="5">Details</th> 13055 </tr> 13056 <tr class="entry_cont"> 13057 <td class="entry_details" colspan="5"> 13058 <p>When set to ON,<wbr/> 13059<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> must be provided in 13060the output result metadata.<wbr/></p> 13061 </td> 13062 </tr> 13063 13064 13065 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13066 <!-- end of entry --> 13067 13068 13069 13070 <!-- end of kind --> 13071 </tbody> 13072 <tr><td colspan="6" class="kind">static</td></tr> 13073 13074 <thead class="entries_header"> 13075 <tr> 13076 <th class="th_name">Property Name</th> 13077 <th class="th_type">Type</th> 13078 <th class="th_description">Description</th> 13079 <th class="th_units">Units</th> 13080 <th class="th_range">Range</th> 13081 <th class="th_tags">Tags</th> 13082 </tr> 13083 </thead> 13084 13085 <tbody> 13086 13087 13088 13089 13090 13091 13092 13093 13094 13095 13096 13097 13098 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 13099 <td class="entry_name" rowspan="3"> 13100 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 13101 </td> 13102 <td class="entry_type"> 13103 <span class="entry_type_name">byte</span> 13104 <span class="entry_type_container">x</span> 13105 13106 <span class="entry_type_array"> 13107 n 13108 </span> 13109 <span class="entry_type_visibility"> [public]</span> 13110 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 13111 13112 13113 </td> <!-- entry_type --> 13114 13115 <td class="entry_description"> 13116 <p>Which face detection modes are available,<wbr/> 13117if any</p> 13118 </td> 13119 13120 <td class="entry_units"> 13121 List of enum: 13122 OFF 13123 SIMPLE 13124 FULL 13125 </td> 13126 13127 <td class="entry_range"> 13128 </td> 13129 13130 <td class="entry_tags"> 13131 </td> 13132 13133 </tr> 13134 <tr class="entries_header"> 13135 <th class="th_details" colspan="5">Details</th> 13136 </tr> 13137 <tr class="entry_cont"> 13138 <td class="entry_details" colspan="5"> 13139 <p>OFF means face detection is disabled,<wbr/> it must 13140be included in the list.<wbr/></p> 13141<p>SIMPLE means the device supports the 13142<a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 13143<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a> outputs.<wbr/></p> 13144<p>FULL means the device additionally supports the 13145<a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a> and 13146<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a> outputs.<wbr/></p> 13147 </td> 13148 </tr> 13149 13150 13151 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13152 <!-- end of entry --> 13153 13154 13155 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 13156 <td class="entry_name" rowspan="1"> 13157 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 13158 </td> 13159 <td class="entry_type"> 13160 <span class="entry_type_name">int32</span> 13161 13162 <span class="entry_type_visibility"> [system]</span> 13163 13164 13165 </td> <!-- entry_type --> 13166 13167 <td class="entry_description"> 13168 <p>Number of histogram buckets 13169supported</p> 13170 </td> 13171 13172 <td class="entry_units"> 13173 </td> 13174 13175 <td class="entry_range"> 13176 <p>>= 64</p> 13177 </td> 13178 13179 <td class="entry_tags"> 13180 </td> 13181 13182 </tr> 13183 13184 13185 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13186 <!-- end of entry --> 13187 13188 13189 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 13190 <td class="entry_name" rowspan="1"> 13191 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 13192 </td> 13193 <td class="entry_type"> 13194 <span class="entry_type_name">int32</span> 13195 13196 <span class="entry_type_visibility"> [public]</span> 13197 13198 13199 </td> <!-- entry_type --> 13200 13201 <td class="entry_description"> 13202 <p>Maximum number of simultaneously detectable 13203faces</p> 13204 </td> 13205 13206 <td class="entry_units"> 13207 </td> 13208 13209 <td class="entry_range"> 13210 <p>>= 4 if availableFaceDetectionModes lists 13211modes besides OFF,<wbr/> otherwise 0</p> 13212 </td> 13213 13214 <td class="entry_tags"> 13215 </td> 13216 13217 </tr> 13218 13219 13220 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13221 <!-- end of entry --> 13222 13223 13224 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 13225 <td class="entry_name" rowspan="1"> 13226 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 13227 </td> 13228 <td class="entry_type"> 13229 <span class="entry_type_name">int32</span> 13230 13231 <span class="entry_type_visibility"> [system]</span> 13232 13233 13234 </td> <!-- entry_type --> 13235 13236 <td class="entry_description"> 13237 <p>Maximum value possible for a histogram 13238bucket</p> 13239 </td> 13240 13241 <td class="entry_units"> 13242 </td> 13243 13244 <td class="entry_range"> 13245 </td> 13246 13247 <td class="entry_tags"> 13248 </td> 13249 13250 </tr> 13251 13252 13253 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13254 <!-- end of entry --> 13255 13256 13257 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 13258 <td class="entry_name" rowspan="1"> 13259 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 13260 </td> 13261 <td class="entry_type"> 13262 <span class="entry_type_name">int32</span> 13263 13264 <span class="entry_type_visibility"> [system]</span> 13265 13266 13267 </td> <!-- entry_type --> 13268 13269 <td class="entry_description"> 13270 <p>Maximum value possible for a sharpness map 13271region.<wbr/></p> 13272 </td> 13273 13274 <td class="entry_units"> 13275 </td> 13276 13277 <td class="entry_range"> 13278 </td> 13279 13280 <td class="entry_tags"> 13281 </td> 13282 13283 </tr> 13284 13285 13286 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13287 <!-- end of entry --> 13288 13289 13290 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 13291 <td class="entry_name" rowspan="1"> 13292 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 13293 </td> 13294 <td class="entry_type"> 13295 <span class="entry_type_name">int32</span> 13296 <span class="entry_type_container">x</span> 13297 13298 <span class="entry_type_array"> 13299 2 13300 </span> 13301 <span class="entry_type_visibility"> [system as size]</span> 13302 <div class="entry_type_notes">width x height</div> 13303 13304 13305 </td> <!-- entry_type --> 13306 13307 <td class="entry_description"> 13308 <p>Dimensions of the sharpness 13309map</p> 13310 </td> 13311 13312 <td class="entry_units"> 13313 </td> 13314 13315 <td class="entry_range"> 13316 <p>Must be at least 32 x 32</p> 13317 </td> 13318 13319 <td class="entry_tags"> 13320 </td> 13321 13322 </tr> 13323 13324 13325 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13326 <!-- end of entry --> 13327 13328 13329 13330 13331 13332 13333 <!-- end of kind --> 13334 </tbody> 13335 <tr><td colspan="6" class="kind">dynamic</td></tr> 13336 13337 <thead class="entries_header"> 13338 <tr> 13339 <th class="th_name">Property Name</th> 13340 <th class="th_type">Type</th> 13341 <th class="th_description">Description</th> 13342 <th class="th_units">Units</th> 13343 <th class="th_range">Range</th> 13344 <th class="th_tags">Tags</th> 13345 </tr> 13346 </thead> 13347 13348 <tbody> 13349 13350 13351 13352 13353 13354 13355 13356 13357 13358 13359 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 13360 <td class="entry_name" rowspan="3"> 13361 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 13362 </td> 13363 <td class="entry_type"> 13364 <span class="entry_type_name entry_type_name_enum">byte</span> 13365 13366 <span class="entry_type_visibility"> [public]</span> 13367 13368 <ul class="entry_type_enum"> 13369 <li> 13370 <span class="entry_type_enum_name">OFF</span> 13371 </li> 13372 <li> 13373 <span class="entry_type_enum_name">SIMPLE</span> 13374 <span class="entry_type_enum_notes"><p>Optional Return rectangle and confidence 13375only</p></span> 13376 </li> 13377 <li> 13378 <span class="entry_type_enum_name">FULL</span> 13379 <span class="entry_type_enum_notes"><p>Optional Return all face 13380metadata</p></span> 13381 </li> 13382 </ul> 13383 13384 </td> <!-- entry_type --> 13385 13386 <td class="entry_description"> 13387 <p>State of the face detector 13388unit</p> 13389 </td> 13390 13391 <td class="entry_units"> 13392 </td> 13393 13394 <td class="entry_range"> 13395 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 13396 </td> 13397 13398 <td class="entry_tags"> 13399 <ul class="entry_tags"> 13400 <li><a href="#tag_BC">BC</a></li> 13401 </ul> 13402 </td> 13403 13404 </tr> 13405 <tr class="entries_header"> 13406 <th class="th_details" colspan="5">Details</th> 13407 </tr> 13408 <tr class="entry_cont"> 13409 <td class="entry_details" colspan="5"> 13410 <p>Whether face detection is enabled,<wbr/> and whether it 13411should output just the basic fields or the full set of 13412fields.<wbr/> Value must be one of the 13413<a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>.<wbr/></p> 13414 </td> 13415 </tr> 13416 13417 13418 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13419 <!-- end of entry --> 13420 13421 13422 <tr class="entry" id="dynamic_android.statistics.faceIds"> 13423 <td class="entry_name" rowspan="3"> 13424 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 13425 </td> 13426 <td class="entry_type"> 13427 <span class="entry_type_name">int32</span> 13428 <span class="entry_type_container">x</span> 13429 13430 <span class="entry_type_array"> 13431 n 13432 </span> 13433 <span class="entry_type_visibility"> [hidden]</span> 13434 13435 13436 </td> <!-- entry_type --> 13437 13438 <td class="entry_description"> 13439 <p>List of unique IDs for detected 13440faces</p> 13441 </td> 13442 13443 <td class="entry_units"> 13444 </td> 13445 13446 <td class="entry_range"> 13447 </td> 13448 13449 <td class="entry_tags"> 13450 <ul class="entry_tags"> 13451 <li><a href="#tag_BC">BC</a></li> 13452 </ul> 13453 </td> 13454 13455 </tr> 13456 <tr class="entries_header"> 13457 <th class="th_details" colspan="5">Details</th> 13458 </tr> 13459 <tr class="entry_cont"> 13460 <td class="entry_details" colspan="5"> 13461 <p>Only available if faceDetectMode == FULL</p> 13462 </td> 13463 </tr> 13464 13465 13466 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13467 <!-- end of entry --> 13468 13469 13470 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 13471 <td class="entry_name" rowspan="3"> 13472 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 13473 </td> 13474 <td class="entry_type"> 13475 <span class="entry_type_name">int32</span> 13476 <span class="entry_type_container">x</span> 13477 13478 <span class="entry_type_array"> 13479 n x 6 13480 </span> 13481 <span class="entry_type_visibility"> [hidden]</span> 13482 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 13483 13484 13485 </td> <!-- entry_type --> 13486 13487 <td class="entry_description"> 13488 <p>List of landmarks for detected 13489faces</p> 13490 </td> 13491 13492 <td class="entry_units"> 13493 </td> 13494 13495 <td class="entry_range"> 13496 </td> 13497 13498 <td class="entry_tags"> 13499 <ul class="entry_tags"> 13500 <li><a href="#tag_BC">BC</a></li> 13501 </ul> 13502 </td> 13503 13504 </tr> 13505 <tr class="entries_header"> 13506 <th class="th_details" colspan="5">Details</th> 13507 </tr> 13508 <tr class="entry_cont"> 13509 <td class="entry_details" colspan="5"> 13510 <p>Only available if faceDetectMode == FULL</p> 13511 </td> 13512 </tr> 13513 13514 13515 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13516 <!-- end of entry --> 13517 13518 13519 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 13520 <td class="entry_name" rowspan="3"> 13521 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 13522 </td> 13523 <td class="entry_type"> 13524 <span class="entry_type_name">int32</span> 13525 <span class="entry_type_container">x</span> 13526 13527 <span class="entry_type_array"> 13528 n x 4 13529 </span> 13530 <span class="entry_type_visibility"> [hidden as rectangle]</span> 13531 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 13532 13533 13534 </td> <!-- entry_type --> 13535 13536 <td class="entry_description"> 13537 <p>List of the bounding rectangles for detected 13538faces</p> 13539 </td> 13540 13541 <td class="entry_units"> 13542 </td> 13543 13544 <td class="entry_range"> 13545 </td> 13546 13547 <td class="entry_tags"> 13548 <ul class="entry_tags"> 13549 <li><a href="#tag_BC">BC</a></li> 13550 </ul> 13551 </td> 13552 13553 </tr> 13554 <tr class="entries_header"> 13555 <th class="th_details" colspan="5">Details</th> 13556 </tr> 13557 <tr class="entry_cont"> 13558 <td class="entry_details" colspan="5"> 13559 <p>Only available if faceDetectMode != OFF</p> 13560 </td> 13561 </tr> 13562 13563 13564 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13565 <!-- end of entry --> 13566 13567 13568 <tr class="entry" id="dynamic_android.statistics.faceScores"> 13569 <td class="entry_name" rowspan="3"> 13570 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 13571 </td> 13572 <td class="entry_type"> 13573 <span class="entry_type_name">byte</span> 13574 <span class="entry_type_container">x</span> 13575 13576 <span class="entry_type_array"> 13577 n 13578 </span> 13579 <span class="entry_type_visibility"> [hidden]</span> 13580 13581 13582 </td> <!-- entry_type --> 13583 13584 <td class="entry_description"> 13585 <p>List of the face confidence scores for 13586detected faces</p> 13587 </td> 13588 13589 <td class="entry_units"> 13590 </td> 13591 13592 <td class="entry_range"> 13593 <p>1-100</p> 13594 </td> 13595 13596 <td class="entry_tags"> 13597 <ul class="entry_tags"> 13598 <li><a href="#tag_BC">BC</a></li> 13599 </ul> 13600 </td> 13601 13602 </tr> 13603 <tr class="entries_header"> 13604 <th class="th_details" colspan="5">Details</th> 13605 </tr> 13606 <tr class="entry_cont"> 13607 <td class="entry_details" colspan="5"> 13608 <p>Only available if faceDetectMode != OFF.<wbr/> The value should be 13609meaningful (for example,<wbr/> setting 100 at all times is illegal).<wbr/></p> 13610 </td> 13611 </tr> 13612 13613 13614 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13615 <!-- end of entry --> 13616 13617 13618 <tr class="entry" id="dynamic_android.statistics.histogram"> 13619 <td class="entry_name" rowspan="3"> 13620 android.<wbr/>statistics.<wbr/>histogram 13621 </td> 13622 <td class="entry_type"> 13623 <span class="entry_type_name">int32</span> 13624 <span class="entry_type_container">x</span> 13625 13626 <span class="entry_type_array"> 13627 n x 3 13628 </span> 13629 <span class="entry_type_visibility"> [system]</span> 13630 <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> 13631 13632 13633 </td> <!-- entry_type --> 13634 13635 <td class="entry_description"> 13636 <p>A 3-channel histogram based on the raw 13637sensor data</p> 13638 </td> 13639 13640 <td class="entry_units"> 13641 </td> 13642 13643 <td class="entry_range"> 13644 </td> 13645 13646 <td class="entry_tags"> 13647 <ul class="entry_tags"> 13648 <li><a href="#tag_V1">V1</a></li> 13649 </ul> 13650 </td> 13651 13652 </tr> 13653 <tr class="entries_header"> 13654 <th class="th_details" colspan="5">Details</th> 13655 </tr> 13656 <tr class="entry_cont"> 13657 <td class="entry_details" colspan="5"> 13658 <p>The k'th bucket (0-based) covers the input range 13659(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/> 13660(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 13661supported,<wbr/> all channels should have the same data</p> 13662 </td> 13663 </tr> 13664 13665 13666 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13667 <!-- end of entry --> 13668 13669 13670 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 13671 <td class="entry_name" rowspan="1"> 13672 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 13673 </td> 13674 <td class="entry_type"> 13675 <span class="entry_type_name entry_type_name_enum">byte</span> 13676 13677 <span class="entry_type_visibility"> [system as boolean]</span> 13678 13679 <ul class="entry_type_enum"> 13680 <li> 13681 <span class="entry_type_enum_name">OFF</span> 13682 </li> 13683 <li> 13684 <span class="entry_type_enum_name">ON</span> 13685 </li> 13686 </ul> 13687 13688 </td> <!-- entry_type --> 13689 13690 <td class="entry_description"> 13691 <p>Operating mode for histogram 13692generation</p> 13693 </td> 13694 13695 <td class="entry_units"> 13696 </td> 13697 13698 <td class="entry_range"> 13699 </td> 13700 13701 <td class="entry_tags"> 13702 <ul class="entry_tags"> 13703 <li><a href="#tag_V1">V1</a></li> 13704 </ul> 13705 </td> 13706 13707 </tr> 13708 13709 13710 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13711 <!-- end of entry --> 13712 13713 13714 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 13715 <td class="entry_name" rowspan="3"> 13716 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 13717 </td> 13718 <td class="entry_type"> 13719 <span class="entry_type_name">int32</span> 13720 <span class="entry_type_container">x</span> 13721 13722 <span class="entry_type_array"> 13723 n x m x 3 13724 </span> 13725 <span class="entry_type_visibility"> [system]</span> 13726 <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> 13727 13728 13729 </td> <!-- entry_type --> 13730 13731 <td class="entry_description"> 13732 <p>A 3-channel sharpness map,<wbr/> based on the raw 13733sensor data</p> 13734 </td> 13735 13736 <td class="entry_units"> 13737 </td> 13738 13739 <td class="entry_range"> 13740 </td> 13741 13742 <td class="entry_tags"> 13743 <ul class="entry_tags"> 13744 <li><a href="#tag_V1">V1</a></li> 13745 </ul> 13746 </td> 13747 13748 </tr> 13749 <tr class="entries_header"> 13750 <th class="th_details" colspan="5">Details</th> 13751 </tr> 13752 <tr class="entry_cont"> 13753 <td class="entry_details" colspan="5"> 13754 <p>If only a monochrome sharpness map is supported,<wbr/> 13755all channels should have the same data</p> 13756 </td> 13757 </tr> 13758 13759 13760 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13761 <!-- end of entry --> 13762 13763 13764 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> 13765 <td class="entry_name" rowspan="1"> 13766 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 13767 </td> 13768 <td class="entry_type"> 13769 <span class="entry_type_name entry_type_name_enum">byte</span> 13770 13771 <span class="entry_type_visibility"> [system as boolean]</span> 13772 13773 <ul class="entry_type_enum"> 13774 <li> 13775 <span class="entry_type_enum_name">OFF</span> 13776 </li> 13777 <li> 13778 <span class="entry_type_enum_name">ON</span> 13779 </li> 13780 </ul> 13781 13782 </td> <!-- entry_type --> 13783 13784 <td class="entry_description"> 13785 <p>Operating mode for sharpness map 13786generation</p> 13787 </td> 13788 13789 <td class="entry_units"> 13790 </td> 13791 13792 <td class="entry_range"> 13793 </td> 13794 13795 <td class="entry_tags"> 13796 <ul class="entry_tags"> 13797 <li><a href="#tag_V1">V1</a></li> 13798 </ul> 13799 </td> 13800 13801 </tr> 13802 13803 13804 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13805 <!-- end of entry --> 13806 13807 13808 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 13809 <td class="entry_name" rowspan="3"> 13810 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 13811 </td> 13812 <td class="entry_type"> 13813 <span class="entry_type_name">float</span> 13814 <span class="entry_type_container">x</span> 13815 13816 <span class="entry_type_array"> 13817 4 x n x m 13818 </span> 13819 <span class="entry_type_visibility"> [public]</span> 13820 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 13821 13822 13823 </td> <!-- entry_type --> 13824 13825 <td class="entry_description"> 13826 <p>The shading map is a low-resolution floating-point map 13827that lists the coefficients used to correct for vignetting,<wbr/> for each 13828Bayer color channel.<wbr/></p> 13829 </td> 13830 13831 <td class="entry_units"> 13832 </td> 13833 13834 <td class="entry_range"> 13835 <p>Each gain factor is >= 1</p> 13836 </td> 13837 13838 <td class="entry_tags"> 13839 </td> 13840 13841 </tr> 13842 <tr class="entries_header"> 13843 <th class="th_details" colspan="5">Details</th> 13844 </tr> 13845 <tr class="entry_cont"> 13846 <td class="entry_details" colspan="5"> 13847 <p>The least shaded section of the image should have a gain factor 13848of 1; all other sections should have gains above 1.<wbr/></p> 13849<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 13850must take into account the colorCorrection settings.<wbr/></p> 13851<p>The shading map is for the entire active pixel array,<wbr/> and is not 13852affected by the crop region specified in the request.<wbr/> Each shading map 13853entry is the value of the shading compensation map over a specific 13854pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 13855map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 13856(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 13857pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 13858The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 13859<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 13860channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 13861The shading map is stored in a fully interleaved format,<wbr/> and its size 13862is 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> 13863<p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 13864and must be smaller than 64x64.<wbr/></p> 13865<p>As an example,<wbr/> given a very small map defined as:</p> 13866<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 13867<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 13868[ 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/> 13869 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/> 13870 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/> 13871 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/> 13872 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/> 13873 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 ] 13874</code></pre> 13875<p>The low-resolution scaling map images for each channel are 13876(displayed using nearest-neighbor interpolation):</p> 13877<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 13878<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 13879<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 13880<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 13881<p>As a visualization only,<wbr/> inverting the full-color map to recover an 13882image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 13883<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 13884 </td> 13885 </tr> 13886 13887 13888 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13889 <!-- end of entry --> 13890 13891 13892 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 13893 <td class="entry_name" rowspan="3"> 13894 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 13895 </td> 13896 <td class="entry_type"> 13897 <span class="entry_type_name">float</span> 13898 <span class="entry_type_container">x</span> 13899 13900 <span class="entry_type_array"> 13901 4 13902 </span> 13903 <span class="entry_type_visibility"> [hidden]</span> 13904 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 13905 13906 13907 </td> <!-- entry_type --> 13908 13909 <td class="entry_description"> 13910 <p>The best-fit color channel gains calculated 13911by the HAL's statistics units for the current output frame</p> 13912 </td> 13913 13914 <td class="entry_units"> 13915 </td> 13916 13917 <td class="entry_range"> 13918 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 13919 </td> 13920 13921 <td class="entry_tags"> 13922 </td> 13923 13924 </tr> 13925 <tr class="entries_header"> 13926 <th class="th_details" colspan="5">Details</th> 13927 </tr> 13928 <tr class="entry_cont"> 13929 <td class="entry_details" colspan="5"> 13930 <p>This may be different than the gains used for this frame,<wbr/> 13931since statistics processing on data from a new frame 13932typically completes after the transform has already been 13933applied to that frame.<wbr/></p> 13934<p>The 4 channel gains are defined in Bayer domain,<wbr/> 13935see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 13936<p>This value should always be calculated by the AWB block,<wbr/> 13937regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 13938 </td> 13939 </tr> 13940 13941 13942 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13943 <!-- end of entry --> 13944 13945 13946 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 13947 <td class="entry_name" rowspan="3"> 13948 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 13949 </td> 13950 <td class="entry_type"> 13951 <span class="entry_type_name">rational</span> 13952 <span class="entry_type_container">x</span> 13953 13954 <span class="entry_type_array"> 13955 3 x 3 13956 </span> 13957 <span class="entry_type_visibility"> [hidden]</span> 13958 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 13959 13960 13961 </td> <!-- entry_type --> 13962 13963 <td class="entry_description"> 13964 <p>The best-fit color transform matrix estimate 13965calculated by the HAL's statistics units for the current 13966output frame</p> 13967 </td> 13968 13969 <td class="entry_units"> 13970 </td> 13971 13972 <td class="entry_range"> 13973 <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> 13974 </td> 13975 13976 <td class="entry_tags"> 13977 </td> 13978 13979 </tr> 13980 <tr class="entries_header"> 13981 <th class="th_details" colspan="5">Details</th> 13982 </tr> 13983 <tr class="entry_cont"> 13984 <td class="entry_details" colspan="5"> 13985 <p>The HAL must provide the estimate from its 13986statistics unit on the white balance transforms to use 13987for the next frame.<wbr/> These are the values the HAL believes 13988are the best fit for the current output frame.<wbr/> This may 13989be different than the transform used for this frame,<wbr/> since 13990statistics processing on data from a new frame typically 13991completes after the transform has already been applied to 13992that frame.<wbr/></p> 13993<p>These estimates must be provided for all frames,<wbr/> even if 13994capture settings and color transforms are set by the application.<wbr/></p> 13995<p>This value should always be calculated by the AWB block,<wbr/> 13996regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 13997 </td> 13998 </tr> 13999 14000 14001 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14002 <!-- end of entry --> 14003 14004 14005 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 14006 <td class="entry_name" rowspan="3"> 14007 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 14008 </td> 14009 <td class="entry_type"> 14010 <span class="entry_type_name entry_type_name_enum">byte</span> 14011 14012 <span class="entry_type_visibility"> [public]</span> 14013 14014 <ul class="entry_type_enum"> 14015 <li> 14016 <span class="entry_type_enum_name">NONE</span> 14017 </li> 14018 <li> 14019 <span class="entry_type_enum_name">50HZ</span> 14020 </li> 14021 <li> 14022 <span class="entry_type_enum_name">60HZ</span> 14023 </li> 14024 </ul> 14025 14026 </td> <!-- entry_type --> 14027 14028 <td class="entry_description"> 14029 <p>The camera device estimated scene illumination lighting 14030frequency.<wbr/></p> 14031 </td> 14032 14033 <td class="entry_units"> 14034 </td> 14035 14036 <td class="entry_range"> 14037 </td> 14038 14039 <td class="entry_tags"> 14040 </td> 14041 14042 </tr> 14043 <tr class="entries_header"> 14044 <th class="th_details" colspan="5">Details</th> 14045 </tr> 14046 <tr class="entry_cont"> 14047 <td class="entry_details" colspan="5"> 14048 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 14049that depends on the local utility power standards.<wbr/> This flicker must be 14050accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 14051The camera device uses this entry to tell the application what the scene 14052illuminant frequency is.<wbr/></p> 14053<p>When manual exposure control is enabled 14054(<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/> 14055the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't do the antibanding,<wbr/> and the 14056application can ensure it selects exposure times that do not cause banding 14057issues by looking into this metadata field.<wbr/> See android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 14058for more details.<wbr/></p> 14059<p>Report NONE if there doesn't appear to be flickering illumination.<wbr/></p> 14060 </td> 14061 </tr> 14062 14063 14064 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14065 <!-- end of entry --> 14066 14067 14068 14069 <!-- end of kind --> 14070 </tbody> 14071 14072 <!-- end of section --> 14073 <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr> 14074 14075 14076 <tr><td colspan="6" class="kind">controls</td></tr> 14077 14078 <thead class="entries_header"> 14079 <tr> 14080 <th class="th_name">Property Name</th> 14081 <th class="th_type">Type</th> 14082 <th class="th_description">Description</th> 14083 <th class="th_units">Units</th> 14084 <th class="th_range">Range</th> 14085 <th class="th_tags">Tags</th> 14086 </tr> 14087 </thead> 14088 14089 <tbody> 14090 14091 14092 14093 14094 14095 14096 14097 14098 14099 14100 <tr class="entry" id="controls_android.tonemap.curveBlue"> 14101 <td class="entry_name" rowspan="3"> 14102 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 14103 </td> 14104 <td class="entry_type"> 14105 <span class="entry_type_name">float</span> 14106 <span class="entry_type_container">x</span> 14107 14108 <span class="entry_type_array"> 14109 n x 2 14110 </span> 14111 <span class="entry_type_visibility"> [public]</span> 14112 <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> 14113 14114 14115 </td> <!-- entry_type --> 14116 14117 <td class="entry_description"> 14118 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 14119channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 14120CONTRAST_<wbr/>CURVE.<wbr/></p> 14121 </td> 14122 14123 <td class="entry_units"> 14124 same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 14125 </td> 14126 14127 <td class="entry_range"> 14128 <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> 14129 </td> 14130 14131 <td class="entry_tags"> 14132 </td> 14133 14134 </tr> 14135 <tr class="entries_header"> 14136 <th class="th_details" colspan="5">Details</th> 14137 </tr> 14138 <tr class="entry_cont"> 14139 <td class="entry_details" colspan="5"> 14140 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 14141 </td> 14142 </tr> 14143 14144 14145 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14146 <!-- end of entry --> 14147 14148 14149 <tr class="entry" id="controls_android.tonemap.curveGreen"> 14150 <td class="entry_name" rowspan="3"> 14151 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 14152 </td> 14153 <td class="entry_type"> 14154 <span class="entry_type_name">float</span> 14155 <span class="entry_type_container">x</span> 14156 14157 <span class="entry_type_array"> 14158 n x 2 14159 </span> 14160 <span class="entry_type_visibility"> [public]</span> 14161 <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> 14162 14163 14164 </td> <!-- entry_type --> 14165 14166 <td class="entry_description"> 14167 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 14168channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 14169CONTRAST_<wbr/>CURVE.<wbr/></p> 14170 </td> 14171 14172 <td class="entry_units"> 14173 same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 14174 </td> 14175 14176 <td class="entry_range"> 14177 <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> 14178 </td> 14179 14180 <td class="entry_tags"> 14181 </td> 14182 14183 </tr> 14184 <tr class="entries_header"> 14185 <th class="th_details" colspan="5">Details</th> 14186 </tr> 14187 <tr class="entry_cont"> 14188 <td class="entry_details" colspan="5"> 14189 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 14190 </td> 14191 </tr> 14192 14193 14194 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14195 <!-- end of entry --> 14196 14197 14198 <tr class="entry" id="controls_android.tonemap.curveRed"> 14199 <td class="entry_name" rowspan="5"> 14200 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 14201 </td> 14202 <td class="entry_type"> 14203 <span class="entry_type_name">float</span> 14204 <span class="entry_type_container">x</span> 14205 14206 <span class="entry_type_array"> 14207 n x 2 14208 </span> 14209 <span class="entry_type_visibility"> [public]</span> 14210 <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> 14211 14212 14213 </td> <!-- entry_type --> 14214 14215 <td class="entry_description"> 14216 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 14217channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 14218CONTRAST_<wbr/>CURVE.<wbr/></p> 14219 </td> 14220 14221 <td class="entry_units"> 14222 </td> 14223 14224 <td class="entry_range"> 14225 <p>0-1 on both input and output coordinates,<wbr/> normalized 14226as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 14227 </td> 14228 14229 <td class="entry_tags"> 14230 <ul class="entry_tags"> 14231 <li><a href="#tag_DNG">DNG</a></li> 14232 </ul> 14233 </td> 14234 14235 </tr> 14236 <tr class="entries_header"> 14237 <th class="th_details" colspan="5">Details</th> 14238 </tr> 14239 <tr class="entry_cont"> 14240 <td class="entry_details" colspan="5"> 14241 <p>Each channel's curve is defined by an array of control points:</p> 14242<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 14243 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 142442 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 14245<p>These are sorted in order of increasing <code>Pin</code>; it is always 14246guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 14247define a complete mapping.<wbr/> For input values between control points,<wbr/> 14248the camera device must linearly interpolate between the control 14249points.<wbr/></p> 14250<p>Each curve can have an independent number of points,<wbr/> and the number 14251of points can be less than max (that is,<wbr/> the request doesn't have to 14252always provide a curve with number of points equivalent to 14253<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 14254<p>A few examples,<wbr/> and their corresponding graphical mappings; these 14255only specify the red channel and the precision is limited to 4 14256digits,<wbr/> for conciseness.<wbr/></p> 14257<p>Linear mapping:</p> 14258<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 ] 14259</code></pre> 14260<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 14261<p>Invert mapping:</p> 14262<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 ] 14263</code></pre> 14264<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 14265<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 14266<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 14267 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/> 14268 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/> 14269 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/> 14270 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 ] 14271</code></pre> 14272<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 14273<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 14274<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 14275 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/> 14276 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/> 14277 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/> 14278 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 ] 14279</code></pre> 14280<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 14281 </td> 14282 </tr> 14283 14284 <tr class="entries_header"> 14285 <th class="th_details" colspan="5">HAL Implementation Details</th> 14286 </tr> 14287 <tr class="entry_cont"> 14288 <td class="entry_details" colspan="5"> 14289 <p>For good quality of mapping,<wbr/> at least 128 control points are 14290preferred.<wbr/></p> 14291<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 14292control points used as are available.<wbr/></p> 14293 </td> 14294 </tr> 14295 14296 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14297 <!-- end of entry --> 14298 14299 14300 <tr class="entry" id="controls_android.tonemap.mode"> 14301 <td class="entry_name" rowspan="3"> 14302 android.<wbr/>tonemap.<wbr/>mode 14303 </td> 14304 <td class="entry_type"> 14305 <span class="entry_type_name entry_type_name_enum">byte</span> 14306 14307 <span class="entry_type_visibility"> [public]</span> 14308 14309 <ul class="entry_type_enum"> 14310 <li> 14311 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 14312 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 14313android.<wbr/>tonemap.<wbr/>curve.<wbr/></p> 14314<p>All color enhancement and tonemapping must be disabled,<wbr/> except 14315for applying the tonemapping curve specified by 14316<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 14317<a href="#controls_android.tonemap.curveGreen">android.<wbr/>tonemap.<wbr/>curve<wbr/>Green</a>.<wbr/></p> 14318<p>Must not slow down frame rate relative to raw 14319sensor output.<wbr/></p></span> 14320 </li> 14321 <li> 14322 <span class="entry_type_enum_name">FAST</span> 14323 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> 14324<p>Should not slow down frame rate relative to raw sensor output.<wbr/></p></span> 14325 </li> 14326 <li> 14327 <span class="entry_type_enum_name">HIGH_QUALITY</span> 14328 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> 14329<p>May slow down frame rate relative to raw sensor output.<wbr/></p></span> 14330 </li> 14331 </ul> 14332 14333 </td> <!-- entry_type --> 14334 14335 <td class="entry_description"> 14336 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 14337 </td> 14338 14339 <td class="entry_units"> 14340 </td> 14341 14342 <td class="entry_range"> 14343 </td> 14344 14345 <td class="entry_tags"> 14346 </td> 14347 14348 </tr> 14349 <tr class="entries_header"> 14350 <th class="th_details" colspan="5">Details</th> 14351 </tr> 14352 <tr class="entry_cont"> 14353 <td class="entry_details" colspan="5"> 14354 <p>When switching to an application-defined contrast curve by setting 14355<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 14356per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 14357mapping from input high-bit-depth pixel value to the output 14358low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 14359and output may change depending on the camera pipeline,<wbr/> the values 14360are specified by normalized floating-point numbers.<wbr/></p> 14361<p>More-complex color mapping operations such as 3D color look-up 14362tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 14363transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 14364CONTRAST_<wbr/>CURVE.<wbr/></p> 14365<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 14366emit its own tonemap curve in <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a>,<wbr/> 14367<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/> 14368These values are always available,<wbr/> and as close as possible to the 14369actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 14370<p>If a request is sent with TRANSFORM_<wbr/>MATRIX with the camera device's 14371provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 14372roughly the same.<wbr/></p> 14373 </td> 14374 </tr> 14375 14376 14377 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14378 <!-- end of entry --> 14379 14380 14381 14382 <!-- end of kind --> 14383 </tbody> 14384 <tr><td colspan="6" class="kind">static</td></tr> 14385 14386 <thead class="entries_header"> 14387 <tr> 14388 <th class="th_name">Property Name</th> 14389 <th class="th_type">Type</th> 14390 <th class="th_description">Description</th> 14391 <th class="th_units">Units</th> 14392 <th class="th_range">Range</th> 14393 <th class="th_tags">Tags</th> 14394 </tr> 14395 </thead> 14396 14397 <tbody> 14398 14399 14400 14401 14402 14403 14404 14405 14406 14407 14408 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 14409 <td class="entry_name" rowspan="5"> 14410 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 14411 </td> 14412 <td class="entry_type"> 14413 <span class="entry_type_name">int32</span> 14414 14415 <span class="entry_type_visibility"> [public]</span> 14416 14417 14418 </td> <!-- entry_type --> 14419 14420 <td class="entry_description"> 14421 <p>Maximum number of supported points in the 14422tonemap curve that can be used for <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a>,<wbr/> or 14423<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> 14424 </td> 14425 14426 <td class="entry_units"> 14427 </td> 14428 14429 <td class="entry_range"> 14430 <p>>= 64</p> 14431 </td> 14432 14433 <td class="entry_tags"> 14434 </td> 14435 14436 </tr> 14437 <tr class="entries_header"> 14438 <th class="th_details" colspan="5">Details</th> 14439 </tr> 14440 <tr class="entry_cont"> 14441 <td class="entry_details" colspan="5"> 14442 <p>If the actual number of points provided by the application (in 14443android.<wbr/>tonemap.<wbr/>curve*) is less than max,<wbr/> the camera device will 14444resample the curve to its internal representation,<wbr/> using linear 14445interpolation.<wbr/></p> 14446<p>The output curves in the result metadata may have a different number 14447of points than the input curves,<wbr/> and will represent the actual 14448hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 14449 </td> 14450 </tr> 14451 14452 <tr class="entries_header"> 14453 <th class="th_details" colspan="5">HAL Implementation Details</th> 14454 </tr> 14455 <tr class="entry_cont"> 14456 <td class="entry_details" colspan="5"> 14457 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 14458 </td> 14459 </tr> 14460 14461 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14462 <!-- end of entry --> 14463 14464 14465 14466 <!-- end of kind --> 14467 </tbody> 14468 <tr><td colspan="6" class="kind">dynamic</td></tr> 14469 14470 <thead class="entries_header"> 14471 <tr> 14472 <th class="th_name">Property Name</th> 14473 <th class="th_type">Type</th> 14474 <th class="th_description">Description</th> 14475 <th class="th_units">Units</th> 14476 <th class="th_range">Range</th> 14477 <th class="th_tags">Tags</th> 14478 </tr> 14479 </thead> 14480 14481 <tbody> 14482 14483 14484 14485 14486 14487 14488 14489 14490 14491 14492 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 14493 <td class="entry_name" rowspan="3"> 14494 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 14495 </td> 14496 <td class="entry_type"> 14497 <span class="entry_type_name">float</span> 14498 <span class="entry_type_container">x</span> 14499 14500 <span class="entry_type_array"> 14501 n x 2 14502 </span> 14503 <span class="entry_type_visibility"> [public]</span> 14504 <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> 14505 14506 14507 </td> <!-- entry_type --> 14508 14509 <td class="entry_description"> 14510 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 14511channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 14512CONTRAST_<wbr/>CURVE.<wbr/></p> 14513 </td> 14514 14515 <td class="entry_units"> 14516 same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 14517 </td> 14518 14519 <td class="entry_range"> 14520 <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> 14521 </td> 14522 14523 <td class="entry_tags"> 14524 </td> 14525 14526 </tr> 14527 <tr class="entries_header"> 14528 <th class="th_details" colspan="5">Details</th> 14529 </tr> 14530 <tr class="entry_cont"> 14531 <td class="entry_details" colspan="5"> 14532 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 14533 </td> 14534 </tr> 14535 14536 14537 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14538 <!-- end of entry --> 14539 14540 14541 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 14542 <td class="entry_name" rowspan="3"> 14543 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 14544 </td> 14545 <td class="entry_type"> 14546 <span class="entry_type_name">float</span> 14547 <span class="entry_type_container">x</span> 14548 14549 <span class="entry_type_array"> 14550 n x 2 14551 </span> 14552 <span class="entry_type_visibility"> [public]</span> 14553 <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> 14554 14555 14556 </td> <!-- entry_type --> 14557 14558 <td class="entry_description"> 14559 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 14560channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 14561CONTRAST_<wbr/>CURVE.<wbr/></p> 14562 </td> 14563 14564 <td class="entry_units"> 14565 same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 14566 </td> 14567 14568 <td class="entry_range"> 14569 <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> 14570 </td> 14571 14572 <td class="entry_tags"> 14573 </td> 14574 14575 </tr> 14576 <tr class="entries_header"> 14577 <th class="th_details" colspan="5">Details</th> 14578 </tr> 14579 <tr class="entry_cont"> 14580 <td class="entry_details" colspan="5"> 14581 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 14582 </td> 14583 </tr> 14584 14585 14586 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14587 <!-- end of entry --> 14588 14589 14590 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 14591 <td class="entry_name" rowspan="5"> 14592 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 14593 </td> 14594 <td class="entry_type"> 14595 <span class="entry_type_name">float</span> 14596 <span class="entry_type_container">x</span> 14597 14598 <span class="entry_type_array"> 14599 n x 2 14600 </span> 14601 <span class="entry_type_visibility"> [public]</span> 14602 <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> 14603 14604 14605 </td> <!-- entry_type --> 14606 14607 <td class="entry_description"> 14608 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 14609channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 14610CONTRAST_<wbr/>CURVE.<wbr/></p> 14611 </td> 14612 14613 <td class="entry_units"> 14614 </td> 14615 14616 <td class="entry_range"> 14617 <p>0-1 on both input and output coordinates,<wbr/> normalized 14618as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 14619 </td> 14620 14621 <td class="entry_tags"> 14622 <ul class="entry_tags"> 14623 <li><a href="#tag_DNG">DNG</a></li> 14624 </ul> 14625 </td> 14626 14627 </tr> 14628 <tr class="entries_header"> 14629 <th class="th_details" colspan="5">Details</th> 14630 </tr> 14631 <tr class="entry_cont"> 14632 <td class="entry_details" colspan="5"> 14633 <p>Each channel's curve is defined by an array of control points:</p> 14634<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 14635 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 146362 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 14637<p>These are sorted in order of increasing <code>Pin</code>; it is always 14638guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 14639define a complete mapping.<wbr/> For input values between control points,<wbr/> 14640the camera device must linearly interpolate between the control 14641points.<wbr/></p> 14642<p>Each curve can have an independent number of points,<wbr/> and the number 14643of points can be less than max (that is,<wbr/> the request doesn't have to 14644always provide a curve with number of points equivalent to 14645<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 14646<p>A few examples,<wbr/> and their corresponding graphical mappings; these 14647only specify the red channel and the precision is limited to 4 14648digits,<wbr/> for conciseness.<wbr/></p> 14649<p>Linear mapping:</p> 14650<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 ] 14651</code></pre> 14652<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 14653<p>Invert mapping:</p> 14654<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 ] 14655</code></pre> 14656<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 14657<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 14658<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 14659 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/> 14660 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/> 14661 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/> 14662 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 ] 14663</code></pre> 14664<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 14665<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 14666<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 14667 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/> 14668 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/> 14669 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/> 14670 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 ] 14671</code></pre> 14672<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 14673 </td> 14674 </tr> 14675 14676 <tr class="entries_header"> 14677 <th class="th_details" colspan="5">HAL Implementation Details</th> 14678 </tr> 14679 <tr class="entry_cont"> 14680 <td class="entry_details" colspan="5"> 14681 <p>For good quality of mapping,<wbr/> at least 128 control points are 14682preferred.<wbr/></p> 14683<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 14684control points used as are available.<wbr/></p> 14685 </td> 14686 </tr> 14687 14688 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14689 <!-- end of entry --> 14690 14691 14692 <tr class="entry" id="dynamic_android.tonemap.mode"> 14693 <td class="entry_name" rowspan="3"> 14694 android.<wbr/>tonemap.<wbr/>mode 14695 </td> 14696 <td class="entry_type"> 14697 <span class="entry_type_name entry_type_name_enum">byte</span> 14698 14699 <span class="entry_type_visibility"> [public]</span> 14700 14701 <ul class="entry_type_enum"> 14702 <li> 14703 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 14704 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 14705android.<wbr/>tonemap.<wbr/>curve.<wbr/></p> 14706<p>All color enhancement and tonemapping must be disabled,<wbr/> except 14707for applying the tonemapping curve specified by 14708<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 14709<a href="#controls_android.tonemap.curveGreen">android.<wbr/>tonemap.<wbr/>curve<wbr/>Green</a>.<wbr/></p> 14710<p>Must not slow down frame rate relative to raw 14711sensor output.<wbr/></p></span> 14712 </li> 14713 <li> 14714 <span class="entry_type_enum_name">FAST</span> 14715 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> 14716<p>Should not slow down frame rate relative to raw sensor output.<wbr/></p></span> 14717 </li> 14718 <li> 14719 <span class="entry_type_enum_name">HIGH_QUALITY</span> 14720 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> 14721<p>May slow down frame rate relative to raw sensor output.<wbr/></p></span> 14722 </li> 14723 </ul> 14724 14725 </td> <!-- entry_type --> 14726 14727 <td class="entry_description"> 14728 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 14729 </td> 14730 14731 <td class="entry_units"> 14732 </td> 14733 14734 <td class="entry_range"> 14735 </td> 14736 14737 <td class="entry_tags"> 14738 </td> 14739 14740 </tr> 14741 <tr class="entries_header"> 14742 <th class="th_details" colspan="5">Details</th> 14743 </tr> 14744 <tr class="entry_cont"> 14745 <td class="entry_details" colspan="5"> 14746 <p>When switching to an application-defined contrast curve by setting 14747<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 14748per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 14749mapping from input high-bit-depth pixel value to the output 14750low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 14751and output may change depending on the camera pipeline,<wbr/> the values 14752are specified by normalized floating-point numbers.<wbr/></p> 14753<p>More-complex color mapping operations such as 3D color look-up 14754tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 14755transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 14756CONTRAST_<wbr/>CURVE.<wbr/></p> 14757<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 14758emit its own tonemap curve in <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a>,<wbr/> 14759<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/> 14760These values are always available,<wbr/> and as close as possible to the 14761actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 14762<p>If a request is sent with TRANSFORM_<wbr/>MATRIX with the camera device's 14763provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 14764roughly the same.<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 14774 <!-- end of kind --> 14775 </tbody> 14776 14777 <!-- end of section --> 14778 <tr><td colspan="6" id="section_led" class="section">led</td></tr> 14779 14780 14781 <tr><td colspan="6" class="kind">controls</td></tr> 14782 14783 <thead class="entries_header"> 14784 <tr> 14785 <th class="th_name">Property Name</th> 14786 <th class="th_type">Type</th> 14787 <th class="th_description">Description</th> 14788 <th class="th_units">Units</th> 14789 <th class="th_range">Range</th> 14790 <th class="th_tags">Tags</th> 14791 </tr> 14792 </thead> 14793 14794 <tbody> 14795 14796 14797 14798 14799 14800 14801 14802 14803 14804 14805 <tr class="entry" id="controls_android.led.transmit"> 14806 <td class="entry_name" rowspan="1"> 14807 android.<wbr/>led.<wbr/>transmit 14808 </td> 14809 <td class="entry_type"> 14810 <span class="entry_type_name entry_type_name_enum">byte</span> 14811 14812 <span class="entry_type_visibility"> [hidden as boolean]</span> 14813 14814 <ul class="entry_type_enum"> 14815 <li> 14816 <span class="entry_type_enum_name">OFF</span> 14817 </li> 14818 <li> 14819 <span class="entry_type_enum_name">ON</span> 14820 </li> 14821 </ul> 14822 14823 </td> <!-- entry_type --> 14824 14825 <td class="entry_description"> 14826 <p>This LED is nominally used to indicate to the user 14827that the camera is powered on and may be streaming images back to the 14828Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 14829disable this when video is processed locally and not transmitted to 14830any untrusted applications.<wbr/></p> 14831<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 14832transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 14833data is stored locally on the device.<wbr/></p> 14834<p>The LED <em>may</em> be off if a trusted application is using the data that 14835doesn't violate the above rules.<wbr/></p> 14836 </td> 14837 14838 <td class="entry_units"> 14839 </td> 14840 14841 <td class="entry_range"> 14842 </td> 14843 14844 <td class="entry_tags"> 14845 </td> 14846 14847 </tr> 14848 14849 14850 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14851 <!-- end of entry --> 14852 14853 14854 14855 <!-- end of kind --> 14856 </tbody> 14857 <tr><td colspan="6" class="kind">dynamic</td></tr> 14858 14859 <thead class="entries_header"> 14860 <tr> 14861 <th class="th_name">Property Name</th> 14862 <th class="th_type">Type</th> 14863 <th class="th_description">Description</th> 14864 <th class="th_units">Units</th> 14865 <th class="th_range">Range</th> 14866 <th class="th_tags">Tags</th> 14867 </tr> 14868 </thead> 14869 14870 <tbody> 14871 14872 14873 14874 14875 14876 14877 14878 14879 14880 14881 <tr class="entry" id="dynamic_android.led.transmit"> 14882 <td class="entry_name" rowspan="1"> 14883 android.<wbr/>led.<wbr/>transmit 14884 </td> 14885 <td class="entry_type"> 14886 <span class="entry_type_name entry_type_name_enum">byte</span> 14887 14888 <span class="entry_type_visibility"> [hidden as boolean]</span> 14889 14890 <ul class="entry_type_enum"> 14891 <li> 14892 <span class="entry_type_enum_name">OFF</span> 14893 </li> 14894 <li> 14895 <span class="entry_type_enum_name">ON</span> 14896 </li> 14897 </ul> 14898 14899 </td> <!-- entry_type --> 14900 14901 <td class="entry_description"> 14902 <p>This LED is nominally used to indicate to the user 14903that the camera is powered on and may be streaming images back to the 14904Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 14905disable this when video is processed locally and not transmitted to 14906any untrusted applications.<wbr/></p> 14907<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 14908transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 14909data is stored locally on the device.<wbr/></p> 14910<p>The LED <em>may</em> be off if a trusted application is using the data that 14911doesn't violate the above rules.<wbr/></p> 14912 </td> 14913 14914 <td class="entry_units"> 14915 </td> 14916 14917 <td class="entry_range"> 14918 </td> 14919 14920 <td class="entry_tags"> 14921 </td> 14922 14923 </tr> 14924 14925 14926 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14927 <!-- end of entry --> 14928 14929 14930 14931 <!-- end of kind --> 14932 </tbody> 14933 <tr><td colspan="6" class="kind">static</td></tr> 14934 14935 <thead class="entries_header"> 14936 <tr> 14937 <th class="th_name">Property Name</th> 14938 <th class="th_type">Type</th> 14939 <th class="th_description">Description</th> 14940 <th class="th_units">Units</th> 14941 <th class="th_range">Range</th> 14942 <th class="th_tags">Tags</th> 14943 </tr> 14944 </thead> 14945 14946 <tbody> 14947 14948 14949 14950 14951 14952 14953 14954 14955 14956 14957 <tr class="entry" id="static_android.led.availableLeds"> 14958 <td class="entry_name" rowspan="1"> 14959 android.<wbr/>led.<wbr/>available<wbr/>Leds 14960 </td> 14961 <td class="entry_type"> 14962 <span class="entry_type_name entry_type_name_enum">byte</span> 14963 <span class="entry_type_container">x</span> 14964 14965 <span class="entry_type_array"> 14966 n 14967 </span> 14968 <span class="entry_type_visibility"> [hidden]</span> 14969 14970 <ul class="entry_type_enum"> 14971 <li> 14972 <span class="entry_type_enum_name">TRANSMIT</span> 14973 <span class="entry_type_enum_notes"><p><a href="#controls_android.led.transmit">android.<wbr/>led.<wbr/>transmit</a> control is used</p></span> 14974 </li> 14975 </ul> 14976 14977 </td> <!-- entry_type --> 14978 14979 <td class="entry_description"> 14980 <p>A list of camera LEDs that are available on this system.<wbr/></p> 14981 </td> 14982 14983 <td class="entry_units"> 14984 </td> 14985 14986 <td class="entry_range"> 14987 </td> 14988 14989 <td class="entry_tags"> 14990 </td> 14991 14992 </tr> 14993 14994 14995 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14996 <!-- end of entry --> 14997 14998 14999 15000 <!-- end of kind --> 15001 </tbody> 15002 15003 <!-- end of section --> 15004 <tr><td colspan="6" id="section_info" class="section">info</td></tr> 15005 15006 15007 <tr><td colspan="6" class="kind">static</td></tr> 15008 15009 <thead class="entries_header"> 15010 <tr> 15011 <th class="th_name">Property Name</th> 15012 <th class="th_type">Type</th> 15013 <th class="th_description">Description</th> 15014 <th class="th_units">Units</th> 15015 <th class="th_range">Range</th> 15016 <th class="th_tags">Tags</th> 15017 </tr> 15018 </thead> 15019 15020 <tbody> 15021 15022 15023 15024 15025 15026 15027 15028 15029 15030 15031 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 15032 <td class="entry_name" rowspan="1"> 15033 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 15034 </td> 15035 <td class="entry_type"> 15036 <span class="entry_type_name entry_type_name_enum">byte</span> 15037 15038 <span class="entry_type_visibility"> [public]</span> 15039 15040 <ul class="entry_type_enum"> 15041 <li> 15042 <span class="entry_type_enum_name">LIMITED</span> 15043 </li> 15044 <li> 15045 <span class="entry_type_enum_name">FULL</span> 15046 </li> 15047 </ul> 15048 15049 </td> <!-- entry_type --> 15050 15051 <td class="entry_description"> 15052 <p>The camera 3 HAL device can implement one of two possible 15053operational modes; limited and full.<wbr/> Full support is 15054expected from new higher-end devices.<wbr/> Limited mode has 15055hardware requirements roughly in line with those for a 15056camera HAL device v1 implementation,<wbr/> and is expected from 15057older or inexpensive devices.<wbr/> Full is a strict superset of 15058limited,<wbr/> and they share the same essential operational flow.<wbr/></p> 15059<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 15060 </td> 15061 15062 <td class="entry_units"> 15063 </td> 15064 15065 <td class="entry_range"> 15066 <p>Optional.<wbr/> Default value is LIMITED.<wbr/></p> 15067 </td> 15068 15069 <td class="entry_tags"> 15070 </td> 15071 15072 </tr> 15073 15074 15075 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15076 <!-- end of entry --> 15077 15078 15079 15080 <!-- end of kind --> 15081 </tbody> 15082 15083 <!-- end of section --> 15084 <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr> 15085 15086 15087 <tr><td colspan="6" class="kind">controls</td></tr> 15088 15089 <thead class="entries_header"> 15090 <tr> 15091 <th class="th_name">Property Name</th> 15092 <th class="th_type">Type</th> 15093 <th class="th_description">Description</th> 15094 <th class="th_units">Units</th> 15095 <th class="th_range">Range</th> 15096 <th class="th_tags">Tags</th> 15097 </tr> 15098 </thead> 15099 15100 <tbody> 15101 15102 15103 15104 15105 15106 15107 15108 15109 15110 15111 <tr class="entry" id="controls_android.blackLevel.lock"> 15112 <td class="entry_name" rowspan="5"> 15113 android.<wbr/>black<wbr/>Level.<wbr/>lock 15114 </td> 15115 <td class="entry_type"> 15116 <span class="entry_type_name entry_type_name_enum">byte</span> 15117 15118 <span class="entry_type_visibility"> [public as boolean]</span> 15119 15120 <ul class="entry_type_enum"> 15121 <li> 15122 <span class="entry_type_enum_name">OFF</span> 15123 </li> 15124 <li> 15125 <span class="entry_type_enum_name">ON</span> 15126 </li> 15127 </ul> 15128 15129 </td> <!-- entry_type --> 15130 15131 <td class="entry_description"> 15132 <p>Whether black-level compensation is locked 15133to its current values,<wbr/> or is free to vary.<wbr/></p> 15134 </td> 15135 15136 <td class="entry_units"> 15137 </td> 15138 15139 <td class="entry_range"> 15140 </td> 15141 15142 <td class="entry_tags"> 15143 <ul class="entry_tags"> 15144 <li><a href="#tag_HAL2">HAL2</a></li> 15145 </ul> 15146 </td> 15147 15148 </tr> 15149 <tr class="entries_header"> 15150 <th class="th_details" colspan="5">Details</th> 15151 </tr> 15152 <tr class="entry_cont"> 15153 <td class="entry_details" colspan="5"> 15154 <p>When set to ON,<wbr/> the values used for black-level 15155compensation will not change until the lock is set to 15156OFF.<wbr/></p> 15157<p>Since changes to certain capture parameters (such as 15158exposure time) may require resetting of black level 15159compensation,<wbr/> the camera device must report whether setting 15160the black level lock was successful in the output result 15161metadata.<wbr/></p> 15162<p>For example,<wbr/> if a sequence of requests is as follows:</p> 15163<ul> 15164<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 15165<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 15166<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 15167<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 15168<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 15169<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 15170</ul> 15171<p>And the exposure change in Request 4 requires the camera 15172device to reset the black level offsets,<wbr/> then the output 15173result metadata is expected to be:</p> 15174<ul> 15175<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 15176<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 15177<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 15178<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 15179<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 15180<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 15181</ul> 15182<p>This indicates to the application that on frame 4,<wbr/> black 15183levels were reset due to exposure value changes,<wbr/> and pixel 15184values may not be consistent across captures.<wbr/></p> 15185<p>The camera device will maintain the lock to the extent 15186possible,<wbr/> only overriding the lock to OFF when changes to 15187other request parameters require a black level recalculation 15188or reset.<wbr/></p> 15189 </td> 15190 </tr> 15191 15192 <tr class="entries_header"> 15193 <th class="th_details" colspan="5">HAL Implementation Details</th> 15194 </tr> 15195 <tr class="entry_cont"> 15196 <td class="entry_details" colspan="5"> 15197 <p>If for some reason black level locking is no longer possible 15198(for example,<wbr/> the analog gain has changed,<wbr/> which forces 15199black level offsets to be recalculated),<wbr/> then the HAL must 15200override this request (and it must report 'OFF' when this 15201does happen) until the next capture for which locking is 15202possible again.<wbr/></p> 15203 </td> 15204 </tr> 15205 15206 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15207 <!-- end of entry --> 15208 15209 15210 15211 <!-- end of kind --> 15212 </tbody> 15213 <tr><td colspan="6" class="kind">dynamic</td></tr> 15214 15215 <thead class="entries_header"> 15216 <tr> 15217 <th class="th_name">Property Name</th> 15218 <th class="th_type">Type</th> 15219 <th class="th_description">Description</th> 15220 <th class="th_units">Units</th> 15221 <th class="th_range">Range</th> 15222 <th class="th_tags">Tags</th> 15223 </tr> 15224 </thead> 15225 15226 <tbody> 15227 15228 15229 15230 15231 15232 15233 15234 15235 15236 15237 <tr class="entry" id="dynamic_android.blackLevel.lock"> 15238 <td class="entry_name" rowspan="5"> 15239 android.<wbr/>black<wbr/>Level.<wbr/>lock 15240 </td> 15241 <td class="entry_type"> 15242 <span class="entry_type_name entry_type_name_enum">byte</span> 15243 15244 <span class="entry_type_visibility"> [public as boolean]</span> 15245 15246 <ul class="entry_type_enum"> 15247 <li> 15248 <span class="entry_type_enum_name">OFF</span> 15249 </li> 15250 <li> 15251 <span class="entry_type_enum_name">ON</span> 15252 </li> 15253 </ul> 15254 15255 </td> <!-- entry_type --> 15256 15257 <td class="entry_description"> 15258 <p>Whether black-level compensation is locked 15259to its current values,<wbr/> or is free to vary.<wbr/></p> 15260 </td> 15261 15262 <td class="entry_units"> 15263 </td> 15264 15265 <td class="entry_range"> 15266 </td> 15267 15268 <td class="entry_tags"> 15269 <ul class="entry_tags"> 15270 <li><a href="#tag_HAL2">HAL2</a></li> 15271 </ul> 15272 </td> 15273 15274 </tr> 15275 <tr class="entries_header"> 15276 <th class="th_details" colspan="5">Details</th> 15277 </tr> 15278 <tr class="entry_cont"> 15279 <td class="entry_details" colspan="5"> 15280 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 15281ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 15282a change in other capture settings forced the camera device to 15283perform a black level reset.<wbr/></p> 15284 </td> 15285 </tr> 15286 15287 <tr class="entries_header"> 15288 <th class="th_details" colspan="5">HAL Implementation Details</th> 15289 </tr> 15290 <tr class="entry_cont"> 15291 <td class="entry_details" colspan="5"> 15292 <p>If for some reason black level locking is no longer possible 15293(for example,<wbr/> the analog gain has changed,<wbr/> which forces 15294black level offsets to be recalculated),<wbr/> then the HAL must 15295override this request (and it must report 'OFF' when this 15296does happen) until the next capture for which locking is 15297possible again.<wbr/></p> 15298 </td> 15299 </tr> 15300 15301 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15302 <!-- end of entry --> 15303 15304 15305 15306 <!-- end of kind --> 15307 </tbody> 15308 15309 <!-- end of section --> 15310 <tr><td colspan="6" id="section_sync" class="section">sync</td></tr> 15311 15312 15313 <tr><td colspan="6" class="kind">dynamic</td></tr> 15314 15315 <thead class="entries_header"> 15316 <tr> 15317 <th class="th_name">Property Name</th> 15318 <th class="th_type">Type</th> 15319 <th class="th_description">Description</th> 15320 <th class="th_units">Units</th> 15321 <th class="th_range">Range</th> 15322 <th class="th_tags">Tags</th> 15323 </tr> 15324 </thead> 15325 15326 <tbody> 15327 15328 15329 15330 15331 15332 15333 15334 15335 15336 15337 <tr class="entry" id="dynamic_android.sync.frameNumber"> 15338 <td class="entry_name" rowspan="5"> 15339 android.<wbr/>sync.<wbr/>frame<wbr/>Number 15340 </td> 15341 <td class="entry_type"> 15342 <span class="entry_type_name entry_type_name_enum">int64</span> 15343 15344 <span class="entry_type_visibility"> [hidden]</span> 15345 15346 <ul class="entry_type_enum"> 15347 <li> 15348 <span class="entry_type_enum_name">CONVERGING</span> 15349 <span class="entry_type_enum_value">-1</span> 15350 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/> 15351Synchronization is in progress,<wbr/> and reading metadata from this 15352result may include a mix of data that have taken effect since the 15353last synchronization time.<wbr/></p> 15354<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 15355this value will update to the actual frame number frame number 15356the result is guaranteed to be synchronized to (as long as the 15357request settings remain constant).<wbr/></p></span> 15358 </li> 15359 <li> 15360 <span class="entry_type_enum_name">UNKNOWN</span> 15361 <span class="entry_type_enum_value">-2</span> 15362 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/> The 15363result may have already converged,<wbr/> or it may be in progress.<wbr/> 15364Reading from this result may include some mix of settings from 15365past requests.<wbr/></p> 15366<p>After a settings change,<wbr/> the new settings will eventually all 15367take effect for the output buffers and results.<wbr/> However,<wbr/> this 15368value will not change when that happens.<wbr/> Altering settings 15369rapidly may provide outcomes using mixes of settings from recent 15370requests.<wbr/></p> 15371<p>This value is intended primarily for backwards compatibility with 15372the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 15373 </li> 15374 </ul> 15375 15376 </td> <!-- entry_type --> 15377 15378 <td class="entry_description"> 15379 <p>The frame number corresponding to the last request 15380with which the output result (metadata + buffers) has been fully 15381synchronized.<wbr/></p> 15382 </td> 15383 15384 <td class="entry_units"> 15385 </td> 15386 15387 <td class="entry_range"> 15388 <p>Either a non-negative value corresponding to a 15389<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 15390 </td> 15391 15392 <td class="entry_tags"> 15393 <ul class="entry_tags"> 15394 <li><a href="#tag_LIMITED">LIMITED</a></li> 15395 </ul> 15396 </td> 15397 15398 </tr> 15399 <tr class="entries_header"> 15400 <th class="th_details" colspan="5">Details</th> 15401 </tr> 15402 <tr class="entry_cont"> 15403 <td class="entry_details" colspan="5"> 15404 <p>When a request is submitted to the camera device,<wbr/> there is usually a 15405delay of several frames before the controls get applied.<wbr/> A camera 15406device may either choose to account for this delay by implementing a 15407pipeline and carefully submit well-timed atomic control updates,<wbr/> or 15408it may start streaming control changes that span over several frame 15409boundaries.<wbr/></p> 15410<p>In the latter case,<wbr/> whenever a request's settings change relative to 15411the previous submitted request,<wbr/> the full set of changes may take 15412multiple frame durations to fully take effect.<wbr/> Some settings may 15413take effect sooner (in less frame durations) than others.<wbr/></p> 15414<p>While a set of control changes are being propagated,<wbr/> this value 15415will be CONVERGING.<wbr/></p> 15416<p>Once it is fully known that a set of control changes have been 15417finished propagating,<wbr/> and the resulting updated control settings 15418have been read back by the camera device,<wbr/> this value will be set 15419to a non-negative frame number (corresponding to the request to 15420which the results have synchronized to).<wbr/></p> 15421<p>Older camera device implementations may not have a way to detect 15422when all camera controls have been applied,<wbr/> and will always set this 15423value to UNKNOWN.<wbr/></p> 15424<p>FULL capability devices will always have this value set to the 15425frame number of the request corresponding to this result.<wbr/></p> 15426<p><em>Further details</em>:</p> 15427<ul> 15428<li>Whenever a request differs from the last request,<wbr/> any future 15429results not yet returned may have this value set to CONVERGING (this 15430could include any in-progress captures not yet returned by the camera 15431device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 15432<li>Submitting a series of multiple requests that differ from the 15433previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 15434moves the new synchronization frame to the last non-repeating 15435request (using the smallest frame number from the contiguous list of 15436repeating requests).<wbr/></li> 15437<li>Submitting the same request repeatedly will not change this value 15438to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 15439<li>When this value changes to non-negative,<wbr/> that means that all of the 15440metadata controls from the request have been applied,<wbr/> all of the 15441metadata controls from the camera device have been read to the 15442updated values (into the result),<wbr/> and all of the graphics buffers 15443corresponding to this result are also synchronized to the request.<wbr/></li> 15444</ul> 15445<p><em>Pipeline considerations</em>:</p> 15446<p>Submitting a request with updated controls relative to the previously 15447submitted requests may also invalidate the synchronization state 15448of all the results corresponding to currently in-flight requests.<wbr/></p> 15449<p>In other words,<wbr/> results for this current request and up to 15450<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 15451<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 15452 </td> 15453 </tr> 15454 15455 <tr class="entries_header"> 15456 <th class="th_details" colspan="5">HAL Implementation Details</th> 15457 </tr> 15458 <tr class="entry_cont"> 15459 <td class="entry_details" colspan="5"> 15460 <p>Using UNKNOWN here is illegal unless android.<wbr/>sync.<wbr/>max<wbr/>Latency 15461is also UNKNOWN.<wbr/></p> 15462<p>FULL capability devices should simply set this value to the 15463<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 15464 </td> 15465 </tr> 15466 15467 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15468 <!-- end of entry --> 15469 15470 15471 15472 <!-- end of kind --> 15473 </tbody> 15474 <tr><td colspan="6" class="kind">static</td></tr> 15475 15476 <thead class="entries_header"> 15477 <tr> 15478 <th class="th_name">Property Name</th> 15479 <th class="th_type">Type</th> 15480 <th class="th_description">Description</th> 15481 <th class="th_units">Units</th> 15482 <th class="th_range">Range</th> 15483 <th class="th_tags">Tags</th> 15484 </tr> 15485 </thead> 15486 15487 <tbody> 15488 15489 15490 15491 15492 15493 15494 15495 15496 15497 15498 <tr class="entry" id="static_android.sync.maxLatency"> 15499 <td class="entry_name" rowspan="5"> 15500 android.<wbr/>sync.<wbr/>max<wbr/>Latency 15501 </td> 15502 <td class="entry_type"> 15503 <span class="entry_type_name entry_type_name_enum">int32</span> 15504 15505 <span class="entry_type_visibility"> [public]</span> 15506 15507 <ul class="entry_type_enum"> 15508 <li> 15509 <span class="entry_type_enum_name">PER_FRAME_CONTROL</span> 15510 <span class="entry_type_enum_value">0</span> 15511 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/> 15512(and furthermore for all results,<wbr/> 15513<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> 15514<p>Changing controls over multiple requests one after another will 15515produce results that have those controls applied atomically 15516each frame.<wbr/></p> 15517<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 15518 </li> 15519 <li> 15520 <span class="entry_type_enum_name">UNKNOWN</span> 15521 <span class="entry_type_enum_value">-1</span> 15522 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 15523of the past requests applied to the camera settings.<wbr/></p> 15524<p>By submitting a series of identical requests,<wbr/> the camera device 15525will eventually have the camera settings applied,<wbr/> but it is 15526unknown when that exact point will be.<wbr/></p></span> 15527 </li> 15528 </ul> 15529 15530 </td> <!-- entry_type --> 15531 15532 <td class="entry_description"> 15533 <p>The maximum number of frames that can occur after a request 15534(different than the previous) has been submitted,<wbr/> and before the 15535result's state becomes synchronized (by setting 15536<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> to a non-negative value).<wbr/></p> 15537 </td> 15538 15539 <td class="entry_units"> 15540 number of processed requests 15541 </td> 15542 15543 <td class="entry_range"> 15544 <p>>= -1</p> 15545 </td> 15546 15547 <td class="entry_tags"> 15548 <ul class="entry_tags"> 15549 <li><a href="#tag_LIMITED">LIMITED</a></li> 15550 </ul> 15551 </td> 15552 15553 </tr> 15554 <tr class="entries_header"> 15555 <th class="th_details" colspan="5">Details</th> 15556 </tr> 15557 <tr class="entry_cont"> 15558 <td class="entry_details" colspan="5"> 15559 <p>This defines the maximum distance (in number of metadata results),<wbr/> 15560between <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> and the equivalent 15561<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a>.<wbr/></p> 15562<p>In other words this acts as an upper boundary for how many frames 15563must occur before the camera device knows for a fact that the new 15564submitted camera settings have been applied in outgoing frames.<wbr/></p> 15565<p>For example if the distance was 2,<wbr/></p> 15566<pre><code>initial request = X (repeating) 15567request1 = X 15568request2 = Y 15569request3 = Y 15570request4 = Y 15571 15572where requestN has frameNumber N,<wbr/> and the first of the repeating 15573initial request's has frameNumber F (and F < 1).<wbr/> 15574 15575initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 15576result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 15577result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 15578result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 15579result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 15580 15581where resultN has frameNumber N.<wbr/> 15582</code></pre> 15583<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 15584<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 15585<code>4 - 2 = 2</code>.<wbr/></p> 15586 </td> 15587 </tr> 15588 15589 <tr class="entries_header"> 15590 <th class="th_details" colspan="5">HAL Implementation Details</th> 15591 </tr> 15592 <tr class="entry_cont"> 15593 <td class="entry_details" colspan="5"> 15594 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 15595<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a>.<wbr/></p> 15596<p>LIMITED devices are strongly encouraged to use a non-negative 15597value.<wbr/> If UNKNOWN is used here then app developers do not have a way 15598to know when sensor settings have been applied.<wbr/></p> 15599 </td> 15600 </tr> 15601 15602 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15603 <!-- end of entry --> 15604 15605 15606 15607 <!-- end of kind --> 15608 </tbody> 15609 15610 <!-- end of section --> 15611<!-- </namespace> --> 15612 </table> 15613 15614 <div class="tags" id="tag_index"> 15615 <h2>Tags</h2> 15616 <ul> 15617 <li id="tag_AWB">AWB - 15618 Needed for auto white balance 15619 15620 <ul class="tags_entries"> 15621 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 15622 </ul> 15623 </li> <!-- tag_AWB --> 15624 <li id="tag_BC">BC - 15625 Needed for backwards compatibility with old Java API 15626 15627 <ul class="tags_entries"> 15628 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 15629 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 15630 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 15631 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 15632 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 15633 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 15634 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 15635 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 15636 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 15637 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 15638 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 15639 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 15640 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 15641 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 15642 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 15643 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 15644 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 15645 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 15646 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 15647 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 15648 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 15649 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 15650 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 15651 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 15652 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 15653 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 15654 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 15655 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 15656 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 15657 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 15658 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 15659 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 15660 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 15661 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 15662 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 15663 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 15664 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 15665 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 15666 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 15667 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 15668 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 15669 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 15670 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 15671 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 15672 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 15673 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 15674 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 15675 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 15676 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 15677 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 15678 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 15679 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 15680 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 15681 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 15682 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 15683 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 15684 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 15685 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 15686 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 15687 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 15688 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 15689 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 15690 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 15691 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 15692 </ul> 15693 </li> <!-- tag_BC --> 15694 <li id="tag_V1">V1 - 15695 New features for first camera 2 release (API1) 15696 15697 <ul class="tags_entries"> 15698 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 15699 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 15700 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 15701 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 15702 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 15703 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 15704 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 15705 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 15706 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 15707 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 15708 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 15709 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 15710 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 15711 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 15712 <li><a href="#static_android.lens.info.geometricCorrectionMapSize">android.lens.info.geometricCorrectionMapSize</a> (static)</li> 15713 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 15714 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 15715 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 15716 <li><a href="#static_android.lens.position">android.lens.position</a> (static)</li> 15717 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 15718 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 15719 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 15720 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 15721 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 15722 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 15723 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 15724 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 15725 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 15726 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 15727 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 15728 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 15729 <li><a href="#static_android.sensor.noiseModelCoefficients">android.sensor.noiseModelCoefficients</a> (static)</li> 15730 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 15731 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 15732 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 15733 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 15734 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 15735 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 15736 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 15737 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 15738 </ul> 15739 </li> <!-- tag_V1 --> 15740 <li id="tag_ADV">ADV - None 15741 <ul class="tags_entries"> 15742 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 15743 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 15744 <li><a href="#controls_android.geometric.strength">android.geometric.strength</a> (controls)</li> 15745 <li><a href="#static_android.hotPixel.info.map">android.hotPixel.info.map</a> (static)</li> 15746 <li><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a> (static)</li> 15747 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 15748 </ul> 15749 </li> <!-- tag_ADV --> 15750 <li id="tag_DNG">DNG - 15751 Needed for DNG file support 15752 15753 <ul class="tags_entries"> 15754 <li><a href="#static_android.lens.info.geometricCorrectionMap">android.lens.info.geometricCorrectionMap</a> (static)</li> 15755 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 15756 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 15757 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 15758 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 15759 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 15760 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> 15761 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> 15762 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> 15763 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> 15764 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> 15765 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> 15766 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 15767 <li><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a> (controls)</li> 15768 </ul> 15769 </li> <!-- tag_DNG --> 15770 <li id="tag_EXIF">EXIF - None 15771 <ul class="tags_entries"> 15772 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 15773 </ul> 15774 </li> <!-- tag_EXIF --> 15775 <li id="tag_HAL2">HAL2 - 15776 Entry is only used by camera device HAL 2.x 15777 15778 <ul class="tags_entries"> 15779 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 15780 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 15781 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 15782 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 15783 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 15784 </ul> 15785 </li> <!-- tag_HAL2 --> 15786 <li id="tag_FULL">FULL - 15787 Entry is required for full hardware level devices, and optional for other hardware levels 15788 15789 <ul class="tags_entries"> 15790 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 15791 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 15792 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 15793 </ul> 15794 </li> <!-- tag_FULL --> 15795 <li id="tag_LIMITED">LIMITED - 15796 Entry assists with LIMITED device implementation. LIMITED devices 15797 must implement all entries with this tag. Optional for FULL devices. 15798 15799 <ul class="tags_entries"> 15800 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 15801 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 15802 </ul> 15803 </li> <!-- tag_LIMITED --> 15804 </ul> 15805 </div> 15806 15807 [ <a href="#">top</a> ] 15808 15809</body> 15810</html> 15811