3 <!-- Copyright (C) 2012 The Android Open Source Project
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
9 http://www.apache.org/licenses/LICENSE-2.0
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.
18 <!-- automatically generated from html.mako. do NOT edit directly -->
19 <meta charset="utf-8" />
20 <title>Android Camera HAL3.4 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}
35 .toc_section_header { font-size:1.3em; }
36 .toc_kind_header { font-size:1.2em; }
37 .toc_deprecated { text-decoration:line-through; }
39 /* table column sizes */
40 table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word }
41 td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em }
42 .th_name { width: 20% }
43 .th_units { width: 10% }
44 .th_tags { width: 5% }
45 .th_details { width: 25% }
46 .th_type { width: 20% }
47 .th_description { width: 20% }
48 .th_range { width: 10% }
49 td { font-size: 0.9em; }
51 /* hide the first thead, we need it there only to enforce column sizes */
52 .thead_dummy { visibility: hidden; }
55 .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
56 .entry_name_deprecated { text-decoration:line-through; }
58 /* Entry type flair */
59 .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
60 .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
61 .entry_type_visibility { font-weight: bolder; padding-left:1em}
62 .entry_type_synthetic { font-weight: bolder; color: #996600; }
63 .entry_type_hwlevel { font-weight: bolder; color: #000066; }
64 .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
65 .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
66 .entry_type_enum_notes:before { content:" - " }
67 .entry_type_enum_notes>p:first-child { display:inline; }
68 .entry_type_enum_value:before { content:" = " }
69 .entry_type_enum_value { font-family: monospace; }
70 .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
71 .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
72 .entry_range_deprecated { font-weight: bolder; }
74 /* Entry tags flair */
75 .entry_tags ul { list-style-type: none; }
77 /* Entry details (full docs) flair */
78 .entry_details_header { font-weight: bold; background-color: #dddddd;
79 text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
81 /* Entry spacer flair */
82 .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
84 /* TODO: generate abbr element for each tag link? */
85 /* TODO for each x.y.z try to link it to the entry */
93 supposedly there is a bug in chrome that it lays out tables before
94 it knows its being printed, so the page-break-* styles are ignored
96 tr { page-break-after: always; page-break-inside: avoid; }
105 <h1>Android Camera HAL3.2 Properties</h1>
108 <h2>Table of Contents</h2>
110 <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
112 <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
113 <ul class="toc_section">
115 <span class="toc_kind_header">controls</span>
116 <ul class="toc_section">
118 ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
120 ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
122 ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
124 ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
128 <span class="toc_kind_header">dynamic</span>
129 <ul class="toc_section">
131 ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
133 ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
135 ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
137 ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
141 <span class="toc_kind_header">static</span>
142 <ul class="toc_section">
144 ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
147 </ul> <!-- toc_section -->
150 <span class="toc_section_header"><a href="#section_control">control</a></span>
151 <ul class="toc_section">
153 <span class="toc_kind_header">controls</span>
154 <ul class="toc_section">
156 ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
158 ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
160 ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
162 ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
164 ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
166 ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
168 ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
170 ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
172 ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
174 ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
176 ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
178 ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
180 ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
182 ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
184 ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
186 ><a href="#controls_android.control.mode">android.control.mode</a></li>
188 ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
190 ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
192 ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
194 ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li>
198 <span class="toc_kind_header">static</span>
199 <ul class="toc_section">
201 ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
203 ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
205 ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
207 ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
209 ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
211 ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
213 ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
215 ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
217 ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
219 ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
221 ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
223 ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
225 ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
227 ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
229 ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
231 ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
233 ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
235 ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
237 ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
239 ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
243 <span class="toc_kind_header">dynamic</span>
244 <ul class="toc_section">
246 class="toc_deprecated"
247 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
249 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
251 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
253 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
255 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
257 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
259 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
261 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
263 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
265 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
267 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
269 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
271 ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
273 class="toc_deprecated"
274 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
276 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
278 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
280 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
282 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
284 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
286 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
288 ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
290 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
292 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
294 ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
296 ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
299 </ul> <!-- toc_section -->
302 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
303 <ul class="toc_section">
305 <span class="toc_kind_header">controls</span>
306 <ul class="toc_section">
308 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
311 </ul> <!-- toc_section -->
314 <span class="toc_section_header"><a href="#section_edge">edge</a></span>
315 <ul class="toc_section">
317 <span class="toc_kind_header">controls</span>
318 <ul class="toc_section">
320 ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
322 ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
326 <span class="toc_kind_header">static</span>
327 <ul class="toc_section">
329 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
333 <span class="toc_kind_header">dynamic</span>
334 <ul class="toc_section">
336 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
339 </ul> <!-- toc_section -->
342 <span class="toc_section_header"><a href="#section_flash">flash</a></span>
343 <ul class="toc_section">
345 <span class="toc_kind_header">controls</span>
346 <ul class="toc_section">
348 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
350 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
352 ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
356 <span class="toc_kind_header">static</span>
357 <ul class="toc_section">
360 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
362 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
365 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
367 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
371 <span class="toc_kind_header">dynamic</span>
372 <ul class="toc_section">
374 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
376 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
378 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
380 ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
383 </ul> <!-- toc_section -->
386 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
387 <ul class="toc_section">
389 <span class="toc_kind_header">controls</span>
390 <ul class="toc_section">
392 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
396 <span class="toc_kind_header">static</span>
397 <ul class="toc_section">
399 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
403 <span class="toc_kind_header">dynamic</span>
404 <ul class="toc_section">
406 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
409 </ul> <!-- toc_section -->
412 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
413 <ul class="toc_section">
415 <span class="toc_kind_header">controls</span>
416 <ul class="toc_section">
418 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
420 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
422 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
424 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
426 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
428 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
430 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
432 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
436 <span class="toc_kind_header">static</span>
437 <ul class="toc_section">
439 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
441 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
445 <span class="toc_kind_header">dynamic</span>
446 <ul class="toc_section">
448 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
450 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
452 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
454 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
456 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
458 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
460 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
462 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
464 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
467 </ul> <!-- toc_section -->
470 <span class="toc_section_header"><a href="#section_lens">lens</a></span>
471 <ul class="toc_section">
473 <span class="toc_kind_header">controls</span>
474 <ul class="toc_section">
476 ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
478 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
480 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
482 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
484 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
488 <span class="toc_kind_header">static</span>
489 <ul class="toc_section">
492 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
494 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
496 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
498 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
500 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
502 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
504 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
506 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
509 ><a href="#static_android.lens.facing">android.lens.facing</a></li>
511 ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
513 ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
515 ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
517 ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
521 <span class="toc_kind_header">dynamic</span>
522 <ul class="toc_section">
524 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
526 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
528 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
530 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
532 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
534 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
536 ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
538 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
540 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
542 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
544 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
547 </ul> <!-- toc_section -->
550 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
551 <ul class="toc_section">
553 <span class="toc_kind_header">controls</span>
554 <ul class="toc_section">
556 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
558 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
562 <span class="toc_kind_header">static</span>
563 <ul class="toc_section">
565 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
569 <span class="toc_kind_header">dynamic</span>
570 <ul class="toc_section">
572 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
575 </ul> <!-- toc_section -->
578 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
579 <ul class="toc_section">
581 <span class="toc_kind_header">static</span>
582 <ul class="toc_section">
584 class="toc_deprecated"
585 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
587 class="toc_deprecated"
588 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
590 class="toc_deprecated"
591 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
593 class="toc_deprecated"
594 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
598 <span class="toc_kind_header">dynamic</span>
599 <ul class="toc_section">
601 class="toc_deprecated"
602 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
605 </ul> <!-- toc_section -->
608 <span class="toc_section_header"><a href="#section_request">request</a></span>
609 <ul class="toc_section">
611 <span class="toc_kind_header">controls</span>
612 <ul class="toc_section">
614 class="toc_deprecated"
615 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
617 ><a href="#controls_android.request.id">android.request.id</a></li>
619 class="toc_deprecated"
620 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
622 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
624 class="toc_deprecated"
625 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
627 class="toc_deprecated"
628 ><a href="#controls_android.request.type">android.request.type</a></li>
632 <span class="toc_kind_header">static</span>
633 <ul class="toc_section">
635 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
637 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
639 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
641 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
643 class="toc_deprecated"
644 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
646 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
648 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
650 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
652 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
654 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
656 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
658 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
662 <span class="toc_kind_header">dynamic</span>
663 <ul class="toc_section">
665 class="toc_deprecated"
666 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
668 ><a href="#dynamic_android.request.id">android.request.id</a></li>
670 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
672 class="toc_deprecated"
673 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
675 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
678 </ul> <!-- toc_section -->
681 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
682 <ul class="toc_section">
684 <span class="toc_kind_header">controls</span>
685 <ul class="toc_section">
687 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
691 <span class="toc_kind_header">static</span>
692 <ul class="toc_section">
694 class="toc_deprecated"
695 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
697 class="toc_deprecated"
698 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
700 class="toc_deprecated"
701 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
703 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
705 class="toc_deprecated"
706 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
708 class="toc_deprecated"
709 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
711 class="toc_deprecated"
712 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
714 class="toc_deprecated"
715 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
717 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
719 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
721 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
723 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
725 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
727 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
731 <span class="toc_kind_header">dynamic</span>
732 <ul class="toc_section">
734 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
737 </ul> <!-- toc_section -->
740 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
741 <ul class="toc_section">
743 <span class="toc_kind_header">controls</span>
744 <ul class="toc_section">
746 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
748 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
750 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
752 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
754 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
758 <span class="toc_kind_header">static</span>
759 <ul class="toc_section">
762 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
764 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
766 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
768 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
770 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
772 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
774 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
776 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
778 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
780 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
782 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
785 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
787 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
789 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
791 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
793 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
795 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
797 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
799 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
801 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
803 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
805 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
807 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
809 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
811 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
813 ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
815 ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
819 <span class="toc_kind_header">dynamic</span>
820 <ul class="toc_section">
822 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
824 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
826 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
828 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
830 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
832 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
834 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
836 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
838 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
840 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
842 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
844 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
846 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
848 ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
850 ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
853 </ul> <!-- toc_section -->
856 <span class="toc_section_header"><a href="#section_shading">shading</a></span>
857 <ul class="toc_section">
859 <span class="toc_kind_header">controls</span>
860 <ul class="toc_section">
862 ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
864 ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
868 <span class="toc_kind_header">dynamic</span>
869 <ul class="toc_section">
871 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
875 <span class="toc_kind_header">static</span>
876 <ul class="toc_section">
878 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
881 </ul> <!-- toc_section -->
884 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
885 <ul class="toc_section">
887 <span class="toc_kind_header">controls</span>
888 <ul class="toc_section">
890 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
892 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
894 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
896 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
898 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
902 <span class="toc_kind_header">static</span>
903 <ul class="toc_section">
906 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
908 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
910 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
912 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
914 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
916 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
918 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
920 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
925 <span class="toc_kind_header">dynamic</span>
926 <ul class="toc_section">
928 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
930 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
932 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
934 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
936 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
938 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
940 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
942 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
944 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
946 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
948 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
950 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
952 class="toc_deprecated"
953 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
955 class="toc_deprecated"
956 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
958 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
960 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
962 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
964 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
967 </ul> <!-- toc_section -->
970 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
971 <ul class="toc_section">
973 <span class="toc_kind_header">controls</span>
974 <ul class="toc_section">
976 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
978 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
980 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
982 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
984 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
986 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
988 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
992 <span class="toc_kind_header">static</span>
993 <ul class="toc_section">
995 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
997 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1001 <span class="toc_kind_header">dynamic</span>
1002 <ul class="toc_section">
1004 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1006 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1008 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1010 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1012 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1014 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1016 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1019 </ul> <!-- toc_section -->
1022 <span class="toc_section_header"><a href="#section_led">led</a></span>
1023 <ul class="toc_section">
1025 <span class="toc_kind_header">controls</span>
1026 <ul class="toc_section">
1028 ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1032 <span class="toc_kind_header">dynamic</span>
1033 <ul class="toc_section">
1035 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1039 <span class="toc_kind_header">static</span>
1040 <ul class="toc_section">
1042 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1045 </ul> <!-- toc_section -->
1048 <span class="toc_section_header"><a href="#section_info">info</a></span>
1049 <ul class="toc_section">
1051 <span class="toc_kind_header">static</span>
1052 <ul class="toc_section">
1054 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1057 </ul> <!-- toc_section -->
1060 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1061 <ul class="toc_section">
1063 <span class="toc_kind_header">controls</span>
1064 <ul class="toc_section">
1066 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1070 <span class="toc_kind_header">dynamic</span>
1071 <ul class="toc_section">
1073 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1076 </ul> <!-- toc_section -->
1079 <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1080 <ul class="toc_section">
1082 <span class="toc_kind_header">dynamic</span>
1083 <ul class="toc_section">
1085 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1089 <span class="toc_kind_header">static</span>
1090 <ul class="toc_section">
1092 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1095 </ul> <!-- toc_section -->
1098 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1099 <ul class="toc_section">
1101 <span class="toc_kind_header">controls</span>
1102 <ul class="toc_section">
1104 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1108 <span class="toc_kind_header">dynamic</span>
1109 <ul class="toc_section">
1111 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1115 <span class="toc_kind_header">static</span>
1116 <ul class="toc_section">
1118 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1121 </ul> <!-- toc_section -->
1124 <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1125 <ul class="toc_section">
1127 <span class="toc_kind_header">static</span>
1128 <ul class="toc_section">
1130 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1132 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1134 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1136 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1138 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1141 </ul> <!-- toc_section -->
1147 <table class="properties">
1149 <thead class="thead_dummy">
1151 <th class="th_name">Property Name</th>
1152 <th class="th_type">Type</th>
1153 <th class="th_description">Description</th>
1154 <th class="th_units">Units</th>
1155 <th class="th_range">Range</th>
1156 <th class="th_tags">Tags</th>
1158 </thead> <!-- so that the first occurrence of thead is not
1159 above the first occurrence of tr -->
1160 <!-- <namespace name="android"> -->
1161 <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1164 <tr><td colspan="6" class="kind">controls</td></tr>
1166 <thead class="entries_header">
1168 <th class="th_name">Property Name</th>
1169 <th class="th_type">Type</th>
1170 <th class="th_description">Description</th>
1171 <th class="th_units">Units</th>
1172 <th class="th_range">Range</th>
1173 <th class="th_tags">Tags</th>
1188 <tr class="entry" id="controls_android.colorCorrection.mode">
1189 <td class="entry_name
1191 android.<wbr/>color<wbr/>Correction.<wbr/>mode
1193 <td class="entry_type">
1194 <span class="entry_type_name entry_type_name_enum">byte</span>
1196 <span class="entry_type_visibility"> [public]</span>
1199 <span class="entry_type_hwlevel">[full] </span>
1203 <ul class="entry_type_enum">
1205 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1206 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1207 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1208 <p>All advanced white balance adjustments (not specified
1209 by our white balance pipeline) must be disabled.<wbr/></p>
1210 <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
1211 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1212 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1215 <span class="entry_type_enum_name">FAST</span>
1216 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1217 capture rate relative to sensor raw output.<wbr/></p>
1218 <p>Advanced white balance adjustments above and beyond
1219 the specified white balance pipeline may be applied.<wbr/></p>
1220 <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
1221 the camera device uses the last frame's AWB values
1222 (or defaults if AWB has never been run).<wbr/></p></span>
1225 <span class="entry_type_enum_name">HIGH_QUALITY</span>
1226 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1227 quality but the capture rate might be reduced (relative to sensor
1228 raw output rate)</p>
1229 <p>Advanced white balance adjustments above and beyond
1230 the specified white balance pipeline may be applied.<wbr/></p>
1231 <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
1232 the camera device uses the last frame's AWB values
1233 (or defaults if AWB has never been run).<wbr/></p></span>
1237 </td> <!-- entry_type -->
1239 <td class="entry_description">
1240 <p>The mode control selects how the image data is converted from the
1241 sensor's native color into linear sRGB color.<wbr/></p>
1244 <td class="entry_units">
1247 <td class="entry_range">
1250 <td class="entry_tags">
1254 <tr class="entries_header">
1255 <th class="th_details" colspan="5">Details</th>
1257 <tr class="entry_cont">
1258 <td class="entry_details" colspan="5">
1259 <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
1260 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1261 application controls how the color mapping is performed.<wbr/></p>
1262 <p>We define the expected processing pipeline below.<wbr/> For consistency
1263 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1264 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1265 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1266 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1267 camera device (in the results) and be roughly correct.<wbr/></p>
1268 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1269 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1270 as what was produced by the camera device in the earlier frame.<wbr/></p>
1271 <p>The expected processing pipeline is as follows:</p>
1272 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1273 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1274 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1275 matrix (applied after demosaic).<wbr/></p>
1276 <p>The 4-channel white-balance gains are defined as:</p>
1277 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1279 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1280 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1281 These may be identical for a given camera device implementation; if
1282 the camera device does not support a separate gain for even/<wbr/>odd green
1283 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1284 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1285 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1286 <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 ]
1288 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1289 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1290 <p>with colors as follows:</p>
1291 <pre><code>r' = I0r + I1g + I2b
1292 g' = I3r + I4g + I5b
1293 b' = I6r + I7g + I8b
1295 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1296 values are clipped to fit within the range.<wbr/></p>
1300 <tr class="entries_header">
1301 <th class="th_details" colspan="5">HAL Implementation Details</th>
1303 <tr class="entry_cont">
1304 <td class="entry_details" colspan="5">
1305 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1306 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1307 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1308 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1312 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1313 <!-- end of entry -->
1316 <tr class="entry" id="controls_android.colorCorrection.transform">
1317 <td class="entry_name
1319 android.<wbr/>color<wbr/>Correction.<wbr/>transform
1321 <td class="entry_type">
1322 <span class="entry_type_name">rational</span>
1323 <span class="entry_type_container">x</span>
1325 <span class="entry_type_array">
1328 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1331 <span class="entry_type_hwlevel">[full] </span>
1334 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1337 </td> <!-- entry_type -->
1339 <td class="entry_description">
1340 <p>A color transform matrix to use to transform
1341 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1344 <td class="entry_units">
1345 Unitless scale factors
1348 <td class="entry_range">
1351 <td class="entry_tags">
1355 <tr class="entries_header">
1356 <th class="th_details" colspan="5">Details</th>
1358 <tr class="entry_cont">
1359 <td class="entry_details" colspan="5">
1360 <p>This matrix is either set by the camera device when the request
1361 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1362 directly by the application in the request when the
1363 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1364 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1365 for precision issues; the final rounded matrix should be reported back
1366 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1367 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1368 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1369 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1370 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1375 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1376 <!-- end of entry -->
1379 <tr class="entry" id="controls_android.colorCorrection.gains">
1380 <td class="entry_name
1382 android.<wbr/>color<wbr/>Correction.<wbr/>gains
1384 <td class="entry_type">
1385 <span class="entry_type_name">float</span>
1386 <span class="entry_type_container">x</span>
1388 <span class="entry_type_array">
1391 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1394 <span class="entry_type_hwlevel">[full] </span>
1397 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1400 </td> <!-- entry_type -->
1402 <td class="entry_description">
1403 <p>Gains applying to Bayer raw color channels for
1404 white-balance.<wbr/></p>
1407 <td class="entry_units">
1408 Unitless gain factors
1411 <td class="entry_range">
1414 <td class="entry_tags">
1418 <tr class="entries_header">
1419 <th class="th_details" colspan="5">Details</th>
1421 <tr class="entry_cont">
1422 <td class="entry_details" colspan="5">
1423 <p>These per-channel gains are either set by the camera device
1424 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1425 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1426 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1427 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1428 <p>The gains in the result metadata are the gains actually
1429 applied by the camera device to the current frame.<wbr/></p>
1430 <p>The valid range of gains varies on different devices,<wbr/> but gains
1431 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1432 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1433 this can create color artifacts.<wbr/></p>
1437 <tr class="entries_header">
1438 <th class="th_details" colspan="5">HAL Implementation Details</th>
1440 <tr class="entry_cont">
1441 <td class="entry_details" colspan="5">
1442 <p>The 4-channel white-balance gains are defined in
1443 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1444 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1445 is the gain for green pixels on the odd rows.<wbr/></p>
1446 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1447 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1448 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1452 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1453 <!-- end of entry -->
1456 <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1457 <td class="entry_name
1459 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1461 <td class="entry_type">
1462 <span class="entry_type_name entry_type_name_enum">byte</span>
1464 <span class="entry_type_visibility"> [public]</span>
1467 <span class="entry_type_hwlevel">[legacy] </span>
1471 <ul class="entry_type_enum">
1473 <span class="entry_type_enum_name">OFF</span>
1474 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1477 <span class="entry_type_enum_name">FAST</span>
1478 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1479 relative to sensor raw output.<wbr/></p></span>
1482 <span class="entry_type_enum_name">HIGH_QUALITY</span>
1483 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1484 reduced (relative to sensor raw output rate)</p></span>
1488 </td> <!-- entry_type -->
1490 <td class="entry_description">
1491 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1494 <td class="entry_units">
1497 <td class="entry_range">
1498 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1501 <td class="entry_tags">
1505 <tr class="entries_header">
1506 <th class="th_details" colspan="5">Details</th>
1508 <tr class="entry_cont">
1509 <td class="entry_details" colspan="5">
1510 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1511 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1512 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1513 minimize the chromatic artifacts that may occur along the object boundaries in an
1515 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1516 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1517 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1518 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1519 applying aberration correction.<wbr/></p>
1520 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1525 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1526 <!-- end of entry -->
1530 <!-- end of kind -->
1532 <tr><td colspan="6" class="kind">dynamic</td></tr>
1534 <thead class="entries_header">
1536 <th class="th_name">Property Name</th>
1537 <th class="th_type">Type</th>
1538 <th class="th_description">Description</th>
1539 <th class="th_units">Units</th>
1540 <th class="th_range">Range</th>
1541 <th class="th_tags">Tags</th>
1556 <tr class="entry" id="dynamic_android.colorCorrection.mode">
1557 <td class="entry_name
1559 android.<wbr/>color<wbr/>Correction.<wbr/>mode
1561 <td class="entry_type">
1562 <span class="entry_type_name entry_type_name_enum">byte</span>
1564 <span class="entry_type_visibility"> [public]</span>
1567 <span class="entry_type_hwlevel">[full] </span>
1571 <ul class="entry_type_enum">
1573 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1574 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1575 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1576 <p>All advanced white balance adjustments (not specified
1577 by our white balance pipeline) must be disabled.<wbr/></p>
1578 <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
1579 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1580 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1583 <span class="entry_type_enum_name">FAST</span>
1584 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1585 capture rate relative to sensor raw output.<wbr/></p>
1586 <p>Advanced white balance adjustments above and beyond
1587 the specified white balance pipeline may be applied.<wbr/></p>
1588 <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
1589 the camera device uses the last frame's AWB values
1590 (or defaults if AWB has never been run).<wbr/></p></span>
1593 <span class="entry_type_enum_name">HIGH_QUALITY</span>
1594 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1595 quality but the capture rate might be reduced (relative to sensor
1596 raw output rate)</p>
1597 <p>Advanced white balance adjustments above and beyond
1598 the specified white balance pipeline may be applied.<wbr/></p>
1599 <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
1600 the camera device uses the last frame's AWB values
1601 (or defaults if AWB has never been run).<wbr/></p></span>
1605 </td> <!-- entry_type -->
1607 <td class="entry_description">
1608 <p>The mode control selects how the image data is converted from the
1609 sensor's native color into linear sRGB color.<wbr/></p>
1612 <td class="entry_units">
1615 <td class="entry_range">
1618 <td class="entry_tags">
1622 <tr class="entries_header">
1623 <th class="th_details" colspan="5">Details</th>
1625 <tr class="entry_cont">
1626 <td class="entry_details" colspan="5">
1627 <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
1628 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1629 application controls how the color mapping is performed.<wbr/></p>
1630 <p>We define the expected processing pipeline below.<wbr/> For consistency
1631 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1632 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1633 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1634 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1635 camera device (in the results) and be roughly correct.<wbr/></p>
1636 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1637 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1638 as what was produced by the camera device in the earlier frame.<wbr/></p>
1639 <p>The expected processing pipeline is as follows:</p>
1640 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1641 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1642 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1643 matrix (applied after demosaic).<wbr/></p>
1644 <p>The 4-channel white-balance gains are defined as:</p>
1645 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1647 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1648 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1649 These may be identical for a given camera device implementation; if
1650 the camera device does not support a separate gain for even/<wbr/>odd green
1651 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1652 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1653 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1654 <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 ]
1656 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1657 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1658 <p>with colors as follows:</p>
1659 <pre><code>r' = I0r + I1g + I2b
1660 g' = I3r + I4g + I5b
1661 b' = I6r + I7g + I8b
1663 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1664 values are clipped to fit within the range.<wbr/></p>
1668 <tr class="entries_header">
1669 <th class="th_details" colspan="5">HAL Implementation Details</th>
1671 <tr class="entry_cont">
1672 <td class="entry_details" colspan="5">
1673 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1674 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1675 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1676 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1680 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1681 <!-- end of entry -->
1684 <tr class="entry" id="dynamic_android.colorCorrection.transform">
1685 <td class="entry_name
1687 android.<wbr/>color<wbr/>Correction.<wbr/>transform
1689 <td class="entry_type">
1690 <span class="entry_type_name">rational</span>
1691 <span class="entry_type_container">x</span>
1693 <span class="entry_type_array">
1696 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1699 <span class="entry_type_hwlevel">[full] </span>
1702 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1705 </td> <!-- entry_type -->
1707 <td class="entry_description">
1708 <p>A color transform matrix to use to transform
1709 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1712 <td class="entry_units">
1713 Unitless scale factors
1716 <td class="entry_range">
1719 <td class="entry_tags">
1723 <tr class="entries_header">
1724 <th class="th_details" colspan="5">Details</th>
1726 <tr class="entry_cont">
1727 <td class="entry_details" colspan="5">
1728 <p>This matrix is either set by the camera device when the request
1729 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1730 directly by the application in the request when the
1731 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1732 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1733 for precision issues; the final rounded matrix should be reported back
1734 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1735 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1736 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1737 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1738 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1743 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1744 <!-- end of entry -->
1747 <tr class="entry" id="dynamic_android.colorCorrection.gains">
1748 <td class="entry_name
1750 android.<wbr/>color<wbr/>Correction.<wbr/>gains
1752 <td class="entry_type">
1753 <span class="entry_type_name">float</span>
1754 <span class="entry_type_container">x</span>
1756 <span class="entry_type_array">
1759 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1762 <span class="entry_type_hwlevel">[full] </span>
1765 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1768 </td> <!-- entry_type -->
1770 <td class="entry_description">
1771 <p>Gains applying to Bayer raw color channels for
1772 white-balance.<wbr/></p>
1775 <td class="entry_units">
1776 Unitless gain factors
1779 <td class="entry_range">
1782 <td class="entry_tags">
1786 <tr class="entries_header">
1787 <th class="th_details" colspan="5">Details</th>
1789 <tr class="entry_cont">
1790 <td class="entry_details" colspan="5">
1791 <p>These per-channel gains are either set by the camera device
1792 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1793 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1794 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1795 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1796 <p>The gains in the result metadata are the gains actually
1797 applied by the camera device to the current frame.<wbr/></p>
1798 <p>The valid range of gains varies on different devices,<wbr/> but gains
1799 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1800 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1801 this can create color artifacts.<wbr/></p>
1805 <tr class="entries_header">
1806 <th class="th_details" colspan="5">HAL Implementation Details</th>
1808 <tr class="entry_cont">
1809 <td class="entry_details" colspan="5">
1810 <p>The 4-channel white-balance gains are defined in
1811 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1812 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1813 is the gain for green pixels on the odd rows.<wbr/></p>
1814 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1815 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1816 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1820 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1821 <!-- end of entry -->
1824 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1825 <td class="entry_name
1827 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1829 <td class="entry_type">
1830 <span class="entry_type_name entry_type_name_enum">byte</span>
1832 <span class="entry_type_visibility"> [public]</span>
1835 <span class="entry_type_hwlevel">[legacy] </span>
1839 <ul class="entry_type_enum">
1841 <span class="entry_type_enum_name">OFF</span>
1842 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1845 <span class="entry_type_enum_name">FAST</span>
1846 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1847 relative to sensor raw output.<wbr/></p></span>
1850 <span class="entry_type_enum_name">HIGH_QUALITY</span>
1851 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1852 reduced (relative to sensor raw output rate)</p></span>
1856 </td> <!-- entry_type -->
1858 <td class="entry_description">
1859 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1862 <td class="entry_units">
1865 <td class="entry_range">
1866 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1869 <td class="entry_tags">
1873 <tr class="entries_header">
1874 <th class="th_details" colspan="5">Details</th>
1876 <tr class="entry_cont">
1877 <td class="entry_details" colspan="5">
1878 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1879 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1880 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1881 minimize the chromatic artifacts that may occur along the object boundaries in an
1883 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1884 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1885 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1886 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1887 applying aberration correction.<wbr/></p>
1888 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1893 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1894 <!-- end of entry -->
1898 <!-- end of kind -->
1900 <tr><td colspan="6" class="kind">static</td></tr>
1902 <thead class="entries_header">
1904 <th class="th_name">Property Name</th>
1905 <th class="th_type">Type</th>
1906 <th class="th_description">Description</th>
1907 <th class="th_units">Units</th>
1908 <th class="th_range">Range</th>
1909 <th class="th_tags">Tags</th>
1924 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1925 <td class="entry_name
1927 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1929 <td class="entry_type">
1930 <span class="entry_type_name">byte</span>
1931 <span class="entry_type_container">x</span>
1933 <span class="entry_type_array">
1936 <span class="entry_type_visibility"> [public as enumList]</span>
1939 <span class="entry_type_hwlevel">[legacy] </span>
1942 <div class="entry_type_notes">list of enums</div>
1945 </td> <!-- entry_type -->
1947 <td class="entry_description">
1948 <p>List of aberration correction modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a> that are
1949 supported by this camera device.<wbr/></p>
1952 <td class="entry_units">
1955 <td class="entry_range">
1956 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
1959 <td class="entry_tags">
1960 <ul class="entry_tags">
1961 <li><a href="#tag_V1">V1</a></li>
1966 <tr class="entries_header">
1967 <th class="th_details" colspan="5">Details</th>
1969 <tr class="entry_cont">
1970 <td class="entry_details" colspan="5">
1971 <p>This key lists the valid modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a>.<wbr/> If no
1972 aberration correction modes are available for a device,<wbr/> this list will solely include
1973 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
1974 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
1975 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
1976 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
1980 <tr class="entries_header">
1981 <th class="th_details" colspan="5">HAL Implementation Details</th>
1983 <tr class="entry_cont">
1984 <td class="entry_details" colspan="5">
1985 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
1986 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1987 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1988 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
1992 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1993 <!-- end of entry -->
1997 <!-- end of kind -->
2000 <!-- end of section -->
2001 <tr><td colspan="6" id="section_control" class="section">control</td></tr>
2004 <tr><td colspan="6" class="kind">controls</td></tr>
2006 <thead class="entries_header">
2008 <th class="th_name">Property Name</th>
2009 <th class="th_type">Type</th>
2010 <th class="th_description">Description</th>
2011 <th class="th_units">Units</th>
2012 <th class="th_range">Range</th>
2013 <th class="th_tags">Tags</th>
2028 <tr class="entry" id="controls_android.control.aeAntibandingMode">
2029 <td class="entry_name
2031 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2033 <td class="entry_type">
2034 <span class="entry_type_name entry_type_name_enum">byte</span>
2036 <span class="entry_type_visibility"> [public]</span>
2039 <span class="entry_type_hwlevel">[legacy] </span>
2043 <ul class="entry_type_enum">
2045 <span class="entry_type_enum_name">OFF</span>
2046 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2047 avoid banding problems.<wbr/></p></span>
2050 <span class="entry_type_enum_name">50HZ</span>
2051 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2052 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2055 <span class="entry_type_enum_name">60HZ</span>
2056 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2057 avoid banding problems with 60Hz illumination
2058 sources.<wbr/></p></span>
2061 <span class="entry_type_enum_name">AUTO</span>
2062 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2063 antibanding routine to the current illumination
2064 condition.<wbr/> This is the default mode if AUTO is
2065 available on given camera device.<wbr/></p></span>
2069 </td> <!-- entry_type -->
2071 <td class="entry_description">
2072 <p>The desired setting for the camera device's auto-exposure
2073 algorithm's antibanding compensation.<wbr/></p>
2076 <td class="entry_units">
2079 <td class="entry_range">
2080 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2083 <td class="entry_tags">
2084 <ul class="entry_tags">
2085 <li><a href="#tag_BC">BC</a></li>
2090 <tr class="entries_header">
2091 <th class="th_details" colspan="5">Details</th>
2093 <tr class="entry_cont">
2094 <td class="entry_details" colspan="5">
2095 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2096 lights,<wbr/> flicker at the rate of the power supply frequency
2097 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2098 typically not noticeable to a person,<wbr/> it can be visible to
2099 a camera device.<wbr/> If a camera sets its exposure time to the
2100 wrong value,<wbr/> the flicker may become visible in the
2101 viewfinder as flicker or in a final captured image,<wbr/> as a
2102 set of variable-brightness bands across the image.<wbr/></p>
2103 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2104 include antibanding routines that ensure that the chosen
2105 exposure value will not cause such banding.<wbr/> The choice of
2106 exposure time depends on the rate of flicker,<wbr/> which the
2107 camera device can detect automatically,<wbr/> or the expected
2108 rate can be selected by the application using this
2110 <p>A given camera device may not support all of the possible
2111 options for the antibanding mode.<wbr/> The
2112 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2113 the available modes for a given camera device.<wbr/></p>
2114 <p>AUTO mode is the default if it is available on given
2115 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2116 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2117 and 60HZ will be available.<wbr/></p>
2118 <p>If manual exposure control is enabled (by setting
2119 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
2120 then this setting has no effect,<wbr/> and the application must
2121 ensure it selects exposure times that do not cause banding
2122 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2123 the application in this.<wbr/></p>
2127 <tr class="entries_header">
2128 <th class="th_details" colspan="5">HAL Implementation Details</th>
2130 <tr class="entry_cont">
2131 <td class="entry_details" colspan="5">
2132 <p>For all capture request templates,<wbr/> this field must be set
2133 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2134 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2135 60HZ must be available.<wbr/></p>
2136 <p>If manual exposure control is enabled (by setting
2137 <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/>
2138 then the exposure values provided by the application must not be
2139 adjusted for antibanding.<wbr/></p>
2143 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2144 <!-- end of entry -->
2147 <tr class="entry" id="controls_android.control.aeExposureCompensation">
2148 <td class="entry_name
2150 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2152 <td class="entry_type">
2153 <span class="entry_type_name">int32</span>
2155 <span class="entry_type_visibility"> [public]</span>
2158 <span class="entry_type_hwlevel">[legacy] </span>
2163 </td> <!-- entry_type -->
2165 <td class="entry_description">
2166 <p>Adjustment to auto-exposure (AE) target image
2167 brightness.<wbr/></p>
2170 <td class="entry_units">
2174 <td class="entry_range">
2175 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2178 <td class="entry_tags">
2179 <ul class="entry_tags">
2180 <li><a href="#tag_BC">BC</a></li>
2185 <tr class="entries_header">
2186 <th class="th_details" colspan="5">Details</th>
2188 <tr class="entry_cont">
2189 <td class="entry_details" colspan="5">
2190 <p>The adjustment is measured as a count of steps,<wbr/> with the
2191 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2192 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2193 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2194 will mean an exposure compensation of +2 EV; -3 will mean an
2195 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2196 of image brightness.<wbr/> Note that this control will only be
2197 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2198 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2199 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2200 may take several frames to reach the newly requested exposure target.<wbr/>
2201 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2202 state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
2203 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2204 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2209 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2210 <!-- end of entry -->
2213 <tr class="entry" id="controls_android.control.aeLock">
2214 <td class="entry_name
2216 android.<wbr/>control.<wbr/>ae<wbr/>Lock
2218 <td class="entry_type">
2219 <span class="entry_type_name entry_type_name_enum">byte</span>
2221 <span class="entry_type_visibility"> [public as boolean]</span>
2224 <span class="entry_type_hwlevel">[legacy] </span>
2228 <ul class="entry_type_enum">
2230 <span class="entry_type_enum_name">OFF</span>
2231 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2232 is free to update its parameters.<wbr/></p></span>
2235 <span class="entry_type_enum_name">ON</span>
2236 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2237 must not update the exposure and sensitivity parameters
2238 while the lock is active.<wbr/></p>
2239 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2240 will still take effect while auto-exposure is locked.<wbr/></p>
2241 <p>Some rare LEGACY devices may not support
2242 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2246 </td> <!-- entry_type -->
2248 <td class="entry_description">
2249 <p>Whether auto-exposure (AE) is currently locked to its latest
2250 calculated values.<wbr/></p>
2253 <td class="entry_units">
2256 <td class="entry_range">
2259 <td class="entry_tags">
2260 <ul class="entry_tags">
2261 <li><a href="#tag_BC">BC</a></li>
2266 <tr class="entries_header">
2267 <th class="th_details" colspan="5">Details</th>
2269 <tr class="entry_cont">
2270 <td class="entry_details" colspan="5">
2271 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2272 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2273 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2274 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2275 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2276 <p>When <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> is changed,<wbr/> even if the AE lock
2277 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2278 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2279 when AE is already locked,<wbr/> the camera device will not change the exposure time
2280 (<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>)
2281 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2282 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2283 <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/>
2284 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2285 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2286 the AE if AE is locked by the camera device internally during precapture metering
2287 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2288 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2289 will never succeed in a sequence of preview requests where AE lock is always set
2290 to <code>false</code>.<wbr/></p>
2291 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2292 get locked do not necessarily correspond to the settings that were present in the
2293 latest capture result received from the camera device,<wbr/> since additional captures
2294 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2295 application is switching between automatic and manual control and wishes to eliminate
2296 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2298 <li>Starting in auto-AE mode:</li>
2300 <li>Wait for the first result to be output that has the AE locked</li>
2301 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2302 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2304 <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>
2309 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2310 <!-- end of entry -->
2313 <tr class="entry" id="controls_android.control.aeMode">
2314 <td class="entry_name
2316 android.<wbr/>control.<wbr/>ae<wbr/>Mode
2318 <td class="entry_type">
2319 <span class="entry_type_name entry_type_name_enum">byte</span>
2321 <span class="entry_type_visibility"> [public]</span>
2324 <span class="entry_type_hwlevel">[legacy] </span>
2328 <ul class="entry_type_enum">
2330 <span class="entry_type_enum_name">OFF</span>
2331 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2332 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2333 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2334 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2335 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2336 a flash unit for this camera device.<wbr/></p>
2337 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2338 behavior is device dependent when AE is in OFF mode.<wbr/>
2339 To have consistent behavior across different devices,<wbr/>
2340 it is recommended to either set AWB and AF to OFF mode
2341 or lock AWB and AF before setting AE to OFF.<wbr/>
2342 See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/>
2343 <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2344 for more details.<wbr/></p>
2345 <p>LEGACY devices do not support the OFF mode and will
2346 override attempts to use this value to ON.<wbr/></p></span>
2349 <span class="entry_type_enum_name">ON</span>
2350 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2351 with no flash control.<wbr/></p>
2352 <p>The application's values for
2353 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2354 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2355 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2356 application has control over the various
2357 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2360 <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
2361 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2362 the camera's flash unit,<wbr/> firing it in low-light
2363 conditions.<wbr/></p>
2364 <p>The flash may be fired during a precapture sequence
2365 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2366 may be fired for captures for which the
2367 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2368 STILL_<wbr/>CAPTURE</p></span>
2371 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
2372 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2373 the camera's flash unit,<wbr/> always firing it for still
2375 <p>The flash may be fired during a precapture sequence
2376 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2377 will always be fired for captures for which the
2378 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2379 STILL_<wbr/>CAPTURE</p></span>
2382 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
2383 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2384 reduction.<wbr/></p>
2385 <p>If deemed necessary by the camera device,<wbr/> a red eye
2386 reduction flash will fire during the precapture
2387 sequence.<wbr/></p></span>
2391 </td> <!-- entry_type -->
2393 <td class="entry_description">
2394 <p>The desired mode for the camera device's
2395 auto-exposure routine.<wbr/></p>
2398 <td class="entry_units">
2401 <td class="entry_range">
2402 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2405 <td class="entry_tags">
2406 <ul class="entry_tags">
2407 <li><a href="#tag_BC">BC</a></li>
2412 <tr class="entries_header">
2413 <th class="th_details" colspan="5">Details</th>
2415 <tr class="entry_cont">
2416 <td class="entry_details" colspan="5">
2417 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2419 <p>When set to any of the ON modes,<wbr/> the camera device's
2420 auto-exposure routine is enabled,<wbr/> overriding the
2421 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2422 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2423 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2424 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2425 is selected,<wbr/> the camera device's flash unit controls are
2426 also overridden.<wbr/></p>
2427 <p>The FLASH modes are only available if the camera device
2428 has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
2429 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2430 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2431 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2432 camera device auto-exposure routine for the overridden
2433 fields for a given capture will be available in its
2434 CaptureResult.<wbr/></p>
2439 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2440 <!-- end of entry -->
2443 <tr class="entry" id="controls_android.control.aeRegions">
2444 <td class="entry_name
2446 android.<wbr/>control.<wbr/>ae<wbr/>Regions
2448 <td class="entry_type">
2449 <span class="entry_type_name">int32</span>
2450 <span class="entry_type_container">x</span>
2452 <span class="entry_type_array">
2455 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2462 </td> <!-- entry_type -->
2464 <td class="entry_description">
2465 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2468 <td class="entry_units">
2469 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2472 <td class="entry_range">
2473 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2474 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2477 <td class="entry_tags">
2478 <ul class="entry_tags">
2479 <li><a href="#tag_BC">BC</a></li>
2484 <tr class="entries_header">
2485 <th class="th_details" colspan="5">Details</th>
2487 <tr class="entry_cont">
2488 <td class="entry_details" colspan="5">
2489 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2490 Otherwise will always be present.<wbr/></p>
2491 <p>The maximum number of regions supported by the device is determined by the value
2492 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2493 <p>The coordinate system is based on the active pixel array,<wbr/>
2494 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2495 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2496 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2497 bottom-right pixel in the active pixel array.<wbr/></p>
2498 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2499 for every pixel in the area.<wbr/> This means that a large metering area
2500 with the same weight as a smaller area will have more effect in
2501 the metering result.<wbr/> Metering areas can partially overlap and the
2502 camera device will add the weights in the overlap region.<wbr/></p>
2503 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2504 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2505 weight is ignored.<wbr/></p>
2506 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2507 camera device.<wbr/></p>
2508 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
2509 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2510 region and output only the intersection rectangle as the metering region in the result
2511 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2512 not reported in the result metadata.<wbr/></p>
2516 <tr class="entries_header">
2517 <th class="th_details" colspan="5">HAL Implementation Details</th>
2519 <tr class="entry_cont">
2520 <td class="entry_details" colspan="5">
2521 <p>The HAL level representation of MeteringRectangle[] is a
2522 int[5 * area_<wbr/>count].<wbr/>
2523 Every five elements represent a metering region of
2524 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2525 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2526 exclusive on xmax and ymax.<wbr/></p>
2530 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2531 <!-- end of entry -->
2534 <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2535 <td class="entry_name
2537 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2539 <td class="entry_type">
2540 <span class="entry_type_name">int32</span>
2541 <span class="entry_type_container">x</span>
2543 <span class="entry_type_array">
2546 <span class="entry_type_visibility"> [public as rangeInt]</span>
2549 <span class="entry_type_hwlevel">[legacy] </span>
2554 </td> <!-- entry_type -->
2556 <td class="entry_description">
2557 <p>Range over which the auto-exposure routine can
2558 adjust the capture frame rate to maintain good
2562 <td class="entry_units">
2563 Frames per second (FPS)
2566 <td class="entry_range">
2567 <p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p>
2570 <td class="entry_tags">
2571 <ul class="entry_tags">
2572 <li><a href="#tag_BC">BC</a></li>
2577 <tr class="entries_header">
2578 <th class="th_details" colspan="5">Details</th>
2580 <tr class="entry_cont">
2581 <td class="entry_details" colspan="5">
2582 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2583 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2584 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2589 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2590 <!-- end of entry -->
2593 <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2594 <td class="entry_name
2596 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2598 <td class="entry_type">
2599 <span class="entry_type_name entry_type_name_enum">byte</span>
2601 <span class="entry_type_visibility"> [public]</span>
2604 <span class="entry_type_hwlevel">[limited] </span>
2608 <ul class="entry_type_enum">
2610 <span class="entry_type_enum_name">IDLE</span>
2611 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2614 <span class="entry_type_enum_name">START</span>
2615 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2616 by the camera device.<wbr/></p>
2617 <p>The exact effect of the precapture trigger depends on
2618 the current AE mode and state.<wbr/></p></span>
2621 <span class="entry_type_enum_name">CANCEL</span>
2622 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2623 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2624 initial state.<wbr/></p></span>
2628 </td> <!-- entry_type -->
2630 <td class="entry_description">
2631 <p>Whether the camera device will trigger a precapture
2632 metering sequence when it processes this request.<wbr/></p>
2635 <td class="entry_units">
2638 <td class="entry_range">
2641 <td class="entry_tags">
2642 <ul class="entry_tags">
2643 <li><a href="#tag_BC">BC</a></li>
2648 <tr class="entries_header">
2649 <th class="th_details" colspan="5">Details</th>
2651 <tr class="entry_cont">
2652 <td class="entry_details" colspan="5">
2653 <p>This entry is normally set to IDLE,<wbr/> or is not
2654 included at all in the request settings.<wbr/> When included and
2655 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2656 precapture metering sequence.<wbr/></p>
2657 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2658 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2659 If a precapture metering sequence is already completed,<wbr/> and the camera
2660 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2661 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2662 <p>The precapture sequence should be triggered before starting a
2663 high-quality still capture for final metering decisions to
2664 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2665 scene brightness and required final capture flash power,<wbr/> when
2666 the flash is enabled.<wbr/></p>
2667 <p>Normally,<wbr/> this entry should be set to START for only a
2668 single request,<wbr/> and the application should wait until the
2669 sequence completes before starting a new one.<wbr/></p>
2670 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2671 may lock the auto-exposure routine internally to be able to accurately expose the
2672 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2673 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2674 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2675 submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request
2676 with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a
2677 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2678 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2679 internally locked AE if the application doesn't submit a still capture request after
2680 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2681 be used in devices that have earlier API levels.<wbr/></p>
2682 <p>The exact effect of auto-exposure (AE) precapture trigger
2683 depends on the current AE mode and state; see
2684 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2686 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2687 capturing a high-resolution JPEG image will automatically trigger a
2688 precapture sequence before the high-resolution capture,<wbr/> including
2689 potentially firing a pre-capture flash.<wbr/></p>
2690 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2691 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2692 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2693 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2694 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2695 changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
2697 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2698 the camera device will complete them in the optimal order for that device.<wbr/></p>
2702 <tr class="entries_header">
2703 <th class="th_details" colspan="5">HAL Implementation Details</th>
2705 <tr class="entry_cont">
2706 <td class="entry_details" colspan="5">
2707 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2708 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
2709 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2710 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2711 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2715 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2716 <!-- end of entry -->
2719 <tr class="entry" id="controls_android.control.afMode">
2720 <td class="entry_name
2722 android.<wbr/>control.<wbr/>af<wbr/>Mode
2724 <td class="entry_type">
2725 <span class="entry_type_name entry_type_name_enum">byte</span>
2727 <span class="entry_type_visibility"> [public]</span>
2730 <span class="entry_type_hwlevel">[legacy] </span>
2734 <ul class="entry_type_enum">
2736 <span class="entry_type_enum_name">OFF</span>
2737 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2738 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2739 application.<wbr/></p></span>
2742 <span class="entry_type_enum_name">AUTO</span>
2743 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2744 <p>In this mode,<wbr/> the lens does not move unless
2745 the autofocus trigger action is called.<wbr/> When that trigger
2746 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2747 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2748 <p>Always supported if lens is not fixed focus.<wbr/></p>
2749 <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
2750 is fixed-focus.<wbr/></p>
2751 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2752 and sets the AF state to INACTIVE.<wbr/></p></span>
2755 <span class="entry_type_enum_name">MACRO</span>
2756 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2757 <p>In this mode,<wbr/> the lens does not move unless the
2758 autofocus trigger action is called.<wbr/> When that trigger is
2759 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2760 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2761 mode is optimized for focusing on objects very close to
2762 the camera.<wbr/></p>
2763 <p>When that trigger is activated,<wbr/> AF will transition to
2764 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2765 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2766 position to default,<wbr/> and sets the AF state to
2767 INACTIVE.<wbr/></p></span>
2770 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2771 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2772 position continually to attempt to provide a
2773 constantly-in-focus image stream.<wbr/></p>
2774 <p>The focusing behavior should be suitable for good quality
2775 video recording; typically this means slower focus
2776 movement and no overshoots.<wbr/> When the AF trigger is not
2777 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2778 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2779 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2780 the algorithm should immediately transition into
2781 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2782 lens position until a cancel AF trigger is received.<wbr/></p>
2783 <p>Once cancel is received,<wbr/> the algorithm should transition
2784 back to INACTIVE and resume passive scan.<wbr/> Note that this
2785 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2786 ongoing PASSIVE_<wbr/>SCAN must immediately be
2787 canceled.<wbr/></p></span>
2790 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2791 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2792 position continually to attempt to provide a
2793 constantly-in-focus image stream.<wbr/></p>
2794 <p>The focusing behavior should be suitable for still image
2795 capture; typically this means focusing as fast as
2796 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2797 algorithm should start in INACTIVE state,<wbr/> and then
2798 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2799 appropriate as it attempts to maintain focus.<wbr/> When the AF
2800 trigger is activated,<wbr/> the algorithm should finish its
2801 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2802 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2803 lens position until a cancel AF trigger is received.<wbr/></p>
2804 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2805 should transition back to INACTIVE and then act as if it
2806 has just been started.<wbr/></p></span>
2809 <span class="entry_type_enum_name">EDOF</span>
2810 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2811 <p>The camera device will produce images with an extended
2812 depth of field automatically; no special focusing
2813 operations need to be done before taking a picture.<wbr/></p>
2814 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2815 INACTIVE.<wbr/></p></span>
2819 </td> <!-- entry_type -->
2821 <td class="entry_description">
2822 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2823 mode it is set to.<wbr/></p>
2826 <td class="entry_units">
2829 <td class="entry_range">
2830 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2833 <td class="entry_tags">
2834 <ul class="entry_tags">
2835 <li><a href="#tag_BC">BC</a></li>
2840 <tr class="entries_header">
2841 <th class="th_details" colspan="5">Details</th>
2843 <tr class="entry_cont">
2844 <td class="entry_details" colspan="5">
2845 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2846 (i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>).<wbr/> Also note that
2847 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2848 dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
2849 setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p>
2850 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2851 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2852 in result metadata.<wbr/></p>
2856 <tr class="entries_header">
2857 <th class="th_details" colspan="5">HAL Implementation Details</th>
2859 <tr class="entry_cont">
2860 <td class="entry_details" colspan="5">
2861 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2862 request (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> <code>==</code> START).<wbr/> After an AF trigger,<wbr/> the afState will end
2863 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2864 <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> which indicates that the lens is
2865 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2866 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2867 the same focal plane remains in focus.<wbr/></p>
2868 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2869 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2870 (see <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> the HAL should maintain the
2871 same lock behavior as above.<wbr/></p>
2872 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2873 focus distance control depends on the <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a>.<wbr/>
2874 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2875 manual control.<wbr/></p>
2876 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2877 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2878 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2879 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2880 that will arise on camera modules with open-loop VCMs.<wbr/></p>
2884 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2885 <!-- end of entry -->
2888 <tr class="entry" id="controls_android.control.afRegions">
2889 <td class="entry_name
2891 android.<wbr/>control.<wbr/>af<wbr/>Regions
2893 <td class="entry_type">
2894 <span class="entry_type_name">int32</span>
2895 <span class="entry_type_container">x</span>
2897 <span class="entry_type_array">
2900 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2907 </td> <!-- entry_type -->
2909 <td class="entry_description">
2910 <p>List of metering areas to use for auto-focus.<wbr/></p>
2913 <td class="entry_units">
2914 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2917 <td class="entry_range">
2918 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2919 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2922 <td class="entry_tags">
2923 <ul class="entry_tags">
2924 <li><a href="#tag_BC">BC</a></li>
2929 <tr class="entries_header">
2930 <th class="th_details" colspan="5">Details</th>
2932 <tr class="entry_cont">
2933 <td class="entry_details" colspan="5">
2934 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
2935 Otherwise will always be present.<wbr/></p>
2936 <p>The maximum number of focus areas supported by the device is determined by the value
2937 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
2938 <p>The coordinate system is based on the active pixel array,<wbr/>
2939 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2940 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2941 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2942 bottom-right pixel in the active pixel array.<wbr/></p>
2943 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2944 for every pixel in the area.<wbr/> This means that a large metering area
2945 with the same weight as a smaller area will have more effect in
2946 the metering result.<wbr/> Metering areas can partially overlap and the
2947 camera device will add the weights in the overlap region.<wbr/></p>
2948 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
2949 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
2951 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2952 camera device.<wbr/></p>
2953 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
2954 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2955 region and output only the intersection rectangle as the metering region in the result
2956 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2957 not reported in the result metadata.<wbr/></p>
2961 <tr class="entries_header">
2962 <th class="th_details" colspan="5">HAL Implementation Details</th>
2964 <tr class="entry_cont">
2965 <td class="entry_details" colspan="5">
2966 <p>The HAL level representation of MeteringRectangle[] is a
2967 int[5 * area_<wbr/>count].<wbr/>
2968 Every five elements represent a metering region of
2969 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2970 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2971 exclusive on xmax and ymax.<wbr/></p>
2975 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2976 <!-- end of entry -->
2979 <tr class="entry" id="controls_android.control.afTrigger">
2980 <td class="entry_name
2982 android.<wbr/>control.<wbr/>af<wbr/>Trigger
2984 <td class="entry_type">
2985 <span class="entry_type_name entry_type_name_enum">byte</span>
2987 <span class="entry_type_visibility"> [public]</span>
2990 <span class="entry_type_hwlevel">[legacy] </span>
2994 <ul class="entry_type_enum">
2996 <span class="entry_type_enum_name">IDLE</span>
2997 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3000 <span class="entry_type_enum_name">START</span>
3001 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3004 <span class="entry_type_enum_name">CANCEL</span>
3005 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3006 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3010 </td> <!-- entry_type -->
3012 <td class="entry_description">
3013 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3016 <td class="entry_units">
3019 <td class="entry_range">
3022 <td class="entry_tags">
3023 <ul class="entry_tags">
3024 <li><a href="#tag_BC">BC</a></li>
3029 <tr class="entries_header">
3030 <th class="th_details" colspan="5">Details</th>
3032 <tr class="entry_cont">
3033 <td class="entry_details" colspan="5">
3034 <p>This entry is normally set to IDLE,<wbr/> or is not
3035 included at all in the request settings.<wbr/></p>
3036 <p>When included and set to START,<wbr/> the camera device will trigger the
3037 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3038 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3039 and return to its initial AF state.<wbr/></p>
3040 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3041 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3042 START for multiple captures in a row means restarting the AF operation over
3043 and over again.<wbr/></p>
3044 <p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what the trigger means for each AF mode.<wbr/></p>
3045 <p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
3046 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3047 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3048 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3049 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3050 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3054 <tr class="entries_header">
3055 <th class="th_details" colspan="5">HAL Implementation Details</th>
3057 <tr class="entry_cont">
3058 <td class="entry_details" colspan="5">
3059 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3060 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
3061 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3062 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3063 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3067 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3068 <!-- end of entry -->
3071 <tr class="entry" id="controls_android.control.awbLock">
3072 <td class="entry_name
3074 android.<wbr/>control.<wbr/>awb<wbr/>Lock
3076 <td class="entry_type">
3077 <span class="entry_type_name entry_type_name_enum">byte</span>
3079 <span class="entry_type_visibility"> [public as boolean]</span>
3082 <span class="entry_type_hwlevel">[legacy] </span>
3086 <ul class="entry_type_enum">
3088 <span class="entry_type_enum_name">OFF</span>
3089 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3090 algorithm is free to update its parameters if in AUTO
3091 mode.<wbr/></p></span>
3094 <span class="entry_type_enum_name">ON</span>
3095 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3096 algorithm will not update its parameters while the lock
3097 is active.<wbr/></p></span>
3101 </td> <!-- entry_type -->
3103 <td class="entry_description">
3104 <p>Whether auto-white balance (AWB) is currently locked to its
3105 latest calculated values.<wbr/></p>
3108 <td class="entry_units">
3111 <td class="entry_range">
3114 <td class="entry_tags">
3115 <ul class="entry_tags">
3116 <li><a href="#tag_BC">BC</a></li>
3121 <tr class="entries_header">
3122 <th class="th_details" colspan="5">Details</th>
3124 <tr class="entry_cont">
3125 <td class="entry_details" colspan="5">
3126 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3127 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3128 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3129 get locked do not necessarily correspond to the settings that were present in the
3130 latest capture result received from the camera device,<wbr/> since additional captures
3131 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3132 application is switching between automatic and manual control and wishes to eliminate
3133 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3135 <li>Starting in auto-AWB mode:</li>
3137 <li>Wait for the first result to be output that has the AWB locked</li>
3138 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3139 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3141 <p>Note that AWB lock is only meaningful when
3142 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3143 AWB is already fixed to a specific setting.<wbr/></p>
3144 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3149 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3150 <!-- end of entry -->
3153 <tr class="entry" id="controls_android.control.awbMode">
3154 <td class="entry_name
3156 android.<wbr/>control.<wbr/>awb<wbr/>Mode
3158 <td class="entry_type">
3159 <span class="entry_type_name entry_type_name_enum">byte</span>
3161 <span class="entry_type_visibility"> [public]</span>
3164 <span class="entry_type_hwlevel">[legacy] </span>
3168 <ul class="entry_type_enum">
3170 <span class="entry_type_enum_name">OFF</span>
3171 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3172 <p>The application-selected color transform matrix
3173 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3174 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3175 device for manual white balance control.<wbr/></p></span>
3178 <span class="entry_type_enum_name">AUTO</span>
3179 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3180 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3181 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3182 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3183 values used by the camera device for the transform and gains
3184 will be available in the capture result for this request.<wbr/></p></span>
3187 <span class="entry_type_enum_name">INCANDESCENT</span>
3188 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3189 the camera device uses incandescent light as the assumed scene
3190 illumination for white balance.<wbr/></p>
3191 <p>While the exact white balance transforms are up to the
3192 camera device,<wbr/> they will approximately match the CIE
3193 standard illuminant A.<wbr/></p>
3194 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3195 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3196 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3197 values used by the camera device for the transform and gains
3198 will be available in the capture result for this request.<wbr/></p></span>
3201 <span class="entry_type_enum_name">FLUORESCENT</span>
3202 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3203 the camera device uses fluorescent light as the assumed scene
3204 illumination for white balance.<wbr/></p>
3205 <p>While the exact white balance transforms are up to the
3206 camera device,<wbr/> they will approximately match the CIE
3207 standard illuminant F2.<wbr/></p>
3208 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3209 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3210 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3211 values used by the camera device for the transform and gains
3212 will be available in the capture result for this request.<wbr/></p></span>
3215 <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
3216 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3217 the camera device uses warm fluorescent light as the assumed scene
3218 illumination for white balance.<wbr/></p>
3219 <p>While the exact white balance transforms are up to the
3220 camera device,<wbr/> they will approximately match the CIE
3221 standard illuminant F4.<wbr/></p>
3222 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3223 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3224 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3225 values used by the camera device for the transform and gains
3226 will be available in the capture result for this request.<wbr/></p></span>
3229 <span class="entry_type_enum_name">DAYLIGHT</span>
3230 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3231 the camera device uses daylight light as the assumed scene
3232 illumination for white balance.<wbr/></p>
3233 <p>While the exact white balance transforms are up to the
3234 camera device,<wbr/> they will approximately match the CIE
3235 standard illuminant D65.<wbr/></p>
3236 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3237 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3238 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3239 values used by the camera device for the transform and gains
3240 will be available in the capture result for this request.<wbr/></p></span>
3243 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
3244 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3245 the camera device uses cloudy daylight light as the assumed scene
3246 illumination for white balance.<wbr/></p>
3247 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3248 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3249 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3250 values used by the camera device for the transform and gains
3251 will be available in the capture result for this request.<wbr/></p></span>
3254 <span class="entry_type_enum_name">TWILIGHT</span>
3255 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3256 the camera device uses twilight light as the assumed scene
3257 illumination for white balance.<wbr/></p>
3258 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3259 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3260 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3261 values used by the camera device for the transform and gains
3262 will be available in the capture result for this request.<wbr/></p></span>
3265 <span class="entry_type_enum_name">SHADE</span>
3266 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3267 the camera device uses shade light as the assumed scene
3268 illumination for white balance.<wbr/></p>
3269 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3270 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3271 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3272 values used by the camera device for the transform and gains
3273 will be available in the capture result for this request.<wbr/></p></span>
3277 </td> <!-- entry_type -->
3279 <td class="entry_description">
3280 <p>Whether auto-white balance (AWB) is currently setting the color
3281 transform fields,<wbr/> and what its illumination target
3285 <td class="entry_units">
3288 <td class="entry_range">
3289 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3292 <td class="entry_tags">
3293 <ul class="entry_tags">
3294 <li><a href="#tag_BC">BC</a></li>
3299 <tr class="entries_header">
3300 <th class="th_details" colspan="5">Details</th>
3302 <tr class="entry_cont">
3303 <td class="entry_details" colspan="5">
3304 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3305 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3306 routine is enabled,<wbr/> overriding the application's selected
3307 <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
3308 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
3309 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3310 also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before
3311 setting AE mode to OFF.<wbr/></p>
3312 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3313 routine is disabled.<wbr/> The application manually controls the white
3314 balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>
3315 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3316 <p>When set to any other modes,<wbr/> the camera device's auto-white
3317 balance routine is disabled.<wbr/> The camera device uses each
3318 particular illumination target for white balance
3319 adjustment.<wbr/> The application's values for
3320 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3321 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3322 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3327 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3328 <!-- end of entry -->
3331 <tr class="entry" id="controls_android.control.awbRegions">
3332 <td class="entry_name
3334 android.<wbr/>control.<wbr/>awb<wbr/>Regions
3336 <td class="entry_type">
3337 <span class="entry_type_name">int32</span>
3338 <span class="entry_type_container">x</span>
3340 <span class="entry_type_array">
3343 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3350 </td> <!-- entry_type -->
3352 <td class="entry_description">
3353 <p>List of metering areas to use for auto-white-balance illuminant
3354 estimation.<wbr/></p>
3357 <td class="entry_units">
3358 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3361 <td class="entry_range">
3362 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3363 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3366 <td class="entry_tags">
3367 <ul class="entry_tags">
3368 <li><a href="#tag_BC">BC</a></li>
3373 <tr class="entries_header">
3374 <th class="th_details" colspan="5">Details</th>
3376 <tr class="entry_cont">
3377 <td class="entry_details" colspan="5">
3378 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3379 Otherwise will always be present.<wbr/></p>
3380 <p>The maximum number of regions supported by the device is determined by the value
3381 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3382 <p>The coordinate system is based on the active pixel array,<wbr/>
3383 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3384 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3385 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3386 bottom-right pixel in the active pixel array.<wbr/></p>
3387 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3388 for every pixel in the area.<wbr/> This means that a large metering area
3389 with the same weight as a smaller area will have more effect in
3390 the metering result.<wbr/> Metering areas can partially overlap and the
3391 camera device will add the weights in the overlap region.<wbr/></p>
3392 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3393 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3394 0 weight is ignored.<wbr/></p>
3395 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3396 camera device.<wbr/></p>
3397 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
3398 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3399 region and output only the intersection rectangle as the metering region in the result
3400 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3401 not reported in the result metadata.<wbr/></p>
3405 <tr class="entries_header">
3406 <th class="th_details" colspan="5">HAL Implementation Details</th>
3408 <tr class="entry_cont">
3409 <td class="entry_details" colspan="5">
3410 <p>The HAL level representation of MeteringRectangle[] is a
3411 int[5 * area_<wbr/>count].<wbr/>
3412 Every five elements represent a metering region of
3413 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3414 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3415 exclusive on xmax and ymax.<wbr/></p>
3419 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3420 <!-- end of entry -->
3423 <tr class="entry" id="controls_android.control.captureIntent">
3424 <td class="entry_name
3426 android.<wbr/>control.<wbr/>capture<wbr/>Intent
3428 <td class="entry_type">
3429 <span class="entry_type_name entry_type_name_enum">byte</span>
3431 <span class="entry_type_visibility"> [public]</span>
3434 <span class="entry_type_hwlevel">[legacy] </span>
3438 <ul class="entry_type_enum">
3440 <span class="entry_type_enum_name">CUSTOM</span>
3441 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3442 categories.<wbr/> The camera device will default to preview-like
3443 behavior.<wbr/></p></span>
3446 <span class="entry_type_enum_name">PREVIEW</span>
3447 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3448 <p>The precapture trigger may be used to start off a metering
3449 w/<wbr/>flash sequence.<wbr/></p></span>
3452 <span class="entry_type_enum_name">STILL_CAPTURE</span>
3453 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3455 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3458 <span class="entry_type_enum_name">VIDEO_RECORD</span>
3459 <span class="entry_type_enum_notes"><p>This request is for a video recording
3460 use case.<wbr/></p></span>
3463 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
3464 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3465 image while recording video) use case.<wbr/></p>
3466 <p>The camera device should take the highest-quality image
3467 possible (given the other settings) without disrupting the
3468 frame rate of video recording.<wbr/> </p></span>
3471 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
3472 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3473 application will stream full-resolution images and
3474 reprocess one or several later for a final
3475 capture.<wbr/></p></span>
3478 <span class="entry_type_enum_name">MANUAL</span>
3479 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3480 the applications want to directly control the capture parameters.<wbr/></p>
3481 <p>For example,<wbr/> the application may wish to manually control
3482 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> etc.<wbr/></p></span>
3486 </td> <!-- entry_type -->
3488 <td class="entry_description">
3489 <p>Information to the camera device 3A (auto-exposure,<wbr/>
3490 auto-focus,<wbr/> auto-white balance) routines about the purpose
3491 of this capture,<wbr/> to help the camera device to decide optimal 3A
3495 <td class="entry_units">
3498 <td class="entry_range">
3501 <td class="entry_tags">
3502 <ul class="entry_tags">
3503 <li><a href="#tag_BC">BC</a></li>
3508 <tr class="entries_header">
3509 <th class="th_details" colspan="5">Details</th>
3511 <tr class="entry_cont">
3512 <td class="entry_details" colspan="5">
3513 <p>This control (except for MANUAL) is only effective if
3514 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3515 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3516 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
3517 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
3518 always supported.<wbr/></p>
3523 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3524 <!-- end of entry -->
3527 <tr class="entry" id="controls_android.control.effectMode">
3528 <td class="entry_name
3530 android.<wbr/>control.<wbr/>effect<wbr/>Mode
3532 <td class="entry_type">
3533 <span class="entry_type_name entry_type_name_enum">byte</span>
3535 <span class="entry_type_visibility"> [public]</span>
3538 <span class="entry_type_hwlevel">[legacy] </span>
3542 <ul class="entry_type_enum">
3544 <span class="entry_type_enum_name">OFF</span>
3545 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3548 <span class="entry_type_enum_name">MONO</span>
3549 <span class="entry_type_enum_optional">[optional]</span>
3550 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3551 a single color.<wbr/></p>
3552 <p>This will typically be grayscale.<wbr/></p></span>
3555 <span class="entry_type_enum_name">NEGATIVE</span>
3556 <span class="entry_type_enum_optional">[optional]</span>
3557 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3558 are inverted.<wbr/></p></span>
3561 <span class="entry_type_enum_name">SOLARIZE</span>
3562 <span class="entry_type_enum_optional">[optional]</span>
3563 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3564 image is wholly or partially reversed in
3565 tone.<wbr/></p></span>
3568 <span class="entry_type_enum_name">SEPIA</span>
3569 <span class="entry_type_enum_optional">[optional]</span>
3570 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3571 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3574 <span class="entry_type_enum_name">POSTERIZE</span>
3575 <span class="entry_type_enum_optional">[optional]</span>
3576 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3577 discrete regions of tone rather than a continuous
3578 gradient of tones.<wbr/></p></span>
3581 <span class="entry_type_enum_name">WHITEBOARD</span>
3582 <span class="entry_type_enum_optional">[optional]</span>
3583 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3584 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3587 <span class="entry_type_enum_name">BLACKBOARD</span>
3588 <span class="entry_type_enum_optional">[optional]</span>
3589 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3590 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3593 <span class="entry_type_enum_name">AQUA</span>
3594 <span class="entry_type_enum_optional">[optional]</span>
3595 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3599 </td> <!-- entry_type -->
3601 <td class="entry_description">
3602 <p>A special color effect to apply.<wbr/></p>
3605 <td class="entry_units">
3608 <td class="entry_range">
3609 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3612 <td class="entry_tags">
3613 <ul class="entry_tags">
3614 <li><a href="#tag_BC">BC</a></li>
3619 <tr class="entries_header">
3620 <th class="th_details" colspan="5">Details</th>
3622 <tr class="entry_cont">
3623 <td class="entry_details" colspan="5">
3624 <p>When this mode is set,<wbr/> a color effect will be applied
3625 to images produced by the camera device.<wbr/> The interpretation
3626 and implementation of these color effects is left to the
3627 implementor of the camera device,<wbr/> and should not be
3628 depended on to be consistent (or present) across all
3634 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3635 <!-- end of entry -->
3638 <tr class="entry" id="controls_android.control.mode">
3639 <td class="entry_name
3641 android.<wbr/>control.<wbr/>mode
3643 <td class="entry_type">
3644 <span class="entry_type_name entry_type_name_enum">byte</span>
3646 <span class="entry_type_visibility"> [public]</span>
3649 <span class="entry_type_hwlevel">[legacy] </span>
3653 <ul class="entry_type_enum">
3655 <span class="entry_type_enum_name">OFF</span>
3656 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3657 <p>All control by the device's metering and focusing (3A)
3658 routines is disabled,<wbr/> and no other settings in
3659 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3660 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3661 device to select post-processing values for processing
3662 blocks that do not allow for manual control,<wbr/> or are not
3663 exposed by the camera API.<wbr/></p>
3664 <p>However,<wbr/> the camera device's 3A routines may continue to
3665 collect statistics and update their internal state so that
3666 when control is switched to AUTO mode,<wbr/> good control values
3667 can be immediately applied.<wbr/></p></span>
3670 <span class="entry_type_enum_name">AUTO</span>
3671 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3672 <p>Manual control of capture parameters is disabled.<wbr/> All
3673 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3674 effect.<wbr/></p></span>
3677 <span class="entry_type_enum_name">USE_SCENE_MODE</span>
3678 <span class="entry_type_enum_optional">[optional]</span>
3679 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3680 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3681 control.<wbr/>afMode controls; the camera device will ignore
3682 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3683 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3684 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3685 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3686 contain some modes other than DISABLED).<wbr/></p></span>
3689 <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
3690 <span class="entry_type_enum_optional">[optional]</span>
3691 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3692 used by camera device background auto-exposure,<wbr/> auto-white balance and
3693 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3694 <p>Specifically,<wbr/> the 3A routines are locked to the last
3695 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3696 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3697 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3698 discarded by the camera device.<wbr/></p></span>
3702 </td> <!-- entry_type -->
3704 <td class="entry_description">
3705 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3709 <td class="entry_units">
3712 <td class="entry_range">
3713 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3716 <td class="entry_tags">
3717 <ul class="entry_tags">
3718 <li><a href="#tag_BC">BC</a></li>
3723 <tr class="entries_header">
3724 <th class="th_details" colspan="5">Details</th>
3726 <tr class="entry_cont">
3727 <td class="entry_details" colspan="5">
3728 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3729 by the camera device is disabled.<wbr/> The application must set the fields for
3730 capture parameters itself.<wbr/></p>
3731 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3732 android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p>
3733 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3734 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
3735 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
3736 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
3737 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3738 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3739 is that this frame will not be used by camera device background 3A statistics
3740 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3741 where the application doesn't want a 3A manual control capture to affect
3742 the subsequent auto 3A capture results.<wbr/></p>
3747 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3748 <!-- end of entry -->
3751 <tr class="entry" id="controls_android.control.sceneMode">
3752 <td class="entry_name
3754 android.<wbr/>control.<wbr/>scene<wbr/>Mode
3756 <td class="entry_type">
3757 <span class="entry_type_name entry_type_name_enum">byte</span>
3759 <span class="entry_type_visibility"> [public]</span>
3762 <span class="entry_type_hwlevel">[legacy] </span>
3766 <ul class="entry_type_enum">
3768 <span class="entry_type_enum_name">DISABLED</span>
3769 <span class="entry_type_enum_value">0</span>
3770 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3773 <span class="entry_type_enum_name">FACE_PRIORITY</span>
3774 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3775 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3776 auto-exposure routines.<wbr/></p>
3777 <p>If face detection statistics are disabled
3778 (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/>
3779 this should still operate correctly (but will not return
3780 face detection statistics to the framework).<wbr/></p>
3781 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3782 <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>
3783 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3786 <span class="entry_type_enum_name">ACTION</span>
3787 <span class="entry_type_enum_optional">[optional]</span>
3788 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3789 <p>Similar to SPORTS.<wbr/></p></span>
3792 <span class="entry_type_enum_name">PORTRAIT</span>
3793 <span class="entry_type_enum_optional">[optional]</span>
3794 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3797 <span class="entry_type_enum_name">LANDSCAPE</span>
3798 <span class="entry_type_enum_optional">[optional]</span>
3799 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3802 <span class="entry_type_enum_name">NIGHT</span>
3803 <span class="entry_type_enum_optional">[optional]</span>
3804 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3807 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3808 <span class="entry_type_enum_optional">[optional]</span>
3809 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3810 settings.<wbr/></p></span>
3813 <span class="entry_type_enum_name">THEATRE</span>
3814 <span class="entry_type_enum_optional">[optional]</span>
3815 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3816 remain off.<wbr/></p></span>
3819 <span class="entry_type_enum_name">BEACH</span>
3820 <span class="entry_type_enum_optional">[optional]</span>
3821 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3824 <span class="entry_type_enum_name">SNOW</span>
3825 <span class="entry_type_enum_optional">[optional]</span>
3826 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3829 <span class="entry_type_enum_name">SUNSET</span>
3830 <span class="entry_type_enum_optional">[optional]</span>
3831 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3834 <span class="entry_type_enum_name">STEADYPHOTO</span>
3835 <span class="entry_type_enum_optional">[optional]</span>
3836 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3837 device motion (for example: due to hand shake).<wbr/></p></span>
3840 <span class="entry_type_enum_name">FIREWORKS</span>
3841 <span class="entry_type_enum_optional">[optional]</span>
3842 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3845 <span class="entry_type_enum_name">SPORTS</span>
3846 <span class="entry_type_enum_optional">[optional]</span>
3847 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3848 <p>Similar to ACTION.<wbr/></p></span>
3851 <span class="entry_type_enum_name">PARTY</span>
3852 <span class="entry_type_enum_optional">[optional]</span>
3853 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3854 people.<wbr/></p></span>
3857 <span class="entry_type_enum_name">CANDLELIGHT</span>
3858 <span class="entry_type_enum_optional">[optional]</span>
3859 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3860 is a flame.<wbr/></p></span>
3863 <span class="entry_type_enum_name">BARCODE</span>
3864 <span class="entry_type_enum_optional">[optional]</span>
3865 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3866 for use by camera applications that wish to read the
3867 barcode value.<wbr/></p></span>
3870 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
3871 <span class="entry_type_enum_deprecated">[deprecated]</span>
3872 <span class="entry_type_enum_optional">[optional]</span>
3873 <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
3874 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
3875 for high speed video recording.<wbr/></p>
3876 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p>
3877 <p>The supported high speed video sizes and fps ranges are specified in
3878 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3879 output frame rates,<wbr/> the application is only allowed to select video size
3880 and fps range combinations listed in this static metadata.<wbr/> The fps range
3881 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3882 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3883 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3884 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3885 and post-processing parameters is possible.<wbr/> All other controls operate the
3886 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3887 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
3889 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
3890 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
3891 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
3892 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
3893 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
3894 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
3895 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
3896 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
3897 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
3898 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
3900 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
3902 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (automatic flash for still capture will not work since aeMode is ON)</li>
3903 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
3904 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
3905 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
3907 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
3908 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
3909 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
3910 the application need check if the video encoder is capable of supporting the
3911 high frame rate for a given video size,<wbr/> or it will end up with lower recording
3912 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
3913 rate will be bounded by the screen refresh rate.<wbr/></p>
3914 <p>The camera device will only support up to 2 output high speed streams
3915 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
3916 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
3918 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
3919 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
3920 min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li>
3921 <li>The stream sizes are selected from the sizes reported by
3922 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
3923 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
3925 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
3926 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> will be ignored by the camera device,<wbr/>
3927 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
3928 and the returned capture result metadata will give the fps range choosen
3929 by the camera device.<wbr/></p>
3930 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
3931 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
3932 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
3935 <span class="entry_type_enum_name">HDR</span>
3936 <span class="entry_type_enum_optional">[optional]</span>
3937 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
3938 <p>In this scene mode,<wbr/> the camera device captures images
3939 that keep a larger range of scene illumination levels
3940 visible in the final image.<wbr/> For example,<wbr/> when taking a
3941 picture of a object in front of a bright window,<wbr/> both
3942 the object and the scene through the window may be
3943 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
3944 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
3945 HDR mode generally takes much longer to capture a single
3946 image,<wbr/> has no user control,<wbr/> and may have other artifacts
3947 depending on the HDR method used.<wbr/></p>
3948 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
3949 than regular captures.<wbr/></p>
3950 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
3951 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
3952 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
3953 using a high dynamic range capture technique.<wbr/> On LEGACY
3954 devices,<wbr/> captures that target a JPEG-format output will
3955 be captured with HDR,<wbr/> and the capture intent is not
3957 <p>The HDR capture may involve the device capturing a burst
3958 of images internally and combining them into one,<wbr/> or it
3959 may involve the device using specialized high dynamic
3960 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
3961 produced in response to a capture request submitted
3962 while in HDR mode.<wbr/></p>
3963 <p>Since substantial post-processing is generally needed to
3964 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
3965 outputs are supported for LIMITED/<wbr/>FULL device HDR
3966 captures,<wbr/> and only JPEG outputs are supported for LEGACY
3967 HDR captures.<wbr/> Using a RAW output for HDR capture is not
3968 supported.<wbr/></p>
3969 <p>Some devices may also support always-on HDR,<wbr/> which
3970 applies HDR processing at full frame rate.<wbr/> For these
3971 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
3972 produce an HDR output with no frame rate impact compared
3973 to normal operation,<wbr/> though the quality may be lower
3974 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
3975 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
3976 or capture intents,<wbr/> the images captured will be as if
3977 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
3980 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
3981 <span class="entry_type_enum_optional">[optional]</span>
3982 <span class="entry_type_enum_hidden">[hidden]</span>
3983 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
3984 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
3985 under low light conditions.<wbr/></p>
3986 <p>The camera device may be tuned to expose the images in a reduced
3987 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
3988 if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/>
3989 the camera device auto-exposure routine tuning process may limit the actual
3990 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
3991 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
3992 low light may be under-exposed when the sensor max exposure time (bounded by the
3993 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the
3994 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
3995 camera device auto-exposure routine to increase the sensitivity up to the max
3996 sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
3997 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
3998 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
3999 recommended that the application only use this scene mode when it is capable of
4000 reducing the noise level of the captured images.<wbr/></p>
4001 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4002 <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>
4003 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4006 <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
4007 <span class="entry_type_enum_optional">[optional]</span>
4008 <span class="entry_type_enum_hidden">[hidden]</span>
4009 <span class="entry_type_enum_value">100</span>
4010 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4011 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4012 customized scene modes.<wbr/></p></span>
4015 <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
4016 <span class="entry_type_enum_optional">[optional]</span>
4017 <span class="entry_type_enum_hidden">[hidden]</span>
4018 <span class="entry_type_enum_value">127</span>
4019 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4020 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4021 customized scene modes.<wbr/></p></span>
4025 </td> <!-- entry_type -->
4027 <td class="entry_description">
4028 <p>Control for which scene mode is currently active.<wbr/></p>
4031 <td class="entry_units">
4034 <td class="entry_range">
4035 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4038 <td class="entry_tags">
4039 <ul class="entry_tags">
4040 <li><a href="#tag_BC">BC</a></li>
4045 <tr class="entries_header">
4046 <th class="th_details" colspan="5">Details</th>
4048 <tr class="entry_cont">
4049 <td class="entry_details" colspan="5">
4050 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4051 capture settings.<wbr/></p>
4052 <p>This is the mode that that is active when
4053 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will
4054 disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
4055 while in use.<wbr/></p>
4056 <p>The interpretation and implementation of these scene modes is left
4057 to the implementor of the camera device.<wbr/> Their behavior will not be
4058 consistent across all devices,<wbr/> and any given device may only implement
4059 a subset of these modes.<wbr/></p>
4063 <tr class="entries_header">
4064 <th class="th_details" colspan="5">HAL Implementation Details</th>
4066 <tr class="entry_cont">
4067 <td class="entry_details" colspan="5">
4068 <p>HAL implementations that include scene modes are expected to provide
4069 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4070 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> in
4071 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4072 <p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/>
4073 the HAL must list supported video size and fps range in
4074 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/>
4075 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
4076 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
4077 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
4078 This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4079 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
4080 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4084 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4085 <!-- end of entry -->
4088 <tr class="entry" id="controls_android.control.videoStabilizationMode">
4089 <td class="entry_name
4091 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4093 <td class="entry_type">
4094 <span class="entry_type_name entry_type_name_enum">byte</span>
4096 <span class="entry_type_visibility"> [public]</span>
4099 <span class="entry_type_hwlevel">[legacy] </span>
4103 <ul class="entry_type_enum">
4105 <span class="entry_type_enum_name">OFF</span>
4106 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4109 <span class="entry_type_enum_name">ON</span>
4110 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4114 </td> <!-- entry_type -->
4116 <td class="entry_description">
4117 <p>Whether video stabilization is
4121 <td class="entry_units">
4124 <td class="entry_range">
4127 <td class="entry_tags">
4128 <ul class="entry_tags">
4129 <li><a href="#tag_BC">BC</a></li>
4134 <tr class="entries_header">
4135 <th class="th_details" colspan="5">Details</th>
4137 <tr class="entry_cont">
4138 <td class="entry_details" colspan="5">
4139 <p>Video stabilization automatically warps images from
4140 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4141 <p>If enabled,<wbr/> video stabilization can modify the
4142 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4143 <p>Switching between different video stabilization modes may take several
4144 frames to initialize,<wbr/> the camera device will report the current mode
4145 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4146 the video stabilization modes in the first several capture results may
4147 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4149 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4150 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4151 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4152 the recording resolution is less than or equal to 1920 x 1080 (width less than
4153 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4154 frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
4155 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4156 OFF if the recording output is not stabilized,<wbr/> or if there are no output
4157 Surface types that can be stabilized.<wbr/></p>
4158 <p>If a camera device supports both this mode and OIS
4159 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4160 produce undesirable interaction,<wbr/> so it is recommended not to enable
4161 both at the same time.<wbr/></p>
4166 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4167 <!-- end of entry -->
4170 <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4171 <td class="entry_name
4173 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4175 <td class="entry_type">
4176 <span class="entry_type_name">int32</span>
4178 <span class="entry_type_visibility"> [public]</span>
4185 </td> <!-- entry_type -->
4187 <td class="entry_description">
4188 <p>The amount of additional sensitivity boost applied to output images
4189 after RAW sensor data is captured.<wbr/></p>
4192 <td class="entry_units">
4193 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4196 <td class="entry_range">
4197 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4200 <td class="entry_tags">
4204 <tr class="entries_header">
4205 <th class="th_details" colspan="5">Details</th>
4207 <tr class="entry_cont">
4208 <td class="entry_details" colspan="5">
4209 <p>Some camera devices support additional digital sensitivity boosting in the
4210 camera processing pipeline after sensor RAW image is captured.<wbr/>
4211 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4212 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4213 <p>This key will be <code>null</code> for devices that do not support any RAW format
4214 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4215 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4216 list <code>100</code> in this key.<wbr/></p>
4217 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4218 boost to the nearest supported value.<wbr/>
4219 The final boost value used will be available in the output capture result.<wbr/></p>
4220 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4221 of such device will have the total sensitivity of
4222 <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code>
4223 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4224 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
4225 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4230 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4231 <!-- end of entry -->
4234 <tr class="entry" id="controls_android.control.enableZsl">
4235 <td class="entry_name
4237 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4239 <td class="entry_type">
4240 <span class="entry_type_name entry_type_name_enum">byte</span>
4242 <span class="entry_type_visibility"> [public as boolean]</span>
4248 <ul class="entry_type_enum">
4250 <span class="entry_type_enum_name">FALSE</span>
4251 <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE must be captured
4252 after previous requests.<wbr/></p></span>
4255 <span class="entry_type_enum_name">TRUE</span>
4256 <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE may or may not be
4257 captured before previous requests.<wbr/></p></span>
4261 </td> <!-- entry_type -->
4263 <td class="entry_description">
4264 <p>Allow camera device to enable zero-shutter-lag mode for requests with
4265 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4268 <td class="entry_units">
4271 <td class="entry_range">
4274 <td class="entry_tags">
4278 <tr class="entries_header">
4279 <th class="th_details" colspan="5">Details</th>
4281 <tr class="entry_cont">
4282 <td class="entry_details" colspan="5">
4283 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4284 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4285 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4286 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4287 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4288 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4289 capture intents.<wbr/></p>
4290 <p>For example,<wbr/> when requests are submitted in the following order:
4291 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4292 Request B: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is STILL_<wbr/>CAPTURE</p>
4293 <p>The output images for request B may have contents captured before the output images for
4294 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4295 request A.<wbr/></p>
4296 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4297 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4298 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4299 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4300 <code>false</code> if present.<wbr/></p>
4301 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4302 capture templates is always <code>false</code> if present.<wbr/></p>
4303 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4307 <tr class="entries_header">
4308 <th class="th_details" colspan="5">HAL Implementation Details</th>
4310 <tr class="entry_cont">
4311 <td class="entry_details" colspan="5">
4312 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4313 capture intent.<wbr/></p>
4317 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4318 <!-- end of entry -->
4322 <!-- end of kind -->
4324 <tr><td colspan="6" class="kind">static</td></tr>
4326 <thead class="entries_header">
4328 <th class="th_name">Property Name</th>
4329 <th class="th_type">Type</th>
4330 <th class="th_description">Description</th>
4331 <th class="th_units">Units</th>
4332 <th class="th_range">Range</th>
4333 <th class="th_tags">Tags</th>
4348 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4349 <td class="entry_name
4351 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4353 <td class="entry_type">
4354 <span class="entry_type_name">byte</span>
4355 <span class="entry_type_container">x</span>
4357 <span class="entry_type_array">
4360 <span class="entry_type_visibility"> [public as enumList]</span>
4363 <span class="entry_type_hwlevel">[legacy] </span>
4366 <div class="entry_type_notes">list of enums</div>
4369 </td> <!-- entry_type -->
4371 <td class="entry_description">
4372 <p>List of auto-exposure antibanding modes for <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> that are
4373 supported by this camera device.<wbr/></p>
4376 <td class="entry_units">
4379 <td class="entry_range">
4380 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4383 <td class="entry_tags">
4384 <ul class="entry_tags">
4385 <li><a href="#tag_BC">BC</a></li>
4390 <tr class="entries_header">
4391 <th class="th_details" colspan="5">Details</th>
4393 <tr class="entry_cont">
4394 <td class="entry_details" colspan="5">
4395 <p>Not all of the auto-exposure anti-banding modes may be
4396 supported by a given camera device.<wbr/> This field lists the
4397 valid anti-banding modes that the application may request
4398 for this camera device with the
4399 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4404 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4405 <!-- end of entry -->
4408 <tr class="entry" id="static_android.control.aeAvailableModes">
4409 <td class="entry_name
4411 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4413 <td class="entry_type">
4414 <span class="entry_type_name">byte</span>
4415 <span class="entry_type_container">x</span>
4417 <span class="entry_type_array">
4420 <span class="entry_type_visibility"> [public as enumList]</span>
4423 <span class="entry_type_hwlevel">[legacy] </span>
4426 <div class="entry_type_notes">list of enums</div>
4429 </td> <!-- entry_type -->
4431 <td class="entry_description">
4432 <p>List of auto-exposure modes for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> that are supported by this camera
4436 <td class="entry_units">
4439 <td class="entry_range">
4440 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4443 <td class="entry_tags">
4444 <ul class="entry_tags">
4445 <li><a href="#tag_BC">BC</a></li>
4450 <tr class="entries_header">
4451 <th class="th_details" colspan="5">Details</th>
4453 <tr class="entry_cont">
4454 <td class="entry_details" colspan="5">
4455 <p>Not all the auto-exposure modes may be supported by a
4456 given camera device,<wbr/> especially if no flash unit is
4457 available.<wbr/> This entry lists the valid modes for
4458 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4459 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4460 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4461 <p>FULL mode camera devices always support OFF mode,<wbr/>
4462 which enables application control of camera exposure time,<wbr/>
4463 sensitivity,<wbr/> and frame duration.<wbr/></p>
4464 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4465 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4466 capability.<wbr/></p>
4471 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4472 <!-- end of entry -->
4475 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4476 <td class="entry_name
4478 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4480 <td class="entry_type">
4481 <span class="entry_type_name">int32</span>
4482 <span class="entry_type_container">x</span>
4484 <span class="entry_type_array">
4487 <span class="entry_type_visibility"> [public as rangeInt]</span>
4490 <span class="entry_type_hwlevel">[legacy] </span>
4493 <div class="entry_type_notes">list of pairs of frame rates</div>
4496 </td> <!-- entry_type -->
4498 <td class="entry_description">
4499 <p>List of frame rate ranges for <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> supported by
4500 this camera device.<wbr/></p>
4503 <td class="entry_units">
4504 Frames per second (FPS)
4507 <td class="entry_range">
4510 <td class="entry_tags">
4511 <ul class="entry_tags">
4512 <li><a href="#tag_BC">BC</a></li>
4517 <tr class="entries_header">
4518 <th class="th_details" colspan="5">Details</th>
4520 <tr class="entry_cont">
4521 <td class="entry_details" colspan="5">
4522 <p>For devices at the LEGACY level or above:</p>
4525 <p>For constant-framerate recording,<wbr/> for each normal
4526 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4527 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4528 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4529 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4530 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4531 supported by the device and has
4532 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4533 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4536 <p>Also,<wbr/> a camera device must either not support any
4537 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4538 or support at least one
4539 normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4540 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p>
4543 <p>For devices at the LIMITED level or above:</p>
4545 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4546 and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the
4547 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4553 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4554 <!-- end of entry -->
4557 <tr class="entry" id="static_android.control.aeCompensationRange">
4558 <td class="entry_name
4560 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4562 <td class="entry_type">
4563 <span class="entry_type_name">int32</span>
4564 <span class="entry_type_container">x</span>
4566 <span class="entry_type_array">
4569 <span class="entry_type_visibility"> [public as rangeInt]</span>
4572 <span class="entry_type_hwlevel">[legacy] </span>
4577 </td> <!-- entry_type -->
4579 <td class="entry_description">
4580 <p>Maximum and minimum exposure compensation values for
4581 <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a>,<wbr/> in counts of <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a>,<wbr/>
4582 that are supported by this camera device.<wbr/></p>
4585 <td class="entry_units">
4588 <td class="entry_range">
4589 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4590 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4591 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4592 <p><code>Min.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> <= -2 EV</code></p>
4593 <p><code>Max.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> >= 2 EV</code></p>
4594 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4597 <td class="entry_tags">
4598 <ul class="entry_tags">
4599 <li><a href="#tag_BC">BC</a></li>
4606 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4607 <!-- end of entry -->
4610 <tr class="entry" id="static_android.control.aeCompensationStep">
4611 <td class="entry_name
4613 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4615 <td class="entry_type">
4616 <span class="entry_type_name">rational</span>
4618 <span class="entry_type_visibility"> [public]</span>
4621 <span class="entry_type_hwlevel">[legacy] </span>
4626 </td> <!-- entry_type -->
4628 <td class="entry_description">
4629 <p>Smallest step by which the exposure compensation
4630 can be changed.<wbr/></p>
4633 <td class="entry_units">
4637 <td class="entry_range">
4640 <td class="entry_tags">
4641 <ul class="entry_tags">
4642 <li><a href="#tag_BC">BC</a></li>
4647 <tr class="entries_header">
4648 <th class="th_details" colspan="5">Details</th>
4650 <tr class="entry_cont">
4651 <td class="entry_details" colspan="5">
4652 <p>This is the unit for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a>.<wbr/> For example,<wbr/> if this key has
4653 a value of <code>1/<wbr/>2</code>,<wbr/> then a setting of <code>-2</code> for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> means
4654 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4655 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4656 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4660 <tr class="entries_header">
4661 <th class="th_details" colspan="5">HAL Implementation Details</th>
4663 <tr class="entry_cont">
4664 <td class="entry_details" colspan="5">
4665 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4669 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4670 <!-- end of entry -->
4673 <tr class="entry" id="static_android.control.afAvailableModes">
4674 <td class="entry_name
4676 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4678 <td class="entry_type">
4679 <span class="entry_type_name">byte</span>
4680 <span class="entry_type_container">x</span>
4682 <span class="entry_type_array">
4685 <span class="entry_type_visibility"> [public as enumList]</span>
4688 <span class="entry_type_hwlevel">[legacy] </span>
4691 <div class="entry_type_notes">List of enums</div>
4694 </td> <!-- entry_type -->
4696 <td class="entry_description">
4697 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4698 supported by this camera device.<wbr/></p>
4701 <td class="entry_units">
4704 <td class="entry_range">
4705 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4708 <td class="entry_tags">
4709 <ul class="entry_tags">
4710 <li><a href="#tag_BC">BC</a></li>
4715 <tr class="entries_header">
4716 <th class="th_details" colspan="5">Details</th>
4718 <tr class="entry_cont">
4719 <td class="entry_details" colspan="5">
4720 <p>Not all the auto-focus modes may be supported by a
4721 given camera device.<wbr/> This entry lists the valid modes for
4722 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4723 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4724 camera devices with adjustable focuser units
4725 (<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>) will support AUTO mode.<wbr/></p>
4726 <p>LEGACY devices will support OFF mode only if they support
4727 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4728 <code>0.<wbr/>0f</code>).<wbr/></p>
4733 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4734 <!-- end of entry -->
4737 <tr class="entry" id="static_android.control.availableEffects">
4738 <td class="entry_name
4740 android.<wbr/>control.<wbr/>available<wbr/>Effects
4742 <td class="entry_type">
4743 <span class="entry_type_name">byte</span>
4744 <span class="entry_type_container">x</span>
4746 <span class="entry_type_array">
4749 <span class="entry_type_visibility"> [public as enumList]</span>
4752 <span class="entry_type_hwlevel">[legacy] </span>
4755 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4758 </td> <!-- entry_type -->
4760 <td class="entry_description">
4761 <p>List of color effects for <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a> that are supported by this camera
4765 <td class="entry_units">
4768 <td class="entry_range">
4769 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4772 <td class="entry_tags">
4773 <ul class="entry_tags">
4774 <li><a href="#tag_BC">BC</a></li>
4779 <tr class="entries_header">
4780 <th class="th_details" colspan="5">Details</th>
4782 <tr class="entry_cont">
4783 <td class="entry_details" colspan="5">
4784 <p>This list contains the color effect modes that can be applied to
4785 images produced by the camera device.<wbr/>
4786 Implementations are not expected to be consistent across all devices.<wbr/>
4787 If no color effect modes are available for a device,<wbr/> this will only list
4789 <p>A color effect will only be applied if
4790 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p>
4791 <p>This control has no effect on the operation of other control routines such
4792 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4797 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4798 <!-- end of entry -->
4801 <tr class="entry" id="static_android.control.availableSceneModes">
4802 <td class="entry_name
4804 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4806 <td class="entry_type">
4807 <span class="entry_type_name">byte</span>
4808 <span class="entry_type_container">x</span>
4810 <span class="entry_type_array">
4813 <span class="entry_type_visibility"> [public as enumList]</span>
4816 <span class="entry_type_hwlevel">[legacy] </span>
4819 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4822 </td> <!-- entry_type -->
4824 <td class="entry_description">
4825 <p>List of scene modes for <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> that are supported by this camera
4829 <td class="entry_units">
4832 <td class="entry_range">
4833 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4836 <td class="entry_tags">
4837 <ul class="entry_tags">
4838 <li><a href="#tag_BC">BC</a></li>
4843 <tr class="entries_header">
4844 <th class="th_details" colspan="5">Details</th>
4846 <tr class="entry_cont">
4847 <td class="entry_details" colspan="5">
4848 <p>This list contains scene modes that can be set for the camera device.<wbr/>
4849 Only scene modes that have been fully implemented for the
4850 camera device may be included here.<wbr/> Implementations are not expected
4851 to be consistent across all devices.<wbr/></p>
4852 <p>If no scene modes are supported by the camera device,<wbr/> this
4853 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
4854 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
4855 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> >
4856 0</code>).<wbr/></p>
4861 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4862 <!-- end of entry -->
4865 <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
4866 <td class="entry_name
4868 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
4870 <td class="entry_type">
4871 <span class="entry_type_name">byte</span>
4872 <span class="entry_type_container">x</span>
4874 <span class="entry_type_array">
4877 <span class="entry_type_visibility"> [public as enumList]</span>
4880 <span class="entry_type_hwlevel">[legacy] </span>
4883 <div class="entry_type_notes">List of enums.<wbr/></div>
4886 </td> <!-- entry_type -->
4888 <td class="entry_description">
4889 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
4890 that are supported by this camera device.<wbr/></p>
4893 <td class="entry_units">
4896 <td class="entry_range">
4897 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
4900 <td class="entry_tags">
4901 <ul class="entry_tags">
4902 <li><a href="#tag_BC">BC</a></li>
4907 <tr class="entries_header">
4908 <th class="th_details" colspan="5">Details</th>
4910 <tr class="entry_cont">
4911 <td class="entry_details" colspan="5">
4912 <p>OFF will always be listed.<wbr/></p>
4917 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4918 <!-- end of entry -->
4921 <tr class="entry" id="static_android.control.awbAvailableModes">
4922 <td class="entry_name
4924 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
4926 <td class="entry_type">
4927 <span class="entry_type_name">byte</span>
4928 <span class="entry_type_container">x</span>
4930 <span class="entry_type_array">
4933 <span class="entry_type_visibility"> [public as enumList]</span>
4936 <span class="entry_type_hwlevel">[legacy] </span>
4939 <div class="entry_type_notes">List of enums</div>
4942 </td> <!-- entry_type -->
4944 <td class="entry_description">
4945 <p>List of auto-white-balance modes for <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> that are supported by this
4946 camera device.<wbr/></p>
4949 <td class="entry_units">
4952 <td class="entry_range">
4953 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
4956 <td class="entry_tags">
4957 <ul class="entry_tags">
4958 <li><a href="#tag_BC">BC</a></li>
4963 <tr class="entries_header">
4964 <th class="th_details" colspan="5">Details</th>
4966 <tr class="entry_cont">
4967 <td class="entry_details" colspan="5">
4968 <p>Not all the auto-white-balance modes may be supported by a
4969 given camera device.<wbr/> This entry lists the valid modes for
4970 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
4971 <p>All camera devices will support ON mode.<wbr/></p>
4972 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
4973 mode,<wbr/> which enables application control of white balance,<wbr/> by using
4974 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>(<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> must be set to TRANSFORM_<wbr/>MATRIX).<wbr/> This includes all FULL
4975 mode camera devices.<wbr/></p>
4980 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4981 <!-- end of entry -->
4984 <tr class="entry" id="static_android.control.maxRegions">
4985 <td class="entry_name
4987 android.<wbr/>control.<wbr/>max<wbr/>Regions
4989 <td class="entry_type">
4990 <span class="entry_type_name">int32</span>
4991 <span class="entry_type_container">x</span>
4993 <span class="entry_type_array">
4996 <span class="entry_type_visibility"> [ndk_public]</span>
4999 <span class="entry_type_hwlevel">[legacy] </span>
5004 </td> <!-- entry_type -->
5006 <td class="entry_description">
5007 <p>List of the maximum number of regions that can be used for metering in
5008 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5009 this corresponds to the the maximum number of elements in
5010 <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/>
5011 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5014 <td class="entry_units">
5017 <td class="entry_range">
5018 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices
5019 this value must be >= 1 for AE and AF.<wbr/> The order of the elements is:
5020 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5023 <td class="entry_tags">
5024 <ul class="entry_tags">
5025 <li><a href="#tag_BC">BC</a></li>
5032 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5033 <!-- end of entry -->
5036 <tr class="entry" id="static_android.control.maxRegionsAe">
5037 <td class="entry_name
5039 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5041 <td class="entry_type">
5042 <span class="entry_type_name">int32</span>
5044 <span class="entry_type_visibility"> [java_public]</span>
5046 <span class="entry_type_synthetic">[synthetic] </span>
5048 <span class="entry_type_hwlevel">[legacy] </span>
5053 </td> <!-- entry_type -->
5055 <td class="entry_description">
5056 <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5060 <td class="entry_units">
5063 <td class="entry_range">
5064 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this
5065 value will be >= 1.<wbr/></p>
5068 <td class="entry_tags">
5072 <tr class="entries_header">
5073 <th class="th_details" colspan="5">Details</th>
5075 <tr class="entry_cont">
5076 <td class="entry_details" colspan="5">
5077 <p>This corresponds to the the maximum allowed number of elements in
5078 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5082 <tr class="entries_header">
5083 <th class="th_details" colspan="5">HAL Implementation Details</th>
5085 <tr class="entry_cont">
5086 <td class="entry_details" colspan="5">
5087 <p>This entry is private to the framework.<wbr/> Fill in
5088 maxRegions to have this entry be automatically populated.<wbr/></p>
5092 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5093 <!-- end of entry -->
5096 <tr class="entry" id="static_android.control.maxRegionsAwb">
5097 <td class="entry_name
5099 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5101 <td class="entry_type">
5102 <span class="entry_type_name">int32</span>
5104 <span class="entry_type_visibility"> [java_public]</span>
5106 <span class="entry_type_synthetic">[synthetic] </span>
5108 <span class="entry_type_hwlevel">[legacy] </span>
5113 </td> <!-- entry_type -->
5115 <td class="entry_description">
5116 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5120 <td class="entry_units">
5123 <td class="entry_range">
5124 <p>Value will be >= 0.<wbr/></p>
5127 <td class="entry_tags">
5131 <tr class="entries_header">
5132 <th class="th_details" colspan="5">Details</th>
5134 <tr class="entry_cont">
5135 <td class="entry_details" colspan="5">
5136 <p>This corresponds to the the maximum allowed number of elements in
5137 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5141 <tr class="entries_header">
5142 <th class="th_details" colspan="5">HAL Implementation Details</th>
5144 <tr class="entry_cont">
5145 <td class="entry_details" colspan="5">
5146 <p>This entry is private to the framework.<wbr/> Fill in
5147 maxRegions to have this entry be automatically populated.<wbr/></p>
5151 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5152 <!-- end of entry -->
5155 <tr class="entry" id="static_android.control.maxRegionsAf">
5156 <td class="entry_name
5158 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5160 <td class="entry_type">
5161 <span class="entry_type_name">int32</span>
5163 <span class="entry_type_visibility"> [java_public]</span>
5165 <span class="entry_type_synthetic">[synthetic] </span>
5167 <span class="entry_type_hwlevel">[legacy] </span>
5172 </td> <!-- entry_type -->
5174 <td class="entry_description">
5175 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5178 <td class="entry_units">
5181 <td class="entry_range">
5182 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this
5183 value will be >= 1.<wbr/></p>
5186 <td class="entry_tags">
5190 <tr class="entries_header">
5191 <th class="th_details" colspan="5">Details</th>
5193 <tr class="entry_cont">
5194 <td class="entry_details" colspan="5">
5195 <p>This corresponds to the the maximum allowed number of elements in
5196 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5200 <tr class="entries_header">
5201 <th class="th_details" colspan="5">HAL Implementation Details</th>
5203 <tr class="entry_cont">
5204 <td class="entry_details" colspan="5">
5205 <p>This entry is private to the framework.<wbr/> Fill in
5206 maxRegions to have this entry be automatically populated.<wbr/></p>
5210 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5211 <!-- end of entry -->
5214 <tr class="entry" id="static_android.control.sceneModeOverrides">
5215 <td class="entry_name
5217 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5219 <td class="entry_type">
5220 <span class="entry_type_name">byte</span>
5221 <span class="entry_type_container">x</span>
5223 <span class="entry_type_array">
5224 3 x length(availableSceneModes)
5226 <span class="entry_type_visibility"> [system]</span>
5229 <span class="entry_type_hwlevel">[limited] </span>
5234 </td> <!-- entry_type -->
5236 <td class="entry_description">
5237 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5238 settings to use with each available scene mode.<wbr/></p>
5241 <td class="entry_units">
5244 <td class="entry_range">
5245 <p>For each available scene mode,<wbr/> the list must contain three
5246 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5247 <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
5248 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5249 where aeMode has the lowest index position.<wbr/></p>
5252 <td class="entry_tags">
5253 <ul class="entry_tags">
5254 <li><a href="#tag_BC">BC</a></li>
5259 <tr class="entries_header">
5260 <th class="th_details" colspan="5">Details</th>
5262 <tr class="entry_cont">
5263 <td class="entry_details" colspan="5">
5264 <p>When a scene mode is enabled,<wbr/> the camera device is expected
5265 to override <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/>
5266 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5267 that scene mode.<wbr/></p>
5268 <p>The order of this list matches that of availableSceneModes,<wbr/>
5269 with 3 entries for each mode.<wbr/> The overrides listed
5270 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5271 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5272 <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
5273 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5274 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5275 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5276 <p>For example,<wbr/> if availableSceneModes contains
5277 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework
5278 expects sceneModeOverrides to have 9 entries formatted like:
5279 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5280 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5284 <tr class="entries_header">
5285 <th class="th_details" colspan="5">HAL Implementation Details</th>
5287 <tr class="entry_cont">
5288 <td class="entry_details" colspan="5">
5289 <p>To maintain backward compatibility,<wbr/> this list will be made available
5290 in the static metadata of the camera service.<wbr/> The camera service will
5291 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5292 <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
5293 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5297 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5298 <!-- end of entry -->
5301 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5302 <td class="entry_name
5304 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5306 <td class="entry_type">
5307 <span class="entry_type_name">int32</span>
5308 <span class="entry_type_container">x</span>
5310 <span class="entry_type_array">
5313 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5316 <span class="entry_type_hwlevel">[limited] </span>
5321 </td> <!-- entry_type -->
5323 <td class="entry_description">
5324 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5325 supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max).<wbr/></p>
5328 <td class="entry_units">
5331 <td class="entry_range">
5332 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p>
5335 <td class="entry_tags">
5336 <ul class="entry_tags">
5337 <li><a href="#tag_V1">V1</a></li>
5342 <tr class="entries_header">
5343 <th class="th_details" colspan="5">Details</th>
5345 <tr class="entry_cont">
5346 <td class="entry_details" colspan="5">
5347 <p>When CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>,<wbr/>
5348 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5349 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5350 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5351 for processed non-stalling formats.<wbr/></p>
5352 <p>For the high speed video use case,<wbr/> the application must
5353 select the video size and fps range from this metadata to configure the recording and
5354 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5355 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5356 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5357 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5358 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5359 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5360 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5361 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5362 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5363 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5364 multiple frames together and send to camera device for processing where the request
5365 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5366 the max possible number of frames the camera device will group together for this high
5367 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5368 recording request list by
5369 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5370 The max batch size for each configuration will satisfy below conditions:</p>
5372 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5373 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5374 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5375 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5376 size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
5377 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5379 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5380 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5381 <p>This fps ranges in this configuration list can only be used to create requests
5382 that are submitted to a high speed camera capture session created by
5383 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5384 The fps ranges reported in this metadata must not be used to setup capture requests for
5385 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5389 <tr class="entries_header">
5390 <th class="th_details" colspan="5">HAL Implementation Details</th>
5392 <tr class="entry_cont">
5393 <td class="entry_details" colspan="5">
5394 <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5395 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5396 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5397 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5398 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5399 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5400 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5401 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5402 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5403 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5404 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5405 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5406 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5407 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5408 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5409 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5410 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5414 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5415 <!-- end of entry -->
5418 <tr class="entry" id="static_android.control.aeLockAvailable">
5419 <td class="entry_name
5421 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5423 <td class="entry_type">
5424 <span class="entry_type_name entry_type_name_enum">byte</span>
5426 <span class="entry_type_visibility"> [public as boolean]</span>
5429 <span class="entry_type_hwlevel">[legacy] </span>
5433 <ul class="entry_type_enum">
5435 <span class="entry_type_enum_name">FALSE</span>
5438 <span class="entry_type_enum_name">TRUE</span>
5442 </td> <!-- entry_type -->
5444 <td class="entry_description">
5445 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5448 <td class="entry_units">
5451 <td class="entry_range">
5454 <td class="entry_tags">
5455 <ul class="entry_tags">
5456 <li><a href="#tag_BC">BC</a></li>
5461 <tr class="entries_header">
5462 <th class="th_details" colspan="5">Details</th>
5464 <tr class="entry_cont">
5465 <td class="entry_details" colspan="5">
5466 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5467 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5472 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5473 <!-- end of entry -->
5476 <tr class="entry" id="static_android.control.awbLockAvailable">
5477 <td class="entry_name
5479 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5481 <td class="entry_type">
5482 <span class="entry_type_name entry_type_name_enum">byte</span>
5484 <span class="entry_type_visibility"> [public as boolean]</span>
5487 <span class="entry_type_hwlevel">[legacy] </span>
5491 <ul class="entry_type_enum">
5493 <span class="entry_type_enum_name">FALSE</span>
5496 <span class="entry_type_enum_name">TRUE</span>
5500 </td> <!-- entry_type -->
5502 <td class="entry_description">
5503 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5506 <td class="entry_units">
5509 <td class="entry_range">
5512 <td class="entry_tags">
5513 <ul class="entry_tags">
5514 <li><a href="#tag_BC">BC</a></li>
5519 <tr class="entries_header">
5520 <th class="th_details" colspan="5">Details</th>
5522 <tr class="entry_cont">
5523 <td class="entry_details" colspan="5">
5524 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5525 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5530 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5531 <!-- end of entry -->
5534 <tr class="entry" id="static_android.control.availableModes">
5535 <td class="entry_name
5537 android.<wbr/>control.<wbr/>available<wbr/>Modes
5539 <td class="entry_type">
5540 <span class="entry_type_name">byte</span>
5541 <span class="entry_type_container">x</span>
5543 <span class="entry_type_array">
5546 <span class="entry_type_visibility"> [public as enumList]</span>
5549 <span class="entry_type_hwlevel">[legacy] </span>
5552 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5555 </td> <!-- entry_type -->
5557 <td class="entry_description">
5558 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5562 <td class="entry_units">
5565 <td class="entry_range">
5566 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5569 <td class="entry_tags">
5573 <tr class="entries_header">
5574 <th class="th_details" colspan="5">Details</th>
5576 <tr class="entry_cont">
5577 <td class="entry_details" colspan="5">
5578 <p>This list contains control modes that can be set for the camera device.<wbr/>
5579 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5580 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5585 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5586 <!-- end of entry -->
5589 <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5590 <td class="entry_name
5592 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5594 <td class="entry_type">
5595 <span class="entry_type_name">int32</span>
5596 <span class="entry_type_container">x</span>
5598 <span class="entry_type_array">
5601 <span class="entry_type_visibility"> [public as rangeInt]</span>
5606 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5609 </td> <!-- entry_type -->
5611 <td class="entry_description">
5612 <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5613 by this camera device.<wbr/></p>
5616 <td class="entry_units">
5617 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5620 <td class="entry_range">
5623 <td class="entry_tags">
5627 <tr class="entries_header">
5628 <th class="th_details" colspan="5">Details</th>
5630 <tr class="entry_cont">
5631 <td class="entry_details" colspan="5">
5632 <p>Devices support post RAW sensitivity boost will advertise
5633 <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5634 post RAW sensitivity boost.<wbr/></p>
5635 <p>This key will be <code>null</code> for devices that do not support any RAW format
5636 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5637 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5638 list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5642 <tr class="entries_header">
5643 <th class="th_details" colspan="5">HAL Implementation Details</th>
5645 <tr class="entry_cont">
5646 <td class="entry_details" colspan="5">
5647 <p>This key is added in HAL3.<wbr/>4.<wbr/> For HAL3.<wbr/>3 or earlier devices,<wbr/> camera framework will
5648 generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output formats.<wbr/>
5649 All HAL3.<wbr/>4 and above devices should list this key if device supports any of RAW
5650 output formats.<wbr/></p>
5654 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5655 <!-- end of entry -->
5659 <!-- end of kind -->
5661 <tr><td colspan="6" class="kind">dynamic</td></tr>
5663 <thead class="entries_header">
5665 <th class="th_name">Property Name</th>
5666 <th class="th_type">Type</th>
5667 <th class="th_description">Description</th>
5668 <th class="th_units">Units</th>
5669 <th class="th_range">Range</th>
5670 <th class="th_tags">Tags</th>
5685 <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5686 <td class="entry_name
5687 entry_name_deprecated
5689 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5691 <td class="entry_type">
5692 <span class="entry_type_name">int32</span>
5694 <span class="entry_type_visibility"> [system]</span>
5698 <span class="entry_type_deprecated">[deprecated] </span>
5702 </td> <!-- entry_type -->
5704 <td class="entry_description">
5705 <p>The ID sent with the latest
5706 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5709 <td class="entry_units">
5712 <td class="entry_range">
5713 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5716 <td class="entry_tags">
5720 <tr class="entries_header">
5721 <th class="th_details" colspan="5">Details</th>
5723 <tr class="entry_cont">
5724 <td class="entry_details" colspan="5">
5726 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5727 by HAL.<wbr/> Always updated even if AE algorithm ignores the
5733 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5734 <!-- end of entry -->
5737 <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5738 <td class="entry_name
5740 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5742 <td class="entry_type">
5743 <span class="entry_type_name entry_type_name_enum">byte</span>
5745 <span class="entry_type_visibility"> [public]</span>
5748 <span class="entry_type_hwlevel">[legacy] </span>
5752 <ul class="entry_type_enum">
5754 <span class="entry_type_enum_name">OFF</span>
5755 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5756 avoid banding problems.<wbr/></p></span>
5759 <span class="entry_type_enum_name">50HZ</span>
5760 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5761 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5764 <span class="entry_type_enum_name">60HZ</span>
5765 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5766 avoid banding problems with 60Hz illumination
5767 sources.<wbr/></p></span>
5770 <span class="entry_type_enum_name">AUTO</span>
5771 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5772 antibanding routine to the current illumination
5773 condition.<wbr/> This is the default mode if AUTO is
5774 available on given camera device.<wbr/></p></span>
5778 </td> <!-- entry_type -->
5780 <td class="entry_description">
5781 <p>The desired setting for the camera device's auto-exposure
5782 algorithm's antibanding compensation.<wbr/></p>
5785 <td class="entry_units">
5788 <td class="entry_range">
5789 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
5792 <td class="entry_tags">
5793 <ul class="entry_tags">
5794 <li><a href="#tag_BC">BC</a></li>
5799 <tr class="entries_header">
5800 <th class="th_details" colspan="5">Details</th>
5802 <tr class="entry_cont">
5803 <td class="entry_details" colspan="5">
5804 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
5805 lights,<wbr/> flicker at the rate of the power supply frequency
5806 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
5807 typically not noticeable to a person,<wbr/> it can be visible to
5808 a camera device.<wbr/> If a camera sets its exposure time to the
5809 wrong value,<wbr/> the flicker may become visible in the
5810 viewfinder as flicker or in a final captured image,<wbr/> as a
5811 set of variable-brightness bands across the image.<wbr/></p>
5812 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
5813 include antibanding routines that ensure that the chosen
5814 exposure value will not cause such banding.<wbr/> The choice of
5815 exposure time depends on the rate of flicker,<wbr/> which the
5816 camera device can detect automatically,<wbr/> or the expected
5817 rate can be selected by the application using this
5819 <p>A given camera device may not support all of the possible
5820 options for the antibanding mode.<wbr/> The
5821 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
5822 the available modes for a given camera device.<wbr/></p>
5823 <p>AUTO mode is the default if it is available on given
5824 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
5825 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
5826 and 60HZ will be available.<wbr/></p>
5827 <p>If manual exposure control is enabled (by setting
5828 <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/>
5829 then this setting has no effect,<wbr/> and the application must
5830 ensure it selects exposure times that do not cause banding
5831 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
5832 the application in this.<wbr/></p>
5836 <tr class="entries_header">
5837 <th class="th_details" colspan="5">HAL Implementation Details</th>
5839 <tr class="entry_cont">
5840 <td class="entry_details" colspan="5">
5841 <p>For all capture request templates,<wbr/> this field must be set
5842 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
5843 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
5844 60HZ must be available.<wbr/></p>
5845 <p>If manual exposure control is enabled (by setting
5846 <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/>
5847 then the exposure values provided by the application must not be
5848 adjusted for antibanding.<wbr/></p>
5852 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5853 <!-- end of entry -->
5856 <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
5857 <td class="entry_name
5859 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
5861 <td class="entry_type">
5862 <span class="entry_type_name">int32</span>
5864 <span class="entry_type_visibility"> [public]</span>
5867 <span class="entry_type_hwlevel">[legacy] </span>
5872 </td> <!-- entry_type -->
5874 <td class="entry_description">
5875 <p>Adjustment to auto-exposure (AE) target image
5876 brightness.<wbr/></p>
5879 <td class="entry_units">
5883 <td class="entry_range">
5884 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
5887 <td class="entry_tags">
5888 <ul class="entry_tags">
5889 <li><a href="#tag_BC">BC</a></li>
5894 <tr class="entries_header">
5895 <th class="th_details" colspan="5">Details</th>
5897 <tr class="entry_cont">
5898 <td class="entry_details" colspan="5">
5899 <p>The adjustment is measured as a count of steps,<wbr/> with the
5900 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
5901 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
5902 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
5903 will mean an exposure compensation of +2 EV; -3 will mean an
5904 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
5905 of image brightness.<wbr/> Note that this control will only be
5906 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
5907 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
5908 <p>In the event of exposure compensation value being changed,<wbr/> camera device
5909 may take several frames to reach the newly requested exposure target.<wbr/>
5910 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
5911 state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
5912 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
5913 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
5918 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5919 <!-- end of entry -->
5922 <tr class="entry" id="dynamic_android.control.aeLock">
5923 <td class="entry_name
5925 android.<wbr/>control.<wbr/>ae<wbr/>Lock
5927 <td class="entry_type">
5928 <span class="entry_type_name entry_type_name_enum">byte</span>
5930 <span class="entry_type_visibility"> [public as boolean]</span>
5933 <span class="entry_type_hwlevel">[legacy] </span>
5937 <ul class="entry_type_enum">
5939 <span class="entry_type_enum_name">OFF</span>
5940 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
5941 is free to update its parameters.<wbr/></p></span>
5944 <span class="entry_type_enum_name">ON</span>
5945 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
5946 must not update the exposure and sensitivity parameters
5947 while the lock is active.<wbr/></p>
5948 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
5949 will still take effect while auto-exposure is locked.<wbr/></p>
5950 <p>Some rare LEGACY devices may not support
5951 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
5955 </td> <!-- entry_type -->
5957 <td class="entry_description">
5958 <p>Whether auto-exposure (AE) is currently locked to its latest
5959 calculated values.<wbr/></p>
5962 <td class="entry_units">
5965 <td class="entry_range">
5968 <td class="entry_tags">
5969 <ul class="entry_tags">
5970 <li><a href="#tag_BC">BC</a></li>
5975 <tr class="entries_header">
5976 <th class="th_details" colspan="5">Details</th>
5978 <tr class="entry_cont">
5979 <td class="entry_details" colspan="5">
5980 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
5981 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
5982 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
5983 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
5984 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
5985 <p>When <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> is changed,<wbr/> even if the AE lock
5986 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
5987 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
5988 when AE is already locked,<wbr/> the camera device will not change the exposure time
5989 (<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>)
5990 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
5991 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
5992 <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/>
5993 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
5994 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
5995 the AE if AE is locked by the camera device internally during precapture metering
5996 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
5997 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
5998 will never succeed in a sequence of preview requests where AE lock is always set
5999 to <code>false</code>.<wbr/></p>
6000 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6001 get locked do not necessarily correspond to the settings that were present in the
6002 latest capture result received from the camera device,<wbr/> since additional captures
6003 and AE updates may have occurred even before the result was sent out.<wbr/> If an
6004 application is switching between automatic and manual control and wishes to eliminate
6005 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6007 <li>Starting in auto-AE mode:</li>
6009 <li>Wait for the first result to be output that has the AE locked</li>
6010 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6011 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6013 <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>
6018 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6019 <!-- end of entry -->
6022 <tr class="entry" id="dynamic_android.control.aeMode">
6023 <td class="entry_name
6025 android.<wbr/>control.<wbr/>ae<wbr/>Mode
6027 <td class="entry_type">
6028 <span class="entry_type_name entry_type_name_enum">byte</span>
6030 <span class="entry_type_visibility"> [public]</span>
6033 <span class="entry_type_hwlevel">[legacy] </span>
6037 <ul class="entry_type_enum">
6039 <span class="entry_type_enum_name">OFF</span>
6040 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6041 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6042 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6043 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6044 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6045 a flash unit for this camera device.<wbr/></p>
6046 <p>Note that auto-white balance (AWB) and auto-focus (AF)
6047 behavior is device dependent when AE is in OFF mode.<wbr/>
6048 To have consistent behavior across different devices,<wbr/>
6049 it is recommended to either set AWB and AF to OFF mode
6050 or lock AWB and AF before setting AE to OFF.<wbr/>
6051 See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/>
6052 <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6053 for more details.<wbr/></p>
6054 <p>LEGACY devices do not support the OFF mode and will
6055 override attempts to use this value to ON.<wbr/></p></span>
6058 <span class="entry_type_enum_name">ON</span>
6059 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6060 with no flash control.<wbr/></p>
6061 <p>The application's values for
6062 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6063 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6064 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6065 application has control over the various
6066 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6069 <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
6070 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6071 the camera's flash unit,<wbr/> firing it in low-light
6072 conditions.<wbr/></p>
6073 <p>The flash may be fired during a precapture sequence
6074 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6075 may be fired for captures for which the
6076 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6077 STILL_<wbr/>CAPTURE</p></span>
6080 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
6081 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6082 the camera's flash unit,<wbr/> always firing it for still
6084 <p>The flash may be fired during a precapture sequence
6085 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6086 will always be fired for captures for which the
6087 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6088 STILL_<wbr/>CAPTURE</p></span>
6091 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
6092 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6093 reduction.<wbr/></p>
6094 <p>If deemed necessary by the camera device,<wbr/> a red eye
6095 reduction flash will fire during the precapture
6096 sequence.<wbr/></p></span>
6100 </td> <!-- entry_type -->
6102 <td class="entry_description">
6103 <p>The desired mode for the camera device's
6104 auto-exposure routine.<wbr/></p>
6107 <td class="entry_units">
6110 <td class="entry_range">
6111 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6114 <td class="entry_tags">
6115 <ul class="entry_tags">
6116 <li><a href="#tag_BC">BC</a></li>
6121 <tr class="entries_header">
6122 <th class="th_details" colspan="5">Details</th>
6124 <tr class="entry_cont">
6125 <td class="entry_details" colspan="5">
6126 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6128 <p>When set to any of the ON modes,<wbr/> the camera device's
6129 auto-exposure routine is enabled,<wbr/> overriding the
6130 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6131 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6132 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6133 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6134 is selected,<wbr/> the camera device's flash unit controls are
6135 also overridden.<wbr/></p>
6136 <p>The FLASH modes are only available if the camera device
6137 has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
6138 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
6139 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6140 <p>When set to any of the ON modes,<wbr/> the values chosen by the
6141 camera device auto-exposure routine for the overridden
6142 fields for a given capture will be available in its
6143 CaptureResult.<wbr/></p>
6148 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6149 <!-- end of entry -->
6152 <tr class="entry" id="dynamic_android.control.aeRegions">
6153 <td class="entry_name
6155 android.<wbr/>control.<wbr/>ae<wbr/>Regions
6157 <td class="entry_type">
6158 <span class="entry_type_name">int32</span>
6159 <span class="entry_type_container">x</span>
6161 <span class="entry_type_array">
6164 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6171 </td> <!-- entry_type -->
6173 <td class="entry_description">
6174 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6177 <td class="entry_units">
6178 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6181 <td class="entry_range">
6182 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6183 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6186 <td class="entry_tags">
6187 <ul class="entry_tags">
6188 <li><a href="#tag_BC">BC</a></li>
6193 <tr class="entries_header">
6194 <th class="th_details" colspan="5">Details</th>
6196 <tr class="entry_cont">
6197 <td class="entry_details" colspan="5">
6198 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6199 Otherwise will always be present.<wbr/></p>
6200 <p>The maximum number of regions supported by the device is determined by the value
6201 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6202 <p>The coordinate system is based on the active pixel array,<wbr/>
6203 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6204 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6205 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6206 bottom-right pixel in the active pixel array.<wbr/></p>
6207 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6208 for every pixel in the area.<wbr/> This means that a large metering area
6209 with the same weight as a smaller area will have more effect in
6210 the metering result.<wbr/> Metering areas can partially overlap and the
6211 camera device will add the weights in the overlap region.<wbr/></p>
6212 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6213 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6214 weight is ignored.<wbr/></p>
6215 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6216 camera device.<wbr/></p>
6217 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
6218 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6219 region and output only the intersection rectangle as the metering region in the result
6220 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6221 not reported in the result metadata.<wbr/></p>
6225 <tr class="entries_header">
6226 <th class="th_details" colspan="5">HAL Implementation Details</th>
6228 <tr class="entry_cont">
6229 <td class="entry_details" colspan="5">
6230 <p>The HAL level representation of MeteringRectangle[] is a
6231 int[5 * area_<wbr/>count].<wbr/>
6232 Every five elements represent a metering region of
6233 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6234 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6235 exclusive on xmax and ymax.<wbr/></p>
6239 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6240 <!-- end of entry -->
6243 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6244 <td class="entry_name
6246 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6248 <td class="entry_type">
6249 <span class="entry_type_name">int32</span>
6250 <span class="entry_type_container">x</span>
6252 <span class="entry_type_array">
6255 <span class="entry_type_visibility"> [public as rangeInt]</span>
6258 <span class="entry_type_hwlevel">[legacy] </span>
6263 </td> <!-- entry_type -->
6265 <td class="entry_description">
6266 <p>Range over which the auto-exposure routine can
6267 adjust the capture frame rate to maintain good
6271 <td class="entry_units">
6272 Frames per second (FPS)
6275 <td class="entry_range">
6276 <p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p>
6279 <td class="entry_tags">
6280 <ul class="entry_tags">
6281 <li><a href="#tag_BC">BC</a></li>
6286 <tr class="entries_header">
6287 <th class="th_details" colspan="5">Details</th>
6289 <tr class="entry_cont">
6290 <td class="entry_details" colspan="5">
6291 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6292 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6293 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6298 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6299 <!-- end of entry -->
6302 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6303 <td class="entry_name
6305 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6307 <td class="entry_type">
6308 <span class="entry_type_name entry_type_name_enum">byte</span>
6310 <span class="entry_type_visibility"> [public]</span>
6313 <span class="entry_type_hwlevel">[limited] </span>
6317 <ul class="entry_type_enum">
6319 <span class="entry_type_enum_name">IDLE</span>
6320 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6323 <span class="entry_type_enum_name">START</span>
6324 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6325 by the camera device.<wbr/></p>
6326 <p>The exact effect of the precapture trigger depends on
6327 the current AE mode and state.<wbr/></p></span>
6330 <span class="entry_type_enum_name">CANCEL</span>
6331 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6332 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6333 initial state.<wbr/></p></span>
6337 </td> <!-- entry_type -->
6339 <td class="entry_description">
6340 <p>Whether the camera device will trigger a precapture
6341 metering sequence when it processes this request.<wbr/></p>
6344 <td class="entry_units">
6347 <td class="entry_range">
6350 <td class="entry_tags">
6351 <ul class="entry_tags">
6352 <li><a href="#tag_BC">BC</a></li>
6357 <tr class="entries_header">
6358 <th class="th_details" colspan="5">Details</th>
6360 <tr class="entry_cont">
6361 <td class="entry_details" colspan="5">
6362 <p>This entry is normally set to IDLE,<wbr/> or is not
6363 included at all in the request settings.<wbr/> When included and
6364 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6365 precapture metering sequence.<wbr/></p>
6366 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
6367 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6368 If a precapture metering sequence is already completed,<wbr/> and the camera
6369 device has implicitly locked the AE for subsequent still capture,<wbr/> the
6370 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6371 <p>The precapture sequence should be triggered before starting a
6372 high-quality still capture for final metering decisions to
6373 be made,<wbr/> and for firing pre-capture flash pulses to estimate
6374 scene brightness and required final capture flash power,<wbr/> when
6375 the flash is enabled.<wbr/></p>
6376 <p>Normally,<wbr/> this entry should be set to START for only a
6377 single request,<wbr/> and the application should wait until the
6378 sequence completes before starting a new one.<wbr/></p>
6379 <p>When a precapture metering sequence is finished,<wbr/> the camera device
6380 may lock the auto-exposure routine internally to be able to accurately expose the
6381 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6382 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6383 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6384 submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request
6385 with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a
6386 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6387 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6388 internally locked AE if the application doesn't submit a still capture request after
6389 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6390 be used in devices that have earlier API levels.<wbr/></p>
6391 <p>The exact effect of auto-exposure (AE) precapture trigger
6392 depends on the current AE mode and state; see
6393 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6395 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6396 capturing a high-resolution JPEG image will automatically trigger a
6397 precapture sequence before the high-resolution capture,<wbr/> including
6398 potentially firing a pre-capture flash.<wbr/></p>
6399 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6400 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6401 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6402 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6403 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6404 changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
6406 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6407 the camera device will complete them in the optimal order for that device.<wbr/></p>
6411 <tr class="entries_header">
6412 <th class="th_details" colspan="5">HAL Implementation Details</th>
6414 <tr class="entry_cont">
6415 <td class="entry_details" colspan="5">
6416 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6417 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
6418 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6419 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6420 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6424 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6425 <!-- end of entry -->
6428 <tr class="entry" id="dynamic_android.control.aeState">
6429 <td class="entry_name
6431 android.<wbr/>control.<wbr/>ae<wbr/>State
6433 <td class="entry_type">
6434 <span class="entry_type_name entry_type_name_enum">byte</span>
6436 <span class="entry_type_visibility"> [public]</span>
6439 <span class="entry_type_hwlevel">[limited] </span>
6443 <ul class="entry_type_enum">
6445 <span class="entry_type_enum_name">INACTIVE</span>
6446 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6447 <p>When a camera device is opened,<wbr/> it starts in
6448 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6449 this state in capture result.<wbr/></p></span>
6452 <span class="entry_type_enum_name">SEARCHING</span>
6453 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6454 for the current scene.<wbr/></p>
6455 <p>This is a transient state,<wbr/> the camera device may skip
6456 reporting this state in capture result.<wbr/></p></span>
6459 <span class="entry_type_enum_name">CONVERGED</span>
6460 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6461 current scene.<wbr/></p></span>
6464 <span class="entry_type_enum_name">LOCKED</span>
6465 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6468 <span class="entry_type_enum_name">FLASH_REQUIRED</span>
6469 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6470 needs to be fired for good quality still
6471 capture.<wbr/></p></span>
6474 <span class="entry_type_enum_name">PRECAPTURE</span>
6475 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6476 and is currently executing it.<wbr/></p>
6477 <p>Precapture can be triggered through setting
6478 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6479 active and completed (if it causes camera device internal AE lock) precapture
6480 metering sequence can be canceled through setting
6481 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6482 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6483 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6484 state,<wbr/> the camera device may skip reporting this state in
6485 capture result.<wbr/></p></span>
6489 </td> <!-- entry_type -->
6491 <td class="entry_description">
6492 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6495 <td class="entry_units">
6498 <td class="entry_range">
6501 <td class="entry_tags">
6505 <tr class="entries_header">
6506 <th class="th_details" colspan="5">Details</th>
6508 <tr class="entry_cont">
6509 <td class="entry_details" colspan="5">
6510 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6511 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6512 or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all
6513 the algorithm states to INACTIVE.<wbr/></p>
6514 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6515 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6516 seen in a result.<wbr/></p>
6517 <p>The state in the result is the state for this image (in sync with this image): if
6518 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6519 be good to use.<wbr/></p>
6520 <p>Below are state transition tables for different AE modes.<wbr/></p>
6524 <th align="center">State</th>
6525 <th align="center">Transition Cause</th>
6526 <th align="center">New State</th>
6527 <th align="center">Notes</th>
6532 <td align="center">INACTIVE</td>
6533 <td align="center"></td>
6534 <td align="center">INACTIVE</td>
6535 <td align="center">Camera device auto exposure algorithm is disabled</td>
6539 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6543 <th align="center">State</th>
6544 <th align="center">Transition Cause</th>
6545 <th align="center">New State</th>
6546 <th align="center">Notes</th>
6551 <td align="center">INACTIVE</td>
6552 <td align="center">Camera device initiates AE scan</td>
6553 <td align="center">SEARCHING</td>
6554 <td align="center">Values changing</td>
6557 <td align="center">INACTIVE</td>
6558 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6559 <td align="center">LOCKED</td>
6560 <td align="center">Values locked</td>
6563 <td align="center">SEARCHING</td>
6564 <td align="center">Camera device finishes AE scan</td>
6565 <td align="center">CONVERGED</td>
6566 <td align="center">Good values,<wbr/> not changing</td>
6569 <td align="center">SEARCHING</td>
6570 <td align="center">Camera device finishes AE scan</td>
6571 <td align="center">FLASH_<wbr/>REQUIRED</td>
6572 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6575 <td align="center">SEARCHING</td>
6576 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6577 <td align="center">LOCKED</td>
6578 <td align="center">Values locked</td>
6581 <td align="center">CONVERGED</td>
6582 <td align="center">Camera device initiates AE scan</td>
6583 <td align="center">SEARCHING</td>
6584 <td align="center">Values changing</td>
6587 <td align="center">CONVERGED</td>
6588 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6589 <td align="center">LOCKED</td>
6590 <td align="center">Values locked</td>
6593 <td align="center">FLASH_<wbr/>REQUIRED</td>
6594 <td align="center">Camera device initiates AE scan</td>
6595 <td align="center">SEARCHING</td>
6596 <td align="center">Values changing</td>
6599 <td align="center">FLASH_<wbr/>REQUIRED</td>
6600 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6601 <td align="center">LOCKED</td>
6602 <td align="center">Values locked</td>
6605 <td align="center">LOCKED</td>
6606 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6607 <td align="center">SEARCHING</td>
6608 <td align="center">Values not good after unlock</td>
6611 <td align="center">LOCKED</td>
6612 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6613 <td align="center">CONVERGED</td>
6614 <td align="center">Values good after unlock</td>
6617 <td align="center">LOCKED</td>
6618 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6619 <td align="center">FLASH_<wbr/>REQUIRED</td>
6620 <td align="center">Exposure good,<wbr/> but too dark</td>
6623 <td align="center">PRECAPTURE</td>
6624 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6625 <td align="center">CONVERGED</td>
6626 <td align="center">Ready for high-quality capture</td>
6629 <td align="center">PRECAPTURE</td>
6630 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6631 <td align="center">LOCKED</td>
6632 <td align="center">Ready for high-quality capture</td>
6635 <td align="center">LOCKED</td>
6636 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6637 <td align="center">LOCKED</td>
6638 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6641 <td align="center">LOCKED</td>
6642 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6643 <td align="center">LOCKED</td>
6644 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6647 <td align="center">Any state (excluding LOCKED)</td>
6648 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6649 <td align="center">PRECAPTURE</td>
6650 <td align="center">Start AE precapture metering sequence</td>
6653 <td align="center">Any state (excluding LOCKED)</td>
6654 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6655 <td align="center">INACTIVE</td>
6656 <td align="center">Currently active precapture metering sequence is canceled</td>
6660 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6661 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6662 can be skipped in that manner is called a transient state.<wbr/></p>
6663 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6664 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6665 transient states between two results.<wbr/> See below table for examples:</p>
6669 <th align="center">State</th>
6670 <th align="center">Transition Cause</th>
6671 <th align="center">New State</th>
6672 <th align="center">Notes</th>
6677 <td align="center">INACTIVE</td>
6678 <td align="center">Camera device finished AE scan</td>
6679 <td align="center">CONVERGED</td>
6680 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6683 <td align="center">Any state (excluding LOCKED)</td>
6684 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td>
6685 <td align="center">FLASH_<wbr/>REQUIRED</td>
6686 <td align="center">Converged but too dark w/<wbr/>o flash after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6689 <td align="center">Any state (excluding LOCKED)</td>
6690 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td>
6691 <td align="center">CONVERGED</td>
6692 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6695 <td align="center">Any state (excluding LOCKED)</td>
6696 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6697 <td align="center">FLASH_<wbr/>REQUIRED</td>
6698 <td align="center">Converged but too dark w/<wbr/>o flash after a precapture sequence is canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6701 <td align="center">Any state (excluding LOCKED)</td>
6702 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6703 <td align="center">CONVERGED</td>
6704 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6707 <td align="center">CONVERGED</td>
6708 <td align="center">Camera device finished AE scan</td>
6709 <td align="center">FLASH_<wbr/>REQUIRED</td>
6710 <td align="center">Converged but too dark w/<wbr/>o flash after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6713 <td align="center">FLASH_<wbr/>REQUIRED</td>
6714 <td align="center">Camera device finished AE scan</td>
6715 <td align="center">CONVERGED</td>
6716 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6724 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6725 <!-- end of entry -->
6728 <tr class="entry" id="dynamic_android.control.afMode">
6729 <td class="entry_name
6731 android.<wbr/>control.<wbr/>af<wbr/>Mode
6733 <td class="entry_type">
6734 <span class="entry_type_name entry_type_name_enum">byte</span>
6736 <span class="entry_type_visibility"> [public]</span>
6739 <span class="entry_type_hwlevel">[legacy] </span>
6743 <ul class="entry_type_enum">
6745 <span class="entry_type_enum_name">OFF</span>
6746 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6747 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6748 application.<wbr/></p></span>
6751 <span class="entry_type_enum_name">AUTO</span>
6752 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6753 <p>In this mode,<wbr/> the lens does not move unless
6754 the autofocus trigger action is called.<wbr/> When that trigger
6755 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6756 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
6757 <p>Always supported if lens is not fixed focus.<wbr/></p>
6758 <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
6759 is fixed-focus.<wbr/></p>
6760 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
6761 and sets the AF state to INACTIVE.<wbr/></p></span>
6764 <span class="entry_type_enum_name">MACRO</span>
6765 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
6766 <p>In this mode,<wbr/> the lens does not move unless the
6767 autofocus trigger action is called.<wbr/> When that trigger is
6768 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6769 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
6770 mode is optimized for focusing on objects very close to
6771 the camera.<wbr/></p>
6772 <p>When that trigger is activated,<wbr/> AF will transition to
6773 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
6774 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
6775 position to default,<wbr/> and sets the AF state to
6776 INACTIVE.<wbr/></p></span>
6779 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
6780 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6781 position continually to attempt to provide a
6782 constantly-in-focus image stream.<wbr/></p>
6783 <p>The focusing behavior should be suitable for good quality
6784 video recording; typically this means slower focus
6785 movement and no overshoots.<wbr/> When the AF trigger is not
6786 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
6787 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
6788 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
6789 the algorithm should immediately transition into
6790 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6791 lens position until a cancel AF trigger is received.<wbr/></p>
6792 <p>Once cancel is received,<wbr/> the algorithm should transition
6793 back to INACTIVE and resume passive scan.<wbr/> Note that this
6794 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
6795 ongoing PASSIVE_<wbr/>SCAN must immediately be
6796 canceled.<wbr/></p></span>
6799 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
6800 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6801 position continually to attempt to provide a
6802 constantly-in-focus image stream.<wbr/></p>
6803 <p>The focusing behavior should be suitable for still image
6804 capture; typically this means focusing as fast as
6805 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
6806 algorithm should start in INACTIVE state,<wbr/> and then
6807 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
6808 appropriate as it attempts to maintain focus.<wbr/> When the AF
6809 trigger is activated,<wbr/> the algorithm should finish its
6810 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
6811 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6812 lens position until a cancel AF trigger is received.<wbr/></p>
6813 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
6814 should transition back to INACTIVE and then act as if it
6815 has just been started.<wbr/></p></span>
6818 <span class="entry_type_enum_name">EDOF</span>
6819 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
6820 <p>The camera device will produce images with an extended
6821 depth of field automatically; no special focusing
6822 operations need to be done before taking a picture.<wbr/></p>
6823 <p>AF triggers are ignored,<wbr/> and the AF state will always be
6824 INACTIVE.<wbr/></p></span>
6828 </td> <!-- entry_type -->
6830 <td class="entry_description">
6831 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
6832 mode it is set to.<wbr/></p>
6835 <td class="entry_units">
6838 <td class="entry_range">
6839 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
6842 <td class="entry_tags">
6843 <ul class="entry_tags">
6844 <li><a href="#tag_BC">BC</a></li>
6849 <tr class="entries_header">
6850 <th class="th_details" colspan="5">Details</th>
6852 <tr class="entry_cont">
6853 <td class="entry_details" colspan="5">
6854 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
6855 (i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>).<wbr/> Also note that
6856 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
6857 dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
6858 setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p>
6859 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
6860 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
6861 in result metadata.<wbr/></p>
6865 <tr class="entries_header">
6866 <th class="th_details" colspan="5">HAL Implementation Details</th>
6868 <tr class="entry_cont">
6869 <td class="entry_details" colspan="5">
6870 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
6871 request (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> <code>==</code> START).<wbr/> After an AF trigger,<wbr/> the afState will end
6872 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
6873 <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> which indicates that the lens is
6874 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
6875 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
6876 the same focal plane remains in focus.<wbr/></p>
6877 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
6878 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
6879 (see <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> the HAL should maintain the
6880 same lock behavior as above.<wbr/></p>
6881 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
6882 focus distance control depends on the <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a>.<wbr/>
6883 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
6884 manual control.<wbr/></p>
6885 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
6886 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
6887 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
6888 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
6889 that will arise on camera modules with open-loop VCMs.<wbr/></p>
6893 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6894 <!-- end of entry -->
6897 <tr class="entry" id="dynamic_android.control.afRegions">
6898 <td class="entry_name
6900 android.<wbr/>control.<wbr/>af<wbr/>Regions
6902 <td class="entry_type">
6903 <span class="entry_type_name">int32</span>
6904 <span class="entry_type_container">x</span>
6906 <span class="entry_type_array">
6909 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6916 </td> <!-- entry_type -->
6918 <td class="entry_description">
6919 <p>List of metering areas to use for auto-focus.<wbr/></p>
6922 <td class="entry_units">
6923 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6926 <td class="entry_range">
6927 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6928 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6931 <td class="entry_tags">
6932 <ul class="entry_tags">
6933 <li><a href="#tag_BC">BC</a></li>
6938 <tr class="entries_header">
6939 <th class="th_details" colspan="5">Details</th>
6941 <tr class="entry_cont">
6942 <td class="entry_details" colspan="5">
6943 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
6944 Otherwise will always be present.<wbr/></p>
6945 <p>The maximum number of focus areas supported by the device is determined by the value
6946 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
6947 <p>The coordinate system is based on the active pixel array,<wbr/>
6948 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6949 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6950 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6951 bottom-right pixel in the active pixel array.<wbr/></p>
6952 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6953 for every pixel in the area.<wbr/> This means that a large metering area
6954 with the same weight as a smaller area will have more effect in
6955 the metering result.<wbr/> Metering areas can partially overlap and the
6956 camera device will add the weights in the overlap region.<wbr/></p>
6957 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
6958 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
6960 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6961 camera device.<wbr/></p>
6962 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
6963 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6964 region and output only the intersection rectangle as the metering region in the result
6965 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6966 not reported in the result metadata.<wbr/></p>
6970 <tr class="entries_header">
6971 <th class="th_details" colspan="5">HAL Implementation Details</th>
6973 <tr class="entry_cont">
6974 <td class="entry_details" colspan="5">
6975 <p>The HAL level representation of MeteringRectangle[] is a
6976 int[5 * area_<wbr/>count].<wbr/>
6977 Every five elements represent a metering region of
6978 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6979 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6980 exclusive on xmax and ymax.<wbr/></p>
6984 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6985 <!-- end of entry -->
6988 <tr class="entry" id="dynamic_android.control.afTrigger">
6989 <td class="entry_name
6991 android.<wbr/>control.<wbr/>af<wbr/>Trigger
6993 <td class="entry_type">
6994 <span class="entry_type_name entry_type_name_enum">byte</span>
6996 <span class="entry_type_visibility"> [public]</span>
6999 <span class="entry_type_hwlevel">[legacy] </span>
7003 <ul class="entry_type_enum">
7005 <span class="entry_type_enum_name">IDLE</span>
7006 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7009 <span class="entry_type_enum_name">START</span>
7010 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7013 <span class="entry_type_enum_name">CANCEL</span>
7014 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7015 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7019 </td> <!-- entry_type -->
7021 <td class="entry_description">
7022 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7025 <td class="entry_units">
7028 <td class="entry_range">
7031 <td class="entry_tags">
7032 <ul class="entry_tags">
7033 <li><a href="#tag_BC">BC</a></li>
7038 <tr class="entries_header">
7039 <th class="th_details" colspan="5">Details</th>
7041 <tr class="entry_cont">
7042 <td class="entry_details" colspan="5">
7043 <p>This entry is normally set to IDLE,<wbr/> or is not
7044 included at all in the request settings.<wbr/></p>
7045 <p>When included and set to START,<wbr/> the camera device will trigger the
7046 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7047 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7048 and return to its initial AF state.<wbr/></p>
7049 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7050 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7051 START for multiple captures in a row means restarting the AF operation over
7052 and over again.<wbr/></p>
7053 <p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what the trigger means for each AF mode.<wbr/></p>
7054 <p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
7055 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7056 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7057 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7058 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7059 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7063 <tr class="entries_header">
7064 <th class="th_details" colspan="5">HAL Implementation Details</th>
7066 <tr class="entry_cont">
7067 <td class="entry_details" colspan="5">
7068 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7069 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
7070 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7071 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7072 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7076 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7077 <!-- end of entry -->
7080 <tr class="entry" id="dynamic_android.control.afState">
7081 <td class="entry_name
7083 android.<wbr/>control.<wbr/>af<wbr/>State
7085 <td class="entry_type">
7086 <span class="entry_type_name entry_type_name_enum">byte</span>
7088 <span class="entry_type_visibility"> [public]</span>
7091 <span class="entry_type_hwlevel">[legacy] </span>
7095 <ul class="entry_type_enum">
7097 <span class="entry_type_enum_name">INACTIVE</span>
7098 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7100 <p>When a camera device is opened,<wbr/> it starts in this
7101 state.<wbr/> This is a transient state,<wbr/> the camera device may
7102 skip reporting this state in capture
7103 result.<wbr/></p></span>
7106 <span class="entry_type_enum_name">PASSIVE_SCAN</span>
7107 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7108 camera device in a continuous autofocus mode.<wbr/></p>
7109 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7110 state,<wbr/> the camera device may skip reporting this state in
7111 capture result.<wbr/></p></span>
7114 <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
7115 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7116 restart scanning at any time.<wbr/></p>
7117 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7118 state,<wbr/> the camera device may skip reporting this state in
7119 capture result.<wbr/></p></span>
7122 <span class="entry_type_enum_name">ACTIVE_SCAN</span>
7123 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7124 triggered by AF trigger.<wbr/></p>
7125 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7126 state,<wbr/> the camera device may skip reporting this state in
7127 capture result.<wbr/></p></span>
7130 <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
7131 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7133 <p>This state is reached only after an explicit START AF trigger has been
7134 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7135 <p>The lens will remain stationary until the AF mode (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) is changed or
7136 a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span>
7139 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
7140 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7142 <p>This state is reached only after an explicit START AF trigger has been
7143 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7144 <p>The lens will remain stationary until the AF mode (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) is changed or
7145 a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span>
7148 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
7149 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7150 and may restart scanning at any time.<wbr/></p>
7151 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7152 device may skip reporting this state in capture result.<wbr/></p>
7153 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
7154 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7158 </td> <!-- entry_type -->
7160 <td class="entry_description">
7161 <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7164 <td class="entry_units">
7167 <td class="entry_range">
7170 <td class="entry_tags">
7174 <tr class="entries_header">
7175 <th class="th_details" colspan="5">Details</th>
7177 <tr class="entry_cont">
7178 <td class="entry_details" colspan="5">
7179 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7180 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7181 or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all
7182 the algorithm states to INACTIVE.<wbr/></p>
7183 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7184 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7185 seen in a result.<wbr/></p>
7186 <p>The state in the result is the state for this image (in sync with this image): if
7187 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7189 <p>Below are state transition tables for different AF modes.<wbr/></p>
7190 <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>
7194 <th align="center">State</th>
7195 <th align="center">Transition Cause</th>
7196 <th align="center">New State</th>
7197 <th align="center">Notes</th>
7202 <td align="center">INACTIVE</td>
7203 <td align="center"></td>
7204 <td align="center">INACTIVE</td>
7205 <td align="center">Never changes</td>
7209 <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>
7213 <th align="center">State</th>
7214 <th align="center">Transition Cause</th>
7215 <th align="center">New State</th>
7216 <th align="center">Notes</th>
7221 <td align="center">INACTIVE</td>
7222 <td align="center">AF_<wbr/>TRIGGER</td>
7223 <td align="center">ACTIVE_<wbr/>SCAN</td>
7224 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7227 <td align="center">ACTIVE_<wbr/>SCAN</td>
7228 <td align="center">AF sweep done</td>
7229 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7230 <td align="center">Focused,<wbr/> Lens now locked</td>
7233 <td align="center">ACTIVE_<wbr/>SCAN</td>
7234 <td align="center">AF sweep done</td>
7235 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7236 <td align="center">Not focused,<wbr/> Lens now locked</td>
7239 <td align="center">ACTIVE_<wbr/>SCAN</td>
7240 <td align="center">AF_<wbr/>CANCEL</td>
7241 <td align="center">INACTIVE</td>
7242 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7245 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7246 <td align="center">AF_<wbr/>CANCEL</td>
7247 <td align="center">INACTIVE</td>
7248 <td align="center">Cancel/<wbr/>reset AF</td>
7251 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7252 <td align="center">AF_<wbr/>TRIGGER</td>
7253 <td align="center">ACTIVE_<wbr/>SCAN</td>
7254 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7257 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7258 <td align="center">AF_<wbr/>CANCEL</td>
7259 <td align="center">INACTIVE</td>
7260 <td align="center">Cancel/<wbr/>reset AF</td>
7263 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7264 <td align="center">AF_<wbr/>TRIGGER</td>
7265 <td align="center">ACTIVE_<wbr/>SCAN</td>
7266 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7269 <td align="center">Any state</td>
7270 <td align="center">Mode change</td>
7271 <td align="center">INACTIVE</td>
7272 <td align="center"></td>
7276 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7277 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7278 can be skipped in that manner is called a transient state.<wbr/></p>
7279 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7280 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7281 one or more transient states between two results.<wbr/> See below table for examples:</p>
7285 <th align="center">State</th>
7286 <th align="center">Transition Cause</th>
7287 <th align="center">New State</th>
7288 <th align="center">Notes</th>
7293 <td align="center">INACTIVE</td>
7294 <td align="center">AF_<wbr/>TRIGGER</td>
7295 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7296 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7299 <td align="center">INACTIVE</td>
7300 <td align="center">AF_<wbr/>TRIGGER</td>
7301 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7302 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7305 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7306 <td align="center">AF_<wbr/>TRIGGER</td>
7307 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7308 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7311 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7312 <td align="center">AF_<wbr/>TRIGGER</td>
7313 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7314 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7318 <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>
7322 <th align="center">State</th>
7323 <th align="center">Transition Cause</th>
7324 <th align="center">New State</th>
7325 <th align="center">Notes</th>
7330 <td align="center">INACTIVE</td>
7331 <td align="center">Camera device initiates new scan</td>
7332 <td align="center">PASSIVE_<wbr/>SCAN</td>
7333 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7336 <td align="center">INACTIVE</td>
7337 <td align="center">AF_<wbr/>TRIGGER</td>
7338 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7339 <td align="center">AF state query,<wbr/> Lens now locked</td>
7342 <td align="center">PASSIVE_<wbr/>SCAN</td>
7343 <td align="center">Camera device completes current scan</td>
7344 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7345 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7348 <td align="center">PASSIVE_<wbr/>SCAN</td>
7349 <td align="center">Camera device fails current scan</td>
7350 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7351 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7354 <td align="center">PASSIVE_<wbr/>SCAN</td>
7355 <td align="center">AF_<wbr/>TRIGGER</td>
7356 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7357 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7360 <td align="center">PASSIVE_<wbr/>SCAN</td>
7361 <td align="center">AF_<wbr/>TRIGGER</td>
7362 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7363 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7366 <td align="center">PASSIVE_<wbr/>SCAN</td>
7367 <td align="center">AF_<wbr/>CANCEL</td>
7368 <td align="center">INACTIVE</td>
7369 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7372 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7373 <td align="center">Camera device initiates new scan</td>
7374 <td align="center">PASSIVE_<wbr/>SCAN</td>
7375 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7378 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7379 <td align="center">Camera device initiates new scan</td>
7380 <td align="center">PASSIVE_<wbr/>SCAN</td>
7381 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7384 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7385 <td align="center">AF_<wbr/>TRIGGER</td>
7386 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7387 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7390 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7391 <td align="center">AF_<wbr/>TRIGGER</td>
7392 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7393 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7396 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7397 <td align="center">AF_<wbr/>TRIGGER</td>
7398 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7399 <td align="center">No effect</td>
7402 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7403 <td align="center">AF_<wbr/>CANCEL</td>
7404 <td align="center">INACTIVE</td>
7405 <td align="center">Restart AF scan</td>
7408 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7409 <td align="center">AF_<wbr/>TRIGGER</td>
7410 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7411 <td align="center">No effect</td>
7414 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7415 <td align="center">AF_<wbr/>CANCEL</td>
7416 <td align="center">INACTIVE</td>
7417 <td align="center">Restart AF scan</td>
7421 <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>
7425 <th align="center">State</th>
7426 <th align="center">Transition Cause</th>
7427 <th align="center">New State</th>
7428 <th align="center">Notes</th>
7433 <td align="center">INACTIVE</td>
7434 <td align="center">Camera device initiates new scan</td>
7435 <td align="center">PASSIVE_<wbr/>SCAN</td>
7436 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7439 <td align="center">INACTIVE</td>
7440 <td align="center">AF_<wbr/>TRIGGER</td>
7441 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7442 <td align="center">AF state query,<wbr/> Lens now locked</td>
7445 <td align="center">PASSIVE_<wbr/>SCAN</td>
7446 <td align="center">Camera device completes current scan</td>
7447 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7448 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7451 <td align="center">PASSIVE_<wbr/>SCAN</td>
7452 <td align="center">Camera device fails current scan</td>
7453 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7454 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7457 <td align="center">PASSIVE_<wbr/>SCAN</td>
7458 <td align="center">AF_<wbr/>TRIGGER</td>
7459 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7460 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7463 <td align="center">PASSIVE_<wbr/>SCAN</td>
7464 <td align="center">AF_<wbr/>TRIGGER</td>
7465 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7466 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7469 <td align="center">PASSIVE_<wbr/>SCAN</td>
7470 <td align="center">AF_<wbr/>CANCEL</td>
7471 <td align="center">INACTIVE</td>
7472 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7475 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7476 <td align="center">Camera device initiates new scan</td>
7477 <td align="center">PASSIVE_<wbr/>SCAN</td>
7478 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7481 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7482 <td align="center">Camera device initiates new scan</td>
7483 <td align="center">PASSIVE_<wbr/>SCAN</td>
7484 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7487 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7488 <td align="center">AF_<wbr/>TRIGGER</td>
7489 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7490 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7493 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7494 <td align="center">AF_<wbr/>TRIGGER</td>
7495 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7496 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7499 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7500 <td align="center">AF_<wbr/>TRIGGER</td>
7501 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7502 <td align="center">No effect</td>
7505 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7506 <td align="center">AF_<wbr/>CANCEL</td>
7507 <td align="center">INACTIVE</td>
7508 <td align="center">Restart AF scan</td>
7511 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7512 <td align="center">AF_<wbr/>TRIGGER</td>
7513 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7514 <td align="center">No effect</td>
7517 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7518 <td align="center">AF_<wbr/>CANCEL</td>
7519 <td align="center">INACTIVE</td>
7520 <td align="center">Restart AF scan</td>
7524 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7525 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7526 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7527 will be evaluated in the context of the new mode in the request.<wbr/>
7528 See below table for examples:</p>
7532 <th align="center">State</th>
7533 <th align="center">Transition Cause</th>
7534 <th align="center">New State</th>
7535 <th align="center">Notes</th>
7540 <td align="center">any state</td>
7541 <td align="center">CAF-->AUTO mode switch</td>
7542 <td align="center">INACTIVE</td>
7543 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7546 <td align="center">any state</td>
7547 <td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td>
7548 <td align="center">trigger-reachable states from INACTIVE</td>
7549 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7552 <td align="center">any state</td>
7553 <td align="center">AUTO-->CAF mode switch</td>
7554 <td align="center">passively reachable states from INACTIVE</td>
7555 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7563 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7564 <!-- end of entry -->
7567 <tr class="entry" id="dynamic_android.control.afTriggerId">
7568 <td class="entry_name
7569 entry_name_deprecated
7571 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7573 <td class="entry_type">
7574 <span class="entry_type_name">int32</span>
7576 <span class="entry_type_visibility"> [system]</span>
7580 <span class="entry_type_deprecated">[deprecated] </span>
7584 </td> <!-- entry_type -->
7586 <td class="entry_description">
7587 <p>The ID sent with the latest
7588 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7591 <td class="entry_units">
7594 <td class="entry_range">
7595 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7598 <td class="entry_tags">
7602 <tr class="entries_header">
7603 <th class="th_details" colspan="5">Details</th>
7605 <tr class="entry_cont">
7606 <td class="entry_details" colspan="5">
7607 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7608 received yet by HAL.<wbr/> Always updated even if AF algorithm
7609 ignores the trigger</p>
7614 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7615 <!-- end of entry -->
7618 <tr class="entry" id="dynamic_android.control.awbLock">
7619 <td class="entry_name
7621 android.<wbr/>control.<wbr/>awb<wbr/>Lock
7623 <td class="entry_type">
7624 <span class="entry_type_name entry_type_name_enum">byte</span>
7626 <span class="entry_type_visibility"> [public as boolean]</span>
7629 <span class="entry_type_hwlevel">[legacy] </span>
7633 <ul class="entry_type_enum">
7635 <span class="entry_type_enum_name">OFF</span>
7636 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7637 algorithm is free to update its parameters if in AUTO
7638 mode.<wbr/></p></span>
7641 <span class="entry_type_enum_name">ON</span>
7642 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7643 algorithm will not update its parameters while the lock
7644 is active.<wbr/></p></span>
7648 </td> <!-- entry_type -->
7650 <td class="entry_description">
7651 <p>Whether auto-white balance (AWB) is currently locked to its
7652 latest calculated values.<wbr/></p>
7655 <td class="entry_units">
7658 <td class="entry_range">
7661 <td class="entry_tags">
7662 <ul class="entry_tags">
7663 <li><a href="#tag_BC">BC</a></li>
7668 <tr class="entries_header">
7669 <th class="th_details" colspan="5">Details</th>
7671 <tr class="entry_cont">
7672 <td class="entry_details" colspan="5">
7673 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7674 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7675 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7676 get locked do not necessarily correspond to the settings that were present in the
7677 latest capture result received from the camera device,<wbr/> since additional captures
7678 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7679 application is switching between automatic and manual control and wishes to eliminate
7680 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7682 <li>Starting in auto-AWB mode:</li>
7684 <li>Wait for the first result to be output that has the AWB locked</li>
7685 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7686 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7688 <p>Note that AWB lock is only meaningful when
7689 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7690 AWB is already fixed to a specific setting.<wbr/></p>
7691 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7696 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7697 <!-- end of entry -->
7700 <tr class="entry" id="dynamic_android.control.awbMode">
7701 <td class="entry_name
7703 android.<wbr/>control.<wbr/>awb<wbr/>Mode
7705 <td class="entry_type">
7706 <span class="entry_type_name entry_type_name_enum">byte</span>
7708 <span class="entry_type_visibility"> [public]</span>
7711 <span class="entry_type_hwlevel">[legacy] </span>
7715 <ul class="entry_type_enum">
7717 <span class="entry_type_enum_name">OFF</span>
7718 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7719 <p>The application-selected color transform matrix
7720 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7721 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7722 device for manual white balance control.<wbr/></p></span>
7725 <span class="entry_type_enum_name">AUTO</span>
7726 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7727 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7728 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7729 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7730 values used by the camera device for the transform and gains
7731 will be available in the capture result for this request.<wbr/></p></span>
7734 <span class="entry_type_enum_name">INCANDESCENT</span>
7735 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7736 the camera device uses incandescent light as the assumed scene
7737 illumination for white balance.<wbr/></p>
7738 <p>While the exact white balance transforms are up to the
7739 camera device,<wbr/> they will approximately match the CIE
7740 standard illuminant A.<wbr/></p>
7741 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7742 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7743 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7744 values used by the camera device for the transform and gains
7745 will be available in the capture result for this request.<wbr/></p></span>
7748 <span class="entry_type_enum_name">FLUORESCENT</span>
7749 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7750 the camera device uses fluorescent light as the assumed scene
7751 illumination for white balance.<wbr/></p>
7752 <p>While the exact white balance transforms are up to the
7753 camera device,<wbr/> they will approximately match the CIE
7754 standard illuminant F2.<wbr/></p>
7755 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7756 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7757 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7758 values used by the camera device for the transform and gains
7759 will be available in the capture result for this request.<wbr/></p></span>
7762 <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
7763 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7764 the camera device uses warm fluorescent light as the assumed scene
7765 illumination for white balance.<wbr/></p>
7766 <p>While the exact white balance transforms are up to the
7767 camera device,<wbr/> they will approximately match the CIE
7768 standard illuminant F4.<wbr/></p>
7769 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7770 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7771 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7772 values used by the camera device for the transform and gains
7773 will be available in the capture result for this request.<wbr/></p></span>
7776 <span class="entry_type_enum_name">DAYLIGHT</span>
7777 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7778 the camera device uses daylight light as the assumed scene
7779 illumination for white balance.<wbr/></p>
7780 <p>While the exact white balance transforms are up to the
7781 camera device,<wbr/> they will approximately match the CIE
7782 standard illuminant D65.<wbr/></p>
7783 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7784 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7785 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7786 values used by the camera device for the transform and gains
7787 will be available in the capture result for this request.<wbr/></p></span>
7790 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
7791 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7792 the camera device uses cloudy daylight light as the assumed scene
7793 illumination for white balance.<wbr/></p>
7794 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7795 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7796 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7797 values used by the camera device for the transform and gains
7798 will be available in the capture result for this request.<wbr/></p></span>
7801 <span class="entry_type_enum_name">TWILIGHT</span>
7802 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7803 the camera device uses twilight light as the assumed scene
7804 illumination for white balance.<wbr/></p>
7805 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7806 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7807 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7808 values used by the camera device for the transform and gains
7809 will be available in the capture result for this request.<wbr/></p></span>
7812 <span class="entry_type_enum_name">SHADE</span>
7813 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7814 the camera device uses shade light as the assumed scene
7815 illumination for white balance.<wbr/></p>
7816 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7817 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7818 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7819 values used by the camera device for the transform and gains
7820 will be available in the capture result for this request.<wbr/></p></span>
7824 </td> <!-- entry_type -->
7826 <td class="entry_description">
7827 <p>Whether auto-white balance (AWB) is currently setting the color
7828 transform fields,<wbr/> and what its illumination target
7832 <td class="entry_units">
7835 <td class="entry_range">
7836 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
7839 <td class="entry_tags">
7840 <ul class="entry_tags">
7841 <li><a href="#tag_BC">BC</a></li>
7846 <tr class="entries_header">
7847 <th class="th_details" colspan="5">Details</th>
7849 <tr class="entry_cont">
7850 <td class="entry_details" colspan="5">
7851 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
7852 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
7853 routine is enabled,<wbr/> overriding the application's selected
7854 <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
7855 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
7856 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
7857 also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before
7858 setting AE mode to OFF.<wbr/></p>
7859 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
7860 routine is disabled.<wbr/> The application manually controls the white
7861 balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>
7862 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
7863 <p>When set to any other modes,<wbr/> the camera device's auto-white
7864 balance routine is disabled.<wbr/> The camera device uses each
7865 particular illumination target for white balance
7866 adjustment.<wbr/> The application's values for
7867 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
7868 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
7869 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
7874 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7875 <!-- end of entry -->
7878 <tr class="entry" id="dynamic_android.control.awbRegions">
7879 <td class="entry_name
7881 android.<wbr/>control.<wbr/>awb<wbr/>Regions
7883 <td class="entry_type">
7884 <span class="entry_type_name">int32</span>
7885 <span class="entry_type_container">x</span>
7887 <span class="entry_type_array">
7890 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7897 </td> <!-- entry_type -->
7899 <td class="entry_description">
7900 <p>List of metering areas to use for auto-white-balance illuminant
7901 estimation.<wbr/></p>
7904 <td class="entry_units">
7905 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7908 <td class="entry_range">
7909 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7910 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7913 <td class="entry_tags">
7914 <ul class="entry_tags">
7915 <li><a href="#tag_BC">BC</a></li>
7920 <tr class="entries_header">
7921 <th class="th_details" colspan="5">Details</th>
7923 <tr class="entry_cont">
7924 <td class="entry_details" colspan="5">
7925 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
7926 Otherwise will always be present.<wbr/></p>
7927 <p>The maximum number of regions supported by the device is determined by the value
7928 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
7929 <p>The coordinate system is based on the active pixel array,<wbr/>
7930 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7931 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7932 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7933 bottom-right pixel in the active pixel array.<wbr/></p>
7934 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
7935 for every pixel in the area.<wbr/> This means that a large metering area
7936 with the same weight as a smaller area will have more effect in
7937 the metering result.<wbr/> Metering areas can partially overlap and the
7938 camera device will add the weights in the overlap region.<wbr/></p>
7939 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
7940 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
7941 0 weight is ignored.<wbr/></p>
7942 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7943 camera device.<wbr/></p>
7944 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
7945 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7946 region and output only the intersection rectangle as the metering region in the result
7947 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7948 not reported in the result metadata.<wbr/></p>
7952 <tr class="entries_header">
7953 <th class="th_details" colspan="5">HAL Implementation Details</th>
7955 <tr class="entry_cont">
7956 <td class="entry_details" colspan="5">
7957 <p>The HAL level representation of MeteringRectangle[] is a
7958 int[5 * area_<wbr/>count].<wbr/>
7959 Every five elements represent a metering region of
7960 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7961 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7962 exclusive on xmax and ymax.<wbr/></p>
7966 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7967 <!-- end of entry -->
7970 <tr class="entry" id="dynamic_android.control.captureIntent">
7971 <td class="entry_name
7973 android.<wbr/>control.<wbr/>capture<wbr/>Intent
7975 <td class="entry_type">
7976 <span class="entry_type_name entry_type_name_enum">byte</span>
7978 <span class="entry_type_visibility"> [public]</span>
7981 <span class="entry_type_hwlevel">[legacy] </span>
7985 <ul class="entry_type_enum">
7987 <span class="entry_type_enum_name">CUSTOM</span>
7988 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
7989 categories.<wbr/> The camera device will default to preview-like
7990 behavior.<wbr/></p></span>
7993 <span class="entry_type_enum_name">PREVIEW</span>
7994 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
7995 <p>The precapture trigger may be used to start off a metering
7996 w/<wbr/>flash sequence.<wbr/></p></span>
7999 <span class="entry_type_enum_name">STILL_CAPTURE</span>
8000 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8002 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8005 <span class="entry_type_enum_name">VIDEO_RECORD</span>
8006 <span class="entry_type_enum_notes"><p>This request is for a video recording
8007 use case.<wbr/></p></span>
8010 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
8011 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8012 image while recording video) use case.<wbr/></p>
8013 <p>The camera device should take the highest-quality image
8014 possible (given the other settings) without disrupting the
8015 frame rate of video recording.<wbr/> </p></span>
8018 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
8019 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8020 application will stream full-resolution images and
8021 reprocess one or several later for a final
8022 capture.<wbr/></p></span>
8025 <span class="entry_type_enum_name">MANUAL</span>
8026 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8027 the applications want to directly control the capture parameters.<wbr/></p>
8028 <p>For example,<wbr/> the application may wish to manually control
8029 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> etc.<wbr/></p></span>
8033 </td> <!-- entry_type -->
8035 <td class="entry_description">
8036 <p>Information to the camera device 3A (auto-exposure,<wbr/>
8037 auto-focus,<wbr/> auto-white balance) routines about the purpose
8038 of this capture,<wbr/> to help the camera device to decide optimal 3A
8042 <td class="entry_units">
8045 <td class="entry_range">
8048 <td class="entry_tags">
8049 <ul class="entry_tags">
8050 <li><a href="#tag_BC">BC</a></li>
8055 <tr class="entries_header">
8056 <th class="th_details" colspan="5">Details</th>
8058 <tr class="entry_cont">
8059 <td class="entry_details" colspan="5">
8060 <p>This control (except for MANUAL) is only effective if
8061 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8062 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
8063 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
8064 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
8065 always supported.<wbr/></p>
8070 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8071 <!-- end of entry -->
8074 <tr class="entry" id="dynamic_android.control.awbState">
8075 <td class="entry_name
8077 android.<wbr/>control.<wbr/>awb<wbr/>State
8079 <td class="entry_type">
8080 <span class="entry_type_name entry_type_name_enum">byte</span>
8082 <span class="entry_type_visibility"> [public]</span>
8085 <span class="entry_type_hwlevel">[limited] </span>
8089 <ul class="entry_type_enum">
8091 <span class="entry_type_enum_name">INACTIVE</span>
8092 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8093 <p>When a camera device is opened,<wbr/> it starts in this
8094 state.<wbr/> This is a transient state,<wbr/> the camera device may
8095 skip reporting this state in capture
8096 result.<wbr/></p></span>
8099 <span class="entry_type_enum_name">SEARCHING</span>
8100 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8101 values for the current scene.<wbr/></p>
8102 <p>This is a transient state,<wbr/> the camera device
8103 may skip reporting this state in capture result.<wbr/></p></span>
8106 <span class="entry_type_enum_name">CONVERGED</span>
8107 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8108 current scene.<wbr/></p></span>
8111 <span class="entry_type_enum_name">LOCKED</span>
8112 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8116 </td> <!-- entry_type -->
8118 <td class="entry_description">
8119 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8122 <td class="entry_units">
8125 <td class="entry_range">
8128 <td class="entry_tags">
8132 <tr class="entries_header">
8133 <th class="th_details" colspan="5">Details</th>
8135 <tr class="entry_cont">
8136 <td class="entry_details" colspan="5">
8137 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8138 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8139 or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all
8140 the algorithm states to INACTIVE.<wbr/></p>
8141 <p>The camera device can do several state transitions between two results,<wbr/> if it is
8142 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8144 <p>The state in the result is the state for this image (in sync with this image): if
8145 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8146 be good to use.<wbr/></p>
8147 <p>Below are state transition tables for different AWB modes.<wbr/></p>
8148 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8152 <th align="center">State</th>
8153 <th align="center">Transition Cause</th>
8154 <th align="center">New State</th>
8155 <th align="center">Notes</th>
8160 <td align="center">INACTIVE</td>
8161 <td align="center"></td>
8162 <td align="center">INACTIVE</td>
8163 <td align="center">Camera device auto white balance algorithm is disabled</td>
8167 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8171 <th align="center">State</th>
8172 <th align="center">Transition Cause</th>
8173 <th align="center">New State</th>
8174 <th align="center">Notes</th>
8179 <td align="center">INACTIVE</td>
8180 <td align="center">Camera device initiates AWB scan</td>
8181 <td align="center">SEARCHING</td>
8182 <td align="center">Values changing</td>
8185 <td align="center">INACTIVE</td>
8186 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8187 <td align="center">LOCKED</td>
8188 <td align="center">Values locked</td>
8191 <td align="center">SEARCHING</td>
8192 <td align="center">Camera device finishes AWB scan</td>
8193 <td align="center">CONVERGED</td>
8194 <td align="center">Good values,<wbr/> not changing</td>
8197 <td align="center">SEARCHING</td>
8198 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8199 <td align="center">LOCKED</td>
8200 <td align="center">Values locked</td>
8203 <td align="center">CONVERGED</td>
8204 <td align="center">Camera device initiates AWB scan</td>
8205 <td align="center">SEARCHING</td>
8206 <td align="center">Values changing</td>
8209 <td align="center">CONVERGED</td>
8210 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8211 <td align="center">LOCKED</td>
8212 <td align="center">Values locked</td>
8215 <td align="center">LOCKED</td>
8216 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8217 <td align="center">SEARCHING</td>
8218 <td align="center">Values not good after unlock</td>
8222 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8223 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8224 can be skipped in that manner is called a transient state.<wbr/></p>
8225 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8226 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8227 transient states between two results.<wbr/> See below table for examples:</p>
8231 <th align="center">State</th>
8232 <th align="center">Transition Cause</th>
8233 <th align="center">New State</th>
8234 <th align="center">Notes</th>
8239 <td align="center">INACTIVE</td>
8240 <td align="center">Camera device finished AWB scan</td>
8241 <td align="center">CONVERGED</td>
8242 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8245 <td align="center">LOCKED</td>
8246 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8247 <td align="center">CONVERGED</td>
8248 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8256 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8257 <!-- end of entry -->
8260 <tr class="entry" id="dynamic_android.control.effectMode">
8261 <td class="entry_name
8263 android.<wbr/>control.<wbr/>effect<wbr/>Mode
8265 <td class="entry_type">
8266 <span class="entry_type_name entry_type_name_enum">byte</span>
8268 <span class="entry_type_visibility"> [public]</span>
8271 <span class="entry_type_hwlevel">[legacy] </span>
8275 <ul class="entry_type_enum">
8277 <span class="entry_type_enum_name">OFF</span>
8278 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8281 <span class="entry_type_enum_name">MONO</span>
8282 <span class="entry_type_enum_optional">[optional]</span>
8283 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8284 a single color.<wbr/></p>
8285 <p>This will typically be grayscale.<wbr/></p></span>
8288 <span class="entry_type_enum_name">NEGATIVE</span>
8289 <span class="entry_type_enum_optional">[optional]</span>
8290 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8291 are inverted.<wbr/></p></span>
8294 <span class="entry_type_enum_name">SOLARIZE</span>
8295 <span class="entry_type_enum_optional">[optional]</span>
8296 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8297 image is wholly or partially reversed in
8298 tone.<wbr/></p></span>
8301 <span class="entry_type_enum_name">SEPIA</span>
8302 <span class="entry_type_enum_optional">[optional]</span>
8303 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8304 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8307 <span class="entry_type_enum_name">POSTERIZE</span>
8308 <span class="entry_type_enum_optional">[optional]</span>
8309 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8310 discrete regions of tone rather than a continuous
8311 gradient of tones.<wbr/></p></span>
8314 <span class="entry_type_enum_name">WHITEBOARD</span>
8315 <span class="entry_type_enum_optional">[optional]</span>
8316 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8317 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8320 <span class="entry_type_enum_name">BLACKBOARD</span>
8321 <span class="entry_type_enum_optional">[optional]</span>
8322 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8323 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8326 <span class="entry_type_enum_name">AQUA</span>
8327 <span class="entry_type_enum_optional">[optional]</span>
8328 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8332 </td> <!-- entry_type -->
8334 <td class="entry_description">
8335 <p>A special color effect to apply.<wbr/></p>
8338 <td class="entry_units">
8341 <td class="entry_range">
8342 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8345 <td class="entry_tags">
8346 <ul class="entry_tags">
8347 <li><a href="#tag_BC">BC</a></li>
8352 <tr class="entries_header">
8353 <th class="th_details" colspan="5">Details</th>
8355 <tr class="entry_cont">
8356 <td class="entry_details" colspan="5">
8357 <p>When this mode is set,<wbr/> a color effect will be applied
8358 to images produced by the camera device.<wbr/> The interpretation
8359 and implementation of these color effects is left to the
8360 implementor of the camera device,<wbr/> and should not be
8361 depended on to be consistent (or present) across all
8367 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8368 <!-- end of entry -->
8371 <tr class="entry" id="dynamic_android.control.mode">
8372 <td class="entry_name
8374 android.<wbr/>control.<wbr/>mode
8376 <td class="entry_type">
8377 <span class="entry_type_name entry_type_name_enum">byte</span>
8379 <span class="entry_type_visibility"> [public]</span>
8382 <span class="entry_type_hwlevel">[legacy] </span>
8386 <ul class="entry_type_enum">
8388 <span class="entry_type_enum_name">OFF</span>
8389 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8390 <p>All control by the device's metering and focusing (3A)
8391 routines is disabled,<wbr/> and no other settings in
8392 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8393 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8394 device to select post-processing values for processing
8395 blocks that do not allow for manual control,<wbr/> or are not
8396 exposed by the camera API.<wbr/></p>
8397 <p>However,<wbr/> the camera device's 3A routines may continue to
8398 collect statistics and update their internal state so that
8399 when control is switched to AUTO mode,<wbr/> good control values
8400 can be immediately applied.<wbr/></p></span>
8403 <span class="entry_type_enum_name">AUTO</span>
8404 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8405 <p>Manual control of capture parameters is disabled.<wbr/> All
8406 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8407 effect.<wbr/></p></span>
8410 <span class="entry_type_enum_name">USE_SCENE_MODE</span>
8411 <span class="entry_type_enum_optional">[optional]</span>
8412 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8413 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8414 control.<wbr/>afMode controls; the camera device will ignore
8415 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8416 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8417 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8418 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8419 contain some modes other than DISABLED).<wbr/></p></span>
8422 <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
8423 <span class="entry_type_enum_optional">[optional]</span>
8424 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8425 used by camera device background auto-exposure,<wbr/> auto-white balance and
8426 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8427 <p>Specifically,<wbr/> the 3A routines are locked to the last
8428 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8429 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8430 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8431 discarded by the camera device.<wbr/></p></span>
8435 </td> <!-- entry_type -->
8437 <td class="entry_description">
8438 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8442 <td class="entry_units">
8445 <td class="entry_range">
8446 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8449 <td class="entry_tags">
8450 <ul class="entry_tags">
8451 <li><a href="#tag_BC">BC</a></li>
8456 <tr class="entries_header">
8457 <th class="th_details" colspan="5">Details</th>
8459 <tr class="entry_cont">
8460 <td class="entry_details" colspan="5">
8461 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8462 by the camera device is disabled.<wbr/> The application must set the fields for
8463 capture parameters itself.<wbr/></p>
8464 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8465 android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p>
8466 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8467 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
8468 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
8469 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
8470 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8471 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8472 is that this frame will not be used by camera device background 3A statistics
8473 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8474 where the application doesn't want a 3A manual control capture to affect
8475 the subsequent auto 3A capture results.<wbr/></p>
8480 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8481 <!-- end of entry -->
8484 <tr class="entry" id="dynamic_android.control.sceneMode">
8485 <td class="entry_name
8487 android.<wbr/>control.<wbr/>scene<wbr/>Mode
8489 <td class="entry_type">
8490 <span class="entry_type_name entry_type_name_enum">byte</span>
8492 <span class="entry_type_visibility"> [public]</span>
8495 <span class="entry_type_hwlevel">[legacy] </span>
8499 <ul class="entry_type_enum">
8501 <span class="entry_type_enum_name">DISABLED</span>
8502 <span class="entry_type_enum_value">0</span>
8503 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8506 <span class="entry_type_enum_name">FACE_PRIORITY</span>
8507 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8508 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8509 auto-exposure routines.<wbr/></p>
8510 <p>If face detection statistics are disabled
8511 (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/>
8512 this should still operate correctly (but will not return
8513 face detection statistics to the framework).<wbr/></p>
8514 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8515 <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>
8516 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8519 <span class="entry_type_enum_name">ACTION</span>
8520 <span class="entry_type_enum_optional">[optional]</span>
8521 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8522 <p>Similar to SPORTS.<wbr/></p></span>
8525 <span class="entry_type_enum_name">PORTRAIT</span>
8526 <span class="entry_type_enum_optional">[optional]</span>
8527 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8530 <span class="entry_type_enum_name">LANDSCAPE</span>
8531 <span class="entry_type_enum_optional">[optional]</span>
8532 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8535 <span class="entry_type_enum_name">NIGHT</span>
8536 <span class="entry_type_enum_optional">[optional]</span>
8537 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8540 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
8541 <span class="entry_type_enum_optional">[optional]</span>
8542 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8543 settings.<wbr/></p></span>
8546 <span class="entry_type_enum_name">THEATRE</span>
8547 <span class="entry_type_enum_optional">[optional]</span>
8548 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8549 remain off.<wbr/></p></span>
8552 <span class="entry_type_enum_name">BEACH</span>
8553 <span class="entry_type_enum_optional">[optional]</span>
8554 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8557 <span class="entry_type_enum_name">SNOW</span>
8558 <span class="entry_type_enum_optional">[optional]</span>
8559 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8562 <span class="entry_type_enum_name">SUNSET</span>
8563 <span class="entry_type_enum_optional">[optional]</span>
8564 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8567 <span class="entry_type_enum_name">STEADYPHOTO</span>
8568 <span class="entry_type_enum_optional">[optional]</span>
8569 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8570 device motion (for example: due to hand shake).<wbr/></p></span>
8573 <span class="entry_type_enum_name">FIREWORKS</span>
8574 <span class="entry_type_enum_optional">[optional]</span>
8575 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8578 <span class="entry_type_enum_name">SPORTS</span>
8579 <span class="entry_type_enum_optional">[optional]</span>
8580 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8581 <p>Similar to ACTION.<wbr/></p></span>
8584 <span class="entry_type_enum_name">PARTY</span>
8585 <span class="entry_type_enum_optional">[optional]</span>
8586 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8587 people.<wbr/></p></span>
8590 <span class="entry_type_enum_name">CANDLELIGHT</span>
8591 <span class="entry_type_enum_optional">[optional]</span>
8592 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8593 is a flame.<wbr/></p></span>
8596 <span class="entry_type_enum_name">BARCODE</span>
8597 <span class="entry_type_enum_optional">[optional]</span>
8598 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8599 for use by camera applications that wish to read the
8600 barcode value.<wbr/></p></span>
8603 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
8604 <span class="entry_type_enum_deprecated">[deprecated]</span>
8605 <span class="entry_type_enum_optional">[optional]</span>
8606 <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
8607 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8608 for high speed video recording.<wbr/></p>
8609 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p>
8610 <p>The supported high speed video sizes and fps ranges are specified in
8611 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8612 output frame rates,<wbr/> the application is only allowed to select video size
8613 and fps range combinations listed in this static metadata.<wbr/> The fps range
8614 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8615 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8616 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8617 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8618 and post-processing parameters is possible.<wbr/> All other controls operate the
8619 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8620 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8622 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8623 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8624 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8625 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8626 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8627 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8628 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8629 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8630 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8631 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8633 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8635 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (automatic flash for still capture will not work since aeMode is ON)</li>
8636 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8637 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8638 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8640 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8641 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8642 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8643 the application need check if the video encoder is capable of supporting the
8644 high frame rate for a given video size,<wbr/> or it will end up with lower recording
8645 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8646 rate will be bounded by the screen refresh rate.<wbr/></p>
8647 <p>The camera device will only support up to 2 output high speed streams
8648 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8649 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8651 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8652 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8653 min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li>
8654 <li>The stream sizes are selected from the sizes reported by
8655 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8656 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
8658 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8659 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> will be ignored by the camera device,<wbr/>
8660 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8661 and the returned capture result metadata will give the fps range choosen
8662 by the camera device.<wbr/></p>
8663 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8664 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8665 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8668 <span class="entry_type_enum_name">HDR</span>
8669 <span class="entry_type_enum_optional">[optional]</span>
8670 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8671 <p>In this scene mode,<wbr/> the camera device captures images
8672 that keep a larger range of scene illumination levels
8673 visible in the final image.<wbr/> For example,<wbr/> when taking a
8674 picture of a object in front of a bright window,<wbr/> both
8675 the object and the scene through the window may be
8676 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8677 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8678 HDR mode generally takes much longer to capture a single
8679 image,<wbr/> has no user control,<wbr/> and may have other artifacts
8680 depending on the HDR method used.<wbr/></p>
8681 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
8682 than regular captures.<wbr/></p>
8683 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8684 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8685 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8686 using a high dynamic range capture technique.<wbr/> On LEGACY
8687 devices,<wbr/> captures that target a JPEG-format output will
8688 be captured with HDR,<wbr/> and the capture intent is not
8690 <p>The HDR capture may involve the device capturing a burst
8691 of images internally and combining them into one,<wbr/> or it
8692 may involve the device using specialized high dynamic
8693 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8694 produced in response to a capture request submitted
8695 while in HDR mode.<wbr/></p>
8696 <p>Since substantial post-processing is generally needed to
8697 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
8698 outputs are supported for LIMITED/<wbr/>FULL device HDR
8699 captures,<wbr/> and only JPEG outputs are supported for LEGACY
8700 HDR captures.<wbr/> Using a RAW output for HDR capture is not
8701 supported.<wbr/></p>
8702 <p>Some devices may also support always-on HDR,<wbr/> which
8703 applies HDR processing at full frame rate.<wbr/> For these
8704 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
8705 produce an HDR output with no frame rate impact compared
8706 to normal operation,<wbr/> though the quality may be lower
8707 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
8708 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
8709 or capture intents,<wbr/> the images captured will be as if
8710 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
8713 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
8714 <span class="entry_type_enum_optional">[optional]</span>
8715 <span class="entry_type_enum_hidden">[hidden]</span>
8716 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
8717 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
8718 under low light conditions.<wbr/></p>
8719 <p>The camera device may be tuned to expose the images in a reduced
8720 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
8721 if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/>
8722 the camera device auto-exposure routine tuning process may limit the actual
8723 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
8724 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
8725 low light may be under-exposed when the sensor max exposure time (bounded by the
8726 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the
8727 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
8728 camera device auto-exposure routine to increase the sensitivity up to the max
8729 sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
8730 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
8731 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
8732 recommended that the application only use this scene mode when it is capable of
8733 reducing the noise level of the captured images.<wbr/></p>
8734 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8735 <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>
8736 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
8739 <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
8740 <span class="entry_type_enum_optional">[optional]</span>
8741 <span class="entry_type_enum_hidden">[hidden]</span>
8742 <span class="entry_type_enum_value">100</span>
8743 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
8744 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
8745 customized scene modes.<wbr/></p></span>
8748 <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
8749 <span class="entry_type_enum_optional">[optional]</span>
8750 <span class="entry_type_enum_hidden">[hidden]</span>
8751 <span class="entry_type_enum_value">127</span>
8752 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
8753 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
8754 customized scene modes.<wbr/></p></span>
8758 </td> <!-- entry_type -->
8760 <td class="entry_description">
8761 <p>Control for which scene mode is currently active.<wbr/></p>
8764 <td class="entry_units">
8767 <td class="entry_range">
8768 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
8771 <td class="entry_tags">
8772 <ul class="entry_tags">
8773 <li><a href="#tag_BC">BC</a></li>
8778 <tr class="entries_header">
8779 <th class="th_details" colspan="5">Details</th>
8781 <tr class="entry_cont">
8782 <td class="entry_details" colspan="5">
8783 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
8784 capture settings.<wbr/></p>
8785 <p>This is the mode that that is active when
8786 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will
8787 disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
8788 while in use.<wbr/></p>
8789 <p>The interpretation and implementation of these scene modes is left
8790 to the implementor of the camera device.<wbr/> Their behavior will not be
8791 consistent across all devices,<wbr/> and any given device may only implement
8792 a subset of these modes.<wbr/></p>
8796 <tr class="entries_header">
8797 <th class="th_details" colspan="5">HAL Implementation Details</th>
8799 <tr class="entry_cont">
8800 <td class="entry_details" colspan="5">
8801 <p>HAL implementations that include scene modes are expected to provide
8802 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8803 <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
8804 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
8805 <p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/>
8806 the HAL must list supported video size and fps range in
8807 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/>
8808 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
8809 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
8810 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
8811 This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
8812 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
8813 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
8817 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8818 <!-- end of entry -->
8821 <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
8822 <td class="entry_name
8824 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
8826 <td class="entry_type">
8827 <span class="entry_type_name entry_type_name_enum">byte</span>
8829 <span class="entry_type_visibility"> [public]</span>
8832 <span class="entry_type_hwlevel">[legacy] </span>
8836 <ul class="entry_type_enum">
8838 <span class="entry_type_enum_name">OFF</span>
8839 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
8842 <span class="entry_type_enum_name">ON</span>
8843 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
8847 </td> <!-- entry_type -->
8849 <td class="entry_description">
8850 <p>Whether video stabilization is
8854 <td class="entry_units">
8857 <td class="entry_range">
8860 <td class="entry_tags">
8861 <ul class="entry_tags">
8862 <li><a href="#tag_BC">BC</a></li>
8867 <tr class="entries_header">
8868 <th class="th_details" colspan="5">Details</th>
8870 <tr class="entry_cont">
8871 <td class="entry_details" colspan="5">
8872 <p>Video stabilization automatically warps images from
8873 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
8874 <p>If enabled,<wbr/> video stabilization can modify the
8875 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
8876 <p>Switching between different video stabilization modes may take several
8877 frames to initialize,<wbr/> the camera device will report the current mode
8878 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
8879 the video stabilization modes in the first several capture results may
8880 still be "OFF",<wbr/> and it will become "ON" when the initialization is
8882 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
8883 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
8884 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
8885 the recording resolution is less than or equal to 1920 x 1080 (width less than
8886 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
8887 frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
8888 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
8889 OFF if the recording output is not stabilized,<wbr/> or if there are no output
8890 Surface types that can be stabilized.<wbr/></p>
8891 <p>If a camera device supports both this mode and OIS
8892 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
8893 produce undesirable interaction,<wbr/> so it is recommended not to enable
8894 both at the same time.<wbr/></p>
8899 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8900 <!-- end of entry -->
8903 <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
8904 <td class="entry_name
8906 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
8908 <td class="entry_type">
8909 <span class="entry_type_name">int32</span>
8911 <span class="entry_type_visibility"> [public]</span>
8918 </td> <!-- entry_type -->
8920 <td class="entry_description">
8921 <p>The amount of additional sensitivity boost applied to output images
8922 after RAW sensor data is captured.<wbr/></p>
8925 <td class="entry_units">
8926 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
8929 <td class="entry_range">
8930 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
8933 <td class="entry_tags">
8937 <tr class="entries_header">
8938 <th class="th_details" colspan="5">Details</th>
8940 <tr class="entry_cont">
8941 <td class="entry_details" colspan="5">
8942 <p>Some camera devices support additional digital sensitivity boosting in the
8943 camera processing pipeline after sensor RAW image is captured.<wbr/>
8944 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
8945 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
8946 <p>This key will be <code>null</code> for devices that do not support any RAW format
8947 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
8948 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
8949 list <code>100</code> in this key.<wbr/></p>
8950 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
8951 boost to the nearest supported value.<wbr/>
8952 The final boost value used will be available in the output capture result.<wbr/></p>
8953 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
8954 of such device will have the total sensitivity of
8955 <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code>
8956 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
8957 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
8958 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
8963 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8964 <!-- end of entry -->
8967 <tr class="entry" id="dynamic_android.control.enableZsl">
8968 <td class="entry_name
8970 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
8972 <td class="entry_type">
8973 <span class="entry_type_name entry_type_name_enum">byte</span>
8975 <span class="entry_type_visibility"> [public as boolean]</span>
8981 <ul class="entry_type_enum">
8983 <span class="entry_type_enum_name">FALSE</span>
8984 <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE must be captured
8985 after previous requests.<wbr/></p></span>
8988 <span class="entry_type_enum_name">TRUE</span>
8989 <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE may or may not be
8990 captured before previous requests.<wbr/></p></span>
8994 </td> <!-- entry_type -->
8996 <td class="entry_description">
8997 <p>Allow camera device to enable zero-shutter-lag mode for requests with
8998 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
9001 <td class="entry_units">
9004 <td class="entry_range">
9007 <td class="entry_tags">
9011 <tr class="entries_header">
9012 <th class="th_details" colspan="5">Details</th>
9014 <tr class="entry_cont">
9015 <td class="entry_details" colspan="5">
9016 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9017 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9018 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9019 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9020 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9021 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9022 capture intents.<wbr/></p>
9023 <p>For example,<wbr/> when requests are submitted in the following order:
9024 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9025 Request B: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is STILL_<wbr/>CAPTURE</p>
9026 <p>The output images for request B may have contents captured before the output images for
9027 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9028 request A.<wbr/></p>
9029 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9030 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9031 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9032 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9033 <code>false</code> if present.<wbr/></p>
9034 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9035 capture templates is always <code>false</code> if present.<wbr/></p>
9036 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9040 <tr class="entries_header">
9041 <th class="th_details" colspan="5">HAL Implementation Details</th>
9043 <tr class="entry_cont">
9044 <td class="entry_details" colspan="5">
9045 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9046 capture intent.<wbr/></p>
9050 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9051 <!-- end of entry -->
9055 <!-- end of kind -->
9058 <!-- end of section -->
9059 <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
9062 <tr><td colspan="6" class="kind">controls</td></tr>
9064 <thead class="entries_header">
9066 <th class="th_name">Property Name</th>
9067 <th class="th_type">Type</th>
9068 <th class="th_description">Description</th>
9069 <th class="th_units">Units</th>
9070 <th class="th_range">Range</th>
9071 <th class="th_tags">Tags</th>
9086 <tr class="entry" id="controls_android.demosaic.mode">
9087 <td class="entry_name
9089 android.<wbr/>demosaic.<wbr/>mode
9091 <td class="entry_type">
9092 <span class="entry_type_name entry_type_name_enum">byte</span>
9094 <span class="entry_type_visibility"> [system]</span>
9100 <ul class="entry_type_enum">
9102 <span class="entry_type_enum_name">FAST</span>
9103 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9104 Bayer RAW output.<wbr/></p></span>
9107 <span class="entry_type_enum_name">HIGH_QUALITY</span>
9108 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9109 relative to raw output.<wbr/></p></span>
9113 </td> <!-- entry_type -->
9115 <td class="entry_description">
9116 <p>Controls the quality of the demosaicing
9117 processing.<wbr/></p>
9120 <td class="entry_units">
9123 <td class="entry_range">
9126 <td class="entry_tags">
9127 <ul class="entry_tags">
9128 <li><a href="#tag_FUTURE">FUTURE</a></li>
9135 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9136 <!-- end of entry -->
9140 <!-- end of kind -->
9143 <!-- end of section -->
9144 <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
9147 <tr><td colspan="6" class="kind">controls</td></tr>
9149 <thead class="entries_header">
9151 <th class="th_name">Property Name</th>
9152 <th class="th_type">Type</th>
9153 <th class="th_description">Description</th>
9154 <th class="th_units">Units</th>
9155 <th class="th_range">Range</th>
9156 <th class="th_tags">Tags</th>
9171 <tr class="entry" id="controls_android.edge.mode">
9172 <td class="entry_name
9174 android.<wbr/>edge.<wbr/>mode
9176 <td class="entry_type">
9177 <span class="entry_type_name entry_type_name_enum">byte</span>
9179 <span class="entry_type_visibility"> [public]</span>
9182 <span class="entry_type_hwlevel">[full] </span>
9186 <ul class="entry_type_enum">
9188 <span class="entry_type_enum_name">OFF</span>
9189 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9192 <span class="entry_type_enum_name">FAST</span>
9193 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9194 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9195 slow down frame rate relative to sensor.<wbr/></p></span>
9198 <span class="entry_type_enum_name">HIGH_QUALITY</span>
9199 <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of possibly reduced output frame rate.<wbr/></p></span>
9202 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9203 <span class="entry_type_enum_optional">[optional]</span>
9204 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
9205 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have
9206 edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
9207 applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
9208 frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
9209 is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9210 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9211 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9212 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9213 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
9214 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9215 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9216 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9217 reasonable preview quality.<wbr/></p>
9218 <p>This mode is guaranteed to be supported by devices that support either the
9219 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9220 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9221 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9225 </td> <!-- entry_type -->
9227 <td class="entry_description">
9228 <p>Operation mode for edge
9229 enhancement.<wbr/></p>
9232 <td class="entry_units">
9235 <td class="entry_range">
9236 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9239 <td class="entry_tags">
9240 <ul class="entry_tags">
9241 <li><a href="#tag_V1">V1</a></li>
9242 <li><a href="#tag_REPROC">REPROC</a></li>
9247 <tr class="entries_header">
9248 <th class="th_details" colspan="5">Details</th>
9250 <tr class="entry_cont">
9251 <td class="entry_details" colspan="5">
9252 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9253 no enhancement will be applied by the camera device.<wbr/></p>
9254 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9255 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9256 camera device will use the highest-quality enhancement algorithms,<wbr/>
9257 even if it slows down capture rate.<wbr/> FAST means the camera device will
9258 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9259 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9260 amount of enhancement applied.<wbr/></p>
9261 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9262 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9263 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9264 edge enhancement to low-resolution streams (below maximum recording resolution) to
9265 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9266 since those will be reprocessed later if necessary.<wbr/></p>
9267 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9268 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9269 The camera device may adjust its internal edge enhancement parameters for best
9270 image quality based on the <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a>,<wbr/> if it is set.<wbr/></p>
9274 <tr class="entries_header">
9275 <th class="th_details" colspan="5">HAL Implementation Details</th>
9277 <tr class="entry_cont">
9278 <td class="entry_details" colspan="5">
9279 <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
9280 adjust the internal edge enhancement reduction parameters appropriately to get the best
9281 quality images.<wbr/></p>
9285 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9286 <!-- end of entry -->
9289 <tr class="entry" id="controls_android.edge.strength">
9290 <td class="entry_name
9292 android.<wbr/>edge.<wbr/>strength
9294 <td class="entry_type">
9295 <span class="entry_type_name">byte</span>
9297 <span class="entry_type_visibility"> [system]</span>
9304 </td> <!-- entry_type -->
9306 <td class="entry_description">
9307 <p>Control the amount of edge enhancement
9308 applied to the images</p>
9311 <td class="entry_units">
9312 1-10; 10 is maximum sharpening
9315 <td class="entry_range">
9318 <td class="entry_tags">
9319 <ul class="entry_tags">
9320 <li><a href="#tag_FUTURE">FUTURE</a></li>
9327 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9328 <!-- end of entry -->
9332 <!-- end of kind -->
9334 <tr><td colspan="6" class="kind">static</td></tr>
9336 <thead class="entries_header">
9338 <th class="th_name">Property Name</th>
9339 <th class="th_type">Type</th>
9340 <th class="th_description">Description</th>
9341 <th class="th_units">Units</th>
9342 <th class="th_range">Range</th>
9343 <th class="th_tags">Tags</th>
9358 <tr class="entry" id="static_android.edge.availableEdgeModes">
9359 <td class="entry_name
9361 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9363 <td class="entry_type">
9364 <span class="entry_type_name">byte</span>
9365 <span class="entry_type_container">x</span>
9367 <span class="entry_type_array">
9370 <span class="entry_type_visibility"> [public as enumList]</span>
9373 <span class="entry_type_hwlevel">[full] </span>
9376 <div class="entry_type_notes">list of enums</div>
9379 </td> <!-- entry_type -->
9381 <td class="entry_description">
9382 <p>List of edge enhancement modes for <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> that are supported by this camera
9386 <td class="entry_units">
9389 <td class="entry_range">
9390 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9393 <td class="entry_tags">
9394 <ul class="entry_tags">
9395 <li><a href="#tag_V1">V1</a></li>
9396 <li><a href="#tag_REPROC">REPROC</a></li>
9401 <tr class="entries_header">
9402 <th class="th_details" colspan="5">Details</th>
9404 <tr class="entry_cont">
9405 <td class="entry_details" colspan="5">
9406 <p>Full-capability camera devices must always support OFF; camera devices that support
9407 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9408 list FAST.<wbr/></p>
9412 <tr class="entries_header">
9413 <th class="th_details" colspan="5">HAL Implementation Details</th>
9415 <tr class="entry_cont">
9416 <td class="entry_details" colspan="5">
9417 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9418 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9419 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9420 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9424 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9425 <!-- end of entry -->
9429 <!-- end of kind -->
9431 <tr><td colspan="6" class="kind">dynamic</td></tr>
9433 <thead class="entries_header">
9435 <th class="th_name">Property Name</th>
9436 <th class="th_type">Type</th>
9437 <th class="th_description">Description</th>
9438 <th class="th_units">Units</th>
9439 <th class="th_range">Range</th>
9440 <th class="th_tags">Tags</th>
9455 <tr class="entry" id="dynamic_android.edge.mode">
9456 <td class="entry_name
9458 android.<wbr/>edge.<wbr/>mode
9460 <td class="entry_type">
9461 <span class="entry_type_name entry_type_name_enum">byte</span>
9463 <span class="entry_type_visibility"> [public]</span>
9466 <span class="entry_type_hwlevel">[full] </span>
9470 <ul class="entry_type_enum">
9472 <span class="entry_type_enum_name">OFF</span>
9473 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9476 <span class="entry_type_enum_name">FAST</span>
9477 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9478 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9479 slow down frame rate relative to sensor.<wbr/></p></span>
9482 <span class="entry_type_enum_name">HIGH_QUALITY</span>
9483 <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of possibly reduced output frame rate.<wbr/></p></span>
9486 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9487 <span class="entry_type_enum_optional">[optional]</span>
9488 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
9489 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have
9490 edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
9491 applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
9492 frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
9493 is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9494 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9495 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9496 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9497 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
9498 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9499 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9500 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9501 reasonable preview quality.<wbr/></p>
9502 <p>This mode is guaranteed to be supported by devices that support either the
9503 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9504 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9505 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9509 </td> <!-- entry_type -->
9511 <td class="entry_description">
9512 <p>Operation mode for edge
9513 enhancement.<wbr/></p>
9516 <td class="entry_units">
9519 <td class="entry_range">
9520 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9523 <td class="entry_tags">
9524 <ul class="entry_tags">
9525 <li><a href="#tag_V1">V1</a></li>
9526 <li><a href="#tag_REPROC">REPROC</a></li>
9531 <tr class="entries_header">
9532 <th class="th_details" colspan="5">Details</th>
9534 <tr class="entry_cont">
9535 <td class="entry_details" colspan="5">
9536 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9537 no enhancement will be applied by the camera device.<wbr/></p>
9538 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9539 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9540 camera device will use the highest-quality enhancement algorithms,<wbr/>
9541 even if it slows down capture rate.<wbr/> FAST means the camera device will
9542 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9543 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9544 amount of enhancement applied.<wbr/></p>
9545 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9546 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9547 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9548 edge enhancement to low-resolution streams (below maximum recording resolution) to
9549 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9550 since those will be reprocessed later if necessary.<wbr/></p>
9551 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9552 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9553 The camera device may adjust its internal edge enhancement parameters for best
9554 image quality based on the <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a>,<wbr/> if it is set.<wbr/></p>
9558 <tr class="entries_header">
9559 <th class="th_details" colspan="5">HAL Implementation Details</th>
9561 <tr class="entry_cont">
9562 <td class="entry_details" colspan="5">
9563 <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
9564 adjust the internal edge enhancement reduction parameters appropriately to get the best
9565 quality images.<wbr/></p>
9569 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9570 <!-- end of entry -->
9574 <!-- end of kind -->
9577 <!-- end of section -->
9578 <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
9581 <tr><td colspan="6" class="kind">controls</td></tr>
9583 <thead class="entries_header">
9585 <th class="th_name">Property Name</th>
9586 <th class="th_type">Type</th>
9587 <th class="th_description">Description</th>
9588 <th class="th_units">Units</th>
9589 <th class="th_range">Range</th>
9590 <th class="th_tags">Tags</th>
9605 <tr class="entry" id="controls_android.flash.firingPower">
9606 <td class="entry_name
9608 android.<wbr/>flash.<wbr/>firing<wbr/>Power
9610 <td class="entry_type">
9611 <span class="entry_type_name">byte</span>
9613 <span class="entry_type_visibility"> [system]</span>
9620 </td> <!-- entry_type -->
9622 <td class="entry_description">
9623 <p>Power for flash firing/<wbr/>torch</p>
9626 <td class="entry_units">
9627 10 is max power; 0 is no flash.<wbr/> Linear
9630 <td class="entry_range">
9634 <td class="entry_tags">
9635 <ul class="entry_tags">
9636 <li><a href="#tag_FUTURE">FUTURE</a></li>
9641 <tr class="entries_header">
9642 <th class="th_details" colspan="5">Details</th>
9644 <tr class="entry_cont">
9645 <td class="entry_details" colspan="5">
9646 <p>Power for snapshot may use a different scale than
9647 for torch mode.<wbr/> Only one entry for torch mode will be
9653 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9654 <!-- end of entry -->
9657 <tr class="entry" id="controls_android.flash.firingTime">
9658 <td class="entry_name
9660 android.<wbr/>flash.<wbr/>firing<wbr/>Time
9662 <td class="entry_type">
9663 <span class="entry_type_name">int64</span>
9665 <span class="entry_type_visibility"> [system]</span>
9672 </td> <!-- entry_type -->
9674 <td class="entry_description">
9675 <p>Firing time of flash relative to start of
9679 <td class="entry_units">
9683 <td class="entry_range">
9684 <p>0-(exposure time-flash duration)</p>
9687 <td class="entry_tags">
9688 <ul class="entry_tags">
9689 <li><a href="#tag_FUTURE">FUTURE</a></li>
9694 <tr class="entries_header">
9695 <th class="th_details" colspan="5">Details</th>
9697 <tr class="entry_cont">
9698 <td class="entry_details" colspan="5">
9699 <p>Clamped to (0,<wbr/> exposure time - flash
9700 duration).<wbr/></p>
9705 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9706 <!-- end of entry -->
9709 <tr class="entry" id="controls_android.flash.mode">
9710 <td class="entry_name
9712 android.<wbr/>flash.<wbr/>mode
9714 <td class="entry_type">
9715 <span class="entry_type_name entry_type_name_enum">byte</span>
9717 <span class="entry_type_visibility"> [public]</span>
9720 <span class="entry_type_hwlevel">[legacy] </span>
9724 <ul class="entry_type_enum">
9726 <span class="entry_type_enum_name">OFF</span>
9727 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9730 <span class="entry_type_enum_name">SINGLE</span>
9731 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9732 for this capture.<wbr/></p></span>
9735 <span class="entry_type_enum_name">TORCH</span>
9736 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9740 </td> <!-- entry_type -->
9742 <td class="entry_description">
9743 <p>The desired mode for for the camera device's flash control.<wbr/></p>
9746 <td class="entry_units">
9749 <td class="entry_range">
9752 <td class="entry_tags">
9753 <ul class="entry_tags">
9754 <li><a href="#tag_BC">BC</a></li>
9759 <tr class="entries_header">
9760 <th class="th_details" colspan="5">Details</th>
9762 <tr class="entry_cont">
9763 <td class="entry_details" colspan="5">
9764 <p>This control is only effective when flash unit is available
9765 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9766 <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/>
9767 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9768 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9769 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9770 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9771 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9772 control should be used along with auto-exposure (AE) precapture metering sequence
9773 (<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>
9774 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9775 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9776 <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>
9781 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9782 <!-- end of entry -->
9786 <!-- end of kind -->
9788 <tr><td colspan="6" class="kind">static</td></tr>
9790 <thead class="entries_header">
9792 <th class="th_name">Property Name</th>
9793 <th class="th_type">Type</th>
9794 <th class="th_description">Description</th>
9795 <th class="th_units">Units</th>
9796 <th class="th_range">Range</th>
9797 <th class="th_tags">Tags</th>
9814 <tr class="entry" id="static_android.flash.info.available">
9815 <td class="entry_name
9817 android.<wbr/>flash.<wbr/>info.<wbr/>available
9819 <td class="entry_type">
9820 <span class="entry_type_name entry_type_name_enum">byte</span>
9822 <span class="entry_type_visibility"> [public as boolean]</span>
9825 <span class="entry_type_hwlevel">[legacy] </span>
9829 <ul class="entry_type_enum">
9831 <span class="entry_type_enum_name">FALSE</span>
9834 <span class="entry_type_enum_name">TRUE</span>
9838 </td> <!-- entry_type -->
9840 <td class="entry_description">
9841 <p>Whether this camera device has a
9842 flash unit.<wbr/></p>
9845 <td class="entry_units">
9848 <td class="entry_range">
9851 <td class="entry_tags">
9852 <ul class="entry_tags">
9853 <li><a href="#tag_BC">BC</a></li>
9858 <tr class="entries_header">
9859 <th class="th_details" colspan="5">Details</th>
9861 <tr class="entry_cont">
9862 <td class="entry_details" colspan="5">
9863 <p>Will be <code>false</code> if no flash is available.<wbr/></p>
9864 <p>If there is no flash unit,<wbr/> none of the flash controls do
9870 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9871 <!-- end of entry -->
9874 <tr class="entry" id="static_android.flash.info.chargeDuration">
9875 <td class="entry_name
9877 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
9879 <td class="entry_type">
9880 <span class="entry_type_name">int64</span>
9882 <span class="entry_type_visibility"> [system]</span>
9889 </td> <!-- entry_type -->
9891 <td class="entry_description">
9892 <p>Time taken before flash can fire
9896 <td class="entry_units">
9900 <td class="entry_range">
9904 <td class="entry_tags">
9905 <ul class="entry_tags">
9906 <li><a href="#tag_FUTURE">FUTURE</a></li>
9911 <tr class="entries_header">
9912 <th class="th_details" colspan="5">Details</th>
9914 <tr class="entry_cont">
9915 <td class="entry_details" colspan="5">
9916 <p>1 second too long/<wbr/>too short for recharge? Should
9917 this be power-dependent?</p>
9922 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9923 <!-- end of entry -->
9929 <tr class="entry" id="static_android.flash.colorTemperature">
9930 <td class="entry_name
9932 android.<wbr/>flash.<wbr/>color<wbr/>Temperature
9934 <td class="entry_type">
9935 <span class="entry_type_name">byte</span>
9937 <span class="entry_type_visibility"> [system]</span>
9944 </td> <!-- entry_type -->
9946 <td class="entry_description">
9947 <p>The x,<wbr/>y whitepoint of the
9951 <td class="entry_units">
9955 <td class="entry_range">
9959 <td class="entry_tags">
9960 <ul class="entry_tags">
9961 <li><a href="#tag_FUTURE">FUTURE</a></li>
9968 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9969 <!-- end of entry -->
9972 <tr class="entry" id="static_android.flash.maxEnergy">
9973 <td class="entry_name
9975 android.<wbr/>flash.<wbr/>max<wbr/>Energy
9977 <td class="entry_type">
9978 <span class="entry_type_name">byte</span>
9980 <span class="entry_type_visibility"> [system]</span>
9987 </td> <!-- entry_type -->
9989 <td class="entry_description">
9990 <p>Max energy output of the flash for a full
9991 power single flash</p>
9994 <td class="entry_units">
9998 <td class="entry_range">
10002 <td class="entry_tags">
10003 <ul class="entry_tags">
10004 <li><a href="#tag_FUTURE">FUTURE</a></li>
10011 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10012 <!-- end of entry -->
10016 <!-- end of kind -->
10018 <tr><td colspan="6" class="kind">dynamic</td></tr>
10020 <thead class="entries_header">
10022 <th class="th_name">Property Name</th>
10023 <th class="th_type">Type</th>
10024 <th class="th_description">Description</th>
10025 <th class="th_units">Units</th>
10026 <th class="th_range">Range</th>
10027 <th class="th_tags">Tags</th>
10042 <tr class="entry" id="dynamic_android.flash.firingPower">
10043 <td class="entry_name
10045 android.<wbr/>flash.<wbr/>firing<wbr/>Power
10047 <td class="entry_type">
10048 <span class="entry_type_name">byte</span>
10050 <span class="entry_type_visibility"> [system]</span>
10057 </td> <!-- entry_type -->
10059 <td class="entry_description">
10060 <p>Power for flash firing/<wbr/>torch</p>
10063 <td class="entry_units">
10064 10 is max power; 0 is no flash.<wbr/> Linear
10067 <td class="entry_range">
10071 <td class="entry_tags">
10072 <ul class="entry_tags">
10073 <li><a href="#tag_FUTURE">FUTURE</a></li>
10078 <tr class="entries_header">
10079 <th class="th_details" colspan="5">Details</th>
10081 <tr class="entry_cont">
10082 <td class="entry_details" colspan="5">
10083 <p>Power for snapshot may use a different scale than
10084 for torch mode.<wbr/> Only one entry for torch mode will be
10090 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10091 <!-- end of entry -->
10094 <tr class="entry" id="dynamic_android.flash.firingTime">
10095 <td class="entry_name
10097 android.<wbr/>flash.<wbr/>firing<wbr/>Time
10099 <td class="entry_type">
10100 <span class="entry_type_name">int64</span>
10102 <span class="entry_type_visibility"> [system]</span>
10109 </td> <!-- entry_type -->
10111 <td class="entry_description">
10112 <p>Firing time of flash relative to start of
10116 <td class="entry_units">
10120 <td class="entry_range">
10121 <p>0-(exposure time-flash duration)</p>
10124 <td class="entry_tags">
10125 <ul class="entry_tags">
10126 <li><a href="#tag_FUTURE">FUTURE</a></li>
10131 <tr class="entries_header">
10132 <th class="th_details" colspan="5">Details</th>
10134 <tr class="entry_cont">
10135 <td class="entry_details" colspan="5">
10136 <p>Clamped to (0,<wbr/> exposure time - flash
10137 duration).<wbr/></p>
10142 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10143 <!-- end of entry -->
10146 <tr class="entry" id="dynamic_android.flash.mode">
10147 <td class="entry_name
10149 android.<wbr/>flash.<wbr/>mode
10151 <td class="entry_type">
10152 <span class="entry_type_name entry_type_name_enum">byte</span>
10154 <span class="entry_type_visibility"> [public]</span>
10157 <span class="entry_type_hwlevel">[legacy] </span>
10161 <ul class="entry_type_enum">
10163 <span class="entry_type_enum_name">OFF</span>
10164 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10167 <span class="entry_type_enum_name">SINGLE</span>
10168 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10169 for this capture.<wbr/></p></span>
10172 <span class="entry_type_enum_name">TORCH</span>
10173 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10177 </td> <!-- entry_type -->
10179 <td class="entry_description">
10180 <p>The desired mode for for the camera device's flash control.<wbr/></p>
10183 <td class="entry_units">
10186 <td class="entry_range">
10189 <td class="entry_tags">
10190 <ul class="entry_tags">
10191 <li><a href="#tag_BC">BC</a></li>
10196 <tr class="entries_header">
10197 <th class="th_details" colspan="5">Details</th>
10199 <tr class="entry_cont">
10200 <td class="entry_details" colspan="5">
10201 <p>This control is only effective when flash unit is available
10202 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10203 <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/>
10204 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10205 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10206 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10207 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10208 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10209 control should be used along with auto-exposure (AE) precapture metering sequence
10210 (<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>
10211 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10212 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10213 <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>
10218 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10219 <!-- end of entry -->
10222 <tr class="entry" id="dynamic_android.flash.state">
10223 <td class="entry_name
10225 android.<wbr/>flash.<wbr/>state
10227 <td class="entry_type">
10228 <span class="entry_type_name entry_type_name_enum">byte</span>
10230 <span class="entry_type_visibility"> [public]</span>
10233 <span class="entry_type_hwlevel">[limited] </span>
10237 <ul class="entry_type_enum">
10239 <span class="entry_type_enum_name">UNAVAILABLE</span>
10240 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10243 <span class="entry_type_enum_name">CHARGING</span>
10244 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10247 <span class="entry_type_enum_name">READY</span>
10248 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10251 <span class="entry_type_enum_name">FIRED</span>
10252 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10255 <span class="entry_type_enum_name">PARTIAL</span>
10256 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10257 <p>This is usually due to the next or previous frame having
10258 the flash fire,<wbr/> and the flash spilling into this capture
10259 due to hardware limitations.<wbr/></p></span>
10263 </td> <!-- entry_type -->
10265 <td class="entry_description">
10266 <p>Current state of the flash
10270 <td class="entry_units">
10273 <td class="entry_range">
10276 <td class="entry_tags">
10280 <tr class="entries_header">
10281 <th class="th_details" colspan="5">Details</th>
10283 <tr class="entry_cont">
10284 <td class="entry_details" colspan="5">
10285 <p>When the camera device doesn't have flash unit
10286 (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/>
10287 Other states indicate the current flash status.<wbr/></p>
10288 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10290 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10291 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10292 will always return FIRED.<wbr/></li>
10293 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10294 will always return FIRED.<wbr/></li>
10296 <p>In all other conditions the state will not be available on
10297 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10302 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10303 <!-- end of entry -->
10307 <!-- end of kind -->
10310 <!-- end of section -->
10311 <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
10314 <tr><td colspan="6" class="kind">controls</td></tr>
10316 <thead class="entries_header">
10318 <th class="th_name">Property Name</th>
10319 <th class="th_type">Type</th>
10320 <th class="th_description">Description</th>
10321 <th class="th_units">Units</th>
10322 <th class="th_range">Range</th>
10323 <th class="th_tags">Tags</th>
10338 <tr class="entry" id="controls_android.hotPixel.mode">
10339 <td class="entry_name
10341 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10343 <td class="entry_type">
10344 <span class="entry_type_name entry_type_name_enum">byte</span>
10346 <span class="entry_type_visibility"> [public]</span>
10352 <ul class="entry_type_enum">
10354 <span class="entry_type_enum_name">OFF</span>
10355 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10356 <p>The frame rate must not be reduced relative to sensor raw output
10357 for this option.<wbr/></p>
10358 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
10361 <span class="entry_type_enum_name">FAST</span>
10362 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10363 rate relative to sensor raw output.<wbr/></p>
10364 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
10367 <span class="entry_type_enum_name">HIGH_QUALITY</span>
10368 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10369 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10370 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
10374 </td> <!-- entry_type -->
10376 <td class="entry_description">
10377 <p>Operational mode for hot pixel correction.<wbr/></p>
10380 <td class="entry_units">
10383 <td class="entry_range">
10384 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10387 <td class="entry_tags">
10388 <ul class="entry_tags">
10389 <li><a href="#tag_V1">V1</a></li>
10390 <li><a href="#tag_RAW">RAW</a></li>
10395 <tr class="entries_header">
10396 <th class="th_details" colspan="5">Details</th>
10398 <tr class="entry_cont">
10399 <td class="entry_details" colspan="5">
10400 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10401 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10402 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10407 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10408 <!-- end of entry -->
10412 <!-- end of kind -->
10414 <tr><td colspan="6" class="kind">static</td></tr>
10416 <thead class="entries_header">
10418 <th class="th_name">Property Name</th>
10419 <th class="th_type">Type</th>
10420 <th class="th_description">Description</th>
10421 <th class="th_units">Units</th>
10422 <th class="th_range">Range</th>
10423 <th class="th_tags">Tags</th>
10438 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
10439 <td class="entry_name
10441 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
10443 <td class="entry_type">
10444 <span class="entry_type_name">byte</span>
10445 <span class="entry_type_container">x</span>
10447 <span class="entry_type_array">
10450 <span class="entry_type_visibility"> [public as enumList]</span>
10455 <div class="entry_type_notes">list of enums</div>
10458 </td> <!-- entry_type -->
10460 <td class="entry_description">
10461 <p>List of hot pixel correction modes for <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a> that are supported by this
10462 camera device.<wbr/></p>
10465 <td class="entry_units">
10468 <td class="entry_range">
10469 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10472 <td class="entry_tags">
10473 <ul class="entry_tags">
10474 <li><a href="#tag_V1">V1</a></li>
10475 <li><a href="#tag_RAW">RAW</a></li>
10480 <tr class="entries_header">
10481 <th class="th_details" colspan="5">Details</th>
10483 <tr class="entry_cont">
10484 <td class="entry_details" colspan="5">
10485 <p>FULL mode camera devices will always support FAST.<wbr/></p>
10489 <tr class="entries_header">
10490 <th class="th_details" colspan="5">HAL Implementation Details</th>
10492 <tr class="entry_cont">
10493 <td class="entry_details" colspan="5">
10494 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
10495 pixels than actual pixels on the camera sensor.<wbr/>
10496 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
10497 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
10498 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
10499 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
10503 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10504 <!-- end of entry -->
10508 <!-- end of kind -->
10510 <tr><td colspan="6" class="kind">dynamic</td></tr>
10512 <thead class="entries_header">
10514 <th class="th_name">Property Name</th>
10515 <th class="th_type">Type</th>
10516 <th class="th_description">Description</th>
10517 <th class="th_units">Units</th>
10518 <th class="th_range">Range</th>
10519 <th class="th_tags">Tags</th>
10534 <tr class="entry" id="dynamic_android.hotPixel.mode">
10535 <td class="entry_name
10537 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10539 <td class="entry_type">
10540 <span class="entry_type_name entry_type_name_enum">byte</span>
10542 <span class="entry_type_visibility"> [public]</span>
10548 <ul class="entry_type_enum">
10550 <span class="entry_type_enum_name">OFF</span>
10551 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10552 <p>The frame rate must not be reduced relative to sensor raw output
10553 for this option.<wbr/></p>
10554 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
10557 <span class="entry_type_enum_name">FAST</span>
10558 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10559 rate relative to sensor raw output.<wbr/></p>
10560 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
10563 <span class="entry_type_enum_name">HIGH_QUALITY</span>
10564 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10565 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10566 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
10570 </td> <!-- entry_type -->
10572 <td class="entry_description">
10573 <p>Operational mode for hot pixel correction.<wbr/></p>
10576 <td class="entry_units">
10579 <td class="entry_range">
10580 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10583 <td class="entry_tags">
10584 <ul class="entry_tags">
10585 <li><a href="#tag_V1">V1</a></li>
10586 <li><a href="#tag_RAW">RAW</a></li>
10591 <tr class="entries_header">
10592 <th class="th_details" colspan="5">Details</th>
10594 <tr class="entry_cont">
10595 <td class="entry_details" colspan="5">
10596 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10597 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10598 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10603 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10604 <!-- end of entry -->
10608 <!-- end of kind -->
10611 <!-- end of section -->
10612 <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
10615 <tr><td colspan="6" class="kind">controls</td></tr>
10617 <thead class="entries_header">
10619 <th class="th_name">Property Name</th>
10620 <th class="th_type">Type</th>
10621 <th class="th_description">Description</th>
10622 <th class="th_units">Units</th>
10623 <th class="th_range">Range</th>
10624 <th class="th_tags">Tags</th>
10639 <tr class="entry" id="controls_android.jpeg.gpsLocation">
10640 <td class="entry_name
10642 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10644 <td class="entry_type">
10645 <span class="entry_type_name">byte</span>
10647 <span class="entry_type_visibility"> [java_public as location]</span>
10649 <span class="entry_type_synthetic">[synthetic] </span>
10651 <span class="entry_type_hwlevel">[legacy] </span>
10656 </td> <!-- entry_type -->
10658 <td class="entry_description">
10659 <p>A location object to use when generating image GPS metadata.<wbr/></p>
10662 <td class="entry_units">
10665 <td class="entry_range">
10668 <td class="entry_tags">
10672 <tr class="entries_header">
10673 <th class="th_details" colspan="5">Details</th>
10675 <tr class="entry_cont">
10676 <td class="entry_details" colspan="5">
10677 <p>Setting a location object in a request will include the GPS coordinates of the location
10678 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10679 viewed by anyone who receives the JPEG image.<wbr/></p>
10684 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10685 <!-- end of entry -->
10688 <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
10689 <td class="entry_name
10691 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10693 <td class="entry_type">
10694 <span class="entry_type_name">double</span>
10695 <span class="entry_type_container">x</span>
10697 <span class="entry_type_array">
10700 <span class="entry_type_visibility"> [ndk_public]</span>
10703 <span class="entry_type_hwlevel">[legacy] </span>
10706 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10709 </td> <!-- entry_type -->
10711 <td class="entry_description">
10712 <p>GPS coordinates to include in output JPEG
10716 <td class="entry_units">
10719 <td class="entry_range">
10720 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
10723 <td class="entry_tags">
10724 <ul class="entry_tags">
10725 <li><a href="#tag_BC">BC</a></li>
10732 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10733 <!-- end of entry -->
10736 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
10737 <td class="entry_name
10739 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10741 <td class="entry_type">
10742 <span class="entry_type_name">byte</span>
10744 <span class="entry_type_visibility"> [ndk_public as string]</span>
10747 <span class="entry_type_hwlevel">[legacy] </span>
10752 </td> <!-- entry_type -->
10754 <td class="entry_description">
10755 <p>32 characters describing GPS algorithm to
10756 include in EXIF.<wbr/></p>
10759 <td class="entry_units">
10760 UTF-8 null-terminated string
10763 <td class="entry_range">
10766 <td class="entry_tags">
10767 <ul class="entry_tags">
10768 <li><a href="#tag_BC">BC</a></li>
10775 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10776 <!-- end of entry -->
10779 <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
10780 <td class="entry_name
10782 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10784 <td class="entry_type">
10785 <span class="entry_type_name">int64</span>
10787 <span class="entry_type_visibility"> [ndk_public]</span>
10790 <span class="entry_type_hwlevel">[legacy] </span>
10795 </td> <!-- entry_type -->
10797 <td class="entry_description">
10798 <p>Time GPS fix was made to include in
10802 <td class="entry_units">
10803 UTC in seconds since January 1,<wbr/> 1970
10806 <td class="entry_range">
10809 <td class="entry_tags">
10810 <ul class="entry_tags">
10811 <li><a href="#tag_BC">BC</a></li>
10818 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10819 <!-- end of entry -->
10822 <tr class="entry" id="controls_android.jpeg.orientation">
10823 <td class="entry_name
10825 android.<wbr/>jpeg.<wbr/>orientation
10827 <td class="entry_type">
10828 <span class="entry_type_name">int32</span>
10830 <span class="entry_type_visibility"> [public]</span>
10833 <span class="entry_type_hwlevel">[legacy] </span>
10838 </td> <!-- entry_type -->
10840 <td class="entry_description">
10841 <p>The orientation for a JPEG image.<wbr/></p>
10844 <td class="entry_units">
10845 Degrees in multiples of 90
10848 <td class="entry_range">
10849 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
10852 <td class="entry_tags">
10853 <ul class="entry_tags">
10854 <li><a href="#tag_BC">BC</a></li>
10859 <tr class="entries_header">
10860 <th class="th_details" colspan="5">Details</th>
10862 <tr class="entry_cont">
10863 <td class="entry_details" colspan="5">
10864 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
10865 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
10867 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
10868 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
10869 the thumbnail data will also be rotated.<wbr/></p>
10870 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
10871 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
10872 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
10873 sample code may be used:</p>
10874 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
10875 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
10876 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
10878 //<wbr/> Round device orientation to a multiple of 90
10879 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
10881 //<wbr/> Reverse device orientation for front-facing cameras
10882 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
10883 if (facingFront) deviceOrientation = -deviceOrientation;
10885 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
10886 //<wbr/> the image upright relative to the device orientation
10887 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
10889 return jpegOrientation;
10896 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10897 <!-- end of entry -->
10900 <tr class="entry" id="controls_android.jpeg.quality">
10901 <td class="entry_name
10903 android.<wbr/>jpeg.<wbr/>quality
10905 <td class="entry_type">
10906 <span class="entry_type_name">byte</span>
10908 <span class="entry_type_visibility"> [public]</span>
10911 <span class="entry_type_hwlevel">[legacy] </span>
10916 </td> <!-- entry_type -->
10918 <td class="entry_description">
10919 <p>Compression quality of the final JPEG
10923 <td class="entry_units">
10926 <td class="entry_range">
10927 <p>1-100; larger is higher quality</p>
10930 <td class="entry_tags">
10931 <ul class="entry_tags">
10932 <li><a href="#tag_BC">BC</a></li>
10937 <tr class="entries_header">
10938 <th class="th_details" colspan="5">Details</th>
10940 <tr class="entry_cont">
10941 <td class="entry_details" colspan="5">
10942 <p>85-95 is typical usage range.<wbr/></p>
10947 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10948 <!-- end of entry -->
10951 <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
10952 <td class="entry_name
10954 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
10956 <td class="entry_type">
10957 <span class="entry_type_name">byte</span>
10959 <span class="entry_type_visibility"> [public]</span>
10962 <span class="entry_type_hwlevel">[legacy] </span>
10967 </td> <!-- entry_type -->
10969 <td class="entry_description">
10970 <p>Compression quality of JPEG
10971 thumbnail.<wbr/></p>
10974 <td class="entry_units">
10977 <td class="entry_range">
10978 <p>1-100; larger is higher quality</p>
10981 <td class="entry_tags">
10982 <ul class="entry_tags">
10983 <li><a href="#tag_BC">BC</a></li>
10990 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10991 <!-- end of entry -->
10994 <tr class="entry" id="controls_android.jpeg.thumbnailSize">
10995 <td class="entry_name
10997 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
10999 <td class="entry_type">
11000 <span class="entry_type_name">int32</span>
11001 <span class="entry_type_container">x</span>
11003 <span class="entry_type_array">
11006 <span class="entry_type_visibility"> [public as size]</span>
11009 <span class="entry_type_hwlevel">[legacy] </span>
11014 </td> <!-- entry_type -->
11016 <td class="entry_description">
11017 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11020 <td class="entry_units">
11023 <td class="entry_range">
11024 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11027 <td class="entry_tags">
11028 <ul class="entry_tags">
11029 <li><a href="#tag_BC">BC</a></li>
11034 <tr class="entries_header">
11035 <th class="th_details" colspan="5">Details</th>
11037 <tr class="entry_cont">
11038 <td class="entry_details" colspan="5">
11039 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11040 but the captured JPEG will still be a valid image.<wbr/></p>
11041 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11042 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11043 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11044 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11045 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11046 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11047 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11048 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11049 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11050 the camera device will handle thumbnail rotation in one of the following ways:</p>
11052 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11053 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11054 <li>Rotate the jpeg and thumbnail image data and not set
11055 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11056 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11057 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11058 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11064 <tr class="entries_header">
11065 <th class="th_details" colspan="5">HAL Implementation Details</th>
11067 <tr class="entry_cont">
11068 <td class="entry_details" colspan="5">
11069 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11070 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11071 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11072 thumbnail image cropping.<wbr/></p>
11076 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11077 <!-- end of entry -->
11081 <!-- end of kind -->
11083 <tr><td colspan="6" class="kind">static</td></tr>
11085 <thead class="entries_header">
11087 <th class="th_name">Property Name</th>
11088 <th class="th_type">Type</th>
11089 <th class="th_description">Description</th>
11090 <th class="th_units">Units</th>
11091 <th class="th_range">Range</th>
11092 <th class="th_tags">Tags</th>
11107 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11108 <td class="entry_name
11110 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11112 <td class="entry_type">
11113 <span class="entry_type_name">int32</span>
11114 <span class="entry_type_container">x</span>
11116 <span class="entry_type_array">
11119 <span class="entry_type_visibility"> [public as size]</span>
11122 <span class="entry_type_hwlevel">[legacy] </span>
11127 </td> <!-- entry_type -->
11129 <td class="entry_description">
11130 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11131 camera device.<wbr/></p>
11134 <td class="entry_units">
11137 <td class="entry_range">
11140 <td class="entry_tags">
11141 <ul class="entry_tags">
11142 <li><a href="#tag_BC">BC</a></li>
11147 <tr class="entries_header">
11148 <th class="th_details" colspan="5">Details</th>
11150 <tr class="entry_cont">
11151 <td class="entry_details" colspan="5">
11152 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11153 thumbnail should be generated.<wbr/></p>
11154 <p>Below condiditions will be satisfied for this size list:</p>
11156 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11157 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11158 <li>The aspect ratio of the largest thumbnail size will be same as the
11159 aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
11160 The largest size is defined as the size that has the largest pixel area
11161 in a given size list.<wbr/></li>
11162 <li>Each output JPEG size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have at least
11163 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11164 and vice versa.<wbr/></li>
11165 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11171 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11172 <!-- end of entry -->
11175 <tr class="entry" id="static_android.jpeg.maxSize">
11176 <td class="entry_name
11178 android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11180 <td class="entry_type">
11181 <span class="entry_type_name">int32</span>
11183 <span class="entry_type_visibility"> [system]</span>
11190 </td> <!-- entry_type -->
11192 <td class="entry_description">
11193 <p>Maximum size in bytes for the compressed
11197 <td class="entry_units">
11200 <td class="entry_range">
11201 <p>Must be large enough to fit any JPEG produced by
11205 <td class="entry_tags">
11209 <tr class="entries_header">
11210 <th class="th_details" colspan="5">Details</th>
11212 <tr class="entry_cont">
11213 <td class="entry_details" colspan="5">
11214 <p>This is used for sizing the gralloc buffers for
11220 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11221 <!-- end of entry -->
11225 <!-- end of kind -->
11227 <tr><td colspan="6" class="kind">dynamic</td></tr>
11229 <thead class="entries_header">
11231 <th class="th_name">Property Name</th>
11232 <th class="th_type">Type</th>
11233 <th class="th_description">Description</th>
11234 <th class="th_units">Units</th>
11235 <th class="th_range">Range</th>
11236 <th class="th_tags">Tags</th>
11251 <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11252 <td class="entry_name
11254 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11256 <td class="entry_type">
11257 <span class="entry_type_name">byte</span>
11259 <span class="entry_type_visibility"> [java_public as location]</span>
11261 <span class="entry_type_synthetic">[synthetic] </span>
11263 <span class="entry_type_hwlevel">[legacy] </span>
11268 </td> <!-- entry_type -->
11270 <td class="entry_description">
11271 <p>A location object to use when generating image GPS metadata.<wbr/></p>
11274 <td class="entry_units">
11277 <td class="entry_range">
11280 <td class="entry_tags">
11284 <tr class="entries_header">
11285 <th class="th_details" colspan="5">Details</th>
11287 <tr class="entry_cont">
11288 <td class="entry_details" colspan="5">
11289 <p>Setting a location object in a request will include the GPS coordinates of the location
11290 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11291 viewed by anyone who receives the JPEG image.<wbr/></p>
11296 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11297 <!-- end of entry -->
11300 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11301 <td class="entry_name
11303 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11305 <td class="entry_type">
11306 <span class="entry_type_name">double</span>
11307 <span class="entry_type_container">x</span>
11309 <span class="entry_type_array">
11312 <span class="entry_type_visibility"> [ndk_public]</span>
11315 <span class="entry_type_hwlevel">[legacy] </span>
11318 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11321 </td> <!-- entry_type -->
11323 <td class="entry_description">
11324 <p>GPS coordinates to include in output JPEG
11328 <td class="entry_units">
11331 <td class="entry_range">
11332 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11335 <td class="entry_tags">
11336 <ul class="entry_tags">
11337 <li><a href="#tag_BC">BC</a></li>
11344 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11345 <!-- end of entry -->
11348 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11349 <td class="entry_name
11351 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11353 <td class="entry_type">
11354 <span class="entry_type_name">byte</span>
11356 <span class="entry_type_visibility"> [ndk_public as string]</span>
11359 <span class="entry_type_hwlevel">[legacy] </span>
11364 </td> <!-- entry_type -->
11366 <td class="entry_description">
11367 <p>32 characters describing GPS algorithm to
11368 include in EXIF.<wbr/></p>
11371 <td class="entry_units">
11372 UTF-8 null-terminated string
11375 <td class="entry_range">
11378 <td class="entry_tags">
11379 <ul class="entry_tags">
11380 <li><a href="#tag_BC">BC</a></li>
11387 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11388 <!-- end of entry -->
11391 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
11392 <td class="entry_name
11394 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11396 <td class="entry_type">
11397 <span class="entry_type_name">int64</span>
11399 <span class="entry_type_visibility"> [ndk_public]</span>
11402 <span class="entry_type_hwlevel">[legacy] </span>
11407 </td> <!-- entry_type -->
11409 <td class="entry_description">
11410 <p>Time GPS fix was made to include in
11414 <td class="entry_units">
11415 UTC in seconds since January 1,<wbr/> 1970
11418 <td class="entry_range">
11421 <td class="entry_tags">
11422 <ul class="entry_tags">
11423 <li><a href="#tag_BC">BC</a></li>
11430 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11431 <!-- end of entry -->
11434 <tr class="entry" id="dynamic_android.jpeg.orientation">
11435 <td class="entry_name
11437 android.<wbr/>jpeg.<wbr/>orientation
11439 <td class="entry_type">
11440 <span class="entry_type_name">int32</span>
11442 <span class="entry_type_visibility"> [public]</span>
11445 <span class="entry_type_hwlevel">[legacy] </span>
11450 </td> <!-- entry_type -->
11452 <td class="entry_description">
11453 <p>The orientation for a JPEG image.<wbr/></p>
11456 <td class="entry_units">
11457 Degrees in multiples of 90
11460 <td class="entry_range">
11461 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11464 <td class="entry_tags">
11465 <ul class="entry_tags">
11466 <li><a href="#tag_BC">BC</a></li>
11471 <tr class="entries_header">
11472 <th class="th_details" colspan="5">Details</th>
11474 <tr class="entry_cont">
11475 <td class="entry_details" colspan="5">
11476 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11477 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11479 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11480 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11481 the thumbnail data will also be rotated.<wbr/></p>
11482 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11483 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11484 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11485 sample code may be used:</p>
11486 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11487 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11488 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11490 //<wbr/> Round device orientation to a multiple of 90
11491 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11493 //<wbr/> Reverse device orientation for front-facing cameras
11494 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11495 if (facingFront) deviceOrientation = -deviceOrientation;
11497 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11498 //<wbr/> the image upright relative to the device orientation
11499 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11501 return jpegOrientation;
11508 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11509 <!-- end of entry -->
11512 <tr class="entry" id="dynamic_android.jpeg.quality">
11513 <td class="entry_name
11515 android.<wbr/>jpeg.<wbr/>quality
11517 <td class="entry_type">
11518 <span class="entry_type_name">byte</span>
11520 <span class="entry_type_visibility"> [public]</span>
11523 <span class="entry_type_hwlevel">[legacy] </span>
11528 </td> <!-- entry_type -->
11530 <td class="entry_description">
11531 <p>Compression quality of the final JPEG
11535 <td class="entry_units">
11538 <td class="entry_range">
11539 <p>1-100; larger is higher quality</p>
11542 <td class="entry_tags">
11543 <ul class="entry_tags">
11544 <li><a href="#tag_BC">BC</a></li>
11549 <tr class="entries_header">
11550 <th class="th_details" colspan="5">Details</th>
11552 <tr class="entry_cont">
11553 <td class="entry_details" colspan="5">
11554 <p>85-95 is typical usage range.<wbr/></p>
11559 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11560 <!-- end of entry -->
11563 <tr class="entry" id="dynamic_android.jpeg.size">
11564 <td class="entry_name
11566 android.<wbr/>jpeg.<wbr/>size
11568 <td class="entry_type">
11569 <span class="entry_type_name">int32</span>
11571 <span class="entry_type_visibility"> [system]</span>
11578 </td> <!-- entry_type -->
11580 <td class="entry_description">
11581 <p>The size of the compressed JPEG image,<wbr/> in
11585 <td class="entry_units">
11588 <td class="entry_range">
11592 <td class="entry_tags">
11593 <ul class="entry_tags">
11594 <li><a href="#tag_FUTURE">FUTURE</a></li>
11599 <tr class="entries_header">
11600 <th class="th_details" colspan="5">Details</th>
11602 <tr class="entry_cont">
11603 <td class="entry_details" colspan="5">
11604 <p>If no JPEG output is produced for the request,<wbr/>
11605 this must be 0.<wbr/></p>
11606 <p>Otherwise,<wbr/> this describes the real size of the compressed
11607 JPEG image placed in the output stream.<wbr/> More specifically,<wbr/>
11608 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
11609 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
11610 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
11611 500000 make up the real data.<wbr/></p>
11616 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11617 <!-- end of entry -->
11620 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
11621 <td class="entry_name
11623 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11625 <td class="entry_type">
11626 <span class="entry_type_name">byte</span>
11628 <span class="entry_type_visibility"> [public]</span>
11631 <span class="entry_type_hwlevel">[legacy] </span>
11636 </td> <!-- entry_type -->
11638 <td class="entry_description">
11639 <p>Compression quality of JPEG
11640 thumbnail.<wbr/></p>
11643 <td class="entry_units">
11646 <td class="entry_range">
11647 <p>1-100; larger is higher quality</p>
11650 <td class="entry_tags">
11651 <ul class="entry_tags">
11652 <li><a href="#tag_BC">BC</a></li>
11659 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11660 <!-- end of entry -->
11663 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
11664 <td class="entry_name
11666 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11668 <td class="entry_type">
11669 <span class="entry_type_name">int32</span>
11670 <span class="entry_type_container">x</span>
11672 <span class="entry_type_array">
11675 <span class="entry_type_visibility"> [public as size]</span>
11678 <span class="entry_type_hwlevel">[legacy] </span>
11683 </td> <!-- entry_type -->
11685 <td class="entry_description">
11686 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11689 <td class="entry_units">
11692 <td class="entry_range">
11693 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11696 <td class="entry_tags">
11697 <ul class="entry_tags">
11698 <li><a href="#tag_BC">BC</a></li>
11703 <tr class="entries_header">
11704 <th class="th_details" colspan="5">Details</th>
11706 <tr class="entry_cont">
11707 <td class="entry_details" colspan="5">
11708 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11709 but the captured JPEG will still be a valid image.<wbr/></p>
11710 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11711 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11712 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11713 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11714 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11715 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11716 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11717 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11718 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11719 the camera device will handle thumbnail rotation in one of the following ways:</p>
11721 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11722 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11723 <li>Rotate the jpeg and thumbnail image data and not set
11724 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11725 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11726 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11727 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11733 <tr class="entries_header">
11734 <th class="th_details" colspan="5">HAL Implementation Details</th>
11736 <tr class="entry_cont">
11737 <td class="entry_details" colspan="5">
11738 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11739 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11740 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11741 thumbnail image cropping.<wbr/></p>
11745 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11746 <!-- end of entry -->
11750 <!-- end of kind -->
11753 <!-- end of section -->
11754 <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
11757 <tr><td colspan="6" class="kind">controls</td></tr>
11759 <thead class="entries_header">
11761 <th class="th_name">Property Name</th>
11762 <th class="th_type">Type</th>
11763 <th class="th_description">Description</th>
11764 <th class="th_units">Units</th>
11765 <th class="th_range">Range</th>
11766 <th class="th_tags">Tags</th>
11781 <tr class="entry" id="controls_android.lens.aperture">
11782 <td class="entry_name
11784 android.<wbr/>lens.<wbr/>aperture
11786 <td class="entry_type">
11787 <span class="entry_type_name">float</span>
11789 <span class="entry_type_visibility"> [public]</span>
11792 <span class="entry_type_hwlevel">[full] </span>
11797 </td> <!-- entry_type -->
11799 <td class="entry_description">
11800 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
11801 effective aperture diameter.<wbr/></p>
11804 <td class="entry_units">
11805 The f-number (f/<wbr/>N)
11808 <td class="entry_range">
11809 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
11812 <td class="entry_tags">
11813 <ul class="entry_tags">
11814 <li><a href="#tag_V1">V1</a></li>
11819 <tr class="entries_header">
11820 <th class="th_details" colspan="5">Details</th>
11822 <tr class="entry_cont">
11823 <td class="entry_details" colspan="5">
11824 <p>Setting this value is only supported on the camera devices that have a variable
11825 aperture lens.<wbr/></p>
11826 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
11827 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
11828 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>
11829 to achieve manual exposure control.<wbr/></p>
11830 <p>The requested aperture value may take several frames to reach the
11831 requested value; the camera device will report the current (intermediate)
11832 aperture size in capture result metadata while the aperture is changing.<wbr/>
11833 While the aperture is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11834 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
11835 the ON modes,<wbr/> this will be overridden by the camera device
11836 auto-exposure algorithm,<wbr/> the overridden values are then provided
11837 back to the user in the corresponding result.<wbr/></p>
11842 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11843 <!-- end of entry -->
11846 <tr class="entry" id="controls_android.lens.filterDensity">
11847 <td class="entry_name
11849 android.<wbr/>lens.<wbr/>filter<wbr/>Density
11851 <td class="entry_type">
11852 <span class="entry_type_name">float</span>
11854 <span class="entry_type_visibility"> [public]</span>
11857 <span class="entry_type_hwlevel">[full] </span>
11862 </td> <!-- entry_type -->
11864 <td class="entry_description">
11865 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
11868 <td class="entry_units">
11869 Exposure Value (EV)
11872 <td class="entry_range">
11873 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
11876 <td class="entry_tags">
11877 <ul class="entry_tags">
11878 <li><a href="#tag_V1">V1</a></li>
11883 <tr class="entries_header">
11884 <th class="th_details" colspan="5">Details</th>
11886 <tr class="entry_cont">
11887 <td class="entry_details" colspan="5">
11888 <p>This control will not be supported on most camera devices.<wbr/></p>
11889 <p>Lens filters are typically used to lower the amount of light the
11890 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
11891 step is the standard logarithmic representation,<wbr/> which are
11892 non-negative,<wbr/> and inversely proportional to the amount of light
11893 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
11894 in no reduction of the incoming light,<wbr/> and setting this to 2 would
11895 mean that the filter is set to reduce incoming light by two stops
11896 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
11897 <p>It may take several frames before the lens filter density changes
11898 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
11899 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11904 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11905 <!-- end of entry -->
11908 <tr class="entry" id="controls_android.lens.focalLength">
11909 <td class="entry_name
11911 android.<wbr/>lens.<wbr/>focal<wbr/>Length
11913 <td class="entry_type">
11914 <span class="entry_type_name">float</span>
11916 <span class="entry_type_visibility"> [public]</span>
11919 <span class="entry_type_hwlevel">[legacy] </span>
11924 </td> <!-- entry_type -->
11926 <td class="entry_description">
11927 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
11930 <td class="entry_units">
11934 <td class="entry_range">
11935 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
11938 <td class="entry_tags">
11939 <ul class="entry_tags">
11940 <li><a href="#tag_V1">V1</a></li>
11945 <tr class="entries_header">
11946 <th class="th_details" colspan="5">Details</th>
11948 <tr class="entry_cont">
11949 <td class="entry_details" colspan="5">
11950 <p>This setting controls the physical focal length of the camera
11951 device's lens.<wbr/> Changing the focal length changes the field of
11952 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
11953 <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
11954 setting won't be applied instantaneously,<wbr/> and it may take several
11955 frames before the lens can change to the requested focal length.<wbr/>
11956 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
11957 be set to MOVING.<wbr/></p>
11958 <p>Optical zoom will not be supported on most devices.<wbr/></p>
11963 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11964 <!-- end of entry -->
11967 <tr class="entry" id="controls_android.lens.focusDistance">
11968 <td class="entry_name
11970 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
11972 <td class="entry_type">
11973 <span class="entry_type_name">float</span>
11975 <span class="entry_type_visibility"> [public]</span>
11978 <span class="entry_type_hwlevel">[full] </span>
11983 </td> <!-- entry_type -->
11985 <td class="entry_description">
11986 <p>Desired distance to plane of sharpest focus,<wbr/>
11987 measured from frontmost surface of the lens.<wbr/></p>
11990 <td class="entry_units">
11991 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11994 <td class="entry_range">
11998 <td class="entry_tags">
11999 <ul class="entry_tags">
12000 <li><a href="#tag_BC">BC</a></li>
12001 <li><a href="#tag_V1">V1</a></li>
12006 <tr class="entries_header">
12007 <th class="th_details" colspan="5">Details</th>
12009 <tr class="entry_cont">
12010 <td class="entry_details" colspan="5">
12011 <p>This control can be used for setting manual focus,<wbr/> on devices that support
12012 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12013 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12014 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12015 <code>[0.<wbr/>0f,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code>.<wbr/></p>
12016 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12017 instantaneously,<wbr/> and it may take several frames before the lens
12018 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12019 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12020 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12021 for infinity focus.<wbr/></p>
12026 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12027 <!-- end of entry -->
12030 <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12031 <td class="entry_name
12033 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12035 <td class="entry_type">
12036 <span class="entry_type_name entry_type_name_enum">byte</span>
12038 <span class="entry_type_visibility"> [public]</span>
12041 <span class="entry_type_hwlevel">[limited] </span>
12045 <ul class="entry_type_enum">
12047 <span class="entry_type_enum_name">OFF</span>
12048 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12051 <span class="entry_type_enum_name">ON</span>
12052 <span class="entry_type_enum_optional">[optional]</span>
12053 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12057 </td> <!-- entry_type -->
12059 <td class="entry_description">
12060 <p>Sets whether the camera device uses optical image stabilization (OIS)
12061 when capturing images.<wbr/></p>
12064 <td class="entry_units">
12067 <td class="entry_range">
12068 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12071 <td class="entry_tags">
12072 <ul class="entry_tags">
12073 <li><a href="#tag_V1">V1</a></li>
12078 <tr class="entries_header">
12079 <th class="th_details" colspan="5">Details</th>
12081 <tr class="entry_cont">
12082 <td class="entry_details" colspan="5">
12083 <p>OIS is used to compensate for motion blur due to small
12084 movements of the camera during capture.<wbr/> Unlike digital image
12085 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12086 makes use of mechanical elements to stabilize the camera
12087 sensor,<wbr/> and thus allows for longer exposure times before
12088 camera shake becomes apparent.<wbr/></p>
12089 <p>Switching between different optical stabilization modes may take several
12090 frames to initialize,<wbr/> the camera device will report the current mode in
12091 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12092 optical stabilization modes in the first several capture results may still
12093 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12094 <p>If a camera device supports both OIS and digital image stabilization
12095 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12096 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12097 <p>Not all devices will support OIS; see
12098 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12099 available controls.<wbr/></p>
12104 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12105 <!-- end of entry -->
12109 <!-- end of kind -->
12111 <tr><td colspan="6" class="kind">static</td></tr>
12113 <thead class="entries_header">
12115 <th class="th_name">Property Name</th>
12116 <th class="th_type">Type</th>
12117 <th class="th_description">Description</th>
12118 <th class="th_units">Units</th>
12119 <th class="th_range">Range</th>
12120 <th class="th_tags">Tags</th>
12137 <tr class="entry" id="static_android.lens.info.availableApertures">
12138 <td class="entry_name
12140 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12142 <td class="entry_type">
12143 <span class="entry_type_name">float</span>
12144 <span class="entry_type_container">x</span>
12146 <span class="entry_type_array">
12149 <span class="entry_type_visibility"> [public]</span>
12152 <span class="entry_type_hwlevel">[full] </span>
12157 </td> <!-- entry_type -->
12159 <td class="entry_description">
12160 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12161 supported by this camera device.<wbr/></p>
12164 <td class="entry_units">
12165 The aperture f-number
12168 <td class="entry_range">
12171 <td class="entry_tags">
12172 <ul class="entry_tags">
12173 <li><a href="#tag_V1">V1</a></li>
12178 <tr class="entries_header">
12179 <th class="th_details" colspan="5">Details</th>
12181 <tr class="entry_cont">
12182 <td class="entry_details" colspan="5">
12183 <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12184 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12185 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12186 in this list will be sorted in ascending order.<wbr/></p>
12191 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12192 <!-- end of entry -->
12195 <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12196 <td class="entry_name
12198 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12200 <td class="entry_type">
12201 <span class="entry_type_name">float</span>
12202 <span class="entry_type_container">x</span>
12204 <span class="entry_type_array">
12207 <span class="entry_type_visibility"> [public]</span>
12210 <span class="entry_type_hwlevel">[full] </span>
12215 </td> <!-- entry_type -->
12217 <td class="entry_description">
12218 <p>List of neutral density filter values for
12219 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12222 <td class="entry_units">
12223 Exposure value (EV)
12226 <td class="entry_range">
12227 <p>Values are >= 0</p>
12230 <td class="entry_tags">
12231 <ul class="entry_tags">
12232 <li><a href="#tag_V1">V1</a></li>
12237 <tr class="entries_header">
12238 <th class="th_details" colspan="5">Details</th>
12240 <tr class="entry_cont">
12241 <td class="entry_details" colspan="5">
12242 <p>If a neutral density filter is not supported by this camera device,<wbr/>
12243 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12244 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12249 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12250 <!-- end of entry -->
12253 <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12254 <td class="entry_name
12256 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12258 <td class="entry_type">
12259 <span class="entry_type_name">float</span>
12260 <span class="entry_type_container">x</span>
12262 <span class="entry_type_array">
12265 <span class="entry_type_visibility"> [public]</span>
12268 <span class="entry_type_hwlevel">[legacy] </span>
12271 <div class="entry_type_notes">The list of available focal lengths</div>
12274 </td> <!-- entry_type -->
12276 <td class="entry_description">
12277 <p>List of focal lengths for <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a> that are supported by this camera
12281 <td class="entry_units">
12285 <td class="entry_range">
12286 <p>Values are > 0</p>
12289 <td class="entry_tags">
12290 <ul class="entry_tags">
12291 <li><a href="#tag_BC">BC</a></li>
12292 <li><a href="#tag_V1">V1</a></li>
12297 <tr class="entries_header">
12298 <th class="th_details" colspan="5">Details</th>
12300 <tr class="entry_cont">
12301 <td class="entry_details" colspan="5">
12302 <p>If optical zoom is not supported,<wbr/> this list will only contain
12303 a single value corresponding to the fixed focal length of the
12304 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12305 by the camera device,<wbr/> in ascending order.<wbr/></p>
12310 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12311 <!-- end of entry -->
12314 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
12315 <td class="entry_name
12317 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
12319 <td class="entry_type">
12320 <span class="entry_type_name">byte</span>
12321 <span class="entry_type_container">x</span>
12323 <span class="entry_type_array">
12326 <span class="entry_type_visibility"> [public as enumList]</span>
12329 <span class="entry_type_hwlevel">[limited] </span>
12332 <div class="entry_type_notes">list of enums</div>
12335 </td> <!-- entry_type -->
12337 <td class="entry_description">
12338 <p>List of optical image stabilization (OIS) modes for
12339 <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> that are supported by this camera device.<wbr/></p>
12342 <td class="entry_units">
12345 <td class="entry_range">
12346 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
12349 <td class="entry_tags">
12350 <ul class="entry_tags">
12351 <li><a href="#tag_V1">V1</a></li>
12356 <tr class="entries_header">
12357 <th class="th_details" colspan="5">Details</th>
12359 <tr class="entry_cont">
12360 <td class="entry_details" colspan="5">
12361 <p>If OIS is not supported by a given camera device,<wbr/> this list will
12362 contain only OFF.<wbr/></p>
12367 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12368 <!-- end of entry -->
12371 <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
12372 <td class="entry_name
12374 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
12376 <td class="entry_type">
12377 <span class="entry_type_name">float</span>
12379 <span class="entry_type_visibility"> [public]</span>
12382 <span class="entry_type_hwlevel">[limited] </span>
12387 </td> <!-- entry_type -->
12389 <td class="entry_description">
12390 <p>Hyperfocal distance for this lens.<wbr/></p>
12393 <td class="entry_units">
12394 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12397 <td class="entry_range">
12398 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
12399 within <code>(0.<wbr/>0f,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code></p>
12402 <td class="entry_tags">
12406 <tr class="entries_header">
12407 <th class="th_details" colspan="5">Details</th>
12409 <tr class="entry_cont">
12410 <td class="entry_details" colspan="5">
12411 <p>If the lens is not fixed focus,<wbr/> the camera device will report this
12412 field when <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a> is APPROXIMATE or CALIBRATED.<wbr/></p>
12417 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12418 <!-- end of entry -->
12421 <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
12422 <td class="entry_name
12424 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
12426 <td class="entry_type">
12427 <span class="entry_type_name">float</span>
12429 <span class="entry_type_visibility"> [public]</span>
12432 <span class="entry_type_hwlevel">[limited] </span>
12437 </td> <!-- entry_type -->
12439 <td class="entry_description">
12440 <p>Shortest distance from frontmost surface
12441 of the lens that can be brought into sharp focus.<wbr/></p>
12444 <td class="entry_units">
12445 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12448 <td class="entry_range">
12452 <td class="entry_tags">
12453 <ul class="entry_tags">
12454 <li><a href="#tag_V1">V1</a></li>
12459 <tr class="entries_header">
12460 <th class="th_details" colspan="5">Details</th>
12462 <tr class="entry_cont">
12463 <td class="entry_details" colspan="5">
12464 <p>If the lens is fixed-focus,<wbr/> this will be
12469 <tr class="entries_header">
12470 <th class="th_details" colspan="5">HAL Implementation Details</th>
12472 <tr class="entry_cont">
12473 <td class="entry_details" colspan="5">
12474 <p>Mandatory for FULL devices; LIMITED devices
12475 must always set this value to 0 for fixed-focus; and may omit
12476 the minimum focus distance otherwise.<wbr/></p>
12477 <p>This field is also mandatory for all devices advertising
12478 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
12482 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12483 <!-- end of entry -->
12486 <tr class="entry" id="static_android.lens.info.shadingMapSize">
12487 <td class="entry_name
12489 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
12491 <td class="entry_type">
12492 <span class="entry_type_name">int32</span>
12493 <span class="entry_type_container">x</span>
12495 <span class="entry_type_array">
12498 <span class="entry_type_visibility"> [ndk_public as size]</span>
12501 <span class="entry_type_hwlevel">[full] </span>
12504 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
12507 </td> <!-- entry_type -->
12509 <td class="entry_description">
12510 <p>Dimensions of lens shading map.<wbr/></p>
12513 <td class="entry_units">
12516 <td class="entry_range">
12517 <p>Both values >= 1</p>
12520 <td class="entry_tags">
12521 <ul class="entry_tags">
12522 <li><a href="#tag_V1">V1</a></li>
12527 <tr class="entries_header">
12528 <th class="th_details" colspan="5">Details</th>
12530 <tr class="entry_cont">
12531 <td class="entry_details" colspan="5">
12532 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
12533 must be smaller than 64x64.<wbr/></p>
12538 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12539 <!-- end of entry -->
12542 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
12543 <td class="entry_name
12545 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
12547 <td class="entry_type">
12548 <span class="entry_type_name entry_type_name_enum">byte</span>
12550 <span class="entry_type_visibility"> [public]</span>
12553 <span class="entry_type_hwlevel">[limited] </span>
12557 <ul class="entry_type_enum">
12559 <span class="entry_type_enum_name">UNCALIBRATED</span>
12560 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
12561 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
12562 <p>Setting the lens to the same focus distance on separate occasions may
12563 result in a different real focus distance,<wbr/> depending on factors such
12564 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
12565 and the device temperature.<wbr/> The focus distance value will still be
12566 in the range of <code>[0,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code>,<wbr/> where 0
12567 represents the farthest focus.<wbr/></p></span>
12570 <span class="entry_type_enum_name">APPROXIMATE</span>
12571 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
12572 <p>However,<wbr/> setting the lens to the same focus distance
12573 on separate occasions may result in a different real
12574 focus distance,<wbr/> depending on factors such as the
12575 orientation of the device,<wbr/> the age of the focusing
12576 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
12579 <span class="entry_type_enum_name">CALIBRATED</span>
12580 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
12581 is calibrated.<wbr/></p>
12582 <p>The lens mechanism is calibrated so that setting the
12583 same focus distance is repeatable on multiple
12584 occasions with good accuracy,<wbr/> and the focus distance
12585 corresponds to the real physical distance to the plane
12586 of best focus.<wbr/></p></span>
12590 </td> <!-- entry_type -->
12592 <td class="entry_description">
12593 <p>The lens focus distance calibration quality.<wbr/></p>
12596 <td class="entry_units">
12599 <td class="entry_range">
12602 <td class="entry_tags">
12603 <ul class="entry_tags">
12604 <li><a href="#tag_V1">V1</a></li>
12609 <tr class="entries_header">
12610 <th class="th_details" colspan="5">Details</th>
12612 <tr class="entry_cont">
12613 <td class="entry_details" colspan="5">
12614 <p>The lens focus distance calibration quality determines the reliability of
12615 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
12616 <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
12617 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
12618 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
12619 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
12620 and increasing positive numbers represent focusing closer and closer
12621 to the camera device.<wbr/> The focus distance control also uses diopters
12622 on these devices.<wbr/></p>
12623 <p>UNCALIBRATED devices do not use units that are directly comparable
12624 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
12625 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
12626 nearest focus the device can achieve.<wbr/></p>
12630 <tr class="entries_header">
12631 <th class="th_details" colspan="5">HAL Implementation Details</th>
12633 <tr class="entry_cont">
12634 <td class="entry_details" colspan="5">
12635 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
12636 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
12637 and the lens focus distance is set to 0 diopters
12638 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
12639 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
12640 lens some time to move; during the move the lens state should be MOVING and
12641 the output diopter value should be changing toward 0.<wbr/></p>
12645 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12646 <!-- end of entry -->
12652 <tr class="entry" id="static_android.lens.facing">
12653 <td class="entry_name
12655 android.<wbr/>lens.<wbr/>facing
12657 <td class="entry_type">
12658 <span class="entry_type_name entry_type_name_enum">byte</span>
12660 <span class="entry_type_visibility"> [public]</span>
12663 <span class="entry_type_hwlevel">[legacy] </span>
12667 <ul class="entry_type_enum">
12669 <span class="entry_type_enum_name">FRONT</span>
12670 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
12673 <span class="entry_type_enum_name">BACK</span>
12674 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
12677 <span class="entry_type_enum_name">EXTERNAL</span>
12678 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
12679 device's screen.<wbr/></p></span>
12683 </td> <!-- entry_type -->
12685 <td class="entry_description">
12686 <p>Direction the camera faces relative to
12687 device screen.<wbr/></p>
12690 <td class="entry_units">
12693 <td class="entry_range">
12696 <td class="entry_tags">
12702 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12703 <!-- end of entry -->
12706 <tr class="entry" id="static_android.lens.poseRotation">
12707 <td class="entry_name
12709 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
12711 <td class="entry_type">
12712 <span class="entry_type_name">float</span>
12713 <span class="entry_type_container">x</span>
12715 <span class="entry_type_array">
12718 <span class="entry_type_visibility"> [public]</span>
12725 </td> <!-- entry_type -->
12727 <td class="entry_description">
12728 <p>The orientation of the camera relative to the sensor
12729 coordinate system.<wbr/></p>
12732 <td class="entry_units">
12734 Quaternion coefficients
12738 <td class="entry_range">
12741 <td class="entry_tags">
12742 <ul class="entry_tags">
12743 <li><a href="#tag_DEPTH">DEPTH</a></li>
12748 <tr class="entries_header">
12749 <th class="th_details" colspan="5">Details</th>
12751 <tr class="entry_cont">
12752 <td class="entry_details" colspan="5">
12753 <p>The four coefficients that describe the quaternion
12754 rotation from the Android sensor coordinate system to a
12755 camera-aligned coordinate system where the X-axis is
12756 aligned with the long side of the image sensor,<wbr/> the Y-axis
12757 is aligned with the short side of the image sensor,<wbr/> and
12758 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
12759 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
12760 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
12761 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
12762 <pre><code> theta = 2 * acos(w)
12763 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
12764 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
12765 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
12767 <p>To create a 3x3 rotation matrix that applies the rotation
12768 defined by this quaternion,<wbr/> the following matrix can be
12770 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
12771 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
12772 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
12774 <p>This matrix can then be used to apply the rotation to a
12775 column vector point with</p>
12776 <p><code>p' = Rp</code></p>
12777 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
12778 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
12783 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12784 <!-- end of entry -->
12787 <tr class="entry" id="static_android.lens.poseTranslation">
12788 <td class="entry_name
12790 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
12792 <td class="entry_type">
12793 <span class="entry_type_name">float</span>
12794 <span class="entry_type_container">x</span>
12796 <span class="entry_type_array">
12799 <span class="entry_type_visibility"> [public]</span>
12806 </td> <!-- entry_type -->
12808 <td class="entry_description">
12809 <p>Position of the camera optical center.<wbr/></p>
12812 <td class="entry_units">
12816 <td class="entry_range">
12819 <td class="entry_tags">
12820 <ul class="entry_tags">
12821 <li><a href="#tag_DEPTH">DEPTH</a></li>
12826 <tr class="entries_header">
12827 <th class="th_details" colspan="5">Details</th>
12829 <tr class="entry_cont">
12830 <td class="entry_details" colspan="5">
12831 <p>The position of the camera device's lens optical center,<wbr/>
12832 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
12833 optical center of the largest camera device facing in the
12834 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
12835 axes</a>.<wbr/> Note that only the axis definitions are shared with
12836 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
12837 <p>If this device is the largest or only camera device with a
12838 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
12839 camera device with a lens optical center located 3 cm from
12840 the main sensor along the +X axis (to the right from the
12841 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
12842 <p>To transform a pixel coordinates between two cameras
12843 facing the same direction,<wbr/> first the source camera
12844 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then
12845 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
12846 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
12847 of the source camera,<wbr/> the translation of the source camera
12848 relative to the destination camera,<wbr/> the
12849 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
12850 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
12851 of the destination camera.<wbr/> This obtains a
12852 radial-distortion-free coordinate in the destination
12853 camera pixel coordinates.<wbr/></p>
12854 <p>To compare this against a real image from the destination
12855 camera,<wbr/> the destination camera image then needs to be
12856 corrected for radial distortion before comparison or
12857 sampling.<wbr/></p>
12862 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12863 <!-- end of entry -->
12866 <tr class="entry" id="static_android.lens.intrinsicCalibration">
12867 <td class="entry_name
12869 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
12871 <td class="entry_type">
12872 <span class="entry_type_name">float</span>
12873 <span class="entry_type_container">x</span>
12875 <span class="entry_type_array">
12878 <span class="entry_type_visibility"> [public]</span>
12885 </td> <!-- entry_type -->
12887 <td class="entry_description">
12888 <p>The parameters for this camera device's intrinsic
12889 calibration.<wbr/></p>
12892 <td class="entry_units">
12895 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
12896 coordinate system.<wbr/>
12900 <td class="entry_range">
12903 <td class="entry_tags">
12904 <ul class="entry_tags">
12905 <li><a href="#tag_DEPTH">DEPTH</a></li>
12910 <tr class="entries_header">
12911 <th class="th_details" colspan="5">Details</th>
12913 <tr class="entry_cont">
12914 <td class="entry_details" colspan="5">
12915 <p>The five calibration parameters that describe the
12916 transform from camera-centric 3D coordinates to sensor
12917 pixel coordinates:</p>
12918 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
12920 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
12921 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
12922 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
12923 being aligned with the lens plane.<wbr/></p>
12924 <p>These are typically used within a transformation matrix K:</p>
12925 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
12926 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
12929 <p>which can then be combined with the camera pose rotation
12930 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
12931 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
12932 complete transform from world coordinates to pixel
12934 <pre><code>P = [ K 0 * [ R t
12937 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
12938 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
12939 coordinate system,<wbr/> and with the mapping including the
12940 homogeneous division by z:</p>
12941 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
12942 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
12944 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
12945 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
12946 (depth) in pixel coordinates.<wbr/></p>
12947 <p>Note that the coordinate system for this transform is the
12948 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/>
12949 where <code>(0,<wbr/>0)</code> is the top-left of the
12950 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
12951 intrinsic calibration transforms have been applied to a
12952 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
12953 transform needs to be applied,<wbr/> and the result adjusted to
12954 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
12955 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
12956 activeArraySize rectangle),<wbr/> to determine the final pixel
12957 coordinate of the world point for processed (non-RAW)
12958 output buffers.<wbr/></p>
12963 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12964 <!-- end of entry -->
12967 <tr class="entry" id="static_android.lens.radialDistortion">
12968 <td class="entry_name
12970 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
12972 <td class="entry_type">
12973 <span class="entry_type_name">float</span>
12974 <span class="entry_type_container">x</span>
12976 <span class="entry_type_array">
12979 <span class="entry_type_visibility"> [public]</span>
12986 </td> <!-- entry_type -->
12988 <td class="entry_description">
12989 <p>The correction coefficients to correct for this camera device's
12990 radial and tangential lens distortion.<wbr/></p>
12993 <td class="entry_units">
12995 Unitless coefficients.<wbr/>
12999 <td class="entry_range">
13002 <td class="entry_tags">
13003 <ul class="entry_tags">
13004 <li><a href="#tag_DEPTH">DEPTH</a></li>
13009 <tr class="entries_header">
13010 <th class="th_details" colspan="5">Details</th>
13012 <tr class="entry_cont">
13013 <td class="entry_details" colspan="5">
13014 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13015 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13016 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13017 lens's geometric distortion with the mapping equations:</p>
13018 <pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13019 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13020 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13021 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13023 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13024 input image that correspond to the pixel values in the
13025 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13026 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13028 <p>The pixel coordinates are defined in a normalized
13029 coordinate system related to the
13030 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13031 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the
13032 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13033 of both x and y coordinates are normalized to be 1 at the
13034 edge further from the optical center,<wbr/> so the range
13035 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
13036 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13037 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13038 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
13039 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13044 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13045 <!-- end of entry -->
13049 <!-- end of kind -->
13051 <tr><td colspan="6" class="kind">dynamic</td></tr>
13053 <thead class="entries_header">
13055 <th class="th_name">Property Name</th>
13056 <th class="th_type">Type</th>
13057 <th class="th_description">Description</th>
13058 <th class="th_units">Units</th>
13059 <th class="th_range">Range</th>
13060 <th class="th_tags">Tags</th>
13075 <tr class="entry" id="dynamic_android.lens.aperture">
13076 <td class="entry_name
13078 android.<wbr/>lens.<wbr/>aperture
13080 <td class="entry_type">
13081 <span class="entry_type_name">float</span>
13083 <span class="entry_type_visibility"> [public]</span>
13086 <span class="entry_type_hwlevel">[full] </span>
13091 </td> <!-- entry_type -->
13093 <td class="entry_description">
13094 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13095 effective aperture diameter.<wbr/></p>
13098 <td class="entry_units">
13099 The f-number (f/<wbr/>N)
13102 <td class="entry_range">
13103 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13106 <td class="entry_tags">
13107 <ul class="entry_tags">
13108 <li><a href="#tag_V1">V1</a></li>
13113 <tr class="entries_header">
13114 <th class="th_details" colspan="5">Details</th>
13116 <tr class="entry_cont">
13117 <td class="entry_details" colspan="5">
13118 <p>Setting this value is only supported on the camera devices that have a variable
13119 aperture lens.<wbr/></p>
13120 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
13121 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
13122 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>
13123 to achieve manual exposure control.<wbr/></p>
13124 <p>The requested aperture value may take several frames to reach the
13125 requested value; the camera device will report the current (intermediate)
13126 aperture size in capture result metadata while the aperture is changing.<wbr/>
13127 While the aperture is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
13128 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
13129 the ON modes,<wbr/> this will be overridden by the camera device
13130 auto-exposure algorithm,<wbr/> the overridden values are then provided
13131 back to the user in the corresponding result.<wbr/></p>
13136 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13137 <!-- end of entry -->
13140 <tr class="entry" id="dynamic_android.lens.filterDensity">
13141 <td class="entry_name
13143 android.<wbr/>lens.<wbr/>filter<wbr/>Density
13145 <td class="entry_type">
13146 <span class="entry_type_name">float</span>
13148 <span class="entry_type_visibility"> [public]</span>
13151 <span class="entry_type_hwlevel">[full] </span>
13156 </td> <!-- entry_type -->
13158 <td class="entry_description">
13159 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
13162 <td class="entry_units">
13163 Exposure Value (EV)
13166 <td class="entry_range">
13167 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
13170 <td class="entry_tags">
13171 <ul class="entry_tags">
13172 <li><a href="#tag_V1">V1</a></li>
13177 <tr class="entries_header">
13178 <th class="th_details" colspan="5">Details</th>
13180 <tr class="entry_cont">
13181 <td class="entry_details" colspan="5">
13182 <p>This control will not be supported on most camera devices.<wbr/></p>
13183 <p>Lens filters are typically used to lower the amount of light the
13184 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
13185 step is the standard logarithmic representation,<wbr/> which are
13186 non-negative,<wbr/> and inversely proportional to the amount of light
13187 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
13188 in no reduction of the incoming light,<wbr/> and setting this to 2 would
13189 mean that the filter is set to reduce incoming light by two stops
13190 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
13191 <p>It may take several frames before the lens filter density changes
13192 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
13193 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
13198 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13199 <!-- end of entry -->
13202 <tr class="entry" id="dynamic_android.lens.focalLength">
13203 <td class="entry_name
13205 android.<wbr/>lens.<wbr/>focal<wbr/>Length
13207 <td class="entry_type">
13208 <span class="entry_type_name">float</span>
13210 <span class="entry_type_visibility"> [public]</span>
13213 <span class="entry_type_hwlevel">[legacy] </span>
13218 </td> <!-- entry_type -->
13220 <td class="entry_description">
13221 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
13224 <td class="entry_units">
13228 <td class="entry_range">
13229 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
13232 <td class="entry_tags">
13233 <ul class="entry_tags">
13234 <li><a href="#tag_BC">BC</a></li>
13239 <tr class="entries_header">
13240 <th class="th_details" colspan="5">Details</th>
13242 <tr class="entry_cont">
13243 <td class="entry_details" colspan="5">
13244 <p>This setting controls the physical focal length of the camera
13245 device's lens.<wbr/> Changing the focal length changes the field of
13246 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
13247 <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
13248 setting won't be applied instantaneously,<wbr/> and it may take several
13249 frames before the lens can change to the requested focal length.<wbr/>
13250 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
13251 be set to MOVING.<wbr/></p>
13252 <p>Optical zoom will not be supported on most devices.<wbr/></p>
13257 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13258 <!-- end of entry -->
13261 <tr class="entry" id="dynamic_android.lens.focusDistance">
13262 <td class="entry_name
13264 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
13266 <td class="entry_type">
13267 <span class="entry_type_name">float</span>
13269 <span class="entry_type_visibility"> [public]</span>
13272 <span class="entry_type_hwlevel">[full] </span>
13277 </td> <!-- entry_type -->
13279 <td class="entry_description">
13280 <p>Desired distance to plane of sharpest focus,<wbr/>
13281 measured from frontmost surface of the lens.<wbr/></p>
13284 <td class="entry_units">
13285 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13288 <td class="entry_range">
13292 <td class="entry_tags">
13293 <ul class="entry_tags">
13294 <li><a href="#tag_BC">BC</a></li>
13299 <tr class="entries_header">
13300 <th class="th_details" colspan="5">Details</th>
13302 <tr class="entry_cont">
13303 <td class="entry_details" colspan="5">
13304 <p>Should be zero for fixed-focus cameras</p>
13309 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13310 <!-- end of entry -->
13313 <tr class="entry" id="dynamic_android.lens.focusRange">
13314 <td class="entry_name
13316 android.<wbr/>lens.<wbr/>focus<wbr/>Range
13318 <td class="entry_type">
13319 <span class="entry_type_name">float</span>
13320 <span class="entry_type_container">x</span>
13322 <span class="entry_type_array">
13325 <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
13328 <span class="entry_type_hwlevel">[limited] </span>
13331 <div class="entry_type_notes">Range of scene distances that are in focus</div>
13334 </td> <!-- entry_type -->
13336 <td class="entry_description">
13337 <p>The range of scene distances that are in
13338 sharp focus (depth of field).<wbr/></p>
13341 <td class="entry_units">
13342 A pair of focus distances in diopters: (near,<wbr/>
13343 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
13346 <td class="entry_range">
13350 <td class="entry_tags">
13351 <ul class="entry_tags">
13352 <li><a href="#tag_BC">BC</a></li>
13357 <tr class="entries_header">
13358 <th class="th_details" colspan="5">Details</th>
13360 <tr class="entry_cont">
13361 <td class="entry_details" colspan="5">
13362 <p>If variable focus not supported,<wbr/> can still report
13363 fixed depth of field range</p>
13368 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13369 <!-- end of entry -->
13372 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
13373 <td class="entry_name
13375 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
13377 <td class="entry_type">
13378 <span class="entry_type_name entry_type_name_enum">byte</span>
13380 <span class="entry_type_visibility"> [public]</span>
13383 <span class="entry_type_hwlevel">[limited] </span>
13387 <ul class="entry_type_enum">
13389 <span class="entry_type_enum_name">OFF</span>
13390 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
13393 <span class="entry_type_enum_name">ON</span>
13394 <span class="entry_type_enum_optional">[optional]</span>
13395 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
13399 </td> <!-- entry_type -->
13401 <td class="entry_description">
13402 <p>Sets whether the camera device uses optical image stabilization (OIS)
13403 when capturing images.<wbr/></p>
13406 <td class="entry_units">
13409 <td class="entry_range">
13410 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
13413 <td class="entry_tags">
13414 <ul class="entry_tags">
13415 <li><a href="#tag_V1">V1</a></li>
13420 <tr class="entries_header">
13421 <th class="th_details" colspan="5">Details</th>
13423 <tr class="entry_cont">
13424 <td class="entry_details" colspan="5">
13425 <p>OIS is used to compensate for motion blur due to small
13426 movements of the camera during capture.<wbr/> Unlike digital image
13427 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
13428 makes use of mechanical elements to stabilize the camera
13429 sensor,<wbr/> and thus allows for longer exposure times before
13430 camera shake becomes apparent.<wbr/></p>
13431 <p>Switching between different optical stabilization modes may take several
13432 frames to initialize,<wbr/> the camera device will report the current mode in
13433 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
13434 optical stabilization modes in the first several capture results may still
13435 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
13436 <p>If a camera device supports both OIS and digital image stabilization
13437 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
13438 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
13439 <p>Not all devices will support OIS; see
13440 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
13441 available controls.<wbr/></p>
13446 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13447 <!-- end of entry -->
13450 <tr class="entry" id="dynamic_android.lens.state">
13451 <td class="entry_name
13453 android.<wbr/>lens.<wbr/>state
13455 <td class="entry_type">
13456 <span class="entry_type_name entry_type_name_enum">byte</span>
13458 <span class="entry_type_visibility"> [public]</span>
13461 <span class="entry_type_hwlevel">[limited] </span>
13465 <ul class="entry_type_enum">
13467 <span class="entry_type_enum_name">STATIONARY</span>
13468 <span class="entry_type_enum_notes"><p>The lens parameters (<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13469 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) are not changing.<wbr/></p></span>
13472 <span class="entry_type_enum_name">MOVING</span>
13473 <span class="entry_type_enum_notes"><p>One or several of the lens parameters
13474 (<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/>
13475 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> or <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) is
13476 currently changing.<wbr/></p></span>
13480 </td> <!-- entry_type -->
13482 <td class="entry_description">
13483 <p>Current lens status.<wbr/></p>
13486 <td class="entry_units">
13489 <td class="entry_range">
13492 <td class="entry_tags">
13493 <ul class="entry_tags">
13494 <li><a href="#tag_V1">V1</a></li>
13499 <tr class="entries_header">
13500 <th class="th_details" colspan="5">Details</th>
13502 <tr class="entry_cont">
13503 <td class="entry_details" colspan="5">
13504 <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/>
13505 <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/>
13506 they may take several frames to reach the requested values.<wbr/> This state indicates
13507 the current status of the lens parameters.<wbr/></p>
13508 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
13509 either because the parameters are all fixed,<wbr/> or because the lens has had enough
13510 time to reach the most recently-requested values.<wbr/>
13511 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
13513 <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
13514 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
13515 <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/>
13516 which means the optical zoom is not supported.<wbr/></li>
13517 <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>
13518 <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>
13520 <p>Then this state will always be STATIONARY.<wbr/></p>
13521 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
13522 is changing.<wbr/></p>
13527 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13528 <!-- end of entry -->
13531 <tr class="entry" id="dynamic_android.lens.poseRotation">
13532 <td class="entry_name
13534 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13536 <td class="entry_type">
13537 <span class="entry_type_name">float</span>
13538 <span class="entry_type_container">x</span>
13540 <span class="entry_type_array">
13543 <span class="entry_type_visibility"> [public]</span>
13550 </td> <!-- entry_type -->
13552 <td class="entry_description">
13553 <p>The orientation of the camera relative to the sensor
13554 coordinate system.<wbr/></p>
13557 <td class="entry_units">
13559 Quaternion coefficients
13563 <td class="entry_range">
13566 <td class="entry_tags">
13567 <ul class="entry_tags">
13568 <li><a href="#tag_DEPTH">DEPTH</a></li>
13573 <tr class="entries_header">
13574 <th class="th_details" colspan="5">Details</th>
13576 <tr class="entry_cont">
13577 <td class="entry_details" colspan="5">
13578 <p>The four coefficients that describe the quaternion
13579 rotation from the Android sensor coordinate system to a
13580 camera-aligned coordinate system where the X-axis is
13581 aligned with the long side of the image sensor,<wbr/> the Y-axis
13582 is aligned with the short side of the image sensor,<wbr/> and
13583 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13584 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13585 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13586 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13587 <pre><code> theta = 2 * acos(w)
13588 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13589 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13590 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13592 <p>To create a 3x3 rotation matrix that applies the rotation
13593 defined by this quaternion,<wbr/> the following matrix can be
13595 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
13596 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
13597 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13599 <p>This matrix can then be used to apply the rotation to a
13600 column vector point with</p>
13601 <p><code>p' = Rp</code></p>
13602 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13603 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13608 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13609 <!-- end of entry -->
13612 <tr class="entry" id="dynamic_android.lens.poseTranslation">
13613 <td class="entry_name
13615 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13617 <td class="entry_type">
13618 <span class="entry_type_name">float</span>
13619 <span class="entry_type_container">x</span>
13621 <span class="entry_type_array">
13624 <span class="entry_type_visibility"> [public]</span>
13631 </td> <!-- entry_type -->
13633 <td class="entry_description">
13634 <p>Position of the camera optical center.<wbr/></p>
13637 <td class="entry_units">
13641 <td class="entry_range">
13644 <td class="entry_tags">
13645 <ul class="entry_tags">
13646 <li><a href="#tag_DEPTH">DEPTH</a></li>
13651 <tr class="entries_header">
13652 <th class="th_details" colspan="5">Details</th>
13654 <tr class="entry_cont">
13655 <td class="entry_details" colspan="5">
13656 <p>The position of the camera device's lens optical center,<wbr/>
13657 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
13658 optical center of the largest camera device facing in the
13659 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
13660 axes</a>.<wbr/> Note that only the axis definitions are shared with
13661 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
13662 <p>If this device is the largest or only camera device with a
13663 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
13664 camera device with a lens optical center located 3 cm from
13665 the main sensor along the +X axis (to the right from the
13666 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13667 <p>To transform a pixel coordinates between two cameras
13668 facing the same direction,<wbr/> first the source camera
13669 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then
13670 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
13671 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
13672 of the source camera,<wbr/> the translation of the source camera
13673 relative to the destination camera,<wbr/> the
13674 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
13675 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13676 of the destination camera.<wbr/> This obtains a
13677 radial-distortion-free coordinate in the destination
13678 camera pixel coordinates.<wbr/></p>
13679 <p>To compare this against a real image from the destination
13680 camera,<wbr/> the destination camera image then needs to be
13681 corrected for radial distortion before comparison or
13682 sampling.<wbr/></p>
13687 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13688 <!-- end of entry -->
13691 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
13692 <td class="entry_name
13694 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13696 <td class="entry_type">
13697 <span class="entry_type_name">float</span>
13698 <span class="entry_type_container">x</span>
13700 <span class="entry_type_array">
13703 <span class="entry_type_visibility"> [public]</span>
13710 </td> <!-- entry_type -->
13712 <td class="entry_description">
13713 <p>The parameters for this camera device's intrinsic
13714 calibration.<wbr/></p>
13717 <td class="entry_units">
13720 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13721 coordinate system.<wbr/>
13725 <td class="entry_range">
13728 <td class="entry_tags">
13729 <ul class="entry_tags">
13730 <li><a href="#tag_DEPTH">DEPTH</a></li>
13735 <tr class="entries_header">
13736 <th class="th_details" colspan="5">Details</th>
13738 <tr class="entry_cont">
13739 <td class="entry_details" colspan="5">
13740 <p>The five calibration parameters that describe the
13741 transform from camera-centric 3D coordinates to sensor
13742 pixel coordinates:</p>
13743 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13745 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13746 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13747 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13748 being aligned with the lens plane.<wbr/></p>
13749 <p>These are typically used within a transformation matrix K:</p>
13750 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
13751 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13754 <p>which can then be combined with the camera pose rotation
13755 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13756 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13757 complete transform from world coordinates to pixel
13759 <pre><code>P = [ K 0 * [ R t
13762 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13763 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13764 coordinate system,<wbr/> and with the mapping including the
13765 homogeneous division by z:</p>
13766 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13767 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13769 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13770 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13771 (depth) in pixel coordinates.<wbr/></p>
13772 <p>Note that the coordinate system for this transform is the
13773 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/>
13774 where <code>(0,<wbr/>0)</code> is the top-left of the
13775 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13776 intrinsic calibration transforms have been applied to a
13777 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13778 transform needs to be applied,<wbr/> and the result adjusted to
13779 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13780 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13781 activeArraySize rectangle),<wbr/> to determine the final pixel
13782 coordinate of the world point for processed (non-RAW)
13783 output buffers.<wbr/></p>
13788 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13789 <!-- end of entry -->
13792 <tr class="entry" id="dynamic_android.lens.radialDistortion">
13793 <td class="entry_name
13795 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13797 <td class="entry_type">
13798 <span class="entry_type_name">float</span>
13799 <span class="entry_type_container">x</span>
13801 <span class="entry_type_array">
13804 <span class="entry_type_visibility"> [public]</span>
13811 </td> <!-- entry_type -->
13813 <td class="entry_description">
13814 <p>The correction coefficients to correct for this camera device's
13815 radial and tangential lens distortion.<wbr/></p>
13818 <td class="entry_units">
13820 Unitless coefficients.<wbr/>
13824 <td class="entry_range">
13827 <td class="entry_tags">
13828 <ul class="entry_tags">
13829 <li><a href="#tag_DEPTH">DEPTH</a></li>
13834 <tr class="entries_header">
13835 <th class="th_details" colspan="5">Details</th>
13837 <tr class="entry_cont">
13838 <td class="entry_details" colspan="5">
13839 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13840 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13841 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13842 lens's geometric distortion with the mapping equations:</p>
13843 <pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13844 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13845 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13846 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13848 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13849 input image that correspond to the pixel values in the
13850 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13851 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13853 <p>The pixel coordinates are defined in a normalized
13854 coordinate system related to the
13855 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13856 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the
13857 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13858 of both x and y coordinates are normalized to be 1 at the
13859 edge further from the optical center,<wbr/> so the range
13860 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
13861 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13862 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13863 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
13864 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13869 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13870 <!-- end of entry -->
13874 <!-- end of kind -->
13877 <!-- end of section -->
13878 <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
13881 <tr><td colspan="6" class="kind">controls</td></tr>
13883 <thead class="entries_header">
13885 <th class="th_name">Property Name</th>
13886 <th class="th_type">Type</th>
13887 <th class="th_description">Description</th>
13888 <th class="th_units">Units</th>
13889 <th class="th_range">Range</th>
13890 <th class="th_tags">Tags</th>
13905 <tr class="entry" id="controls_android.noiseReduction.mode">
13906 <td class="entry_name
13908 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13910 <td class="entry_type">
13911 <span class="entry_type_name entry_type_name_enum">byte</span>
13913 <span class="entry_type_visibility"> [public]</span>
13916 <span class="entry_type_hwlevel">[full] </span>
13920 <ul class="entry_type_enum">
13922 <span class="entry_type_enum_name">OFF</span>
13923 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13926 <span class="entry_type_enum_name">FAST</span>
13927 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13928 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
13929 relative to sensor.<wbr/></p></span>
13932 <span class="entry_type_enum_name">HIGH_QUALITY</span>
13933 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13934 rate relative to sensor output.<wbr/></p></span>
13937 <span class="entry_type_enum_name">MINIMAL</span>
13938 <span class="entry_type_enum_optional">[optional]</span>
13939 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13940 sensor output.<wbr/> </p></span>
13943 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
13944 <span class="entry_type_enum_optional">[optional]</span>
13945 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
13946 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise
13947 reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
13948 noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
13949 for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
13950 is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
13951 quality may improve from FAST).<wbr/></p>
13952 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13953 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13954 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13955 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
13956 high-resolution buffers must not have noise reduction applied to maximize efficiency of
13957 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
13958 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
13959 applied for reasonable preview quality.<wbr/></p>
13960 <p>This mode is guaranteed to be supported by devices that support either the
13961 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13962 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13963 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13967 </td> <!-- entry_type -->
13969 <td class="entry_description">
13970 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13973 <td class="entry_units">
13976 <td class="entry_range">
13977 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13980 <td class="entry_tags">
13981 <ul class="entry_tags">
13982 <li><a href="#tag_V1">V1</a></li>
13983 <li><a href="#tag_REPROC">REPROC</a></li>
13988 <tr class="entries_header">
13989 <th class="th_details" colspan="5">Details</th>
13991 <tr class="entry_cont">
13992 <td class="entry_details" colspan="5">
13993 <p>The noise reduction algorithm attempts to improve image quality by removing
13994 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13995 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13996 YUV domain.<wbr/></p>
13997 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13998 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13999 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14000 <a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> before using it.<wbr/></p>
14001 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14002 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14003 will use the highest-quality noise filtering algorithms,<wbr/>
14004 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14005 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14006 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14007 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14008 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14009 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14010 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14011 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14012 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14013 those will be reprocessed later if necessary.<wbr/></p>
14014 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14015 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14016 may adjust the noise reduction parameters for best image quality based on the
14017 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14021 <tr class="entries_header">
14022 <th class="th_details" colspan="5">HAL Implementation Details</th>
14024 <tr class="entry_cont">
14025 <td class="entry_details" colspan="5">
14026 <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
14027 adjust the internal noise reduction parameters appropriately to get the best quality
14032 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14033 <!-- end of entry -->
14036 <tr class="entry" id="controls_android.noiseReduction.strength">
14037 <td class="entry_name
14039 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
14041 <td class="entry_type">
14042 <span class="entry_type_name">byte</span>
14044 <span class="entry_type_visibility"> [system]</span>
14051 </td> <!-- entry_type -->
14053 <td class="entry_description">
14054 <p>Control the amount of noise reduction
14055 applied to the images</p>
14058 <td class="entry_units">
14059 1-10; 10 is max noise reduction
14062 <td class="entry_range">
14066 <td class="entry_tags">
14067 <ul class="entry_tags">
14068 <li><a href="#tag_FUTURE">FUTURE</a></li>
14075 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14076 <!-- end of entry -->
14080 <!-- end of kind -->
14082 <tr><td colspan="6" class="kind">static</td></tr>
14084 <thead class="entries_header">
14086 <th class="th_name">Property Name</th>
14087 <th class="th_type">Type</th>
14088 <th class="th_description">Description</th>
14089 <th class="th_units">Units</th>
14090 <th class="th_range">Range</th>
14091 <th class="th_tags">Tags</th>
14106 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
14107 <td class="entry_name
14109 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
14111 <td class="entry_type">
14112 <span class="entry_type_name">byte</span>
14113 <span class="entry_type_container">x</span>
14115 <span class="entry_type_array">
14118 <span class="entry_type_visibility"> [public as enumList]</span>
14121 <span class="entry_type_hwlevel">[limited] </span>
14124 <div class="entry_type_notes">list of enums</div>
14127 </td> <!-- entry_type -->
14129 <td class="entry_description">
14130 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
14131 by this camera device.<wbr/></p>
14134 <td class="entry_units">
14137 <td class="entry_range">
14138 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
14141 <td class="entry_tags">
14142 <ul class="entry_tags">
14143 <li><a href="#tag_V1">V1</a></li>
14144 <li><a href="#tag_REPROC">REPROC</a></li>
14149 <tr class="entries_header">
14150 <th class="th_details" colspan="5">Details</th>
14152 <tr class="entry_cont">
14153 <td class="entry_details" colspan="5">
14154 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
14155 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
14156 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
14157 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
14161 <tr class="entries_header">
14162 <th class="th_details" colspan="5">HAL Implementation Details</th>
14164 <tr class="entry_cont">
14165 <td class="entry_details" colspan="5">
14166 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
14167 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
14168 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
14169 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
14173 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14174 <!-- end of entry -->
14178 <!-- end of kind -->
14180 <tr><td colspan="6" class="kind">dynamic</td></tr>
14182 <thead class="entries_header">
14184 <th class="th_name">Property Name</th>
14185 <th class="th_type">Type</th>
14186 <th class="th_description">Description</th>
14187 <th class="th_units">Units</th>
14188 <th class="th_range">Range</th>
14189 <th class="th_tags">Tags</th>
14204 <tr class="entry" id="dynamic_android.noiseReduction.mode">
14205 <td class="entry_name
14207 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14209 <td class="entry_type">
14210 <span class="entry_type_name entry_type_name_enum">byte</span>
14212 <span class="entry_type_visibility"> [public]</span>
14215 <span class="entry_type_hwlevel">[full] </span>
14219 <ul class="entry_type_enum">
14221 <span class="entry_type_enum_name">OFF</span>
14222 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14225 <span class="entry_type_enum_name">FAST</span>
14226 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14227 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14228 relative to sensor.<wbr/></p></span>
14231 <span class="entry_type_enum_name">HIGH_QUALITY</span>
14232 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14233 rate relative to sensor output.<wbr/></p></span>
14236 <span class="entry_type_enum_name">MINIMAL</span>
14237 <span class="entry_type_enum_optional">[optional]</span>
14238 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14239 sensor output.<wbr/> </p></span>
14242 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
14243 <span class="entry_type_enum_optional">[optional]</span>
14244 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14245 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise
14246 reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
14247 noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
14248 for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
14249 is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
14250 quality may improve from FAST).<wbr/></p>
14251 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14252 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14253 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14254 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
14255 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14256 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14257 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14258 applied for reasonable preview quality.<wbr/></p>
14259 <p>This mode is guaranteed to be supported by devices that support either the
14260 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14261 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14262 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14266 </td> <!-- entry_type -->
14268 <td class="entry_description">
14269 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14272 <td class="entry_units">
14275 <td class="entry_range">
14276 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14279 <td class="entry_tags">
14280 <ul class="entry_tags">
14281 <li><a href="#tag_V1">V1</a></li>
14282 <li><a href="#tag_REPROC">REPROC</a></li>
14287 <tr class="entries_header">
14288 <th class="th_details" colspan="5">Details</th>
14290 <tr class="entry_cont">
14291 <td class="entry_details" colspan="5">
14292 <p>The noise reduction algorithm attempts to improve image quality by removing
14293 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14294 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14295 YUV domain.<wbr/></p>
14296 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14297 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14298 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14299 <a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> before using it.<wbr/></p>
14300 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14301 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14302 will use the highest-quality noise filtering algorithms,<wbr/>
14303 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14304 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14305 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14306 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14307 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14308 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14309 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14310 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14311 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14312 those will be reprocessed later if necessary.<wbr/></p>
14313 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14314 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14315 may adjust the noise reduction parameters for best image quality based on the
14316 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14320 <tr class="entries_header">
14321 <th class="th_details" colspan="5">HAL Implementation Details</th>
14323 <tr class="entry_cont">
14324 <td class="entry_details" colspan="5">
14325 <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
14326 adjust the internal noise reduction parameters appropriately to get the best quality
14331 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14332 <!-- end of entry -->
14336 <!-- end of kind -->
14339 <!-- end of section -->
14340 <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
14343 <tr><td colspan="6" class="kind">static</td></tr>
14345 <thead class="entries_header">
14347 <th class="th_name">Property Name</th>
14348 <th class="th_type">Type</th>
14349 <th class="th_description">Description</th>
14350 <th class="th_units">Units</th>
14351 <th class="th_range">Range</th>
14352 <th class="th_tags">Tags</th>
14367 <tr class="entry" id="static_android.quirks.meteringCropRegion">
14368 <td class="entry_name
14369 entry_name_deprecated
14371 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
14373 <td class="entry_type">
14374 <span class="entry_type_name">byte</span>
14376 <span class="entry_type_visibility"> [system]</span>
14380 <span class="entry_type_deprecated">[deprecated] </span>
14384 </td> <!-- entry_type -->
14386 <td class="entry_description">
14387 <p>If set to 1,<wbr/> the camera service does not
14388 scale 'normalized' coordinates with respect to the crop
14389 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
14390 and output (face rectangles).<wbr/></p>
14393 <td class="entry_units">
14396 <td class="entry_range">
14397 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14400 <td class="entry_tags">
14404 <tr class="entries_header">
14405 <th class="th_details" colspan="5">Details</th>
14407 <tr class="entry_cont">
14408 <td class="entry_details" colspan="5">
14409 <p>Normalized coordinates refer to those in the
14410 (-1000,<wbr/>1000) range mentioned in the
14411 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
14412 <p>HAL implementations should instead always use and emit
14413 sensor array-relative coordinates for all region data.<wbr/> Does
14414 not need to be listed in static metadata.<wbr/> Support will be
14415 removed in future versions of camera service.<wbr/></p>
14420 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14421 <!-- end of entry -->
14424 <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
14425 <td class="entry_name
14426 entry_name_deprecated
14428 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
14430 <td class="entry_type">
14431 <span class="entry_type_name">byte</span>
14433 <span class="entry_type_visibility"> [system]</span>
14437 <span class="entry_type_deprecated">[deprecated] </span>
14441 </td> <!-- entry_type -->
14443 <td class="entry_description">
14444 <p>If set to 1,<wbr/> then the camera service always
14445 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
14449 <td class="entry_units">
14452 <td class="entry_range">
14453 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14456 <td class="entry_tags">
14460 <tr class="entries_header">
14461 <th class="th_details" colspan="5">Details</th>
14463 <tr class="entry_cont">
14464 <td class="entry_details" colspan="5">
14465 <p>HAL implementations should implement AF trigger
14466 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
14467 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
14468 not need to be listed in static metadata.<wbr/> Support will be
14469 removed in future versions of camera service</p>
14474 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14475 <!-- end of entry -->
14478 <tr class="entry" id="static_android.quirks.useZslFormat">
14479 <td class="entry_name
14480 entry_name_deprecated
14482 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
14484 <td class="entry_type">
14485 <span class="entry_type_name">byte</span>
14487 <span class="entry_type_visibility"> [system]</span>
14491 <span class="entry_type_deprecated">[deprecated] </span>
14495 </td> <!-- entry_type -->
14497 <td class="entry_description">
14498 <p>If set to 1,<wbr/> the camera service uses
14499 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
14500 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
14501 shutter lag stream</p>
14504 <td class="entry_units">
14507 <td class="entry_range">
14508 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14511 <td class="entry_tags">
14515 <tr class="entries_header">
14516 <th class="th_details" colspan="5">Details</th>
14518 <tr class="entry_cont">
14519 <td class="entry_details" colspan="5">
14520 <p>HAL implementations should use gralloc usage flags
14521 to determine that a stream will be used for
14522 zero-shutter-lag,<wbr/> instead of relying on an explicit
14523 format setting.<wbr/> Does not need to be listed in static
14524 metadata.<wbr/> Support will be removed in future versions of
14525 camera service.<wbr/></p>
14530 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14531 <!-- end of entry -->
14534 <tr class="entry" id="static_android.quirks.usePartialResult">
14535 <td class="entry_name
14536 entry_name_deprecated
14538 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
14540 <td class="entry_type">
14541 <span class="entry_type_name">byte</span>
14543 <span class="entry_type_visibility"> [hidden]</span>
14547 <span class="entry_type_deprecated">[deprecated] </span>
14551 </td> <!-- entry_type -->
14553 <td class="entry_description">
14554 <p>If set to 1,<wbr/> the HAL will always split result
14555 metadata for a single capture into multiple buffers,<wbr/>
14556 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
14559 <td class="entry_units">
14562 <td class="entry_range">
14563 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14566 <td class="entry_tags">
14570 <tr class="entries_header">
14571 <th class="th_details" colspan="5">Details</th>
14573 <tr class="entry_cont">
14574 <td class="entry_details" colspan="5">
14575 <p>Does not need to be listed in static
14576 metadata.<wbr/> Support for partial results will be reworked in
14577 future versions of camera service.<wbr/> This quirk will stop
14578 working at that point; DO NOT USE without careful
14579 consideration of future support.<wbr/></p>
14583 <tr class="entries_header">
14584 <th class="th_details" colspan="5">HAL Implementation Details</th>
14586 <tr class="entry_cont">
14587 <td class="entry_details" colspan="5">
14588 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14589 for information on how to implement partial results.<wbr/></p>
14593 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14594 <!-- end of entry -->
14598 <!-- end of kind -->
14600 <tr><td colspan="6" class="kind">dynamic</td></tr>
14602 <thead class="entries_header">
14604 <th class="th_name">Property Name</th>
14605 <th class="th_type">Type</th>
14606 <th class="th_description">Description</th>
14607 <th class="th_units">Units</th>
14608 <th class="th_range">Range</th>
14609 <th class="th_tags">Tags</th>
14624 <tr class="entry" id="dynamic_android.quirks.partialResult">
14625 <td class="entry_name
14626 entry_name_deprecated
14628 android.<wbr/>quirks.<wbr/>partial<wbr/>Result
14630 <td class="entry_type">
14631 <span class="entry_type_name entry_type_name_enum">byte</span>
14633 <span class="entry_type_visibility"> [hidden as boolean]</span>
14637 <span class="entry_type_deprecated">[deprecated] </span>
14640 <ul class="entry_type_enum">
14642 <span class="entry_type_enum_name">FINAL</span>
14643 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
14644 for this capture.<wbr/></p></span>
14647 <span class="entry_type_enum_name">PARTIAL</span>
14648 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
14649 capture.<wbr/> More result buffers for this capture will be sent
14650 by the camera device,<wbr/> the last of which will be marked
14651 FINAL.<wbr/></p></span>
14655 </td> <!-- entry_type -->
14657 <td class="entry_description">
14658 <p>Whether a result given to the framework is the
14659 final one for the capture,<wbr/> or only a partial that contains a
14660 subset of the full set of dynamic metadata
14664 <td class="entry_units">
14667 <td class="entry_range">
14668 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14669 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
14672 <td class="entry_tags">
14676 <tr class="entries_header">
14677 <th class="th_details" colspan="5">Details</th>
14679 <tr class="entry_cont">
14680 <td class="entry_details" colspan="5">
14681 <p>The entries in the result metadata buffers for a
14682 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
14683 FINAL buffers must retain FIFO ordering relative to the
14684 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
14685 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
14686 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
14687 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
14688 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
14689 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
14693 <tr class="entries_header">
14694 <th class="th_details" colspan="5">HAL Implementation Details</th>
14696 <tr class="entry_cont">
14697 <td class="entry_details" colspan="5">
14698 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14699 for information on how to implement partial results.<wbr/></p>
14703 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14704 <!-- end of entry -->
14708 <!-- end of kind -->
14711 <!-- end of section -->
14712 <tr><td colspan="6" id="section_request" class="section">request</td></tr>
14715 <tr><td colspan="6" class="kind">controls</td></tr>
14717 <thead class="entries_header">
14719 <th class="th_name">Property Name</th>
14720 <th class="th_type">Type</th>
14721 <th class="th_description">Description</th>
14722 <th class="th_units">Units</th>
14723 <th class="th_range">Range</th>
14724 <th class="th_tags">Tags</th>
14739 <tr class="entry" id="controls_android.request.frameCount">
14740 <td class="entry_name
14741 entry_name_deprecated
14743 android.<wbr/>request.<wbr/>frame<wbr/>Count
14745 <td class="entry_type">
14746 <span class="entry_type_name">int32</span>
14748 <span class="entry_type_visibility"> [system]</span>
14752 <span class="entry_type_deprecated">[deprecated] </span>
14756 </td> <!-- entry_type -->
14758 <td class="entry_description">
14759 <p>A frame counter set by the framework.<wbr/> Must
14760 be maintained unchanged in output frame.<wbr/> This value monotonically
14761 increases with every new result (that is,<wbr/> each new result has a unique
14762 frameCount value).<wbr/></p>
14765 <td class="entry_units">
14766 incrementing integer
14769 <td class="entry_range">
14770 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14771 <p>Any int.<wbr/></p>
14774 <td class="entry_tags">
14780 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14781 <!-- end of entry -->
14784 <tr class="entry" id="controls_android.request.id">
14785 <td class="entry_name
14787 android.<wbr/>request.<wbr/>id
14789 <td class="entry_type">
14790 <span class="entry_type_name">int32</span>
14792 <span class="entry_type_visibility"> [hidden]</span>
14799 </td> <!-- entry_type -->
14801 <td class="entry_description">
14802 <p>An application-specified ID for the current
14803 request.<wbr/> Must be maintained unchanged in output
14807 <td class="entry_units">
14808 arbitrary integer assigned by application
14811 <td class="entry_range">
14815 <td class="entry_tags">
14816 <ul class="entry_tags">
14817 <li><a href="#tag_V1">V1</a></li>
14824 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14825 <!-- end of entry -->
14828 <tr class="entry" id="controls_android.request.inputStreams">
14829 <td class="entry_name
14830 entry_name_deprecated
14832 android.<wbr/>request.<wbr/>input<wbr/>Streams
14834 <td class="entry_type">
14835 <span class="entry_type_name">int32</span>
14836 <span class="entry_type_container">x</span>
14838 <span class="entry_type_array">
14841 <span class="entry_type_visibility"> [system]</span>
14845 <span class="entry_type_deprecated">[deprecated] </span>
14849 </td> <!-- entry_type -->
14851 <td class="entry_description">
14852 <p>List which camera reprocess stream is used
14853 for the source of reprocessing data.<wbr/></p>
14856 <td class="entry_units">
14857 List of camera reprocess stream IDs
14860 <td class="entry_range">
14861 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14862 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
14865 <td class="entry_tags">
14866 <ul class="entry_tags">
14867 <li><a href="#tag_HAL2">HAL2</a></li>
14872 <tr class="entries_header">
14873 <th class="th_details" colspan="5">Details</th>
14875 <tr class="entry_cont">
14876 <td class="entry_details" colspan="5">
14877 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
14878 REPROCESS.<wbr/> Ignored otherwise</p>
14883 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14884 <!-- end of entry -->
14887 <tr class="entry" id="controls_android.request.metadataMode">
14888 <td class="entry_name
14890 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
14892 <td class="entry_type">
14893 <span class="entry_type_name entry_type_name_enum">byte</span>
14895 <span class="entry_type_visibility"> [system]</span>
14901 <ul class="entry_type_enum">
14903 <span class="entry_type_enum_name">NONE</span>
14904 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
14905 for application-bound buffer data.<wbr/> If no
14906 application-bound streams exist,<wbr/> no frame should be
14907 placed in the output frame queue.<wbr/> If such streams
14908 exist,<wbr/> a frame should be placed on the output queue
14909 with null metadata but with the necessary output buffer
14910 information.<wbr/> Timestamp information should still be
14911 included with any output stream buffers</p></span>
14914 <span class="entry_type_enum_name">FULL</span>
14915 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
14916 only be produced if they are separately
14921 </td> <!-- entry_type -->
14923 <td class="entry_description">
14924 <p>How much metadata to produce on
14928 <td class="entry_units">
14931 <td class="entry_range">
14934 <td class="entry_tags">
14935 <ul class="entry_tags">
14936 <li><a href="#tag_FUTURE">FUTURE</a></li>
14943 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14944 <!-- end of entry -->
14947 <tr class="entry" id="controls_android.request.outputStreams">
14948 <td class="entry_name
14949 entry_name_deprecated
14951 android.<wbr/>request.<wbr/>output<wbr/>Streams
14953 <td class="entry_type">
14954 <span class="entry_type_name">int32</span>
14955 <span class="entry_type_container">x</span>
14957 <span class="entry_type_array">
14960 <span class="entry_type_visibility"> [system]</span>
14964 <span class="entry_type_deprecated">[deprecated] </span>
14968 </td> <!-- entry_type -->
14970 <td class="entry_description">
14971 <p>Lists which camera output streams image data
14972 from this capture must be sent to</p>
14975 <td class="entry_units">
14976 List of camera stream IDs
14979 <td class="entry_range">
14980 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14981 <p>List must only include streams that have been
14985 <td class="entry_tags">
14986 <ul class="entry_tags">
14987 <li><a href="#tag_HAL2">HAL2</a></li>
14992 <tr class="entries_header">
14993 <th class="th_details" colspan="5">Details</th>
14995 <tr class="entry_cont">
14996 <td class="entry_details" colspan="5">
14997 <p>If no output streams are listed,<wbr/> then the image
14998 data should simply be discarded.<wbr/> The image data must
14999 still be captured for metadata and statistics production,<wbr/>
15000 and the lens and flash must operate as requested.<wbr/></p>
15005 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15006 <!-- end of entry -->
15009 <tr class="entry" id="controls_android.request.type">
15010 <td class="entry_name
15011 entry_name_deprecated
15013 android.<wbr/>request.<wbr/>type
15015 <td class="entry_type">
15016 <span class="entry_type_name entry_type_name_enum">byte</span>
15018 <span class="entry_type_visibility"> [system]</span>
15022 <span class="entry_type_deprecated">[deprecated] </span>
15025 <ul class="entry_type_enum">
15027 <span class="entry_type_enum_name">CAPTURE</span>
15028 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
15029 and process it according to the
15030 settings</p></span>
15033 <span class="entry_type_enum_name">REPROCESS</span>
15034 <span class="entry_type_enum_notes"><p>Process previously captured data; the
15035 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
15036 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
15037 needed for reprocessing with [RP]</p></span>
15041 </td> <!-- entry_type -->
15043 <td class="entry_description">
15044 <p>The type of the request; either CAPTURE or
15045 REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
15048 <td class="entry_units">
15051 <td class="entry_range">
15052 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15055 <td class="entry_tags">
15056 <ul class="entry_tags">
15057 <li><a href="#tag_HAL2">HAL2</a></li>
15064 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15065 <!-- end of entry -->
15069 <!-- end of kind -->
15071 <tr><td colspan="6" class="kind">static</td></tr>
15073 <thead class="entries_header">
15075 <th class="th_name">Property Name</th>
15076 <th class="th_type">Type</th>
15077 <th class="th_description">Description</th>
15078 <th class="th_units">Units</th>
15079 <th class="th_range">Range</th>
15080 <th class="th_tags">Tags</th>
15095 <tr class="entry" id="static_android.request.maxNumOutputStreams">
15096 <td class="entry_name
15098 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
15100 <td class="entry_type">
15101 <span class="entry_type_name">int32</span>
15102 <span class="entry_type_container">x</span>
15104 <span class="entry_type_array">
15107 <span class="entry_type_visibility"> [ndk_public]</span>
15110 <span class="entry_type_hwlevel">[legacy] </span>
15115 </td> <!-- entry_type -->
15117 <td class="entry_description">
15118 <p>The maximum numbers of different types of output streams
15119 that can be configured and used simultaneously by a camera device.<wbr/></p>
15122 <td class="entry_units">
15125 <td class="entry_range">
15126 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p>
15127 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p>
15128 <p>For processed (but not stalling) format streams,<wbr/> >= 3
15129 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15130 >= 2 for LIMITED mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>).<wbr/></p>
15133 <td class="entry_tags">
15134 <ul class="entry_tags">
15135 <li><a href="#tag_BC">BC</a></li>
15140 <tr class="entries_header">
15141 <th class="th_details" colspan="5">Details</th>
15143 <tr class="entry_cont">
15144 <td class="entry_details" colspan="5">
15145 <p>This is a 3 element tuple that contains the max number of output simultaneous
15146 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
15147 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
15148 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
15149 number is 3,<wbr/> and max JPEG stream number is 2,<wbr/> then this tuple should be <code>(1,<wbr/> 3,<wbr/> 2)</code>.<wbr/></p>
15150 <p>This lists the upper bound of the number of output streams supported by
15151 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15152 CPU resources that will consume more power.<wbr/> The image format for an output stream can
15153 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
15154 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
15155 into the 3 stream types as below:</p>
15157 <li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/>
15158 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
15159 <li>Raw formats: <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
15160 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
15161 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
15162 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or
15163 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
15169 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15170 <!-- end of entry -->
15173 <tr class="entry" id="static_android.request.maxNumOutputRaw">
15174 <td class="entry_name
15176 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
15178 <td class="entry_type">
15179 <span class="entry_type_name">int32</span>
15181 <span class="entry_type_visibility"> [java_public]</span>
15183 <span class="entry_type_synthetic">[synthetic] </span>
15185 <span class="entry_type_hwlevel">[legacy] </span>
15190 </td> <!-- entry_type -->
15192 <td class="entry_description">
15193 <p>The maximum numbers of different types of output streams
15194 that can be configured and used simultaneously by a camera device
15195 for any <code>RAW</code> formats.<wbr/></p>
15198 <td class="entry_units">
15201 <td class="entry_range">
15205 <td class="entry_tags">
15209 <tr class="entries_header">
15210 <th class="th_details" colspan="5">Details</th>
15212 <tr class="entry_cont">
15213 <td class="entry_details" colspan="5">
15214 <p>This value contains the max number of output simultaneous
15215 streams from the raw sensor.<wbr/></p>
15216 <p>This lists the upper bound of the number of output streams supported by
15217 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15218 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15219 be any <code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p>
15220 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
15222 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
15223 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
15224 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
15226 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
15227 never support raw streams.<wbr/></p>
15232 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15233 <!-- end of entry -->
15236 <tr class="entry" id="static_android.request.maxNumOutputProc">
15237 <td class="entry_name
15239 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
15241 <td class="entry_type">
15242 <span class="entry_type_name">int32</span>
15244 <span class="entry_type_visibility"> [java_public]</span>
15246 <span class="entry_type_synthetic">[synthetic] </span>
15248 <span class="entry_type_hwlevel">[legacy] </span>
15253 </td> <!-- entry_type -->
15255 <td class="entry_description">
15256 <p>The maximum numbers of different types of output streams
15257 that can be configured and used simultaneously by a camera device
15258 for any processed (but not-stalling) formats.<wbr/></p>
15261 <td class="entry_units">
15264 <td class="entry_range">
15266 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15267 >= 2 for LIMITED mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>).<wbr/></p>
15270 <td class="entry_tags">
15274 <tr class="entries_header">
15275 <th class="th_details" colspan="5">Details</th>
15277 <tr class="entry_cont">
15278 <td class="entry_details" colspan="5">
15279 <p>This value contains the max number of output simultaneous
15280 streams for any processed (but not-stalling) formats.<wbr/></p>
15281 <p>This lists the upper bound of the number of output streams supported by
15282 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15283 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15284 be any non-<code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p>
15285 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
15288 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
15289 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
15290 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
15291 <li>Implementation-defined formats,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#isOutputSupportedFor(Class)">StreamConfigurationMap#isOutputSupportedFor(Class)</a></li>
15293 <p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a
15294 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
15295 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
15300 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15301 <!-- end of entry -->
15304 <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
15305 <td class="entry_name
15307 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
15309 <td class="entry_type">
15310 <span class="entry_type_name">int32</span>
15312 <span class="entry_type_visibility"> [java_public]</span>
15314 <span class="entry_type_synthetic">[synthetic] </span>
15316 <span class="entry_type_hwlevel">[legacy] </span>
15321 </td> <!-- entry_type -->
15323 <td class="entry_description">
15324 <p>The maximum numbers of different types of output streams
15325 that can be configured and used simultaneously by a camera device
15326 for any processed (and stalling) formats.<wbr/></p>
15329 <td class="entry_units">
15332 <td class="entry_range">
15336 <td class="entry_tags">
15340 <tr class="entries_header">
15341 <th class="th_details" colspan="5">Details</th>
15343 <tr class="entry_cont">
15344 <td class="entry_details" colspan="5">
15345 <p>This value contains the max number of output simultaneous
15346 streams for any processed (but not-stalling) formats.<wbr/></p>
15347 <p>This lists the upper bound of the number of output streams supported by
15348 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15349 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15350 be any non-<code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p>
15351 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
15352 > 0.<wbr/> Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a
15353 stalling format.<wbr/></p>
15354 <p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a
15355 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
15356 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
15361 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15362 <!-- end of entry -->
15365 <tr class="entry" id="static_android.request.maxNumReprocessStreams">
15366 <td class="entry_name
15367 entry_name_deprecated
15369 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
15371 <td class="entry_type">
15372 <span class="entry_type_name">int32</span>
15373 <span class="entry_type_container">x</span>
15375 <span class="entry_type_array">
15378 <span class="entry_type_visibility"> [system]</span>
15382 <span class="entry_type_deprecated">[deprecated] </span>
15386 </td> <!-- entry_type -->
15388 <td class="entry_description">
15389 <p>How many reprocessing streams of any type
15390 can be allocated at the same time.<wbr/></p>
15393 <td class="entry_units">
15396 <td class="entry_range">
15397 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15401 <td class="entry_tags">
15402 <ul class="entry_tags">
15403 <li><a href="#tag_HAL2">HAL2</a></li>
15408 <tr class="entries_header">
15409 <th class="th_details" colspan="5">Details</th>
15411 <tr class="entry_cont">
15412 <td class="entry_details" colspan="5">
15413 <p>Only used by HAL2.<wbr/>x.<wbr/></p>
15414 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
15419 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15420 <!-- end of entry -->
15423 <tr class="entry" id="static_android.request.maxNumInputStreams">
15424 <td class="entry_name
15426 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
15428 <td class="entry_type">
15429 <span class="entry_type_name">int32</span>
15431 <span class="entry_type_visibility"> [public]</span>
15434 <span class="entry_type_hwlevel">[full] </span>
15439 </td> <!-- entry_type -->
15441 <td class="entry_description">
15442 <p>The maximum numbers of any type of input streams
15443 that can be configured and used simultaneously by a camera device.<wbr/></p>
15446 <td class="entry_units">
15449 <td class="entry_range">
15450 <p>0 or 1.<wbr/></p>
15453 <td class="entry_tags">
15454 <ul class="entry_tags">
15455 <li><a href="#tag_REPROC">REPROC</a></li>
15460 <tr class="entries_header">
15461 <th class="th_details" colspan="5">Details</th>
15463 <tr class="entry_cont">
15464 <td class="entry_details" colspan="5">
15465 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
15466 <p>The image format for a input stream can be any supported format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/> When using an
15467 input stream,<wbr/> there must be at least one output stream configured to to receive the
15468 reprocessed images.<wbr/></p>
15469 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
15470 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
15471 new sensor image will not be captured.<wbr/></p>
15472 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
15473 stream image format will be PRIVATE,<wbr/> the associated output stream image format
15474 should be JPEG.<wbr/></p>
15478 <tr class="entries_header">
15479 <th class="th_details" colspan="5">HAL Implementation Details</th>
15481 <tr class="entry_cont">
15482 <td class="entry_details" colspan="5">
15483 <p>For the reprocessing flow and controls,<wbr/> see
15484 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
15488 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15489 <!-- end of entry -->
15492 <tr class="entry" id="static_android.request.pipelineMaxDepth">
15493 <td class="entry_name
15495 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
15497 <td class="entry_type">
15498 <span class="entry_type_name">byte</span>
15500 <span class="entry_type_visibility"> [public]</span>
15503 <span class="entry_type_hwlevel">[legacy] </span>
15508 </td> <!-- entry_type -->
15510 <td class="entry_description">
15511 <p>Specifies the number of maximum pipeline stages a frame
15512 has to go through from when it's exposed to when it's available
15513 to the framework.<wbr/></p>
15516 <td class="entry_units">
15519 <td class="entry_range">
15522 <td class="entry_tags">
15526 <tr class="entries_header">
15527 <th class="th_details" colspan="5">Details</th>
15529 <tr class="entry_cont">
15530 <td class="entry_details" colspan="5">
15531 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
15532 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
15533 its own stages to do custom HW processing.<wbr/> Further stages may be
15534 added by SW processing.<wbr/></p>
15535 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
15536 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
15537 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
15538 the max pipeline depth.<wbr/></p>
15539 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
15540 X frame intervals.<wbr/></p>
15541 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
15542 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
15546 <tr class="entries_header">
15547 <th class="th_details" colspan="5">HAL Implementation Details</th>
15549 <tr class="entry_cont">
15550 <td class="entry_details" colspan="5">
15551 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
15552 max batch sizes may be larger than 1.<wbr/></p>
15556 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15557 <!-- end of entry -->
15560 <tr class="entry" id="static_android.request.partialResultCount">
15561 <td class="entry_name
15563 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
15565 <td class="entry_type">
15566 <span class="entry_type_name">int32</span>
15568 <span class="entry_type_visibility"> [public]</span>
15575 </td> <!-- entry_type -->
15577 <td class="entry_description">
15578 <p>Defines how many sub-components
15579 a result will be composed of.<wbr/></p>
15582 <td class="entry_units">
15585 <td class="entry_range">
15589 <td class="entry_tags">
15593 <tr class="entries_header">
15594 <th class="th_details" colspan="5">Details</th>
15596 <tr class="entry_cont">
15597 <td class="entry_details" colspan="5">
15598 <p>In order to combat the pipeline latency,<wbr/> partial results
15599 may be delivered to the application layer from the camera device as
15600 soon as they are available.<wbr/></p>
15601 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
15602 results are not supported,<wbr/> and only the final TotalCaptureResult will
15603 be produced by the camera device.<wbr/></p>
15604 <p>A typical use case for this might be: after requesting an
15605 auto-focus (AF) lock the new AF state might be available 50%
15606 of the way through the pipeline.<wbr/> The camera device could
15607 then immediately dispatch this state via a partial result to
15608 the application,<wbr/> and the rest of the metadata via later
15609 partial results.<wbr/></p>
15614 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15615 <!-- end of entry -->
15618 <tr class="entry" id="static_android.request.availableCapabilities">
15619 <td class="entry_name
15621 android.<wbr/>request.<wbr/>available<wbr/>Capabilities
15623 <td class="entry_type">
15624 <span class="entry_type_name entry_type_name_enum">byte</span>
15625 <span class="entry_type_container">x</span>
15627 <span class="entry_type_array">
15630 <span class="entry_type_visibility"> [public]</span>
15633 <span class="entry_type_hwlevel">[legacy] </span>
15637 <ul class="entry_type_enum">
15639 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
15640 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
15641 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
15642 supports.<wbr/></p>
15643 <p>This capability is listed by all normal devices,<wbr/> and
15644 indicates that the camera device has a feature set
15645 that's comparable to the baseline requirements for the
15646 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15647 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
15648 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
15649 not standard color output.<wbr/></p></span>
15652 <span class="entry_type_enum_name">MANUAL_SENSOR</span>
15653 <span class="entry_type_enum_optional">[optional]</span>
15654 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
15655 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
15656 The camera device supports basic manual control of the sensor image
15657 acquisition related stages.<wbr/> This means the following controls are
15658 guaranteed to be supported:</p>
15660 <li>Manual frame duration control<ul>
15661 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
15662 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
15665 <li>Manual exposure control<ul>
15666 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15667 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
15670 <li>Manual sensitivity control<ul>
15671 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15672 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
15675 <li>Manual lens control (if the lens is adjustable)<ul>
15676 <li>android.<wbr/>lens.<wbr/>*</li>
15679 <li>Manual flash control (if a flash unit is present)<ul>
15680 <li>android.<wbr/>flash.<wbr/>*</li>
15683 <li>Manual black level locking<ul>
15684 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
15687 <li>Auto exposure lock<ul>
15688 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15692 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
15693 device will accurately report the values applied by 3A in the
15695 <p>A given camera device may also support additional manual sensor controls,<wbr/>
15696 but this capability only covers the above list of controls.<wbr/></p>
15697 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
15698 additionally return a min frame duration that is greater than
15699 zero for each supported size-format combination.<wbr/></p></span>
15702 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
15703 <span class="entry_type_enum_optional">[optional]</span>
15704 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
15705 The camera device supports basic manual control of the image post-processing
15706 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
15709 <p>Manual tonemap control</p>
15711 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
15712 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
15713 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
15714 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
15715 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
15719 <p>Manual white balance control</p>
15721 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
15722 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
15725 <li>Manual lens shading map control<ul>
15726 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
15727 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
15728 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
15729 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
15732 <li>Manual aberration correction control (if aberration correction is supported)<ul>
15733 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
15734 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
15737 <li>Auto white balance lock<ul>
15738 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15742 <p>If auto white balance is enabled,<wbr/> then the camera device
15743 will accurately report the values applied by AWB in the result.<wbr/></p>
15744 <p>A given camera device may also support additional post-processing
15745 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
15748 <span class="entry_type_enum_name">RAW</span>
15749 <span class="entry_type_enum_optional">[optional]</span>
15750 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
15751 metadata for interpreting them.<wbr/></p>
15752 <p>Devices supporting the RAW capability allow both for
15753 saving DNG files,<wbr/> and for direct application processing of
15754 raw sensor images.<wbr/></p>
15756 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
15757 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
15758 will match either the value in
15759 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
15760 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
15761 <li>All DNG-related optional metadata entries are provided
15762 by the camera device.<wbr/></li>
15766 <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span>
15767 <span class="entry_type_enum_optional">[optional]</span>
15768 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
15770 <li>One input stream is supported,<wbr/> that is,<wbr/> <code><a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> == 1</code>.<wbr/></li>
15771 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is supported as an output/<wbr/>input format,<wbr/>
15772 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
15773 formats returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
15774 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15775 returns non empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li>
15776 <li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">getInputSizes(ImageFormat.<wbr/>PRIVATE)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">getOutputSizes(ImageFormat.<wbr/>PRIVATE)</a></li>
15777 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
15778 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15779 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
15780 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
15781 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
15782 <li>The maximum available resolution for PRIVATE streams
15783 (both input/<wbr/>output) will match the maximum available
15784 resolution of JPEG streams.<wbr/></li>
15785 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15786 <li>Only below controls are effective for reprocessing requests and
15787 will be present in capture results,<wbr/> other controls in reprocess
15788 requests will be ignored by the camera device.<wbr/><ul>
15789 <li>android.<wbr/>jpeg.<wbr/>*</li>
15790 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15791 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15794 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15795 <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li>
15799 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
15800 <span class="entry_type_enum_optional">[optional]</span>
15801 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
15802 the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows
15803 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
15804 <p>The values reported for the following controls are guaranteed to be available
15805 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
15807 <li>Exposure control<ul>
15808 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15811 <li>Sensitivity control<ul>
15812 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15815 <li>Lens controls (if the lens is adjustable)<ul>
15816 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
15817 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
15821 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
15822 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
15825 <span class="entry_type_enum_name">BURST_CAPTURE</span>
15826 <span class="entry_type_enum_optional">[optional]</span>
15827 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per
15828 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
15829 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames
15830 per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
15831 resolution of the device,<wbr/> whichever is smaller.<wbr/></p>
15832 <p>More specifically,<wbr/> this means that a size matching the camera device's active array
15833 size is listed as a supported size for the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> format in either <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> or <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
15834 with a minimum frame duration for that format and size of either <= 1/<wbr/>20 s,<wbr/> or
15835 <= 1/<wbr/>10 s,<wbr/> respectively; and the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry
15836 lists at least one FPS range where the minimum FPS is >= 1 /<wbr/> minimumFrameDuration
15837 for the maximum-size YUV_<wbr/>420_<wbr/>888 format.<wbr/> If that maximum size is listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
15838 then the list of resolutions for YUV_<wbr/>420_<wbr/>888 from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> contains at
15839 least one resolution >= 8 megapixels,<wbr/> with a minimum frame duration of <= 1/<wbr/>20
15841 <p>If the device supports the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a>,<wbr/> then those can also be captured at the same rate
15842 as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p>
15843 <p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees
15844 as for the YUV_<wbr/>420_<wbr/>888 format also apply to the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> format.<wbr/></p>
15845 <p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is guaranted to have a value between 0
15846 and 4,<wbr/> inclusive.<wbr/> <a href="#static_android.control.aeLockAvailable">android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available</a> and <a href="#static_android.control.awbLockAvailable">android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available</a>
15847 are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields
15848 consistent image output.<wbr/></p></span>
15851 <span class="entry_type_enum_name">YUV_REPROCESSING</span>
15852 <span class="entry_type_enum_optional">[optional]</span>
15853 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
15854 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
15857 <li>One input stream is supported,<wbr/> that is,<wbr/> <code><a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> == 1</code>.<wbr/></li>
15858 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> is supported as an output/<wbr/>input format,<wbr/> that is,<wbr/>
15859 YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by
15860 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and
15861 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
15862 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15863 returns non-empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li>
15864 <li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">get<wbr/>Input<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">get<wbr/>Output<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a></li>
15865 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> does not cause a frame rate drop
15866 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15867 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> will be reprocessable into both
15868 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
15869 <li>The maximum available resolution for <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> streams (both input/<wbr/>output) will match the
15870 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
15871 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15872 <li>Only the below controls are effective for reprocessing requests and will be present
15873 in capture results.<wbr/> The reprocess requests are from the original capture results that
15874 are associated with the intermediate <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a>
15875 output buffers.<wbr/> All other controls in the reprocess requests will be ignored by the
15876 camera device.<wbr/><ul>
15877 <li>android.<wbr/>jpeg.<wbr/>*</li>
15878 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15879 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15880 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
15883 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15884 <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li>
15888 <span class="entry_type_enum_name">DEPTH_OUTPUT</span>
15889 <span class="entry_type_enum_optional">[optional]</span>
15890 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
15891 <p>This capability requires the camera device to support the following:</p>
15893 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li>
15894 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a> is optionally supported as an
15895 output format.<wbr/></li>
15896 <li>This camera device,<wbr/> and all camera devices with the same <a href="#static_android.lens.facing">android.<wbr/>lens.<wbr/>facing</a>,<wbr/>
15897 will list the following calibration entries in both
15898 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and
15899 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
15900 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
15901 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
15902 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
15903 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
15906 <li>The <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> entry is listed by this device.<wbr/></li>
15907 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
15908 normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
15911 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
15912 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
15913 should be accounted for (see
15914 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
15915 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
15916 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
15917 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
15918 rate,<wbr/> including depth stall time.<wbr/></p></span>
15921 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span>
15922 <span class="entry_type_enum_optional">[optional]</span>
15923 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps)
15924 use case.<wbr/> The camera device will support high speed capture session created by
15925 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
15926 only accepts high speed request lists created by
15927 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
15928 <p>A camera device can still support high speed video streaming by advertising the high speed
15929 FPS ranges in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a>.<wbr/> For this case,<wbr/> all normal
15930 capture request per frame control and synchronization requirements will apply to
15931 the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes
15932 the capability of a specialized operating mode with many limitations (see below),<wbr/> which
15933 is only targeted at high speed video recording.<wbr/></p>
15934 <p>The supported high speed video sizes and fps ranges are specified in
15935 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
15936 To get desired output frame rates,<wbr/> the application is only allowed to select video size
15937 and FPS range combinations provided by
15938 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/>
15939 The fps range can be controlled via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
15940 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
15941 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
15942 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
15943 and post-processing parameters is possible.<wbr/> All other controls operate the
15944 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
15945 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
15947 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
15948 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
15949 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15950 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15951 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
15952 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
15953 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
15954 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
15955 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
15956 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
15958 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
15960 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
15961 work since aeMode is ON)</li>
15962 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
15963 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
15964 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
15966 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
15967 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
15968 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
15969 the application need check if the video encoder is capable of supporting the
15970 high frame rate for a given video size,<wbr/> or it will end up with lower recording
15971 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
15972 rate will be bounded by the screen refresh rate.<wbr/></p>
15973 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
15974 (preview and recording surfaces)
15975 in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p>
15977 <li>The application creates a camera capture session with no more than 2 surfaces via
15978 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
15979 targeted surfaces must be preview surface (either from
15980 <a href="https://developer.android.com/reference/android/view/SurfaceView.html">SurfaceView</a> or <a href="https://developer.android.com/reference/android/graphics/SurfaceTexture.html">SurfaceTexture</a>) or
15981 recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or
15982 <a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
15983 <li>The stream sizes are selected from the sizes reported by
15984 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
15985 <li>The FPS ranges are selected from
15986 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
15988 <p>When above conditions are NOT satistied,<wbr/>
15989 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
15990 will fail.<wbr/></p>
15991 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
15992 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
15993 the application avoids unnecessary maximum target FPS changes as much as possible
15994 during high speed streaming.<wbr/></p></span>
15998 </td> <!-- entry_type -->
16000 <td class="entry_description">
16001 <p>List of capabilities that this camera device
16002 advertises as fully supporting.<wbr/></p>
16005 <td class="entry_units">
16008 <td class="entry_range">
16011 <td class="entry_tags">
16015 <tr class="entries_header">
16016 <th class="th_details" colspan="5">Details</th>
16018 <tr class="entry_cont">
16019 <td class="entry_details" colspan="5">
16020 <p>A capability is a contract that the camera device makes in order
16021 to be able to satisfy one or more use cases.<wbr/></p>
16022 <p>Listing a capability guarantees that the whole set of features
16023 required to support a common use will all be available.<wbr/></p>
16024 <p>Using a subset of the functionality provided by an unsupported
16025 capability may be possible on a specific camera device implementation;
16026 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
16027 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
16028 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
16029 <p>The following capabilities are guaranteed to be available on
16030 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
16032 <li>MANUAL_<wbr/>SENSOR</li>
16033 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
16035 <p>Other capabilities may be available on either FULL or LIMITED
16036 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
16040 <tr class="entries_header">
16041 <th class="th_details" colspan="5">HAL Implementation Details</th>
16043 <tr class="entry_cont">
16044 <td class="entry_details" colspan="5">
16045 <p>Additional constraint details per-capability will be available
16046 in the Compatibility Test Suite.<wbr/></p>
16047 <p>Minimum baseline requirements required for the
16048 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
16049 Instead refer to "BC" tags and the camera CTS tests in the
16050 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
16051 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
16052 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
16053 request and the result in order to be considered to be
16054 capability-compliant.<wbr/></p>
16055 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
16056 then exposure time must be configurable via the request <em>and</em>
16057 the actual exposure applied must be available via
16058 the result.<wbr/></p>
16059 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
16060 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
16061 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
16062 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
16063 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
16064 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
16065 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
16066 YUV_<wbr/>REPROCESSING capability must support the
16067 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
16068 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
16069 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
16070 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
16071 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
16072 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
16073 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
16074 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
16079 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16080 <!-- end of entry -->
16083 <tr class="entry" id="static_android.request.availableRequestKeys">
16084 <td class="entry_name
16086 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
16088 <td class="entry_type">
16089 <span class="entry_type_name">int32</span>
16090 <span class="entry_type_container">x</span>
16092 <span class="entry_type_array">
16095 <span class="entry_type_visibility"> [ndk_public]</span>
16098 <span class="entry_type_hwlevel">[legacy] </span>
16103 </td> <!-- entry_type -->
16105 <td class="entry_description">
16106 <p>A list of all keys that the camera device has available
16107 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
16110 <td class="entry_units">
16113 <td class="entry_range">
16116 <td class="entry_tags">
16120 <tr class="entries_header">
16121 <th class="th_details" colspan="5">Details</th>
16123 <tr class="entry_cont">
16124 <td class="entry_details" colspan="5">
16125 <p>Attempting to set a key into a CaptureRequest that is not
16126 listed here will result in an invalid request and will be rejected
16127 by the camera device.<wbr/></p>
16128 <p>This field can be used to query the feature set of a camera device
16129 at a more granular level than capabilities.<wbr/> This is especially
16130 important for optional keys that are not listed under any capability
16131 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16135 <tr class="entries_header">
16136 <th class="th_details" colspan="5">HAL Implementation Details</th>
16138 <tr class="entry_cont">
16139 <td class="entry_details" colspan="5">
16140 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
16141 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
16142 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16143 vendor extensions API and not against this field.<wbr/></p>
16144 <p>The HAL must not consume any request tags that are not listed either
16145 here or in the vendor tag list.<wbr/></p>
16146 <p>The public camera2 API will always make the vendor tags visible
16148 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
16152 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16153 <!-- end of entry -->
16156 <tr class="entry" id="static_android.request.availableResultKeys">
16157 <td class="entry_name
16159 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
16161 <td class="entry_type">
16162 <span class="entry_type_name">int32</span>
16163 <span class="entry_type_container">x</span>
16165 <span class="entry_type_array">
16168 <span class="entry_type_visibility"> [ndk_public]</span>
16171 <span class="entry_type_hwlevel">[legacy] </span>
16176 </td> <!-- entry_type -->
16178 <td class="entry_description">
16179 <p>A list of all keys that the camera device has available
16180 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
16183 <td class="entry_units">
16186 <td class="entry_range">
16189 <td class="entry_tags">
16193 <tr class="entries_header">
16194 <th class="th_details" colspan="5">Details</th>
16196 <tr class="entry_cont">
16197 <td class="entry_details" colspan="5">
16198 <p>Attempting to get a key from a CaptureResult that is not
16199 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
16200 a CaptureResult that is listed here will generally never return a <code>null</code>
16202 <p>The following keys may return <code>null</code> unless they are enabled:</p>
16204 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> (non-null iff <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON)</li>
16206 <p>(Those sometimes-null keys will nevertheless be listed here
16207 if they are available.<wbr/>)</p>
16208 <p>This field can be used to query the feature set of a camera device
16209 at a more granular level than capabilities.<wbr/> This is especially
16210 important for optional keys that are not listed under any capability
16211 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16215 <tr class="entries_header">
16216 <th class="th_details" colspan="5">HAL Implementation Details</th>
16218 <tr class="entry_cont">
16219 <td class="entry_details" colspan="5">
16220 <p>Tags listed here must always have an entry in the result metadata,<wbr/>
16221 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
16222 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
16223 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
16224 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
16225 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16226 vendor extensions API and not against this field.<wbr/></p>
16227 <p>The HAL must not produce any result tags that are not listed either
16228 here or in the vendor tag list.<wbr/></p>
16229 <p>The public camera2 API will always make the vendor tags visible via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
16233 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16234 <!-- end of entry -->
16237 <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
16238 <td class="entry_name
16240 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
16242 <td class="entry_type">
16243 <span class="entry_type_name">int32</span>
16244 <span class="entry_type_container">x</span>
16246 <span class="entry_type_array">
16249 <span class="entry_type_visibility"> [ndk_public]</span>
16252 <span class="entry_type_hwlevel">[legacy] </span>
16257 </td> <!-- entry_type -->
16259 <td class="entry_description">
16260 <p>A list of all keys that the camera device has available
16261 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
16264 <td class="entry_units">
16267 <td class="entry_range">
16270 <td class="entry_tags">
16274 <tr class="entries_header">
16275 <th class="th_details" colspan="5">Details</th>
16277 <tr class="entry_cont">
16278 <td class="entry_details" colspan="5">
16279 <p>This entry follows the same rules as
16280 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
16281 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
16286 <tr class="entries_header">
16287 <th class="th_details" colspan="5">HAL Implementation Details</th>
16289 <tr class="entry_cont">
16290 <td class="entry_details" colspan="5">
16291 <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
16292 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
16293 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
16294 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
16295 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
16296 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16297 vendor extensions API and not against this field.<wbr/></p>
16298 <p>The HAL must not have any tags in its static info that are not listed
16299 either here or in the vendor tag list.<wbr/></p>
16300 <p>The public camera2 API will always make the vendor tags visible
16301 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
16305 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16306 <!-- end of entry -->
16310 <!-- end of kind -->
16312 <tr><td colspan="6" class="kind">dynamic</td></tr>
16314 <thead class="entries_header">
16316 <th class="th_name">Property Name</th>
16317 <th class="th_type">Type</th>
16318 <th class="th_description">Description</th>
16319 <th class="th_units">Units</th>
16320 <th class="th_range">Range</th>
16321 <th class="th_tags">Tags</th>
16336 <tr class="entry" id="dynamic_android.request.frameCount">
16337 <td class="entry_name
16338 entry_name_deprecated
16340 android.<wbr/>request.<wbr/>frame<wbr/>Count
16342 <td class="entry_type">
16343 <span class="entry_type_name">int32</span>
16345 <span class="entry_type_visibility"> [hidden]</span>
16349 <span class="entry_type_deprecated">[deprecated] </span>
16353 </td> <!-- entry_type -->
16355 <td class="entry_description">
16356 <p>A frame counter set by the framework.<wbr/> This value monotonically
16357 increases with every new result (that is,<wbr/> each new result has a unique
16358 frameCount value).<wbr/></p>
16361 <td class="entry_units">
16365 <td class="entry_range">
16366 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16370 <td class="entry_tags">
16374 <tr class="entries_header">
16375 <th class="th_details" colspan="5">Details</th>
16377 <tr class="entry_cont">
16378 <td class="entry_details" colspan="5">
16379 <p>Reset on release()</p>
16384 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16385 <!-- end of entry -->
16388 <tr class="entry" id="dynamic_android.request.id">
16389 <td class="entry_name
16391 android.<wbr/>request.<wbr/>id
16393 <td class="entry_type">
16394 <span class="entry_type_name">int32</span>
16396 <span class="entry_type_visibility"> [hidden]</span>
16403 </td> <!-- entry_type -->
16405 <td class="entry_description">
16406 <p>An application-specified ID for the current
16407 request.<wbr/> Must be maintained unchanged in output
16411 <td class="entry_units">
16412 arbitrary integer assigned by application
16415 <td class="entry_range">
16419 <td class="entry_tags">
16420 <ul class="entry_tags">
16421 <li><a href="#tag_V1">V1</a></li>
16428 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16429 <!-- end of entry -->
16432 <tr class="entry" id="dynamic_android.request.metadataMode">
16433 <td class="entry_name
16435 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
16437 <td class="entry_type">
16438 <span class="entry_type_name entry_type_name_enum">byte</span>
16440 <span class="entry_type_visibility"> [system]</span>
16446 <ul class="entry_type_enum">
16448 <span class="entry_type_enum_name">NONE</span>
16449 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
16450 for application-bound buffer data.<wbr/> If no
16451 application-bound streams exist,<wbr/> no frame should be
16452 placed in the output frame queue.<wbr/> If such streams
16453 exist,<wbr/> a frame should be placed on the output queue
16454 with null metadata but with the necessary output buffer
16455 information.<wbr/> Timestamp information should still be
16456 included with any output stream buffers</p></span>
16459 <span class="entry_type_enum_name">FULL</span>
16460 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
16461 only be produced if they are separately
16466 </td> <!-- entry_type -->
16468 <td class="entry_description">
16469 <p>How much metadata to produce on
16473 <td class="entry_units">
16476 <td class="entry_range">
16479 <td class="entry_tags">
16480 <ul class="entry_tags">
16481 <li><a href="#tag_FUTURE">FUTURE</a></li>
16488 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16489 <!-- end of entry -->
16492 <tr class="entry" id="dynamic_android.request.outputStreams">
16493 <td class="entry_name
16494 entry_name_deprecated
16496 android.<wbr/>request.<wbr/>output<wbr/>Streams
16498 <td class="entry_type">
16499 <span class="entry_type_name">int32</span>
16500 <span class="entry_type_container">x</span>
16502 <span class="entry_type_array">
16505 <span class="entry_type_visibility"> [system]</span>
16509 <span class="entry_type_deprecated">[deprecated] </span>
16513 </td> <!-- entry_type -->
16515 <td class="entry_description">
16516 <p>Lists which camera output streams image data
16517 from this capture must be sent to</p>
16520 <td class="entry_units">
16521 List of camera stream IDs
16524 <td class="entry_range">
16525 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16526 <p>List must only include streams that have been
16530 <td class="entry_tags">
16531 <ul class="entry_tags">
16532 <li><a href="#tag_HAL2">HAL2</a></li>
16537 <tr class="entries_header">
16538 <th class="th_details" colspan="5">Details</th>
16540 <tr class="entry_cont">
16541 <td class="entry_details" colspan="5">
16542 <p>If no output streams are listed,<wbr/> then the image
16543 data should simply be discarded.<wbr/> The image data must
16544 still be captured for metadata and statistics production,<wbr/>
16545 and the lens and flash must operate as requested.<wbr/></p>
16550 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16551 <!-- end of entry -->
16554 <tr class="entry" id="dynamic_android.request.pipelineDepth">
16555 <td class="entry_name
16557 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
16559 <td class="entry_type">
16560 <span class="entry_type_name">byte</span>
16562 <span class="entry_type_visibility"> [public]</span>
16565 <span class="entry_type_hwlevel">[legacy] </span>
16570 </td> <!-- entry_type -->
16572 <td class="entry_description">
16573 <p>Specifies the number of pipeline stages the frame went
16574 through from when it was exposed to when the final completed result
16575 was available to the framework.<wbr/></p>
16578 <td class="entry_units">
16581 <td class="entry_range">
16582 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
16585 <td class="entry_tags">
16589 <tr class="entries_header">
16590 <th class="th_details" colspan="5">Details</th>
16592 <tr class="entry_cont">
16593 <td class="entry_details" colspan="5">
16594 <p>Depending on what settings are used in the request,<wbr/> and
16595 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
16596 and some pipeline stages skipped.<wbr/></p>
16597 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
16601 <tr class="entries_header">
16602 <th class="th_details" colspan="5">HAL Implementation Details</th>
16604 <tr class="entry_cont">
16605 <td class="entry_details" colspan="5">
16606 <p>This value must always represent the accurate count of how many
16607 pipeline stages were actually used.<wbr/></p>
16611 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16612 <!-- end of entry -->
16616 <!-- end of kind -->
16619 <!-- end of section -->
16620 <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
16623 <tr><td colspan="6" class="kind">controls</td></tr>
16625 <thead class="entries_header">
16627 <th class="th_name">Property Name</th>
16628 <th class="th_type">Type</th>
16629 <th class="th_description">Description</th>
16630 <th class="th_units">Units</th>
16631 <th class="th_range">Range</th>
16632 <th class="th_tags">Tags</th>
16647 <tr class="entry" id="controls_android.scaler.cropRegion">
16648 <td class="entry_name
16650 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
16652 <td class="entry_type">
16653 <span class="entry_type_name">int32</span>
16654 <span class="entry_type_container">x</span>
16656 <span class="entry_type_array">
16659 <span class="entry_type_visibility"> [public as rectangle]</span>
16662 <span class="entry_type_hwlevel">[legacy] </span>
16667 </td> <!-- entry_type -->
16669 <td class="entry_description">
16670 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
16673 <td class="entry_units">
16674 Pixel coordinates relative to
16675 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
16678 <td class="entry_range">
16681 <td class="entry_tags">
16682 <ul class="entry_tags">
16683 <li><a href="#tag_BC">BC</a></li>
16688 <tr class="entries_header">
16689 <th class="th_details" colspan="5">Details</th>
16691 <tr class="entry_cont">
16692 <td class="entry_details" colspan="5">
16693 <p>This control can be used to implement digital zoom.<wbr/></p>
16694 <p>The crop region coordinate system is based off
16695 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the
16696 top-left corner of the sensor active array.<wbr/></p>
16697 <p>Output streams use this rectangle to produce their output,<wbr/>
16698 cropping to a smaller region if necessary to maintain the
16699 stream's aspect ratio,<wbr/> then scaling the sensor input to
16700 match the output's configured resolution.<wbr/></p>
16701 <p>The crop region is applied after the RAW to other color
16702 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
16703 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
16704 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
16705 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
16706 be done to maximize the final pixel area of the stream.<wbr/></p>
16707 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
16708 ratio,<wbr/> then 4:3 streams will use the exact crop
16709 region.<wbr/> 16:9 streams will further crop vertically
16710 (letterbox).<wbr/></p>
16711 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
16712 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
16713 streams will match exactly.<wbr/> These additional crops will
16714 be centered within the crop region.<wbr/></p>
16715 <p>The width and height of the crop region cannot
16716 be set to be smaller than
16717 <code>floor( activeArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code> and
16718 <code>floor( activeArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/> respectively.<wbr/></p>
16719 <p>The camera device may adjust the crop region to account
16720 for rounding and other hardware requirements; the final
16721 crop region used will be included in the output capture
16726 <tr class="entries_header">
16727 <th class="th_details" colspan="5">HAL Implementation Details</th>
16729 <tr class="entry_cont">
16730 <td class="entry_details" colspan="5">
16731 <p>The output streams must maintain square pixels at all
16732 times,<wbr/> no matter what the relative aspect ratios of the
16733 crop region and the stream are.<wbr/> Negative values for
16734 corner are allowed for raw output if full pixel array is
16735 larger than active pixel array.<wbr/> Width and height may be
16736 rounded to nearest larger supportable width,<wbr/> especially
16737 for raw output,<wbr/> where only a few fixed scales may be
16738 possible.<wbr/></p>
16739 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
16740 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
16743 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
16744 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
16745 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p>
16747 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
16748 cropped pixel area by (tx,<wbr/> ty),<wbr/>
16749 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
16750 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
16751 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
16752 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
16753 <li>Scale the width and height of requested cropRegion with scaling factor of
16754 sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height
16755 respectively.<wbr/>
16756 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
16757 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
16758 follow the general cropping rule for this new cropRegion and effective active
16759 array size.<wbr/></li>
16763 <p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>
16764 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
16765 The reported cropRegion may be slightly different with the requested cropRegion since
16766 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
16767 hardware limitations.<wbr/></p>
16770 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
16774 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16775 <!-- end of entry -->
16779 <!-- end of kind -->
16781 <tr><td colspan="6" class="kind">static</td></tr>
16783 <thead class="entries_header">
16785 <th class="th_name">Property Name</th>
16786 <th class="th_type">Type</th>
16787 <th class="th_description">Description</th>
16788 <th class="th_units">Units</th>
16789 <th class="th_range">Range</th>
16790 <th class="th_tags">Tags</th>
16805 <tr class="entry" id="static_android.scaler.availableFormats">
16806 <td class="entry_name
16807 entry_name_deprecated
16809 android.<wbr/>scaler.<wbr/>available<wbr/>Formats
16811 <td class="entry_type">
16812 <span class="entry_type_name entry_type_name_enum">int32</span>
16813 <span class="entry_type_container">x</span>
16815 <span class="entry_type_array">
16818 <span class="entry_type_visibility"> [hidden as imageFormat]</span>
16822 <span class="entry_type_deprecated">[deprecated] </span>
16825 <ul class="entry_type_enum">
16827 <span class="entry_type_enum_name">RAW16</span>
16828 <span class="entry_type_enum_optional">[optional]</span>
16829 <span class="entry_type_enum_value">0x20</span>
16830 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
16831 buffers with 16-bit pixels.<wbr/></p>
16832 <p>Buffers of this format are typically expected to have a
16833 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
16834 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
16835 CFAs that are not representable by a format in
16836 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
16837 use this format.<wbr/></p>
16838 <p>Buffers of this format will also follow the constraints given for
16839 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
16840 <p>This format is intended to give users access to the full contents
16841 of the buffers coming directly from the image sensor prior to any
16842 cropping or scaling operations,<wbr/> and all coordinate systems for
16843 metadata used for this format are relative to the size of the
16844 active region of the image sensor before any geometric distortion
16845 correction has been applied (i.<wbr/>e.<wbr/>
16846 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>).<wbr/> Supported
16847 dimensions for this format are limited to the full dimensions of
16848 the sensor (e.<wbr/>g.<wbr/> either <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16849 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> will be the
16850 only supported output size).<wbr/></p>
16851 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
16852 the full set of performance guarantees.<wbr/></p></span>
16855 <span class="entry_type_enum_name">RAW_OPAQUE</span>
16856 <span class="entry_type_enum_optional">[optional]</span>
16857 <span class="entry_type_enum_value">0x24</span>
16858 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
16859 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
16860 as referred in public API) is a format for raw image buffers
16861 coming from an image sensor.<wbr/></p>
16862 <p>The actual structure of buffers of this format is
16863 platform-specific,<wbr/> but must follow several constraints:</p>
16865 <li>No image post-processing operations may have been applied to
16866 buffers of this type.<wbr/> These buffers contain raw image data coming
16867 directly from the image sensor.<wbr/></li>
16868 <li>If a buffer of this format is passed to the camera device for
16869 reprocessing,<wbr/> the resulting images will be identical to the images
16870 produced if the buffer had come directly from the sensor and was
16871 processed with the same settings.<wbr/></li>
16873 <p>The intended use for this format is to allow access to the native
16874 raw format buffers coming directly from the camera sensor without
16875 any additional conversions or decrease in framerate.<wbr/></p>
16876 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for the full set of
16877 performance guarantees.<wbr/></p></span>
16880 <span class="entry_type_enum_name">YV12</span>
16881 <span class="entry_type_enum_optional">[optional]</span>
16882 <span class="entry_type_enum_value">0x32315659</span>
16883 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
16886 <span class="entry_type_enum_name">YCrCb_420_SP</span>
16887 <span class="entry_type_enum_optional">[optional]</span>
16888 <span class="entry_type_enum_value">0x11</span>
16889 <span class="entry_type_enum_notes"><p>NV21</p></span>
16892 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
16893 <span class="entry_type_enum_value">0x22</span>
16894 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
16897 <span class="entry_type_enum_name">YCbCr_420_888</span>
16898 <span class="entry_type_enum_value">0x23</span>
16899 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
16902 <span class="entry_type_enum_name">BLOB</span>
16903 <span class="entry_type_enum_value">0x21</span>
16904 <span class="entry_type_enum_notes"><p>JPEG format</p></span>
16908 </td> <!-- entry_type -->
16910 <td class="entry_description">
16911 <p>The list of image formats that are supported by this
16912 camera device for output streams.<wbr/></p>
16915 <td class="entry_units">
16918 <td class="entry_range">
16919 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16922 <td class="entry_tags">
16923 <ul class="entry_tags">
16924 <li><a href="#tag_BC">BC</a></li>
16929 <tr class="entries_header">
16930 <th class="th_details" colspan="5">Details</th>
16932 <tr class="entry_cont">
16933 <td class="entry_details" colspan="5">
16934 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
16935 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
16939 <tr class="entries_header">
16940 <th class="th_details" colspan="5">HAL Implementation Details</th>
16942 <tr class="entry_cont">
16943 <td class="entry_details" colspan="5">
16944 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
16945 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
16946 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
16947 gralloc module will select a format based on the usage flags provided
16948 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
16949 usually used by preview and recording streams,<wbr/> where the application doesn't
16950 need access the image data.<wbr/></p>
16951 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
16952 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
16953 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
16954 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
16955 recommended that any information used by the camera device when
16956 processing images is fully expressed by the result metadata
16957 for that image buffer.<wbr/></p>
16961 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16962 <!-- end of entry -->
16965 <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
16966 <td class="entry_name
16967 entry_name_deprecated
16969 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
16971 <td class="entry_type">
16972 <span class="entry_type_name">int64</span>
16973 <span class="entry_type_container">x</span>
16975 <span class="entry_type_array">
16978 <span class="entry_type_visibility"> [hidden]</span>
16982 <span class="entry_type_deprecated">[deprecated] </span>
16986 </td> <!-- entry_type -->
16988 <td class="entry_description">
16989 <p>The minimum frame duration that is supported
16990 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
16993 <td class="entry_units">
16997 <td class="entry_range">
16998 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16999 <p>TODO: Remove property.<wbr/></p>
17002 <td class="entry_tags">
17003 <ul class="entry_tags">
17004 <li><a href="#tag_BC">BC</a></li>
17009 <tr class="entries_header">
17010 <th class="th_details" colspan="5">Details</th>
17012 <tr class="entry_cont">
17013 <td class="entry_details" colspan="5">
17014 <p>This corresponds to the minimum steady-state frame duration when only
17015 that JPEG stream is active and captured in a burst,<wbr/> with all
17016 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
17017 <p>When multiple streams are configured,<wbr/> the minimum
17018 frame duration will be >= max(individual stream min
17024 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17025 <!-- end of entry -->
17028 <tr class="entry" id="static_android.scaler.availableJpegSizes">
17029 <td class="entry_name
17030 entry_name_deprecated
17032 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
17034 <td class="entry_type">
17035 <span class="entry_type_name">int32</span>
17036 <span class="entry_type_container">x</span>
17038 <span class="entry_type_array">
17041 <span class="entry_type_visibility"> [hidden as size]</span>
17045 <span class="entry_type_deprecated">[deprecated] </span>
17049 </td> <!-- entry_type -->
17051 <td class="entry_description">
17052 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
17055 <td class="entry_units">
17058 <td class="entry_range">
17059 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17060 <p>TODO: Remove property.<wbr/></p>
17063 <td class="entry_tags">
17064 <ul class="entry_tags">
17065 <li><a href="#tag_BC">BC</a></li>
17070 <tr class="entries_header">
17071 <th class="th_details" colspan="5">Details</th>
17073 <tr class="entry_cont">
17074 <td class="entry_details" colspan="5">
17075 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
17076 sensor maximum resolution (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
17080 <tr class="entries_header">
17081 <th class="th_details" colspan="5">HAL Implementation Details</th>
17083 <tr class="entry_cont">
17084 <td class="entry_details" colspan="5">
17085 <p>The HAL must include sensor maximum resolution
17086 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
17087 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
17091 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17092 <!-- end of entry -->
17095 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
17096 <td class="entry_name
17098 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
17100 <td class="entry_type">
17101 <span class="entry_type_name">float</span>
17103 <span class="entry_type_visibility"> [public]</span>
17106 <span class="entry_type_hwlevel">[legacy] </span>
17111 </td> <!-- entry_type -->
17113 <td class="entry_description">
17114 <p>The maximum ratio between both active area width
17115 and crop region width,<wbr/> and active area height and
17116 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
17119 <td class="entry_units">
17123 <td class="entry_range">
17127 <td class="entry_tags">
17128 <ul class="entry_tags">
17129 <li><a href="#tag_BC">BC</a></li>
17134 <tr class="entries_header">
17135 <th class="th_details" colspan="5">Details</th>
17137 <tr class="entry_cont">
17138 <td class="entry_details" colspan="5">
17139 <p>This represents the maximum amount of zooming possible by
17140 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
17141 window size.<wbr/></p>
17142 <p>Crop regions that have a width or height that is smaller
17143 than this ratio allows will be rounded up to the minimum
17144 allowed size by the camera device.<wbr/></p>
17149 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17150 <!-- end of entry -->
17153 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
17154 <td class="entry_name
17155 entry_name_deprecated
17157 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
17159 <td class="entry_type">
17160 <span class="entry_type_name">int64</span>
17161 <span class="entry_type_container">x</span>
17163 <span class="entry_type_array">
17166 <span class="entry_type_visibility"> [hidden]</span>
17170 <span class="entry_type_deprecated">[deprecated] </span>
17174 </td> <!-- entry_type -->
17176 <td class="entry_description">
17177 <p>For each available processed output size (defined in
17178 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
17179 minimum supportable frame duration for that size.<wbr/></p>
17182 <td class="entry_units">
17186 <td class="entry_range">
17187 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17190 <td class="entry_tags">
17191 <ul class="entry_tags">
17192 <li><a href="#tag_BC">BC</a></li>
17197 <tr class="entries_header">
17198 <th class="th_details" colspan="5">Details</th>
17200 <tr class="entry_cont">
17201 <td class="entry_details" colspan="5">
17202 <p>This should correspond to the frame duration when only that processed
17203 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17204 set to FAST.<wbr/></p>
17205 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
17206 be >= max(individual stream min durations).<wbr/></p>
17211 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17212 <!-- end of entry -->
17215 <tr class="entry" id="static_android.scaler.availableProcessedSizes">
17216 <td class="entry_name
17217 entry_name_deprecated
17219 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
17221 <td class="entry_type">
17222 <span class="entry_type_name">int32</span>
17223 <span class="entry_type_container">x</span>
17225 <span class="entry_type_array">
17228 <span class="entry_type_visibility"> [hidden as size]</span>
17232 <span class="entry_type_deprecated">[deprecated] </span>
17236 </td> <!-- entry_type -->
17238 <td class="entry_description">
17239 <p>The resolutions available for use with
17240 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
17241 platform opaque YUV/<wbr/>RGB streams to the GPU or video
17242 encoders.<wbr/></p>
17245 <td class="entry_units">
17248 <td class="entry_range">
17249 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17252 <td class="entry_tags">
17253 <ul class="entry_tags">
17254 <li><a href="#tag_BC">BC</a></li>
17259 <tr class="entries_header">
17260 <th class="th_details" colspan="5">Details</th>
17262 <tr class="entry_cont">
17263 <td class="entry_details" colspan="5">
17264 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
17265 <p>For a given use case,<wbr/> the actual maximum supported resolution
17266 may be lower than what is listed here,<wbr/> depending on the destination
17267 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17268 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17269 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17270 can provide.<wbr/></p>
17271 <p>Please reference the documentation for the image data destination to
17272 check if it limits the maximum size for image data.<wbr/></p>
17276 <tr class="entries_header">
17277 <th class="th_details" colspan="5">HAL Implementation Details</th>
17279 <tr class="entry_cont">
17280 <td class="entry_details" colspan="5">
17281 <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/>
17282 the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
17283 and each below resolution if it is smaller than or equal to the sensor
17284 maximum resolution (if they are not listed in JPEG sizes already):</p>
17286 <li>240p (320 x 240)</li>
17287 <li>480p (640 x 480)</li>
17288 <li>720p (1280 x 720)</li>
17289 <li>1080p (1920 x 1080)</li>
17291 <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/>
17292 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
17296 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17297 <!-- end of entry -->
17300 <tr class="entry" id="static_android.scaler.availableRawMinDurations">
17301 <td class="entry_name
17302 entry_name_deprecated
17304 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
17306 <td class="entry_type">
17307 <span class="entry_type_name">int64</span>
17308 <span class="entry_type_container">x</span>
17310 <span class="entry_type_array">
17313 <span class="entry_type_visibility"> [system]</span>
17317 <span class="entry_type_deprecated">[deprecated] </span>
17321 </td> <!-- entry_type -->
17323 <td class="entry_description">
17324 <p>For each available raw output size (defined in
17325 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
17326 supportable frame duration for that size.<wbr/></p>
17329 <td class="entry_units">
17333 <td class="entry_range">
17334 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17337 <td class="entry_tags">
17338 <ul class="entry_tags">
17339 <li><a href="#tag_BC">BC</a></li>
17344 <tr class="entries_header">
17345 <th class="th_details" colspan="5">Details</th>
17347 <tr class="entry_cont">
17348 <td class="entry_details" colspan="5">
17349 <p>Should correspond to the frame duration when only the raw stream is
17351 <p>When multiple streams are configured,<wbr/> the minimum
17352 frame duration will be >= max(individual stream min
17358 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17359 <!-- end of entry -->
17362 <tr class="entry" id="static_android.scaler.availableRawSizes">
17363 <td class="entry_name
17364 entry_name_deprecated
17366 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
17368 <td class="entry_type">
17369 <span class="entry_type_name">int32</span>
17370 <span class="entry_type_container">x</span>
17372 <span class="entry_type_array">
17375 <span class="entry_type_visibility"> [system as size]</span>
17379 <span class="entry_type_deprecated">[deprecated] </span>
17383 </td> <!-- entry_type -->
17385 <td class="entry_description">
17386 <p>The resolutions available for use with raw
17387 sensor output streams,<wbr/> listed as width,<wbr/>
17391 <td class="entry_units">
17394 <td class="entry_range">
17395 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17398 <td class="entry_tags">
17404 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17405 <!-- end of entry -->
17408 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
17409 <td class="entry_name
17411 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
17413 <td class="entry_type">
17414 <span class="entry_type_name">int32</span>
17416 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
17423 </td> <!-- entry_type -->
17425 <td class="entry_description">
17426 <p>The mapping of image formats that are supported by this
17427 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
17430 <td class="entry_units">
17433 <td class="entry_range">
17436 <td class="entry_tags">
17437 <ul class="entry_tags">
17438 <li><a href="#tag_REPROC">REPROC</a></li>
17443 <tr class="entries_header">
17444 <th class="th_details" colspan="5">Details</th>
17446 <tr class="entry_cont">
17447 <td class="entry_details" colspan="5">
17448 <p>All camera devices with at least 1
17449 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
17450 available input format.<wbr/></p>
17451 <p>The camera device will support the following map of formats,<wbr/>
17452 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
17456 <th align="left">Input Format</th>
17457 <th align="left">Output Format</th>
17458 <th align="left">Capability</th>
17463 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17464 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17465 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17468 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17469 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17470 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17473 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17474 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17475 <td align="left">YUV_<wbr/>REPROCESSING</td>
17478 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17479 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17480 <td align="left">YUV_<wbr/>REPROCESSING</td>
17484 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A
17485 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
17486 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
17487 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
17488 or output will never hurt maximum frame rate (i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">getOutputStallDuration(ImageFormat.<wbr/>PRIVATE,<wbr/> size)</a> is always 0),<wbr/></p>
17489 <p>Attempting to configure an input stream with output streams not
17490 listed as available in this map is not valid.<wbr/></p>
17494 <tr class="entries_header">
17495 <th class="th_details" colspan="5">HAL Implementation Details</th>
17497 <tr class="entry_cont">
17498 <td class="entry_details" colspan="5">
17499 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
17500 of the image format enumerations.<wbr/> The PRIVATE format refers to the
17501 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
17502 the actual format by using the gralloc usage flags.<wbr/>
17503 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
17504 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
17505 See camera3.<wbr/>h for more details.<wbr/></p>
17506 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
17507 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
17508 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
17509 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
17510 <p>A code sample to read/<wbr/>write this encoding (with a device that
17511 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
17512 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
17513 <pre><code>//<wbr/> reading
17514 int32_<wbr/>t* contents = &entry.<wbr/>i32[0];
17515 for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) {
17516 int32_<wbr/>t format = contents[i++];
17517 int32_<wbr/>t length = contents[i++];
17518 int32_<wbr/>t output_<wbr/>formats[length];
17519 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/>
17520 length * sizeof(int32_<wbr/>t));
17524 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
17525 int32_<wbr/>t[] contents = {
17526 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17527 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17529 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/>
17530 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry);
17532 <p>If the HAL claims to support any of the capabilities listed in the
17533 above details,<wbr/> then it must also support all the input-output
17534 combinations listed for that capability.<wbr/> It can optionally support
17535 additional formats if it so chooses.<wbr/></p>
17539 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17540 <!-- end of entry -->
17543 <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
17544 <td class="entry_name
17546 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
17548 <td class="entry_type">
17549 <span class="entry_type_name entry_type_name_enum">int32</span>
17550 <span class="entry_type_container">x</span>
17552 <span class="entry_type_array">
17555 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
17558 <span class="entry_type_hwlevel">[legacy] </span>
17562 <ul class="entry_type_enum">
17564 <span class="entry_type_enum_name">OUTPUT</span>
17567 <span class="entry_type_enum_name">INPUT</span>
17571 </td> <!-- entry_type -->
17573 <td class="entry_description">
17574 <p>The available stream configurations that this
17575 camera device supports
17576 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
17579 <td class="entry_units">
17582 <td class="entry_range">
17585 <td class="entry_tags">
17589 <tr class="entries_header">
17590 <th class="th_details" colspan="5">Details</th>
17592 <tr class="entry_cont">
17593 <td class="entry_details" colspan="5">
17594 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
17596 <p>For a given use case,<wbr/> the actual maximum supported resolution
17597 may be lower than what is listed here,<wbr/> depending on the destination
17598 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17599 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17600 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17601 can provide.<wbr/></p>
17602 <p>Please reference the documentation for the image data destination to
17603 check if it limits the maximum size for image data.<wbr/></p>
17604 <p>Not all output formats may be supported in a configuration with
17605 an input stream of a particular format.<wbr/> For more details,<wbr/> see
17606 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17607 <p>The following table describes the minimum required output stream
17608 configurations based on the hardware level
17609 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17613 <th align="center">Format</th>
17614 <th align="center">Size</th>
17615 <th align="center">Hardware Level</th>
17616 <th align="center">Notes</th>
17621 <td align="center">JPEG</td>
17622 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
17623 <td align="center">Any</td>
17624 <td align="center"></td>
17627 <td align="center">JPEG</td>
17628 <td align="center">1920x1080 (1080p)</td>
17629 <td align="center">Any</td>
17630 <td align="center">if 1080p <= activeArraySize</td>
17633 <td align="center">JPEG</td>
17634 <td align="center">1280x720 (720)</td>
17635 <td align="center">Any</td>
17636 <td align="center">if 720p <= activeArraySize</td>
17639 <td align="center">JPEG</td>
17640 <td align="center">640x480 (480p)</td>
17641 <td align="center">Any</td>
17642 <td align="center">if 480p <= activeArraySize</td>
17645 <td align="center">JPEG</td>
17646 <td align="center">320x240 (240p)</td>
17647 <td align="center">Any</td>
17648 <td align="center">if 240p <= activeArraySize</td>
17651 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
17652 <td align="center">all output sizes available for JPEG</td>
17653 <td align="center">FULL</td>
17654 <td align="center"></td>
17657 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
17658 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
17659 <td align="center">LIMITED</td>
17660 <td align="center"></td>
17663 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
17664 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
17665 <td align="center">Any</td>
17666 <td align="center"></td>
17670 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
17671 mandatory stream configurations on a per-capability basis.<wbr/></p>
17675 <tr class="entries_header">
17676 <th class="th_details" colspan="5">HAL Implementation Details</th>
17678 <tr class="entry_cont">
17679 <td class="entry_details" colspan="5">
17680 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17681 of sensor maximum resolution for JPEG formats (regardless of hardware
17683 <p>(The following is a rewording of the above required table):</p>
17684 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
17686 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
17687 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
17688 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>) has an aspect ratio other than these,<wbr/>
17689 it does not have to be included in the supported JPEG sizes.<wbr/></li>
17690 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
17691 the dimensions being a multiple of 16.<wbr/></li>
17693 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
17694 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
17695 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
17696 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
17697 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
17698 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
17699 3264x2448.<wbr/></p>
17700 <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/>
17701 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17702 here as output streams.<wbr/></p>
17703 <p>It must also include each below resolution if it is smaller than or
17704 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17705 formats),<wbr/> as output streams:</p>
17707 <li>240p (320 x 240)</li>
17708 <li>480p (640 x 480)</li>
17709 <li>720p (1280 x 720)</li>
17710 <li>1080p (1920 x 1080)</li>
17712 <p>For LIMITED capability devices
17713 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17714 the HAL only has to list up to the maximum video size
17715 supported by the device.<wbr/></p>
17716 <p>Regardless of hardware level,<wbr/> every output resolution available for
17717 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17718 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17720 <li>availableFormats</li>
17721 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17726 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17727 <!-- end of entry -->
17730 <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
17731 <td class="entry_name
17733 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
17735 <td class="entry_type">
17736 <span class="entry_type_name">int64</span>
17737 <span class="entry_type_container">x</span>
17739 <span class="entry_type_array">
17742 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
17745 <span class="entry_type_hwlevel">[legacy] </span>
17750 </td> <!-- entry_type -->
17752 <td class="entry_description">
17753 <p>This lists the minimum frame duration for each
17754 format/<wbr/>size combination.<wbr/></p>
17757 <td class="entry_units">
17758 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17761 <td class="entry_range">
17764 <td class="entry_tags">
17765 <ul class="entry_tags">
17766 <li><a href="#tag_V1">V1</a></li>
17771 <tr class="entries_header">
17772 <th class="th_details" colspan="5">Details</th>
17774 <tr class="entry_cont">
17775 <td class="entry_details" colspan="5">
17776 <p>This should correspond to the frame duration when only that
17777 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17778 set to either OFF or FAST.<wbr/></p>
17779 <p>When multiple streams are used in a request,<wbr/> the minimum frame
17780 duration will be max(individual stream min durations).<wbr/></p>
17781 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
17782 is the same regardless of whether the stream is input or output.<wbr/></p>
17783 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
17784 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
17785 calculating the max frame rate.<wbr/></p>
17786 <p>(Keep in sync with
17787 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
17792 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17793 <!-- end of entry -->
17796 <tr class="entry" id="static_android.scaler.availableStallDurations">
17797 <td class="entry_name
17799 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
17801 <td class="entry_type">
17802 <span class="entry_type_name">int64</span>
17803 <span class="entry_type_container">x</span>
17805 <span class="entry_type_array">
17808 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
17811 <span class="entry_type_hwlevel">[legacy] </span>
17816 </td> <!-- entry_type -->
17818 <td class="entry_description">
17819 <p>This lists the maximum stall duration for each
17820 output format/<wbr/>size combination.<wbr/></p>
17823 <td class="entry_units">
17824 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17827 <td class="entry_range">
17830 <td class="entry_tags">
17831 <ul class="entry_tags">
17832 <li><a href="#tag_V1">V1</a></li>
17837 <tr class="entries_header">
17838 <th class="th_details" colspan="5">Details</th>
17840 <tr class="entry_cont">
17841 <td class="entry_details" colspan="5">
17842 <p>A stall duration is how much extra time would get added
17843 to the normal minimum frame duration for a repeating request
17844 that has streams with non-zero stall.<wbr/></p>
17845 <p>For example,<wbr/> consider JPEG captures which have the following
17846 characteristics:</p>
17848 <li>JPEG streams act like processed YUV streams in requests for which
17849 they are not included; in requests in which they are directly
17850 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
17851 JPEG stream requires the underlying YUV data to always be ready for
17852 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
17853 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
17854 <li>The JPEG processor can run concurrently to the rest of the camera
17855 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
17857 <p>In other words,<wbr/> using a repeating YUV request would result
17858 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
17859 JPEG request is submitted periodically,<wbr/> the frame rate will stay
17860 at 30 FPS (as long as we wait for the previous JPEG to return each
17861 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
17862 the frame rate will drop from 30 FPS.<wbr/></p>
17863 <p>In general,<wbr/> submitting a new request with a non-0 stall time
17864 stream will <em>not</em> cause a frame rate drop unless there are still
17865 outstanding buffers for that stream from previous requests.<wbr/></p>
17866 <p>Submitting a repeating request with streams (call this <code>S</code>)
17867 is the same as setting the minimum frame duration from
17868 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
17869 the maximum stall duration for <code>S</code>.<wbr/></p>
17870 <p>If interleaving requests with and without a stall duration,<wbr/>
17871 a request will stall by the maximum of the remaining times
17872 for each can-stall stream with outstanding buffers.<wbr/></p>
17873 <p>This means that a stalling request will not have an exposure start
17874 until the stall has completed.<wbr/></p>
17875 <p>This should correspond to the stall duration when only that stream is
17876 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
17877 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
17878 effectively results in an indeterminate stall duration for all
17879 streams in a request (the regular stall calculation rules are
17880 ignored).<wbr/></p>
17881 <p>The following formats may always have a stall duration:</p>
17883 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
17884 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
17886 <p>The following formats will never have a stall duration:</p>
17888 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></li>
17889 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
17891 <p>All other formats may or may not have an allowed stall duration on
17892 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
17893 for more details.<wbr/></p>
17894 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
17895 calculating the max frame rate (absent stalls).<wbr/></p>
17896 <p>(Keep up to date with
17897 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p>
17901 <tr class="entries_header">
17902 <th class="th_details" colspan="5">HAL Implementation Details</th>
17904 <tr class="entry_cont">
17905 <td class="entry_details" colspan="5">
17906 <p>If possible,<wbr/> it is recommended that all non-JPEG formats
17907 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
17908 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
17912 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17913 <!-- end of entry -->
17916 <tr class="entry" id="static_android.scaler.streamConfigurationMap">
17917 <td class="entry_name
17919 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
17921 <td class="entry_type">
17922 <span class="entry_type_name">int32</span>
17924 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
17926 <span class="entry_type_synthetic">[synthetic] </span>
17928 <span class="entry_type_hwlevel">[legacy] </span>
17933 </td> <!-- entry_type -->
17935 <td class="entry_description">
17936 <p>The available stream configurations that this
17937 camera device supports; also includes the minimum frame durations
17938 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
17941 <td class="entry_units">
17944 <td class="entry_range">
17947 <td class="entry_tags">
17951 <tr class="entries_header">
17952 <th class="th_details" colspan="5">Details</th>
17954 <tr class="entry_cont">
17955 <td class="entry_details" colspan="5">
17956 <p>All camera devices will support sensor maximum resolution (defined by
17957 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>) for the JPEG format.<wbr/></p>
17958 <p>For a given use case,<wbr/> the actual maximum supported resolution
17959 may be lower than what is listed here,<wbr/> depending on the destination
17960 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17961 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17962 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17963 can provide.<wbr/></p>
17964 <p>Please reference the documentation for the image data destination to
17965 check if it limits the maximum size for image data.<wbr/></p>
17966 <p>The following table describes the minimum required output stream
17967 configurations based on the hardware level
17968 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17972 <th align="center">Format</th>
17973 <th align="center">Size</th>
17974 <th align="center">Hardware Level</th>
17975 <th align="center">Notes</th>
17980 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17981 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
17982 <td align="center">Any</td>
17983 <td align="center"></td>
17986 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17987 <td align="center">1920x1080 (1080p)</td>
17988 <td align="center">Any</td>
17989 <td align="center">if 1080p <= activeArraySize</td>
17992 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17993 <td align="center">1280x720 (720p)</td>
17994 <td align="center">Any</td>
17995 <td align="center">if 720p <= activeArraySize</td>
17998 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17999 <td align="center">640x480 (480p)</td>
18000 <td align="center">Any</td>
18001 <td align="center">if 480p <= activeArraySize</td>
18004 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18005 <td align="center">320x240 (240p)</td>
18006 <td align="center">Any</td>
18007 <td align="center">if 240p <= activeArraySize</td>
18010 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
18011 <td align="center">all output sizes available for JPEG</td>
18012 <td align="center">FULL</td>
18013 <td align="center"></td>
18016 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
18017 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18018 <td align="center">LIMITED</td>
18019 <td align="center"></td>
18022 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18023 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18024 <td align="center">Any</td>
18025 <td align="center"></td>
18029 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for additional mandatory
18030 stream configurations on a per-capability basis.<wbr/></p>
18031 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18033 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18034 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18035 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>) has an aspect ratio other than these,<wbr/>
18036 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18037 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18038 the dimensions being a multiple of 16.<wbr/>
18039 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18040 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
18041 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18042 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18043 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18044 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18045 3264x2448.<wbr/></li>
18050 <tr class="entries_header">
18051 <th class="th_details" colspan="5">HAL Implementation Details</th>
18053 <tr class="entry_cont">
18054 <td class="entry_details" colspan="5">
18055 <p>Do not set this property directly
18056 (it is synthetic and will not be available at the HAL layer);
18057 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
18058 <p>Not all output formats may be supported in a configuration with
18059 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18060 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18061 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18062 of sensor maximum resolution for JPEG formats (regardless of hardware
18064 <p>(The following is a rewording of the above required table):</p>
18065 <p>The HAL must include sensor maximum resolution (defined by
18066 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
18067 <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/>
18068 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18069 here as output streams.<wbr/></p>
18070 <p>It must also include each below resolution if it is smaller than or
18071 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18072 formats),<wbr/> as output streams:</p>
18074 <li>240p (320 x 240)</li>
18075 <li>480p (640 x 480)</li>
18076 <li>720p (1280 x 720)</li>
18077 <li>1080p (1920 x 1080)</li>
18079 <p>For LIMITED capability devices
18080 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18081 the HAL only has to list up to the maximum video size
18082 supported by the device.<wbr/></p>
18083 <p>Regardless of hardware level,<wbr/> every output resolution available for
18084 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18085 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18087 <li>availableFormats</li>
18088 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18093 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18094 <!-- end of entry -->
18097 <tr class="entry" id="static_android.scaler.croppingType">
18098 <td class="entry_name
18100 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
18102 <td class="entry_type">
18103 <span class="entry_type_name entry_type_name_enum">byte</span>
18105 <span class="entry_type_visibility"> [public]</span>
18108 <span class="entry_type_hwlevel">[legacy] </span>
18112 <ul class="entry_type_enum">
18114 <span class="entry_type_enum_name">CENTER_ONLY</span>
18115 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
18118 <span class="entry_type_enum_name">FREEFORM</span>
18119 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
18123 </td> <!-- entry_type -->
18125 <td class="entry_description">
18126 <p>The crop type that this camera device supports.<wbr/></p>
18129 <td class="entry_units">
18132 <td class="entry_range">
18135 <td class="entry_tags">
18139 <tr class="entries_header">
18140 <th class="th_details" colspan="5">Details</th>
18142 <tr class="entry_cont">
18143 <td class="entry_details" colspan="5">
18144 <p>When passing a non-centered crop region (<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) to a camera
18145 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
18146 crop region to the center of the sensor active array (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>)
18147 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
18148 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18149 <p>Camera devices that support FREEFORM cropping will support any crop region that
18150 is inside of the active array.<wbr/> The camera device will apply the same crop region and
18151 return the final used crop region in capture result metadata <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18152 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
18157 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18158 <!-- end of entry -->
18162 <!-- end of kind -->
18164 <tr><td colspan="6" class="kind">dynamic</td></tr>
18166 <thead class="entries_header">
18168 <th class="th_name">Property Name</th>
18169 <th class="th_type">Type</th>
18170 <th class="th_description">Description</th>
18171 <th class="th_units">Units</th>
18172 <th class="th_range">Range</th>
18173 <th class="th_tags">Tags</th>
18188 <tr class="entry" id="dynamic_android.scaler.cropRegion">
18189 <td class="entry_name
18191 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
18193 <td class="entry_type">
18194 <span class="entry_type_name">int32</span>
18195 <span class="entry_type_container">x</span>
18197 <span class="entry_type_array">
18200 <span class="entry_type_visibility"> [public as rectangle]</span>
18203 <span class="entry_type_hwlevel">[legacy] </span>
18208 </td> <!-- entry_type -->
18210 <td class="entry_description">
18211 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
18214 <td class="entry_units">
18215 Pixel coordinates relative to
18216 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18219 <td class="entry_range">
18222 <td class="entry_tags">
18223 <ul class="entry_tags">
18224 <li><a href="#tag_BC">BC</a></li>
18229 <tr class="entries_header">
18230 <th class="th_details" colspan="5">Details</th>
18232 <tr class="entry_cont">
18233 <td class="entry_details" colspan="5">
18234 <p>This control can be used to implement digital zoom.<wbr/></p>
18235 <p>The crop region coordinate system is based off
18236 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the
18237 top-left corner of the sensor active array.<wbr/></p>
18238 <p>Output streams use this rectangle to produce their output,<wbr/>
18239 cropping to a smaller region if necessary to maintain the
18240 stream's aspect ratio,<wbr/> then scaling the sensor input to
18241 match the output's configured resolution.<wbr/></p>
18242 <p>The crop region is applied after the RAW to other color
18243 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
18244 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
18245 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
18246 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
18247 be done to maximize the final pixel area of the stream.<wbr/></p>
18248 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
18249 ratio,<wbr/> then 4:3 streams will use the exact crop
18250 region.<wbr/> 16:9 streams will further crop vertically
18251 (letterbox).<wbr/></p>
18252 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
18253 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
18254 streams will match exactly.<wbr/> These additional crops will
18255 be centered within the crop region.<wbr/></p>
18256 <p>The width and height of the crop region cannot
18257 be set to be smaller than
18258 <code>floor( activeArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code> and
18259 <code>floor( activeArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/> respectively.<wbr/></p>
18260 <p>The camera device may adjust the crop region to account
18261 for rounding and other hardware requirements; the final
18262 crop region used will be included in the output capture
18267 <tr class="entries_header">
18268 <th class="th_details" colspan="5">HAL Implementation Details</th>
18270 <tr class="entry_cont">
18271 <td class="entry_details" colspan="5">
18272 <p>The output streams must maintain square pixels at all
18273 times,<wbr/> no matter what the relative aspect ratios of the
18274 crop region and the stream are.<wbr/> Negative values for
18275 corner are allowed for raw output if full pixel array is
18276 larger than active pixel array.<wbr/> Width and height may be
18277 rounded to nearest larger supportable width,<wbr/> especially
18278 for raw output,<wbr/> where only a few fixed scales may be
18279 possible.<wbr/></p>
18280 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
18281 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
18284 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
18285 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
18286 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p>
18288 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
18289 cropped pixel area by (tx,<wbr/> ty),<wbr/>
18290 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
18291 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
18292 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
18293 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
18294 <li>Scale the width and height of requested cropRegion with scaling factor of
18295 sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height
18296 respectively.<wbr/>
18297 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
18298 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
18299 follow the general cropping rule for this new cropRegion and effective active
18300 array size.<wbr/></li>
18304 <p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>
18305 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
18306 The reported cropRegion may be slightly different with the requested cropRegion since
18307 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
18308 hardware limitations.<wbr/></p>
18311 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
18315 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18316 <!-- end of entry -->
18320 <!-- end of kind -->
18323 <!-- end of section -->
18324 <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
18327 <tr><td colspan="6" class="kind">controls</td></tr>
18329 <thead class="entries_header">
18331 <th class="th_name">Property Name</th>
18332 <th class="th_type">Type</th>
18333 <th class="th_description">Description</th>
18334 <th class="th_units">Units</th>
18335 <th class="th_range">Range</th>
18336 <th class="th_tags">Tags</th>
18351 <tr class="entry" id="controls_android.sensor.exposureTime">
18352 <td class="entry_name
18354 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
18356 <td class="entry_type">
18357 <span class="entry_type_name">int64</span>
18359 <span class="entry_type_visibility"> [public]</span>
18362 <span class="entry_type_hwlevel">[full] </span>
18367 </td> <!-- entry_type -->
18369 <td class="entry_description">
18370 <p>Duration each pixel is exposed to
18374 <td class="entry_units">
18378 <td class="entry_range">
18379 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
18382 <td class="entry_tags">
18383 <ul class="entry_tags">
18384 <li><a href="#tag_V1">V1</a></li>
18389 <tr class="entries_header">
18390 <th class="th_details" colspan="5">Details</th>
18392 <tr class="entry_cont">
18393 <td class="entry_details" colspan="5">
18394 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
18395 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
18396 The final exposure time used will be available in the output capture result.<wbr/></p>
18397 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
18398 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18403 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18404 <!-- end of entry -->
18407 <tr class="entry" id="controls_android.sensor.frameDuration">
18408 <td class="entry_name
18410 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
18412 <td class="entry_type">
18413 <span class="entry_type_name">int64</span>
18415 <span class="entry_type_visibility"> [public]</span>
18418 <span class="entry_type_hwlevel">[full] </span>
18423 </td> <!-- entry_type -->
18425 <td class="entry_description">
18426 <p>Duration from start of frame exposure to
18427 start of next frame exposure.<wbr/></p>
18430 <td class="entry_units">
18434 <td class="entry_range">
18435 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
18436 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
18437 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
18440 <td class="entry_tags">
18441 <ul class="entry_tags">
18442 <li><a href="#tag_V1">V1</a></li>
18447 <tr class="entries_header">
18448 <th class="th_details" colspan="5">Details</th>
18450 <tr class="entry_cont">
18451 <td class="entry_details" colspan="5">
18452 <p>The maximum frame rate that can be supported by a camera subsystem is
18453 a function of many factors:</p>
18455 <li>Requested resolutions of output image streams</li>
18456 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
18457 <li>The bandwidth of the imager interface</li>
18458 <li>The bandwidth of the various ISP processing blocks</li>
18460 <p>Since these factors can vary greatly between different ISPs and
18461 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
18462 restrictions with as simple a model as possible.<wbr/></p>
18463 <p>The model presented has the following characteristics:</p>
18465 <li>The image sensor is always configured to output the smallest
18466 resolution possible given the application's requested output stream
18467 sizes.<wbr/> The smallest resolution is defined as being at least as large
18468 as the largest requested output stream size; the camera pipeline must
18469 never digitally upsample sensor data when the crop region covers the
18470 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
18471 resolutions are configured,<wbr/> the sensor can provide a higher frame
18473 <li>Since any request may use any or all the currently configured
18474 output streams,<wbr/> the sensor and ISP must be configured to support
18475 scaling a single capture to all the streams at the same time.<wbr/> This
18476 means the camera pipeline must be ready to produce the largest
18477 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
18478 frame rate of a given configured stream set is governed only by the
18479 largest requested stream resolution.<wbr/></li>
18480 <li>Using more than one output stream in a request does not affect the
18481 frame duration.<wbr/></li>
18482 <li>Certain format-streams may need to do additional background processing
18483 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
18484 can run concurrently to the rest of the camera pipeline,<wbr/> but
18485 cannot process more than 1 capture at a time.<wbr/></li>
18487 <p>The necessary information for the application,<wbr/> given the model above,<wbr/>
18488 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
18489 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
18490 These are used to determine the maximum frame rate /<wbr/> minimum frame
18491 duration that is possible for a given stream configuration.<wbr/></p>
18492 <p>Specifically,<wbr/> the application can use the following rules to
18493 determine the minimum frame duration it can request from the camera
18496 <li>Let the set of currently configured input/<wbr/>output streams
18497 be called <code>S</code>.<wbr/></li>
18498 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
18499 it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
18500 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
18501 called <code>F</code>.<wbr/></li>
18502 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
18503 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
18504 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
18506 <p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>
18507 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
18508 determines the steady state frame rate that the application will get
18509 if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
18510 request be called <code>Rsimple</code>.<wbr/></p>
18511 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
18512 by a single capture of a new request <code>Rstall</code> (which has at least
18513 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
18514 same minimum frame duration this will not cause a frame rate loss
18515 if all buffers from the previous <code>Rstall</code> have already been
18516 delivered.<wbr/></p>
18517 <p>For more details about stalling,<wbr/> see
18518 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
18519 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
18520 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18524 <tr class="entries_header">
18525 <th class="th_details" colspan="5">HAL Implementation Details</th>
18527 <tr class="entry_cont">
18528 <td class="entry_details" colspan="5">
18529 <p>For more details about stalling,<wbr/> see
18530 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
18534 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18535 <!-- end of entry -->
18538 <tr class="entry" id="controls_android.sensor.sensitivity">
18539 <td class="entry_name
18541 android.<wbr/>sensor.<wbr/>sensitivity
18543 <td class="entry_type">
18544 <span class="entry_type_name">int32</span>
18546 <span class="entry_type_visibility"> [public]</span>
18549 <span class="entry_type_hwlevel">[full] </span>
18554 </td> <!-- entry_type -->
18556 <td class="entry_description">
18557 <p>The amount of gain applied to sensor data
18558 before processing.<wbr/></p>
18561 <td class="entry_units">
18562 ISO arithmetic units
18565 <td class="entry_range">
18566 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
18569 <td class="entry_tags">
18570 <ul class="entry_tags">
18571 <li><a href="#tag_V1">V1</a></li>
18576 <tr class="entries_header">
18577 <th class="th_details" colspan="5">Details</th>
18579 <tr class="entry_cont">
18580 <td class="entry_details" colspan="5">
18581 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
18582 as defined in ISO 12232:2006.<wbr/></p>
18583 <p>The sensitivity must be within <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>,<wbr/> and
18584 if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
18585 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
18586 <p>If the camera device cannot apply the exact sensitivity
18587 requested,<wbr/> it will reduce the gain to the nearest supported
18588 value.<wbr/> The final sensitivity used will be available in the
18589 output capture result.<wbr/></p>
18590 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
18591 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18595 <tr class="entries_header">
18596 <th class="th_details" colspan="5">HAL Implementation Details</th>
18598 <tr class="entry_cont">
18599 <td class="entry_details" colspan="5">
18600 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
18604 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18605 <!-- end of entry -->
18608 <tr class="entry" id="controls_android.sensor.testPatternData">
18609 <td class="entry_name
18611 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
18613 <td class="entry_type">
18614 <span class="entry_type_name">int32</span>
18615 <span class="entry_type_container">x</span>
18617 <span class="entry_type_array">
18620 <span class="entry_type_visibility"> [public]</span>
18627 </td> <!-- entry_type -->
18629 <td class="entry_description">
18630 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
18631 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
18634 <td class="entry_units">
18637 <td class="entry_range">
18640 <td class="entry_tags">
18644 <tr class="entries_header">
18645 <th class="th_details" colspan="5">Details</th>
18647 <tr class="entry_cont">
18648 <td class="entry_details" colspan="5">
18649 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
18650 The camera device then uses the most significant X bits
18651 that correspond to how many bits are in its Bayer raw sensor
18653 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
18654 10 most significant bits from each color channel.<wbr/></p>
18658 <tr class="entries_header">
18659 <th class="th_details" colspan="5">HAL Implementation Details</th>
18661 <tr class="entry_cont">
18662 <td class="entry_details" colspan="5">
18667 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18668 <!-- end of entry -->
18671 <tr class="entry" id="controls_android.sensor.testPatternMode">
18672 <td class="entry_name
18674 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
18676 <td class="entry_type">
18677 <span class="entry_type_name entry_type_name_enum">int32</span>
18679 <span class="entry_type_visibility"> [public]</span>
18685 <ul class="entry_type_enum">
18687 <span class="entry_type_enum_name">OFF</span>
18688 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
18689 device returns captures from the image sensor.<wbr/></p>
18690 <p>This is the default if the key is not set.<wbr/></p></span>
18693 <span class="entry_type_enum_name">SOLID_COLOR</span>
18694 <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
18695 respective color channel provided in
18696 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
18697 <p>For example:</p>
18698 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18700 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
18701 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18703 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
18704 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
18707 <span class="entry_type_enum_name">COLOR_BARS</span>
18708 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
18709 <p>The vertical bars (left-to-right) are as follows:</p>
18711 <li>100% white</li>
18720 <p>In general the image would look like the following:</p>
18721 <pre><code>W Y C G M R B K
18726 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18727 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18728 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18730 (B = Blue,<wbr/> K = Black)
18732 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
18733 When this is not possible,<wbr/> the bar size should be rounded
18734 down to the nearest integer and the pattern can repeat
18735 on the right side.<wbr/></p>
18736 <p>Each bar's height must always take up the full sensor
18737 pixel array height.<wbr/></p>
18738 <p>Each pixel in this test pattern must be set to either
18739 0% intensity or 100% intensity.<wbr/></p></span>
18742 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
18743 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
18744 each bar should start at its specified color at the top,<wbr/>
18745 and fade to gray at the bottom.<wbr/></p>
18746 <p>Furthermore each bar is further subdivided into a left and
18747 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
18748 and the right half should have a quantized gradient.<wbr/></p>
18749 <p>In particular,<wbr/> the right half's should consist of blocks of the
18750 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
18751 <p>The least significant bits in the quantized gradient should
18752 be copied from the most significant bits of the smooth gradient.<wbr/></p>
18753 <p>The height of each bar should always be a multiple of 128.<wbr/>
18754 When this is not the case,<wbr/> the pattern should repeat at the bottom
18755 of the image.<wbr/></p></span>
18758 <span class="entry_type_enum_name">PN9</span>
18759 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
18760 generated from a PN9 512-bit sequence (typically implemented
18761 in hardware with a linear feedback shift register).<wbr/></p>
18762 <p>The generator should be reset at the beginning of each frame,<wbr/>
18763 and thus each subsequent raw frame with this test pattern should
18764 be exactly the same as the last.<wbr/></p></span>
18767 <span class="entry_type_enum_name">CUSTOM1</span>
18768 <span class="entry_type_enum_value">256</span>
18769 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
18770 available only on this camera device are at least this numeric
18772 <p>All of the custom test patterns will be static
18773 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
18777 </td> <!-- entry_type -->
18779 <td class="entry_description">
18780 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
18781 doing a real exposure from the camera.<wbr/></p>
18784 <td class="entry_units">
18787 <td class="entry_range">
18788 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
18791 <td class="entry_tags">
18795 <tr class="entries_header">
18796 <th class="th_details" colspan="5">Details</th>
18798 <tr class="entry_cont">
18799 <td class="entry_details" colspan="5">
18800 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
18801 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
18802 work as normal.<wbr/></p>
18803 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
18804 occur (and that the test pattern remain unmodified,<wbr/> since the flash
18805 would not actually affect it).<wbr/></p>
18806 <p>Defaults to OFF.<wbr/></p>
18810 <tr class="entries_header">
18811 <th class="th_details" colspan="5">HAL Implementation Details</th>
18813 <tr class="entry_cont">
18814 <td class="entry_details" colspan="5">
18815 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
18816 <p>The HAL may choose to substitute test patterns from the sensor
18817 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
18818 indistinguishable to the ISP whether the data came from the
18819 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
18823 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18824 <!-- end of entry -->
18828 <!-- end of kind -->
18830 <tr><td colspan="6" class="kind">static</td></tr>
18832 <thead class="entries_header">
18834 <th class="th_name">Property Name</th>
18835 <th class="th_type">Type</th>
18836 <th class="th_description">Description</th>
18837 <th class="th_units">Units</th>
18838 <th class="th_range">Range</th>
18839 <th class="th_tags">Tags</th>
18856 <tr class="entry" id="static_android.sensor.info.activeArraySize">
18857 <td class="entry_name
18859 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18861 <td class="entry_type">
18862 <span class="entry_type_name">int32</span>
18863 <span class="entry_type_container">x</span>
18865 <span class="entry_type_array">
18868 <span class="entry_type_visibility"> [public as rectangle]</span>
18871 <span class="entry_type_hwlevel">[legacy] </span>
18874 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
18877 </td> <!-- entry_type -->
18879 <td class="entry_description">
18880 <p>The area of the image sensor which corresponds to active pixels after any geometric
18881 distortion correction has been applied.<wbr/></p>
18884 <td class="entry_units">
18885 Pixel coordinates on the image sensor
18888 <td class="entry_range">
18891 <td class="entry_tags">
18892 <ul class="entry_tags">
18893 <li><a href="#tag_RAW">RAW</a></li>
18898 <tr class="entries_header">
18899 <th class="th_details" colspan="5">Details</th>
18901 <tr class="entry_cont">
18902 <td class="entry_details" colspan="5">
18903 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
18904 the region that actually receives light from the scene) after any geometric correction
18905 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
18906 image output formats aside from the raw formats.<wbr/></p>
18907 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
18908 the full pixel array,<wbr/> and the size of the full pixel array is given by
18909 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18910 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
18911 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> is defined relative to the active array rectangle given in
18912 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
18913 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
18914 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
18915 resulting in scaling or cropping may have been applied.<wbr/></p>
18919 <tr class="entries_header">
18920 <th class="th_details" colspan="5">HAL Implementation Details</th>
18922 <tr class="entry_cont">
18923 <td class="entry_details" colspan="5">
18924 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
18925 >= <code>(0,<wbr/>0)</code>.<wbr/>
18926 The <code>(width,<wbr/> height)</code> must be <= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p>
18930 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18931 <!-- end of entry -->
18934 <tr class="entry" id="static_android.sensor.info.sensitivityRange">
18935 <td class="entry_name
18937 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
18939 <td class="entry_type">
18940 <span class="entry_type_name">int32</span>
18941 <span class="entry_type_container">x</span>
18943 <span class="entry_type_array">
18946 <span class="entry_type_visibility"> [public as rangeInt]</span>
18949 <span class="entry_type_hwlevel">[full] </span>
18952 <div class="entry_type_notes">Range of supported sensitivities</div>
18955 </td> <!-- entry_type -->
18957 <td class="entry_description">
18958 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
18959 camera device.<wbr/></p>
18962 <td class="entry_units">
18965 <td class="entry_range">
18966 <p>Min <= 100,<wbr/> Max >= 800</p>
18969 <td class="entry_tags">
18970 <ul class="entry_tags">
18971 <li><a href="#tag_BC">BC</a></li>
18972 <li><a href="#tag_V1">V1</a></li>
18977 <tr class="entries_header">
18978 <th class="th_details" colspan="5">Details</th>
18980 <tr class="entry_cont">
18981 <td class="entry_details" colspan="5">
18982 <p>The values are the standard ISO sensitivity values,<wbr/>
18983 as defined in ISO 12232:2006.<wbr/></p>
18988 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18989 <!-- end of entry -->
18992 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
18993 <td class="entry_name
18995 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
18997 <td class="entry_type">
18998 <span class="entry_type_name entry_type_name_enum">byte</span>
19000 <span class="entry_type_visibility"> [public]</span>
19003 <span class="entry_type_hwlevel">[full] </span>
19007 <ul class="entry_type_enum">
19009 <span class="entry_type_enum_name">RGGB</span>
19012 <span class="entry_type_enum_name">GRBG</span>
19015 <span class="entry_type_enum_name">GBRG</span>
19018 <span class="entry_type_enum_name">BGGR</span>
19021 <span class="entry_type_enum_name">RGB</span>
19022 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
19023 values for each pixel,<wbr/> instead of just 1 16-bit value
19024 per pixel.<wbr/></p></span>
19028 </td> <!-- entry_type -->
19030 <td class="entry_description">
19031 <p>The arrangement of color filters on sensor;
19032 represents the colors in the top-left 2x2 section of
19033 the sensor,<wbr/> in reading order.<wbr/></p>
19036 <td class="entry_units">
19039 <td class="entry_range">
19042 <td class="entry_tags">
19043 <ul class="entry_tags">
19044 <li><a href="#tag_RAW">RAW</a></li>
19051 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19052 <!-- end of entry -->
19055 <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
19056 <td class="entry_name
19058 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
19060 <td class="entry_type">
19061 <span class="entry_type_name">int64</span>
19062 <span class="entry_type_container">x</span>
19064 <span class="entry_type_array">
19067 <span class="entry_type_visibility"> [public as rangeLong]</span>
19070 <span class="entry_type_hwlevel">[full] </span>
19073 <div class="entry_type_notes">nanoseconds</div>
19076 </td> <!-- entry_type -->
19078 <td class="entry_description">
19079 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
19080 by this camera device.<wbr/></p>
19083 <td class="entry_units">
19087 <td class="entry_range">
19088 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
19089 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
19090 the maximum exposure time will be greater than 100ms.<wbr/></p>
19093 <td class="entry_tags">
19094 <ul class="entry_tags">
19095 <li><a href="#tag_V1">V1</a></li>
19101 <tr class="entries_header">
19102 <th class="th_details" colspan="5">HAL Implementation Details</th>
19104 <tr class="entry_cont">
19105 <td class="entry_details" colspan="5">
19106 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
19107 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
19112 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19113 <!-- end of entry -->
19116 <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
19117 <td class="entry_name
19119 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
19121 <td class="entry_type">
19122 <span class="entry_type_name">int64</span>
19124 <span class="entry_type_visibility"> [public]</span>
19127 <span class="entry_type_hwlevel">[full] </span>
19132 </td> <!-- entry_type -->
19134 <td class="entry_description">
19135 <p>The maximum possible frame duration (minimum frame rate) for
19136 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
19139 <td class="entry_units">
19143 <td class="entry_range">
19144 <p>For FULL capability devices
19145 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
19148 <td class="entry_tags">
19149 <ul class="entry_tags">
19150 <li><a href="#tag_V1">V1</a></li>
19155 <tr class="entries_header">
19156 <th class="th_details" colspan="5">Details</th>
19158 <tr class="entry_cont">
19159 <td class="entry_details" colspan="5">
19160 <p>Attempting to use frame durations beyond the maximum will result in the frame
19161 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
19162 durations.<wbr/></p>
19163 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
19164 for the minimum frame duration values.<wbr/></p>
19168 <tr class="entries_header">
19169 <th class="th_details" colspan="5">HAL Implementation Details</th>
19171 <tr class="entry_cont">
19172 <td class="entry_details" colspan="5">
19173 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
19174 The maximum of the range SHOULD be at least
19175 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
19176 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
19177 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
19178 value (since exposure time overrides frame duration).<wbr/></p>
19179 <p>Available minimum frame durations for JPEG must be no greater
19180 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
19181 minimum frame durations (for that respective size).<wbr/></p>
19182 <p>Since JPEG processing is considered offline and can take longer than
19183 a single uncompressed capture,<wbr/> refer to
19184 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
19185 for details about encoding this scenario.<wbr/></p>
19189 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19190 <!-- end of entry -->
19193 <tr class="entry" id="static_android.sensor.info.physicalSize">
19194 <td class="entry_name
19196 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
19198 <td class="entry_type">
19199 <span class="entry_type_name">float</span>
19200 <span class="entry_type_container">x</span>
19202 <span class="entry_type_array">
19205 <span class="entry_type_visibility"> [public as sizeF]</span>
19208 <span class="entry_type_hwlevel">[legacy] </span>
19211 <div class="entry_type_notes">width x height</div>
19214 </td> <!-- entry_type -->
19216 <td class="entry_description">
19217 <p>The physical dimensions of the full pixel
19221 <td class="entry_units">
19225 <td class="entry_range">
19228 <td class="entry_tags">
19229 <ul class="entry_tags">
19230 <li><a href="#tag_V1">V1</a></li>
19231 <li><a href="#tag_BC">BC</a></li>
19236 <tr class="entries_header">
19237 <th class="th_details" colspan="5">Details</th>
19239 <tr class="entry_cont">
19240 <td class="entry_details" colspan="5">
19241 <p>This is the physical size of the sensor pixel
19242 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19246 <tr class="entries_header">
19247 <th class="th_details" colspan="5">HAL Implementation Details</th>
19249 <tr class="entry_cont">
19250 <td class="entry_details" colspan="5">
19251 <p>Needed for FOV calculation for old API</p>
19255 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19256 <!-- end of entry -->
19259 <tr class="entry" id="static_android.sensor.info.pixelArraySize">
19260 <td class="entry_name
19262 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
19264 <td class="entry_type">
19265 <span class="entry_type_name">int32</span>
19266 <span class="entry_type_container">x</span>
19268 <span class="entry_type_array">
19271 <span class="entry_type_visibility"> [public as size]</span>
19274 <span class="entry_type_hwlevel">[legacy] </span>
19279 </td> <!-- entry_type -->
19281 <td class="entry_description">
19282 <p>Dimensions of the full pixel array,<wbr/> possibly
19283 including black calibration pixels.<wbr/></p>
19286 <td class="entry_units">
19290 <td class="entry_range">
19293 <td class="entry_tags">
19294 <ul class="entry_tags">
19295 <li><a href="#tag_RAW">RAW</a></li>
19296 <li><a href="#tag_BC">BC</a></li>
19301 <tr class="entries_header">
19302 <th class="th_details" colspan="5">Details</th>
19304 <tr class="entry_cont">
19305 <td class="entry_details" colspan="5">
19306 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
19307 <a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/> This represents the full pixel dimensions of
19308 the raw buffers produced by this sensor.<wbr/></p>
19309 <p>If a camera device supports raw sensor formats,<wbr/> either this or
19310 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is the maximum dimensions for the raw
19311 output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on
19312 whether or not the image sensor returns buffers containing pixels that are not
19313 part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
19314 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
19315 or be otherwise inactive.<wbr/> The <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> key
19316 defines the rectangle of active pixels that will be included in processed image
19322 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19323 <!-- end of entry -->
19326 <tr class="entry" id="static_android.sensor.info.whiteLevel">
19327 <td class="entry_name
19329 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
19331 <td class="entry_type">
19332 <span class="entry_type_name">int32</span>
19334 <span class="entry_type_visibility"> [public]</span>
19341 </td> <!-- entry_type -->
19343 <td class="entry_description">
19344 <p>Maximum raw value output by sensor.<wbr/></p>
19347 <td class="entry_units">
19350 <td class="entry_range">
19351 <p>> 255 (8-bit output)</p>
19354 <td class="entry_tags">
19355 <ul class="entry_tags">
19356 <li><a href="#tag_RAW">RAW</a></li>
19361 <tr class="entries_header">
19362 <th class="th_details" colspan="5">Details</th>
19364 <tr class="entry_cont">
19365 <td class="entry_details" colspan="5">
19366 <p>This specifies the fully-saturated encoding level for the raw
19367 sample values from the sensor.<wbr/> This is typically caused by the
19368 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
19369 each channel is specified by the offset in the
19370 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
19371 <p>The white level is typically determined either by sensor bit depth
19372 (8-14 bits is expected),<wbr/> or by the point where the sensor response
19373 becomes too non-linear to be useful.<wbr/> The default value for this is
19374 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
19375 <p>The white level values of captured images may vary for different
19376 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
19377 represents a coarse approximation for such case.<wbr/> It is recommended
19378 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
19379 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
19383 <tr class="entries_header">
19384 <th class="th_details" colspan="5">HAL Implementation Details</th>
19386 <tr class="entry_cont">
19387 <td class="entry_details" colspan="5">
19388 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
19389 so the value for linear sensors should not be significantly lower
19390 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
19394 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19395 <!-- end of entry -->
19398 <tr class="entry" id="static_android.sensor.info.timestampSource">
19399 <td class="entry_name
19401 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
19403 <td class="entry_type">
19404 <span class="entry_type_name entry_type_name_enum">byte</span>
19406 <span class="entry_type_visibility"> [public]</span>
19409 <span class="entry_type_hwlevel">[legacy] </span>
19413 <ul class="entry_type_enum">
19415 <span class="entry_type_enum_name">UNKNOWN</span>
19416 <span class="entry_type_enum_notes"><p>Timestamps from <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> are in nanoseconds and monotonic,<wbr/>
19417 but can not be compared to timestamps from other subsystems
19418 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
19419 camera devices in the same system.<wbr/> Timestamps between streams and results for
19420 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
19421 and the result metadata generated by a single capture are identical.<wbr/></p></span>
19424 <span class="entry_type_enum_name">REALTIME</span>
19425 <span class="entry_type_enum_notes"><p>Timestamps from <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> are in the same timebase as
19426 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
19427 and they can be compared to other timestamps using that base.<wbr/></p></span>
19431 </td> <!-- entry_type -->
19433 <td class="entry_description">
19434 <p>The time base source for sensor capture start timestamps.<wbr/></p>
19437 <td class="entry_units">
19440 <td class="entry_range">
19443 <td class="entry_tags">
19444 <ul class="entry_tags">
19445 <li><a href="#tag_V1">V1</a></li>
19450 <tr class="entries_header">
19451 <th class="th_details" colspan="5">Details</th>
19453 <tr class="entry_cont">
19454 <td class="entry_details" colspan="5">
19455 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
19456 may not based on a time source that can be compared to other system time sources.<wbr/></p>
19457 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
19458 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
19462 <tr class="entries_header">
19463 <th class="th_details" colspan="5">HAL Implementation Details</th>
19465 <tr class="entry_cont">
19466 <td class="entry_details" colspan="5">
19467 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
19468 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
19469 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
19470 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
19471 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
19472 recording might suffer unexpected behavior.<wbr/></p>
19473 <p>Also,<wbr/> camera devices implements REALTIME must pass the ITS sensor fusion test which
19474 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
19478 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19479 <!-- end of entry -->
19482 <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
19483 <td class="entry_name
19485 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
19487 <td class="entry_type">
19488 <span class="entry_type_name entry_type_name_enum">byte</span>
19490 <span class="entry_type_visibility"> [public as boolean]</span>
19496 <ul class="entry_type_enum">
19498 <span class="entry_type_enum_name">FALSE</span>
19501 <span class="entry_type_enum_name">TRUE</span>
19505 </td> <!-- entry_type -->
19507 <td class="entry_description">
19508 <p>Whether the RAW images output from this camera device are subject to
19509 lens shading correction.<wbr/></p>
19512 <td class="entry_units">
19515 <td class="entry_range">
19518 <td class="entry_tags">
19522 <tr class="entries_header">
19523 <th class="th_details" colspan="5">Details</th>
19525 <tr class="entry_cont">
19526 <td class="entry_details" colspan="5">
19527 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
19528 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
19529 not be adjusted for lens shading correction.<wbr/>
19530 See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a list of RAW image formats.<wbr/></p>
19531 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
19532 Devices with RAW capability will always report this information in this key.<wbr/></p>
19537 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19538 <!-- end of entry -->
19541 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
19542 <td class="entry_name
19544 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
19546 <td class="entry_type">
19547 <span class="entry_type_name">int32</span>
19548 <span class="entry_type_container">x</span>
19550 <span class="entry_type_array">
19553 <span class="entry_type_visibility"> [public as rectangle]</span>
19556 <span class="entry_type_hwlevel">[legacy] </span>
19559 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19562 </td> <!-- entry_type -->
19564 <td class="entry_description">
19565 <p>The area of the image sensor which corresponds to active pixels prior to the
19566 application of any geometric distortion correction.<wbr/></p>
19569 <td class="entry_units">
19570 Pixel coordinates on the image sensor
19573 <td class="entry_range">
19576 <td class="entry_tags">
19577 <ul class="entry_tags">
19578 <li><a href="#tag_RAW">RAW</a></li>
19583 <tr class="entries_header">
19584 <th class="th_details" colspan="5">Details</th>
19586 <tr class="entry_cont">
19587 <td class="entry_details" colspan="5">
19588 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
19589 the region that actually receives light from the scene) before any geometric correction
19590 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
19591 raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
19592 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
19593 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
19594 <p>The size of this region determines the maximum field of view and the maximum number of
19595 pixels that an image from this sensor can contain,<wbr/> prior to the application of
19596 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
19597 post-distortion-corrected image is given by the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>
19598 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
19599 can be calculated by applying the geometric distortion correction fields to this
19600 rectangle,<wbr/> and cropping to the rectangle given in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19601 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
19602 dimensions in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> given the position of a pixel,<wbr/>
19603 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
19604 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
19606 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
19607 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> otherwise this pixel is considered
19608 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
19609 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
19610 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
19611 buffers is defined relative to the top,<wbr/> left of the
19612 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> rectangle.<wbr/></li>
19613 <li>If the resulting corrected pixel coordinate is within the region given in
19614 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> then the position of this pixel in the
19615 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
19616 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
19618 <p>Thus,<wbr/> for pixel x',<wbr/>y' = (25,<wbr/> 25) on a sensor where <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>
19619 is (100,<wbr/>100),<wbr/> <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is (10,<wbr/> 10,<wbr/> 100,<wbr/> 100),<wbr/>
19620 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> is (20,<wbr/> 20,<wbr/> 80,<wbr/> 80),<wbr/> and the geometric distortion
19621 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
19622 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
19623 with dimensions given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>,<wbr/> and would be (5,<wbr/> 5)
19624 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
19625 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19626 <p>The currently supported fields that correct for geometric distortion are:</p>
19628 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
19630 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
19631 as the post-distortion-corrected rectangle given in
19632 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19633 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
19634 the full pixel array,<wbr/> and the size of the full pixel array is given by
19635 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19636 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
19637 full array may include black calibration pixels or other inactive regions.<wbr/></p>
19641 <tr class="entries_header">
19642 <th class="th_details" colspan="5">HAL Implementation Details</th>
19644 <tr class="entry_cont">
19645 <td class="entry_details" colspan="5">
19646 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
19647 >= <code>(0,<wbr/>0)</code>.<wbr/>
19648 The <code>(width,<wbr/> height)</code> must be <= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p>
19649 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
19650 the same as the post-correction active array region given in
19651 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19655 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19656 <!-- end of entry -->
19662 <tr class="entry" id="static_android.sensor.referenceIlluminant1">
19663 <td class="entry_name
19665 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
19667 <td class="entry_type">
19668 <span class="entry_type_name entry_type_name_enum">byte</span>
19670 <span class="entry_type_visibility"> [public]</span>
19676 <ul class="entry_type_enum">
19678 <span class="entry_type_enum_name">DAYLIGHT</span>
19679 <span class="entry_type_enum_value">1</span>
19682 <span class="entry_type_enum_name">FLUORESCENT</span>
19683 <span class="entry_type_enum_value">2</span>
19686 <span class="entry_type_enum_name">TUNGSTEN</span>
19687 <span class="entry_type_enum_value">3</span>
19688 <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
19691 <span class="entry_type_enum_name">FLASH</span>
19692 <span class="entry_type_enum_value">4</span>
19695 <span class="entry_type_enum_name">FINE_WEATHER</span>
19696 <span class="entry_type_enum_value">9</span>
19699 <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
19700 <span class="entry_type_enum_value">10</span>
19703 <span class="entry_type_enum_name">SHADE</span>
19704 <span class="entry_type_enum_value">11</span>
19707 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
19708 <span class="entry_type_enum_value">12</span>
19709 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
19712 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
19713 <span class="entry_type_enum_value">13</span>
19714 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
19717 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
19718 <span class="entry_type_enum_value">14</span>
19719 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
19722 <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
19723 <span class="entry_type_enum_value">15</span>
19724 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
19727 <span class="entry_type_enum_name">STANDARD_A</span>
19728 <span class="entry_type_enum_value">17</span>
19731 <span class="entry_type_enum_name">STANDARD_B</span>
19732 <span class="entry_type_enum_value">18</span>
19735 <span class="entry_type_enum_name">STANDARD_C</span>
19736 <span class="entry_type_enum_value">19</span>
19739 <span class="entry_type_enum_name">D55</span>
19740 <span class="entry_type_enum_value">20</span>
19743 <span class="entry_type_enum_name">D65</span>
19744 <span class="entry_type_enum_value">21</span>
19747 <span class="entry_type_enum_name">D75</span>
19748 <span class="entry_type_enum_value">22</span>
19751 <span class="entry_type_enum_name">D50</span>
19752 <span class="entry_type_enum_value">23</span>
19755 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
19756 <span class="entry_type_enum_value">24</span>
19760 </td> <!-- entry_type -->
19762 <td class="entry_description">
19763 <p>The standard reference illuminant used as the scene light source when
19764 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19765 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19766 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
19769 <td class="entry_units">
19772 <td class="entry_range">
19775 <td class="entry_tags">
19776 <ul class="entry_tags">
19777 <li><a href="#tag_RAW">RAW</a></li>
19782 <tr class="entries_header">
19783 <th class="th_details" colspan="5">Details</th>
19785 <tr class="entry_cont">
19786 <td class="entry_details" colspan="5">
19787 <p>The values in this key correspond to the values defined for the
19788 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
19789 that are often used calibrating camera devices.<wbr/></p>
19790 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19791 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19792 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
19793 <p>Some devices may choose to provide a second set of calibration
19794 information for improved quality,<wbr/> including
19795 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
19799 <tr class="entries_header">
19800 <th class="th_details" colspan="5">HAL Implementation Details</th>
19802 <tr class="entry_cont">
19803 <td class="entry_details" colspan="5">
19804 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
19805 and corresponding matrices must be present to support the RAW capability
19806 and DNG output.<wbr/></p>
19807 <p>When producing raw images with a color profile that has only been
19808 calibrated against a single light source,<wbr/> it is valid to omit
19809 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
19810 <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/>
19811 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19812 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
19813 chosen so that it is representative of typical scene lighting.<wbr/> In
19814 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
19815 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
19816 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
19817 chosen to represent the typical range of scene lighting conditions.<wbr/>
19818 In general,<wbr/> low color temperature illuminant such as Standard-A will
19819 be chosen for the first reference illuminant and a higher color
19820 temperature illuminant such as D65 will be chosen for the second
19821 reference illuminant.<wbr/></p>
19825 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19826 <!-- end of entry -->
19829 <tr class="entry" id="static_android.sensor.referenceIlluminant2">
19830 <td class="entry_name
19832 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
19834 <td class="entry_type">
19835 <span class="entry_type_name">byte</span>
19837 <span class="entry_type_visibility"> [public]</span>
19844 </td> <!-- entry_type -->
19846 <td class="entry_description">
19847 <p>The standard reference illuminant used as the scene light source when
19848 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19849 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19850 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19853 <td class="entry_units">
19856 <td class="entry_range">
19857 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
19860 <td class="entry_tags">
19861 <ul class="entry_tags">
19862 <li><a href="#tag_RAW">RAW</a></li>
19867 <tr class="entries_header">
19868 <th class="th_details" colspan="5">Details</th>
19870 <tr class="entry_cont">
19871 <td class="entry_details" colspan="5">
19872 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
19873 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19874 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19875 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
19880 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19881 <!-- end of entry -->
19884 <tr class="entry" id="static_android.sensor.calibrationTransform1">
19885 <td class="entry_name
19887 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
19889 <td class="entry_type">
19890 <span class="entry_type_name">rational</span>
19891 <span class="entry_type_container">x</span>
19893 <span class="entry_type_array">
19896 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19901 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19904 </td> <!-- entry_type -->
19906 <td class="entry_description">
19907 <p>A per-device calibration transform matrix that maps from the
19908 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
19911 <td class="entry_units">
19914 <td class="entry_range">
19917 <td class="entry_tags">
19918 <ul class="entry_tags">
19919 <li><a href="#tag_RAW">RAW</a></li>
19924 <tr class="entries_header">
19925 <th class="th_details" colspan="5">Details</th>
19927 <tr class="entry_cont">
19928 <td class="entry_details" colspan="5">
19929 <p>This matrix is used to correct for per-device variations in the
19930 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19931 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19932 contains a per-device calibration transform that maps colors
19933 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19934 colorspace) into this camera device's native sensor color
19935 space under the first reference illuminant
19936 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
19941 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19942 <!-- end of entry -->
19945 <tr class="entry" id="static_android.sensor.calibrationTransform2">
19946 <td class="entry_name
19948 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
19950 <td class="entry_type">
19951 <span class="entry_type_name">rational</span>
19952 <span class="entry_type_container">x</span>
19954 <span class="entry_type_array">
19957 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19962 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19965 </td> <!-- entry_type -->
19967 <td class="entry_description">
19968 <p>A per-device calibration transform matrix that maps from the
19969 reference sensor colorspace to the actual device sensor colorspace
19970 (this is the colorspace of the raw buffer data).<wbr/></p>
19973 <td class="entry_units">
19976 <td class="entry_range">
19979 <td class="entry_tags">
19980 <ul class="entry_tags">
19981 <li><a href="#tag_RAW">RAW</a></li>
19986 <tr class="entries_header">
19987 <th class="th_details" colspan="5">Details</th>
19989 <tr class="entry_cont">
19990 <td class="entry_details" colspan="5">
19991 <p>This matrix is used to correct for per-device variations in the
19992 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19993 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19994 contains a per-device calibration transform that maps colors
19995 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19996 colorspace) into this camera device's native sensor color
19997 space under the second reference illuminant
19998 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
19999 <p>This matrix will only be present if the second reference
20000 illuminant is present.<wbr/></p>
20005 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20006 <!-- end of entry -->
20009 <tr class="entry" id="static_android.sensor.colorTransform1">
20010 <td class="entry_name
20012 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
20014 <td class="entry_type">
20015 <span class="entry_type_name">rational</span>
20016 <span class="entry_type_container">x</span>
20018 <span class="entry_type_array">
20021 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20026 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20029 </td> <!-- entry_type -->
20031 <td class="entry_description">
20032 <p>A matrix that transforms color values from CIE XYZ color space to
20033 reference sensor color space.<wbr/></p>
20036 <td class="entry_units">
20039 <td class="entry_range">
20042 <td class="entry_tags">
20043 <ul class="entry_tags">
20044 <li><a href="#tag_RAW">RAW</a></li>
20049 <tr class="entries_header">
20050 <th class="th_details" colspan="5">Details</th>
20052 <tr class="entry_cont">
20053 <td class="entry_details" colspan="5">
20054 <p>This matrix is used to convert from the standard CIE XYZ color
20055 space to the reference sensor colorspace,<wbr/> and is used when processing
20056 raw buffer data.<wbr/></p>
20057 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20058 contains a color transform matrix that maps colors from the CIE
20059 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
20060 "golden module" colorspace) under the first reference illuminant
20061 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
20062 <p>The white points chosen in both the reference sensor color space
20063 and the CIE XYZ colorspace when calculating this transform will
20064 match the standard white point for the first reference illuminant
20065 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
20070 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20071 <!-- end of entry -->
20074 <tr class="entry" id="static_android.sensor.colorTransform2">
20075 <td class="entry_name
20077 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
20079 <td class="entry_type">
20080 <span class="entry_type_name">rational</span>
20081 <span class="entry_type_container">x</span>
20083 <span class="entry_type_array">
20086 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20091 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20094 </td> <!-- entry_type -->
20096 <td class="entry_description">
20097 <p>A matrix that transforms color values from CIE XYZ color space to
20098 reference sensor color space.<wbr/></p>
20101 <td class="entry_units">
20104 <td class="entry_range">
20107 <td class="entry_tags">
20108 <ul class="entry_tags">
20109 <li><a href="#tag_RAW">RAW</a></li>
20114 <tr class="entries_header">
20115 <th class="th_details" colspan="5">Details</th>
20117 <tr class="entry_cont">
20118 <td class="entry_details" colspan="5">
20119 <p>This matrix is used to convert from the standard CIE XYZ color
20120 space to the reference sensor colorspace,<wbr/> and is used when processing
20121 raw buffer data.<wbr/></p>
20122 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20123 contains a color transform matrix that maps colors from the CIE
20124 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
20125 "golden module" colorspace) under the second reference illuminant
20126 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
20127 <p>The white points chosen in both the reference sensor color space
20128 and the CIE XYZ colorspace when calculating this transform will
20129 match the standard white point for the second reference illuminant
20130 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
20131 <p>This matrix will only be present if the second reference
20132 illuminant is present.<wbr/></p>
20137 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20138 <!-- end of entry -->
20141 <tr class="entry" id="static_android.sensor.forwardMatrix1">
20142 <td class="entry_name
20144 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
20146 <td class="entry_type">
20147 <span class="entry_type_name">rational</span>
20148 <span class="entry_type_container">x</span>
20150 <span class="entry_type_array">
20153 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20158 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20161 </td> <!-- entry_type -->
20163 <td class="entry_description">
20164 <p>A matrix that transforms white balanced camera colors from the reference
20165 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
20168 <td class="entry_units">
20171 <td class="entry_range">
20174 <td class="entry_tags">
20175 <ul class="entry_tags">
20176 <li><a href="#tag_RAW">RAW</a></li>
20181 <tr class="entries_header">
20182 <th class="th_details" colspan="5">Details</th>
20184 <tr class="entry_cont">
20185 <td class="entry_details" colspan="5">
20186 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
20187 is used when processing raw buffer data.<wbr/></p>
20188 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
20189 a color transform matrix that maps white balanced colors from the
20190 reference sensor color space to the CIE XYZ color space with a D50 white
20192 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
20193 this matrix is chosen so that the standard white point for this reference
20194 illuminant in the reference sensor colorspace is mapped to D50 in the
20195 CIE XYZ colorspace.<wbr/></p>
20200 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20201 <!-- end of entry -->
20204 <tr class="entry" id="static_android.sensor.forwardMatrix2">
20205 <td class="entry_name
20207 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
20209 <td class="entry_type">
20210 <span class="entry_type_name">rational</span>
20211 <span class="entry_type_container">x</span>
20213 <span class="entry_type_array">
20216 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20221 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20224 </td> <!-- entry_type -->
20226 <td class="entry_description">
20227 <p>A matrix that transforms white balanced camera colors from the reference
20228 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
20231 <td class="entry_units">
20234 <td class="entry_range">
20237 <td class="entry_tags">
20238 <ul class="entry_tags">
20239 <li><a href="#tag_RAW">RAW</a></li>
20244 <tr class="entries_header">
20245 <th class="th_details" colspan="5">Details</th>
20247 <tr class="entry_cont">
20248 <td class="entry_details" colspan="5">
20249 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
20250 is used when processing raw buffer data.<wbr/></p>
20251 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
20252 a color transform matrix that maps white balanced colors from the
20253 reference sensor color space to the CIE XYZ color space with a D50 white
20255 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
20256 this matrix is chosen so that the standard white point for this reference
20257 illuminant in the reference sensor colorspace is mapped to D50 in the
20258 CIE XYZ colorspace.<wbr/></p>
20259 <p>This matrix will only be present if the second reference
20260 illuminant is present.<wbr/></p>
20265 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20266 <!-- end of entry -->
20269 <tr class="entry" id="static_android.sensor.baseGainFactor">
20270 <td class="entry_name
20272 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
20274 <td class="entry_type">
20275 <span class="entry_type_name">rational</span>
20277 <span class="entry_type_visibility"> [system]</span>
20284 </td> <!-- entry_type -->
20286 <td class="entry_description">
20287 <p>Gain factor from electrons to raw units when
20291 <td class="entry_units">
20294 <td class="entry_range">
20297 <td class="entry_tags">
20298 <ul class="entry_tags">
20299 <li><a href="#tag_FUTURE">FUTURE</a></li>
20306 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20307 <!-- end of entry -->
20310 <tr class="entry" id="static_android.sensor.blackLevelPattern">
20311 <td class="entry_name
20313 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
20315 <td class="entry_type">
20316 <span class="entry_type_name">int32</span>
20317 <span class="entry_type_container">x</span>
20319 <span class="entry_type_array">
20322 <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
20327 <div class="entry_type_notes">2x2 raw count block</div>
20330 </td> <!-- entry_type -->
20332 <td class="entry_description">
20333 <p>A fixed black level offset for each of the color filter arrangement
20334 (CFA) mosaic channels.<wbr/></p>
20337 <td class="entry_units">
20340 <td class="entry_range">
20341 <p>>= 0 for each.<wbr/></p>
20344 <td class="entry_tags">
20345 <ul class="entry_tags">
20346 <li><a href="#tag_RAW">RAW</a></li>
20351 <tr class="entries_header">
20352 <th class="th_details" colspan="5">Details</th>
20354 <tr class="entry_cont">
20355 <td class="entry_details" colspan="5">
20356 <p>This key specifies the zero light value for each of the CFA mosaic
20357 channels in the camera sensor.<wbr/> The maximal value output by the
20358 sensor is represented by the value in <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>.<wbr/></p>
20359 <p>The values are given in the same order as channels listed for the CFA
20360 layout key (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>),<wbr/> i.<wbr/>e.<wbr/> the
20361 nth value given corresponds to the black level offset for the nth
20362 color channel listed in the CFA.<wbr/></p>
20363 <p>The black level values of captured images may vary for different
20364 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20365 represents a coarse approximation for such case.<wbr/> It is recommended to
20366 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
20367 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
20368 supported by the camera device,<wbr/> which provides more accurate black
20369 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
20370 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
20371 level values for each frame.<wbr/></p>
20375 <tr class="entries_header">
20376 <th class="th_details" colspan="5">HAL Implementation Details</th>
20378 <tr class="entry_cont">
20379 <td class="entry_details" colspan="5">
20380 <p>The values are given in row-column scan order,<wbr/> with the first value
20381 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
20385 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20386 <!-- end of entry -->
20389 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
20390 <td class="entry_name
20392 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
20394 <td class="entry_type">
20395 <span class="entry_type_name">int32</span>
20397 <span class="entry_type_visibility"> [public]</span>
20400 <span class="entry_type_hwlevel">[full] </span>
20405 </td> <!-- entry_type -->
20407 <td class="entry_description">
20408 <p>Maximum sensitivity that is implemented
20409 purely through analog gain.<wbr/></p>
20412 <td class="entry_units">
20415 <td class="entry_range">
20418 <td class="entry_tags">
20419 <ul class="entry_tags">
20420 <li><a href="#tag_V1">V1</a></li>
20421 <li><a href="#tag_FULL">FULL</a></li>
20426 <tr class="entries_header">
20427 <th class="th_details" colspan="5">Details</th>
20429 <tr class="entry_cont">
20430 <td class="entry_details" colspan="5">
20431 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
20432 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
20433 values above this,<wbr/> the gain applied can be a mix of analog and
20439 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20440 <!-- end of entry -->
20443 <tr class="entry" id="static_android.sensor.orientation">
20444 <td class="entry_name
20446 android.<wbr/>sensor.<wbr/>orientation
20448 <td class="entry_type">
20449 <span class="entry_type_name">int32</span>
20451 <span class="entry_type_visibility"> [public]</span>
20454 <span class="entry_type_hwlevel">[legacy] </span>
20459 </td> <!-- entry_type -->
20461 <td class="entry_description">
20462 <p>Clockwise angle through which the output image needs to be rotated to be
20463 upright on the device screen in its native orientation.<wbr/></p>
20466 <td class="entry_units">
20467 Degrees of clockwise rotation; always a multiple of
20471 <td class="entry_range">
20472 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
20475 <td class="entry_tags">
20476 <ul class="entry_tags">
20477 <li><a href="#tag_BC">BC</a></li>
20482 <tr class="entries_header">
20483 <th class="th_details" colspan="5">Details</th>
20485 <tr class="entry_cont">
20486 <td class="entry_details" colspan="5">
20487 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
20488 the sensor's coordinate system.<wbr/></p>
20493 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20494 <!-- end of entry -->
20497 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
20498 <td class="entry_name
20500 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
20502 <td class="entry_type">
20503 <span class="entry_type_name">int32</span>
20504 <span class="entry_type_container">x</span>
20506 <span class="entry_type_array">
20509 <span class="entry_type_visibility"> [system]</span>
20514 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
20517 </td> <!-- entry_type -->
20519 <td class="entry_description">
20520 <p>The number of input samples for each dimension of
20521 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
20524 <td class="entry_units">
20527 <td class="entry_range">
20528 <p>Hue >= 1,<wbr/>
20529 Saturation >= 2,<wbr/>
20533 <td class="entry_tags">
20534 <ul class="entry_tags">
20535 <li><a href="#tag_RAW">RAW</a></li>
20540 <tr class="entries_header">
20541 <th class="th_details" colspan="5">Details</th>
20543 <tr class="entry_cont">
20544 <td class="entry_details" colspan="5">
20545 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
20546 dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
20547 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
20553 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20554 <!-- end of entry -->
20557 <tr class="entry" id="static_android.sensor.availableTestPatternModes">
20558 <td class="entry_name
20560 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
20562 <td class="entry_type">
20563 <span class="entry_type_name">int32</span>
20564 <span class="entry_type_container">x</span>
20566 <span class="entry_type_array">
20569 <span class="entry_type_visibility"> [public]</span>
20574 <div class="entry_type_notes">list of enums</div>
20577 </td> <!-- entry_type -->
20579 <td class="entry_description">
20580 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
20581 supported by this camera device.<wbr/></p>
20584 <td class="entry_units">
20587 <td class="entry_range">
20588 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
20591 <td class="entry_tags">
20595 <tr class="entries_header">
20596 <th class="th_details" colspan="5">Details</th>
20598 <tr class="entry_cont">
20599 <td class="entry_details" colspan="5">
20600 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
20604 <tr class="entries_header">
20605 <th class="th_details" colspan="5">HAL Implementation Details</th>
20607 <tr class="entry_cont">
20608 <td class="entry_details" colspan="5">
20609 <p>All custom modes must be >= CUSTOM1.<wbr/></p>
20613 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20614 <!-- end of entry -->
20617 <tr class="entry" id="static_android.sensor.opticalBlackRegions">
20618 <td class="entry_name
20620 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
20622 <td class="entry_type">
20623 <span class="entry_type_name">int32</span>
20624 <span class="entry_type_container">x</span>
20626 <span class="entry_type_array">
20629 <span class="entry_type_visibility"> [public as rectangle]</span>
20636 </td> <!-- entry_type -->
20638 <td class="entry_description">
20639 <p>List of disjoint rectangles indicating the sensor
20640 optically shielded black pixel regions.<wbr/></p>
20643 <td class="entry_units">
20646 <td class="entry_range">
20649 <td class="entry_tags">
20653 <tr class="entries_header">
20654 <th class="th_details" colspan="5">Details</th>
20656 <tr class="entry_cont">
20657 <td class="entry_details" colspan="5">
20658 <p>In most camera sensors,<wbr/> the active array is surrounded by some
20659 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
20660 provides a reliable black reference for black level compensation
20661 in active array region.<wbr/></p>
20662 <p>This key provides a list of disjoint rectangles specifying the
20663 regions of optically shielded (with metal shield) black pixel
20664 regions if the camera device is capable of reading out these black
20665 pixels in the output raw images.<wbr/> In comparison to the fixed black
20666 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
20667 may provide a more accurate way for the application to calculate
20668 black level of each captured raw images.<wbr/></p>
20669 <p>When this key is reported,<wbr/> the <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> and
20670 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
20674 <tr class="entries_header">
20675 <th class="th_details" colspan="5">HAL Implementation Details</th>
20677 <tr class="entry_cont">
20678 <td class="entry_details" colspan="5">
20679 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
20680 must be >= (0,<wbr/>0) and <=
20681 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> The (width,<wbr/> height) must be
20682 <= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be
20683 outside the region reported by
20684 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20685 <p>The HAL must report minimal number of disjoint regions for the
20686 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
20687 be covered by one rectangle,<wbr/> the HAL must not split this region into
20688 multiple rectangles.<wbr/></p>
20692 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20693 <!-- end of entry -->
20696 <tr class="entry" id="static_android.sensor.opaqueRawSize">
20697 <td class="entry_name
20699 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
20701 <td class="entry_type">
20702 <span class="entry_type_name">int32</span>
20703 <span class="entry_type_container">x</span>
20705 <span class="entry_type_array">
20708 <span class="entry_type_visibility"> [system]</span>
20715 </td> <!-- entry_type -->
20717 <td class="entry_description">
20718 <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
20721 <td class="entry_units">
20724 <td class="entry_range">
20725 <p>Must be large enough to fit the opaque RAW of corresponding size produced by
20729 <td class="entry_tags">
20733 <tr class="entries_header">
20734 <th class="th_details" colspan="5">Details</th>
20736 <tr class="entry_cont">
20737 <td class="entry_details" colspan="5">
20738 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
20739 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
20740 All RAW_<wbr/>OPAQUE output stream configuration listed in
20741 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
20742 this key.<wbr/></p>
20746 <tr class="entries_header">
20747 <th class="th_details" colspan="5">HAL Implementation Details</th>
20749 <tr class="entry_cont">
20750 <td class="entry_details" colspan="5">
20751 <p>This key is added in HAL3.<wbr/>4.<wbr/>
20752 For HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this key.<wbr/>
20753 For HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera framework
20754 will derive this key by assuming each pixel takes two bytes and no padding bytes
20755 between rows.<wbr/></p>
20759 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20760 <!-- end of entry -->
20764 <!-- end of kind -->
20766 <tr><td colspan="6" class="kind">dynamic</td></tr>
20768 <thead class="entries_header">
20770 <th class="th_name">Property Name</th>
20771 <th class="th_type">Type</th>
20772 <th class="th_description">Description</th>
20773 <th class="th_units">Units</th>
20774 <th class="th_range">Range</th>
20775 <th class="th_tags">Tags</th>
20790 <tr class="entry" id="dynamic_android.sensor.exposureTime">
20791 <td class="entry_name
20793 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
20795 <td class="entry_type">
20796 <span class="entry_type_name">int64</span>
20798 <span class="entry_type_visibility"> [public]</span>
20801 <span class="entry_type_hwlevel">[full] </span>
20806 </td> <!-- entry_type -->
20808 <td class="entry_description">
20809 <p>Duration each pixel is exposed to
20813 <td class="entry_units">
20817 <td class="entry_range">
20818 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
20821 <td class="entry_tags">
20822 <ul class="entry_tags">
20823 <li><a href="#tag_V1">V1</a></li>
20828 <tr class="entries_header">
20829 <th class="th_details" colspan="5">Details</th>
20831 <tr class="entry_cont">
20832 <td class="entry_details" colspan="5">
20833 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
20834 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
20835 The final exposure time used will be available in the output capture result.<wbr/></p>
20836 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
20837 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20842 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20843 <!-- end of entry -->
20846 <tr class="entry" id="dynamic_android.sensor.frameDuration">
20847 <td class="entry_name
20849 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
20851 <td class="entry_type">
20852 <span class="entry_type_name">int64</span>
20854 <span class="entry_type_visibility"> [public]</span>
20857 <span class="entry_type_hwlevel">[full] </span>
20862 </td> <!-- entry_type -->
20864 <td class="entry_description">
20865 <p>Duration from start of frame exposure to
20866 start of next frame exposure.<wbr/></p>
20869 <td class="entry_units">
20873 <td class="entry_range">
20874 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
20875 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
20876 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
20879 <td class="entry_tags">
20880 <ul class="entry_tags">
20881 <li><a href="#tag_V1">V1</a></li>
20886 <tr class="entries_header">
20887 <th class="th_details" colspan="5">Details</th>
20889 <tr class="entry_cont">
20890 <td class="entry_details" colspan="5">
20891 <p>The maximum frame rate that can be supported by a camera subsystem is
20892 a function of many factors:</p>
20894 <li>Requested resolutions of output image streams</li>
20895 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
20896 <li>The bandwidth of the imager interface</li>
20897 <li>The bandwidth of the various ISP processing blocks</li>
20899 <p>Since these factors can vary greatly between different ISPs and
20900 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
20901 restrictions with as simple a model as possible.<wbr/></p>
20902 <p>The model presented has the following characteristics:</p>
20904 <li>The image sensor is always configured to output the smallest
20905 resolution possible given the application's requested output stream
20906 sizes.<wbr/> The smallest resolution is defined as being at least as large
20907 as the largest requested output stream size; the camera pipeline must
20908 never digitally upsample sensor data when the crop region covers the
20909 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
20910 resolutions are configured,<wbr/> the sensor can provide a higher frame
20912 <li>Since any request may use any or all the currently configured
20913 output streams,<wbr/> the sensor and ISP must be configured to support
20914 scaling a single capture to all the streams at the same time.<wbr/> This
20915 means the camera pipeline must be ready to produce the largest
20916 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
20917 frame rate of a given configured stream set is governed only by the
20918 largest requested stream resolution.<wbr/></li>
20919 <li>Using more than one output stream in a request does not affect the
20920 frame duration.<wbr/></li>
20921 <li>Certain format-streams may need to do additional background processing
20922 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
20923 can run concurrently to the rest of the camera pipeline,<wbr/> but
20924 cannot process more than 1 capture at a time.<wbr/></li>
20926 <p>The necessary information for the application,<wbr/> given the model above,<wbr/>
20927 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
20928 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
20929 These are used to determine the maximum frame rate /<wbr/> minimum frame
20930 duration that is possible for a given stream configuration.<wbr/></p>
20931 <p>Specifically,<wbr/> the application can use the following rules to
20932 determine the minimum frame duration it can request from the camera
20935 <li>Let the set of currently configured input/<wbr/>output streams
20936 be called <code>S</code>.<wbr/></li>
20937 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
20938 it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20939 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
20940 called <code>F</code>.<wbr/></li>
20941 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
20942 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
20943 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
20945 <p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>
20946 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
20947 determines the steady state frame rate that the application will get
20948 if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
20949 request be called <code>Rsimple</code>.<wbr/></p>
20950 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
20951 by a single capture of a new request <code>Rstall</code> (which has at least
20952 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
20953 same minimum frame duration this will not cause a frame rate loss
20954 if all buffers from the previous <code>Rstall</code> have already been
20955 delivered.<wbr/></p>
20956 <p>For more details about stalling,<wbr/> see
20957 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
20958 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
20959 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20963 <tr class="entries_header">
20964 <th class="th_details" colspan="5">HAL Implementation Details</th>
20966 <tr class="entry_cont">
20967 <td class="entry_details" colspan="5">
20968 <p>For more details about stalling,<wbr/> see
20969 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
20973 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20974 <!-- end of entry -->
20977 <tr class="entry" id="dynamic_android.sensor.sensitivity">
20978 <td class="entry_name
20980 android.<wbr/>sensor.<wbr/>sensitivity
20982 <td class="entry_type">
20983 <span class="entry_type_name">int32</span>
20985 <span class="entry_type_visibility"> [public]</span>
20988 <span class="entry_type_hwlevel">[full] </span>
20993 </td> <!-- entry_type -->
20995 <td class="entry_description">
20996 <p>The amount of gain applied to sensor data
20997 before processing.<wbr/></p>
21000 <td class="entry_units">
21001 ISO arithmetic units
21004 <td class="entry_range">
21005 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
21008 <td class="entry_tags">
21009 <ul class="entry_tags">
21010 <li><a href="#tag_V1">V1</a></li>
21015 <tr class="entries_header">
21016 <th class="th_details" colspan="5">Details</th>
21018 <tr class="entry_cont">
21019 <td class="entry_details" colspan="5">
21020 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
21021 as defined in ISO 12232:2006.<wbr/></p>
21022 <p>The sensitivity must be within <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>,<wbr/> and
21023 if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
21024 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
21025 <p>If the camera device cannot apply the exact sensitivity
21026 requested,<wbr/> it will reduce the gain to the nearest supported
21027 value.<wbr/> The final sensitivity used will be available in the
21028 output capture result.<wbr/></p>
21029 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
21030 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
21034 <tr class="entries_header">
21035 <th class="th_details" colspan="5">HAL Implementation Details</th>
21037 <tr class="entry_cont">
21038 <td class="entry_details" colspan="5">
21039 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
21043 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21044 <!-- end of entry -->
21047 <tr class="entry" id="dynamic_android.sensor.timestamp">
21048 <td class="entry_name
21050 android.<wbr/>sensor.<wbr/>timestamp
21052 <td class="entry_type">
21053 <span class="entry_type_name">int64</span>
21055 <span class="entry_type_visibility"> [public]</span>
21058 <span class="entry_type_hwlevel">[legacy] </span>
21063 </td> <!-- entry_type -->
21065 <td class="entry_description">
21066 <p>Time at start of exposure of first
21067 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
21070 <td class="entry_units">
21074 <td class="entry_range">
21078 <td class="entry_tags">
21079 <ul class="entry_tags">
21080 <li><a href="#tag_BC">BC</a></li>
21085 <tr class="entries_header">
21086 <th class="th_details" colspan="5">Details</th>
21088 <tr class="entry_cont">
21089 <td class="entry_details" colspan="5">
21090 <p>The timestamps are also included in all image
21091 buffers produced for the same capture,<wbr/> and will be identical
21092 on all the outputs.<wbr/></p>
21093 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
21094 the timestamps measure time since an unspecified starting point,<wbr/>
21095 and are monotonically increasing.<wbr/> They can be compared with the
21096 timestamps for other captures from the same camera device,<wbr/> but are
21097 not guaranteed to be comparable to any other time source.<wbr/></p>
21098 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
21099 timestamps measure time in the same timebase as <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> and they can
21100 be compared to other timestamps from other subsystems that
21101 are using that base.<wbr/></p>
21102 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
21103 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
21104 timestamp</a> in the TotalCaptureResult that was used to create the
21105 reprocess capture request.<wbr/></p>
21109 <tr class="entries_header">
21110 <th class="th_details" colspan="5">HAL Implementation Details</th>
21112 <tr class="entry_cont">
21113 <td class="entry_details" colspan="5">
21114 <p>All timestamps must be in reference to the kernel's
21115 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
21116 time spent asleep.<wbr/> This allows for synchronization with
21117 sensors that continue to operate while the system is
21118 otherwise asleep.<wbr/></p>
21119 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
21120 The timestamp must be synchronized with the timestamps from other
21121 sensor subsystems that are using the same timebase.<wbr/></p>
21122 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
21123 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
21124 capture request.<wbr/></p>
21128 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21129 <!-- end of entry -->
21132 <tr class="entry" id="dynamic_android.sensor.temperature">
21133 <td class="entry_name
21135 android.<wbr/>sensor.<wbr/>temperature
21137 <td class="entry_type">
21138 <span class="entry_type_name">float</span>
21140 <span class="entry_type_visibility"> [system]</span>
21147 </td> <!-- entry_type -->
21149 <td class="entry_description">
21150 <p>The temperature of the sensor,<wbr/> sampled at the time
21151 exposure began for this frame.<wbr/></p>
21152 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
21153 somewhere close to it.<wbr/></p>
21156 <td class="entry_units">
21160 <td class="entry_range">
21161 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
21164 <td class="entry_tags">
21165 <ul class="entry_tags">
21166 <li><a href="#tag_FUTURE">FUTURE</a></li>
21173 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21174 <!-- end of entry -->
21177 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
21178 <td class="entry_name
21180 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
21182 <td class="entry_type">
21183 <span class="entry_type_name">rational</span>
21184 <span class="entry_type_container">x</span>
21186 <span class="entry_type_array">
21189 <span class="entry_type_visibility"> [public]</span>
21196 </td> <!-- entry_type -->
21198 <td class="entry_description">
21199 <p>The estimated camera neutral color in the native sensor colorspace at
21200 the time of capture.<wbr/></p>
21203 <td class="entry_units">
21206 <td class="entry_range">
21209 <td class="entry_tags">
21210 <ul class="entry_tags">
21211 <li><a href="#tag_RAW">RAW</a></li>
21216 <tr class="entries_header">
21217 <th class="th_details" colspan="5">Details</th>
21219 <tr class="entry_cont">
21220 <td class="entry_details" colspan="5">
21221 <p>This value gives the neutral color point encoded as an RGB value in the
21222 native sensor color space.<wbr/> The neutral color point indicates the
21223 currently estimated white point of the scene illumination.<wbr/> It can be
21224 used to interpolate between the provided color transforms when
21225 processing raw sensor data.<wbr/></p>
21226 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
21231 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21232 <!-- end of entry -->
21235 <tr class="entry" id="dynamic_android.sensor.noiseProfile">
21236 <td class="entry_name
21238 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
21240 <td class="entry_type">
21241 <span class="entry_type_name">double</span>
21242 <span class="entry_type_container">x</span>
21244 <span class="entry_type_array">
21247 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
21252 <div class="entry_type_notes">Pairs of noise model coefficients</div>
21255 </td> <!-- entry_type -->
21257 <td class="entry_description">
21258 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
21261 <td class="entry_units">
21264 <td class="entry_range">
21267 <td class="entry_tags">
21268 <ul class="entry_tags">
21269 <li><a href="#tag_RAW">RAW</a></li>
21274 <tr class="entries_header">
21275 <th class="th_details" colspan="5">Details</th>
21277 <tr class="entry_cont">
21278 <td class="entry_details" colspan="5">
21279 <p>This key contains two noise model coefficients for each CFA channel
21280 corresponding to the sensor amplification (S) and sensor readout
21281 noise (O).<wbr/> These are given as pairs of coefficients for each channel
21282 in the same order as channels listed for the CFA layout key
21283 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is
21284 represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where
21285 the first member of the Pair at index n is the S coefficient and the
21286 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
21287 <p>These coefficients are used in a two parameter noise model to describe
21288 the amount of noise present in the image for each CFA channel.<wbr/> The
21289 noise model used here is:</p>
21290 <p>N(x) = sqrt(Sx + O)</p>
21291 <p>Where x represents the recorded signal of a CFA channel normalized to
21292 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
21293 that channel.<wbr/></p>
21294 <p>A more detailed description of the noise model can be found in the
21295 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
21299 <tr class="entries_header">
21300 <th class="th_details" colspan="5">HAL Implementation Details</th>
21302 <tr class="entry_cont">
21303 <td class="entry_details" colspan="5">
21304 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
21305 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
21306 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
21307 channel,<wbr/> etc.<wbr/></p>
21311 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21312 <!-- end of entry -->
21315 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
21316 <td class="entry_name
21318 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
21320 <td class="entry_type">
21321 <span class="entry_type_name">float</span>
21322 <span class="entry_type_container">x</span>
21324 <span class="entry_type_array">
21325 hue_samples x saturation_samples x value_samples x 3
21327 <span class="entry_type_visibility"> [system]</span>
21332 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
21335 </td> <!-- entry_type -->
21337 <td class="entry_description">
21338 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
21339 for each pixel.<wbr/></p>
21342 <td class="entry_units">
21344 The hue shift is given in degrees; saturation and value scale factors are
21345 unitless and are between 0 and 1 inclusive
21349 <td class="entry_range">
21352 <td class="entry_tags">
21353 <ul class="entry_tags">
21354 <li><a href="#tag_RAW">RAW</a></li>
21359 <tr class="entries_header">
21360 <th class="th_details" colspan="5">Details</th>
21362 <tr class="entry_cont">
21363 <td class="entry_details" colspan="5">
21364 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
21365 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
21366 <p>Each entry of this map contains three floats corresponding to the
21367 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
21368 hue shift has the lowest index.<wbr/> The map entries are stored in the key
21369 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
21370 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
21371 inner loop.<wbr/> All zero input saturation entries are required to have a
21372 value scale factor of 1.<wbr/>0.<wbr/></p>
21377 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21378 <!-- end of entry -->
21381 <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
21382 <td class="entry_name
21384 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
21386 <td class="entry_type">
21387 <span class="entry_type_name">float</span>
21388 <span class="entry_type_container">x</span>
21390 <span class="entry_type_array">
21393 <span class="entry_type_visibility"> [system]</span>
21398 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
21401 </td> <!-- entry_type -->
21403 <td class="entry_description">
21404 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
21407 <td class="entry_units">
21410 <td class="entry_range">
21411 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
21412 <code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
21413 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
21416 <td class="entry_tags">
21417 <ul class="entry_tags">
21418 <li><a href="#tag_RAW">RAW</a></li>
21423 <tr class="entries_header">
21424 <th class="th_details" colspan="5">Details</th>
21426 <tr class="entry_cont">
21427 <td class="entry_details" colspan="5">
21428 <p>This key contains a default tone curve that can be applied while
21429 processing the image as a starting point for user adjustments.<wbr/>
21430 The curve is specified as a list of value pairs in linear gamma.<wbr/>
21431 The curve is interpolated using a cubic spline.<wbr/></p>
21436 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21437 <!-- end of entry -->
21440 <tr class="entry" id="dynamic_android.sensor.greenSplit">
21441 <td class="entry_name
21443 android.<wbr/>sensor.<wbr/>green<wbr/>Split
21445 <td class="entry_type">
21446 <span class="entry_type_name">float</span>
21448 <span class="entry_type_visibility"> [public]</span>
21455 </td> <!-- entry_type -->
21457 <td class="entry_description">
21458 <p>The worst-case divergence between Bayer green channels.<wbr/></p>
21461 <td class="entry_units">
21464 <td class="entry_range">
21468 <td class="entry_tags">
21469 <ul class="entry_tags">
21470 <li><a href="#tag_RAW">RAW</a></li>
21475 <tr class="entries_header">
21476 <th class="th_details" colspan="5">Details</th>
21478 <tr class="entry_cont">
21479 <td class="entry_details" colspan="5">
21480 <p>This value is an estimate of the worst case split between the
21481 Bayer green channels in the red and blue rows in the sensor color
21482 filter array.<wbr/></p>
21483 <p>The green split is calculated as follows:</p>
21485 <li>A 5x5 pixel (or larger) window W within the active sensor array is
21486 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
21487 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window
21488 chosen is implementation defined,<wbr/> and should be chosen to provide a
21489 green split estimate that is both representative of the entire image
21490 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
21491 <li>The arithmetic mean of the green channels from the red
21492 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
21493 <li>The arithmetic mean of the green channels from the blue
21494 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
21495 <li>The maximum ratio R of the two means is computed as follows:
21496 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
21498 <p>The ratio R is the green split divergence reported for this property,<wbr/>
21499 which represents how much the green channels differ in the mosaic
21500 pattern.<wbr/> This value is typically used to determine the treatment of
21501 the green mosaic channels when demosaicing.<wbr/></p>
21502 <p>The green split value can be roughly interpreted as follows:</p>
21504 <li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li>
21505 <li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software
21506 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
21507 <li>R > 1.<wbr/>20 will require strong software correction to produce
21508 a usuable image (>20% divergence).<wbr/></li>
21513 <tr class="entries_header">
21514 <th class="th_details" colspan="5">HAL Implementation Details</th>
21516 <tr class="entry_cont">
21517 <td class="entry_details" colspan="5">
21518 <p>The green split given may be a static value based on prior
21519 characterization of the camera sensor using the green split
21520 calculation method given here over a large,<wbr/> representative,<wbr/> sample
21521 set of images.<wbr/> Other methods of calculation that produce equivalent
21522 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
21526 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21527 <!-- end of entry -->
21530 <tr class="entry" id="dynamic_android.sensor.testPatternData">
21531 <td class="entry_name
21533 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
21535 <td class="entry_type">
21536 <span class="entry_type_name">int32</span>
21537 <span class="entry_type_container">x</span>
21539 <span class="entry_type_array">
21542 <span class="entry_type_visibility"> [public]</span>
21549 </td> <!-- entry_type -->
21551 <td class="entry_description">
21552 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
21553 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
21556 <td class="entry_units">
21559 <td class="entry_range">
21562 <td class="entry_tags">
21566 <tr class="entries_header">
21567 <th class="th_details" colspan="5">Details</th>
21569 <tr class="entry_cont">
21570 <td class="entry_details" colspan="5">
21571 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
21572 The camera device then uses the most significant X bits
21573 that correspond to how many bits are in its Bayer raw sensor
21575 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
21576 10 most significant bits from each color channel.<wbr/></p>
21580 <tr class="entries_header">
21581 <th class="th_details" colspan="5">HAL Implementation Details</th>
21583 <tr class="entry_cont">
21584 <td class="entry_details" colspan="5">
21589 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21590 <!-- end of entry -->
21593 <tr class="entry" id="dynamic_android.sensor.testPatternMode">
21594 <td class="entry_name
21596 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
21598 <td class="entry_type">
21599 <span class="entry_type_name entry_type_name_enum">int32</span>
21601 <span class="entry_type_visibility"> [public]</span>
21607 <ul class="entry_type_enum">
21609 <span class="entry_type_enum_name">OFF</span>
21610 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
21611 device returns captures from the image sensor.<wbr/></p>
21612 <p>This is the default if the key is not set.<wbr/></p></span>
21615 <span class="entry_type_enum_name">SOLID_COLOR</span>
21616 <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
21617 respective color channel provided in
21618 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
21619 <p>For example:</p>
21620 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21622 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
21623 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21625 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
21626 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
21629 <span class="entry_type_enum_name">COLOR_BARS</span>
21630 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
21631 <p>The vertical bars (left-to-right) are as follows:</p>
21633 <li>100% white</li>
21642 <p>In general the image would look like the following:</p>
21643 <pre><code>W Y C G M R B K
21648 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21649 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21650 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21652 (B = Blue,<wbr/> K = Black)
21654 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
21655 When this is not possible,<wbr/> the bar size should be rounded
21656 down to the nearest integer and the pattern can repeat
21657 on the right side.<wbr/></p>
21658 <p>Each bar's height must always take up the full sensor
21659 pixel array height.<wbr/></p>
21660 <p>Each pixel in this test pattern must be set to either
21661 0% intensity or 100% intensity.<wbr/></p></span>
21664 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
21665 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
21666 each bar should start at its specified color at the top,<wbr/>
21667 and fade to gray at the bottom.<wbr/></p>
21668 <p>Furthermore each bar is further subdivided into a left and
21669 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
21670 and the right half should have a quantized gradient.<wbr/></p>
21671 <p>In particular,<wbr/> the right half's should consist of blocks of the
21672 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
21673 <p>The least significant bits in the quantized gradient should
21674 be copied from the most significant bits of the smooth gradient.<wbr/></p>
21675 <p>The height of each bar should always be a multiple of 128.<wbr/>
21676 When this is not the case,<wbr/> the pattern should repeat at the bottom
21677 of the image.<wbr/></p></span>
21680 <span class="entry_type_enum_name">PN9</span>
21681 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
21682 generated from a PN9 512-bit sequence (typically implemented
21683 in hardware with a linear feedback shift register).<wbr/></p>
21684 <p>The generator should be reset at the beginning of each frame,<wbr/>
21685 and thus each subsequent raw frame with this test pattern should
21686 be exactly the same as the last.<wbr/></p></span>
21689 <span class="entry_type_enum_name">CUSTOM1</span>
21690 <span class="entry_type_enum_value">256</span>
21691 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
21692 available only on this camera device are at least this numeric
21694 <p>All of the custom test patterns will be static
21695 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
21699 </td> <!-- entry_type -->
21701 <td class="entry_description">
21702 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
21703 doing a real exposure from the camera.<wbr/></p>
21706 <td class="entry_units">
21709 <td class="entry_range">
21710 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
21713 <td class="entry_tags">
21717 <tr class="entries_header">
21718 <th class="th_details" colspan="5">Details</th>
21720 <tr class="entry_cont">
21721 <td class="entry_details" colspan="5">
21722 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
21723 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
21724 work as normal.<wbr/></p>
21725 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
21726 occur (and that the test pattern remain unmodified,<wbr/> since the flash
21727 would not actually affect it).<wbr/></p>
21728 <p>Defaults to OFF.<wbr/></p>
21732 <tr class="entries_header">
21733 <th class="th_details" colspan="5">HAL Implementation Details</th>
21735 <tr class="entry_cont">
21736 <td class="entry_details" colspan="5">
21737 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
21738 <p>The HAL may choose to substitute test patterns from the sensor
21739 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
21740 indistinguishable to the ISP whether the data came from the
21741 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
21745 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21746 <!-- end of entry -->
21749 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
21750 <td class="entry_name
21752 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
21754 <td class="entry_type">
21755 <span class="entry_type_name">int64</span>
21757 <span class="entry_type_visibility"> [public]</span>
21760 <span class="entry_type_hwlevel">[limited] </span>
21765 </td> <!-- entry_type -->
21767 <td class="entry_description">
21768 <p>Duration between the start of first row exposure
21769 and the start of last row exposure.<wbr/></p>
21772 <td class="entry_units">
21776 <td class="entry_range">
21777 <p>>= 0 and <
21778 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
21781 <td class="entry_tags">
21782 <ul class="entry_tags">
21783 <li><a href="#tag_V1">V1</a></li>
21788 <tr class="entries_header">
21789 <th class="th_details" colspan="5">Details</th>
21791 <tr class="entry_cont">
21792 <td class="entry_details" colspan="5">
21793 <p>This is the exposure time skew between the first and last
21794 row exposure start times.<wbr/> The first row and the last row are
21795 the first and last rows inside of the
21796 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21797 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
21798 to the frame readout time.<wbr/></p>
21802 <tr class="entries_header">
21803 <th class="th_details" colspan="5">HAL Implementation Details</th>
21805 <tr class="entry_cont">
21806 <td class="entry_details" colspan="5">
21807 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
21808 exposure at the same time.<wbr/></p>
21812 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21813 <!-- end of entry -->
21816 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
21817 <td class="entry_name
21819 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
21821 <td class="entry_type">
21822 <span class="entry_type_name">float</span>
21823 <span class="entry_type_container">x</span>
21825 <span class="entry_type_array">
21828 <span class="entry_type_visibility"> [public]</span>
21833 <div class="entry_type_notes">2x2 raw count block</div>
21836 </td> <!-- entry_type -->
21838 <td class="entry_description">
21839 <p>A per-frame dynamic black level offset for each of the color filter
21840 arrangement (CFA) mosaic channels.<wbr/></p>
21843 <td class="entry_units">
21846 <td class="entry_range">
21847 <p>>= 0 for each.<wbr/></p>
21850 <td class="entry_tags">
21851 <ul class="entry_tags">
21852 <li><a href="#tag_RAW">RAW</a></li>
21857 <tr class="entries_header">
21858 <th class="th_details" colspan="5">Details</th>
21860 <tr class="entry_cont">
21861 <td class="entry_details" colspan="5">
21862 <p>Camera sensor black levels may vary dramatically for different
21863 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
21864 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
21865 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
21866 camera device internal pipeline relies on reliable black level values
21867 to process the raw images appropriately.<wbr/> To get the best image
21868 quality,<wbr/> the camera device may choose to estimate the per frame black
21869 level values either based on optically shielded black regions
21870 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
21871 <p>This key reports the camera device estimated per-frame zero light
21872 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
21873 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
21874 approximation of the actual black level values.<wbr/> This value is the
21875 black level used in camera device internal image processing pipeline
21876 and generally more accurate than the fixed black level values.<wbr/>
21877 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
21878 may not be as accurate as the black level values calculated from the
21879 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
21880 <p>The values are given in the same order as channels listed for the CFA
21881 layout key (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>),<wbr/> i.<wbr/>e.<wbr/> the
21882 nth value given corresponds to the black level offset for the nth
21883 color channel listed in the CFA.<wbr/></p>
21884 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
21885 available or the camera device advertises this key via
21886 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
21890 <tr class="entries_header">
21891 <th class="th_details" colspan="5">HAL Implementation Details</th>
21893 <tr class="entry_cont">
21894 <td class="entry_details" colspan="5">
21895 <p>The values are given in row-column scan order,<wbr/> with the first value
21896 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21900 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21901 <!-- end of entry -->
21904 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
21905 <td class="entry_name
21907 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
21909 <td class="entry_type">
21910 <span class="entry_type_name">int32</span>
21912 <span class="entry_type_visibility"> [public]</span>
21919 </td> <!-- entry_type -->
21921 <td class="entry_description">
21922 <p>Maximum raw value output by sensor for this frame.<wbr/></p>
21925 <td class="entry_units">
21928 <td class="entry_range">
21932 <td class="entry_tags">
21933 <ul class="entry_tags">
21934 <li><a href="#tag_RAW">RAW</a></li>
21939 <tr class="entries_header">
21940 <th class="th_details" colspan="5">Details</th>
21942 <tr class="entry_cont">
21943 <td class="entry_details" colspan="5">
21944 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
21945 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
21946 level will change accordingly.<wbr/> This key is similar to
21947 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
21948 estimated white level for each frame.<wbr/></p>
21949 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
21950 available or the camera device advertises this key via
21951 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
21955 <tr class="entries_header">
21956 <th class="th_details" colspan="5">HAL Implementation Details</th>
21958 <tr class="entry_cont">
21959 <td class="entry_details" colspan="5">
21960 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
21961 so the value for linear sensors should not be significantly lower
21962 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
21966 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21967 <!-- end of entry -->
21971 <!-- end of kind -->
21974 <!-- end of section -->
21975 <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
21978 <tr><td colspan="6" class="kind">controls</td></tr>
21980 <thead class="entries_header">
21982 <th class="th_name">Property Name</th>
21983 <th class="th_type">Type</th>
21984 <th class="th_description">Description</th>
21985 <th class="th_units">Units</th>
21986 <th class="th_range">Range</th>
21987 <th class="th_tags">Tags</th>
22002 <tr class="entry" id="controls_android.shading.mode">
22003 <td class="entry_name
22005 android.<wbr/>shading.<wbr/>mode
22007 <td class="entry_type">
22008 <span class="entry_type_name entry_type_name_enum">byte</span>
22010 <span class="entry_type_visibility"> [public]</span>
22013 <span class="entry_type_hwlevel">[full] </span>
22017 <ul class="entry_type_enum">
22019 <span class="entry_type_enum_name">OFF</span>
22020 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
22023 <span class="entry_type_enum_name">FAST</span>
22024 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
22025 frame rate relative to sensor raw output</p></span>
22028 <span class="entry_type_enum_name">HIGH_QUALITY</span>
22029 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
22030 cost of possibly reduced frame rate.<wbr/></p></span>
22034 </td> <!-- entry_type -->
22036 <td class="entry_description">
22037 <p>Quality of lens shading correction applied
22038 to the image data.<wbr/></p>
22041 <td class="entry_units">
22044 <td class="entry_range">
22045 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
22048 <td class="entry_tags">
22052 <tr class="entries_header">
22053 <th class="th_details" colspan="5">Details</th>
22055 <tr class="entry_cont">
22056 <td class="entry_details" colspan="5">
22057 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
22058 camera device,<wbr/> and an identity lens shading map data will be provided
22059 if <code><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON</code>.<wbr/> For example,<wbr/> for lens
22060 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
22061 the output <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a> for this case will be an identity
22062 map shown below:</p>
22063 <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/>
22064 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/>
22065 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/>
22066 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/>
22067 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/>
22068 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 ]
22070 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
22071 device.<wbr/> Applications can request lens shading map data by setting
22072 <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> to ON,<wbr/> and then the camera device will provide lens
22073 shading map data in <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a>; the returned shading map
22074 data will be the one applied by the camera device for this capture request.<wbr/></p>
22075 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
22076 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
22077 AWB are in AUTO modes(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code>
22078 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
22079 to be converged before using the returned shading map data.<wbr/></p>
22084 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22085 <!-- end of entry -->
22088 <tr class="entry" id="controls_android.shading.strength">
22089 <td class="entry_name
22091 android.<wbr/>shading.<wbr/>strength
22093 <td class="entry_type">
22094 <span class="entry_type_name">byte</span>
22096 <span class="entry_type_visibility"> [system]</span>
22103 </td> <!-- entry_type -->
22105 <td class="entry_description">
22106 <p>Control the amount of shading correction
22107 applied to the images</p>
22110 <td class="entry_units">
22111 unitless: 1-10; 10 is full shading
22115 <td class="entry_range">
22118 <td class="entry_tags">
22119 <ul class="entry_tags">
22120 <li><a href="#tag_FUTURE">FUTURE</a></li>
22127 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22128 <!-- end of entry -->
22132 <!-- end of kind -->
22134 <tr><td colspan="6" class="kind">dynamic</td></tr>
22136 <thead class="entries_header">
22138 <th class="th_name">Property Name</th>
22139 <th class="th_type">Type</th>
22140 <th class="th_description">Description</th>
22141 <th class="th_units">Units</th>
22142 <th class="th_range">Range</th>
22143 <th class="th_tags">Tags</th>
22158 <tr class="entry" id="dynamic_android.shading.mode">
22159 <td class="entry_name
22161 android.<wbr/>shading.<wbr/>mode
22163 <td class="entry_type">
22164 <span class="entry_type_name entry_type_name_enum">byte</span>
22166 <span class="entry_type_visibility"> [public]</span>
22169 <span class="entry_type_hwlevel">[full] </span>
22173 <ul class="entry_type_enum">
22175 <span class="entry_type_enum_name">OFF</span>
22176 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
22179 <span class="entry_type_enum_name">FAST</span>
22180 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
22181 frame rate relative to sensor raw output</p></span>
22184 <span class="entry_type_enum_name">HIGH_QUALITY</span>
22185 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
22186 cost of possibly reduced frame rate.<wbr/></p></span>
22190 </td> <!-- entry_type -->
22192 <td class="entry_description">
22193 <p>Quality of lens shading correction applied
22194 to the image data.<wbr/></p>
22197 <td class="entry_units">
22200 <td class="entry_range">
22201 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
22204 <td class="entry_tags">
22208 <tr class="entries_header">
22209 <th class="th_details" colspan="5">Details</th>
22211 <tr class="entry_cont">
22212 <td class="entry_details" colspan="5">
22213 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
22214 camera device,<wbr/> and an identity lens shading map data will be provided
22215 if <code><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON</code>.<wbr/> For example,<wbr/> for lens
22216 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
22217 the output <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a> for this case will be an identity
22218 map shown below:</p>
22219 <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/>
22220 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/>
22221 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/>
22222 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/>
22223 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/>
22224 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 ]
22226 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
22227 device.<wbr/> Applications can request lens shading map data by setting
22228 <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> to ON,<wbr/> and then the camera device will provide lens
22229 shading map data in <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a>; the returned shading map
22230 data will be the one applied by the camera device for this capture request.<wbr/></p>
22231 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
22232 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
22233 AWB are in AUTO modes(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code>
22234 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
22235 to be converged before using the returned shading map data.<wbr/></p>
22240 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22241 <!-- end of entry -->
22245 <!-- end of kind -->
22247 <tr><td colspan="6" class="kind">static</td></tr>
22249 <thead class="entries_header">
22251 <th class="th_name">Property Name</th>
22252 <th class="th_type">Type</th>
22253 <th class="th_description">Description</th>
22254 <th class="th_units">Units</th>
22255 <th class="th_range">Range</th>
22256 <th class="th_tags">Tags</th>
22271 <tr class="entry" id="static_android.shading.availableModes">
22272 <td class="entry_name
22274 android.<wbr/>shading.<wbr/>available<wbr/>Modes
22276 <td class="entry_type">
22277 <span class="entry_type_name">byte</span>
22278 <span class="entry_type_container">x</span>
22280 <span class="entry_type_array">
22283 <span class="entry_type_visibility"> [public as enumList]</span>
22286 <span class="entry_type_hwlevel">[legacy] </span>
22289 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
22292 </td> <!-- entry_type -->
22294 <td class="entry_description">
22295 <p>List of lens shading modes for <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a> that are supported by this camera device.<wbr/></p>
22298 <td class="entry_units">
22301 <td class="entry_range">
22302 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
22305 <td class="entry_tags">
22309 <tr class="entries_header">
22310 <th class="th_details" colspan="5">Details</th>
22312 <tr class="entry_cont">
22313 <td class="entry_details" colspan="5">
22314 <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
22315 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
22316 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
22317 LEGACY devices will always only support FAST mode.<wbr/></p>
22321 <tr class="entries_header">
22322 <th class="th_details" colspan="5">HAL Implementation Details</th>
22324 <tr class="entry_cont">
22325 <td class="entry_details" colspan="5">
22326 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
22327 available on the camera device,<wbr/> but the underlying implementation can be the same for
22328 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
22329 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
22333 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22334 <!-- end of entry -->
22338 <!-- end of kind -->
22341 <!-- end of section -->
22342 <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
22345 <tr><td colspan="6" class="kind">controls</td></tr>
22347 <thead class="entries_header">
22349 <th class="th_name">Property Name</th>
22350 <th class="th_type">Type</th>
22351 <th class="th_description">Description</th>
22352 <th class="th_units">Units</th>
22353 <th class="th_range">Range</th>
22354 <th class="th_tags">Tags</th>
22369 <tr class="entry" id="controls_android.statistics.faceDetectMode">
22370 <td class="entry_name
22372 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
22374 <td class="entry_type">
22375 <span class="entry_type_name entry_type_name_enum">byte</span>
22377 <span class="entry_type_visibility"> [public]</span>
22380 <span class="entry_type_hwlevel">[legacy] </span>
22384 <ul class="entry_type_enum">
22386 <span class="entry_type_enum_name">OFF</span>
22387 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
22388 results.<wbr/></p></span>
22391 <span class="entry_type_enum_name">SIMPLE</span>
22392 <span class="entry_type_enum_optional">[optional]</span>
22393 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
22396 <span class="entry_type_enum_name">FULL</span>
22397 <span class="entry_type_enum_optional">[optional]</span>
22398 <span class="entry_type_enum_notes"><p>Return all face
22399 metadata.<wbr/></p>
22400 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
22404 </td> <!-- entry_type -->
22406 <td class="entry_description">
22407 <p>Operating mode for the face detector
22411 <td class="entry_units">
22414 <td class="entry_range">
22415 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
22418 <td class="entry_tags">
22419 <ul class="entry_tags">
22420 <li><a href="#tag_BC">BC</a></li>
22425 <tr class="entries_header">
22426 <th class="th_details" colspan="5">Details</th>
22428 <tr class="entry_cont">
22429 <td class="entry_details" colspan="5">
22430 <p>Whether face detection is enabled,<wbr/> and whether it
22431 should output just the basic fields or the full set of
22436 <tr class="entries_header">
22437 <th class="th_details" colspan="5">HAL Implementation Details</th>
22439 <tr class="entry_cont">
22440 <td class="entry_details" colspan="5">
22441 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
22442 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
22443 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
22444 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
22448 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22449 <!-- end of entry -->
22452 <tr class="entry" id="controls_android.statistics.histogramMode">
22453 <td class="entry_name
22455 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
22457 <td class="entry_type">
22458 <span class="entry_type_name entry_type_name_enum">byte</span>
22460 <span class="entry_type_visibility"> [system as boolean]</span>
22466 <ul class="entry_type_enum">
22468 <span class="entry_type_enum_name">OFF</span>
22471 <span class="entry_type_enum_name">ON</span>
22475 </td> <!-- entry_type -->
22477 <td class="entry_description">
22478 <p>Operating mode for histogram
22482 <td class="entry_units">
22485 <td class="entry_range">
22488 <td class="entry_tags">
22489 <ul class="entry_tags">
22490 <li><a href="#tag_FUTURE">FUTURE</a></li>
22497 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22498 <!-- end of entry -->
22501 <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
22502 <td class="entry_name
22504 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
22506 <td class="entry_type">
22507 <span class="entry_type_name entry_type_name_enum">byte</span>
22509 <span class="entry_type_visibility"> [system as boolean]</span>
22515 <ul class="entry_type_enum">
22517 <span class="entry_type_enum_name">OFF</span>
22520 <span class="entry_type_enum_name">ON</span>
22524 </td> <!-- entry_type -->
22526 <td class="entry_description">
22527 <p>Operating mode for sharpness map
22531 <td class="entry_units">
22534 <td class="entry_range">
22537 <td class="entry_tags">
22538 <ul class="entry_tags">
22539 <li><a href="#tag_FUTURE">FUTURE</a></li>
22546 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22547 <!-- end of entry -->
22550 <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
22551 <td class="entry_name
22553 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
22555 <td class="entry_type">
22556 <span class="entry_type_name entry_type_name_enum">byte</span>
22558 <span class="entry_type_visibility"> [public as boolean]</span>
22564 <ul class="entry_type_enum">
22566 <span class="entry_type_enum_name">OFF</span>
22567 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
22570 <span class="entry_type_enum_name">ON</span>
22571 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
22575 </td> <!-- entry_type -->
22577 <td class="entry_description">
22578 <p>Operating mode for hot pixel map generation.<wbr/></p>
22581 <td class="entry_units">
22584 <td class="entry_range">
22585 <p><a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a></p>
22588 <td class="entry_tags">
22589 <ul class="entry_tags">
22590 <li><a href="#tag_V1">V1</a></li>
22591 <li><a href="#tag_RAW">RAW</a></li>
22596 <tr class="entries_header">
22597 <th class="th_details" colspan="5">Details</th>
22599 <tr class="entry_cont">
22600 <td class="entry_details" colspan="5">
22601 <p>If set to <code>true</code>,<wbr/> a hot pixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/>
22602 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
22607 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22608 <!-- end of entry -->
22611 <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
22612 <td class="entry_name
22614 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
22616 <td class="entry_type">
22617 <span class="entry_type_name entry_type_name_enum">byte</span>
22619 <span class="entry_type_visibility"> [public]</span>
22622 <span class="entry_type_hwlevel">[full] </span>
22626 <ul class="entry_type_enum">
22628 <span class="entry_type_enum_name">OFF</span>
22629 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
22632 <span class="entry_type_enum_name">ON</span>
22633 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
22637 </td> <!-- entry_type -->
22639 <td class="entry_description">
22640 <p>Whether the camera device will output the lens
22641 shading map in output result metadata.<wbr/></p>
22644 <td class="entry_units">
22647 <td class="entry_range">
22648 <p><a href="#static_android.statistics.info.availableLensShadingMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes</a></p>
22651 <td class="entry_tags">
22652 <ul class="entry_tags">
22653 <li><a href="#tag_RAW">RAW</a></li>
22658 <tr class="entries_header">
22659 <th class="th_details" colspan="5">Details</th>
22661 <tr class="entry_cont">
22662 <td class="entry_details" colspan="5">
22663 <p>When set to ON,<wbr/>
22664 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
22665 the output result metadata.<wbr/></p>
22666 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
22671 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22672 <!-- end of entry -->
22676 <!-- end of kind -->
22678 <tr><td colspan="6" class="kind">static</td></tr>
22680 <thead class="entries_header">
22682 <th class="th_name">Property Name</th>
22683 <th class="th_type">Type</th>
22684 <th class="th_description">Description</th>
22685 <th class="th_units">Units</th>
22686 <th class="th_range">Range</th>
22687 <th class="th_tags">Tags</th>
22704 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
22705 <td class="entry_name
22707 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
22709 <td class="entry_type">
22710 <span class="entry_type_name">byte</span>
22711 <span class="entry_type_container">x</span>
22713 <span class="entry_type_array">
22716 <span class="entry_type_visibility"> [public as enumList]</span>
22719 <span class="entry_type_hwlevel">[legacy] </span>
22722 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
22725 </td> <!-- entry_type -->
22727 <td class="entry_description">
22728 <p>List of face detection modes for <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> that are
22729 supported by this camera device.<wbr/></p>
22732 <td class="entry_units">
22735 <td class="entry_range">
22736 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
22739 <td class="entry_tags">
22743 <tr class="entries_header">
22744 <th class="th_details" colspan="5">Details</th>
22746 <tr class="entry_cont">
22747 <td class="entry_details" colspan="5">
22748 <p>OFF is always supported.<wbr/></p>
22753 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22754 <!-- end of entry -->
22757 <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
22758 <td class="entry_name
22760 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
22762 <td class="entry_type">
22763 <span class="entry_type_name">int32</span>
22765 <span class="entry_type_visibility"> [system]</span>
22772 </td> <!-- entry_type -->
22774 <td class="entry_description">
22775 <p>Number of histogram buckets
22779 <td class="entry_units">
22782 <td class="entry_range">
22786 <td class="entry_tags">
22787 <ul class="entry_tags">
22788 <li><a href="#tag_FUTURE">FUTURE</a></li>
22795 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22796 <!-- end of entry -->
22799 <tr class="entry" id="static_android.statistics.info.maxFaceCount">
22800 <td class="entry_name
22802 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
22804 <td class="entry_type">
22805 <span class="entry_type_name">int32</span>
22807 <span class="entry_type_visibility"> [public]</span>
22810 <span class="entry_type_hwlevel">[legacy] </span>
22815 </td> <!-- entry_type -->
22817 <td class="entry_description">
22818 <p>The maximum number of simultaneously detectable
22822 <td class="entry_units">
22825 <td class="entry_range">
22826 <p>0 for cameras without available face detection; otherwise:
22827 <code>>=4</code> for LIMITED or FULL hwlevel devices or
22828 <code>>0</code> for LEGACY devices.<wbr/></p>
22831 <td class="entry_tags">
22832 <ul class="entry_tags">
22833 <li><a href="#tag_BC">BC</a></li>
22840 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22841 <!-- end of entry -->
22844 <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
22845 <td class="entry_name
22847 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
22849 <td class="entry_type">
22850 <span class="entry_type_name">int32</span>
22852 <span class="entry_type_visibility"> [system]</span>
22859 </td> <!-- entry_type -->
22861 <td class="entry_description">
22862 <p>Maximum value possible for a histogram
22866 <td class="entry_units">
22869 <td class="entry_range">
22872 <td class="entry_tags">
22873 <ul class="entry_tags">
22874 <li><a href="#tag_FUTURE">FUTURE</a></li>
22881 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22882 <!-- end of entry -->
22885 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
22886 <td class="entry_name
22888 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
22890 <td class="entry_type">
22891 <span class="entry_type_name">int32</span>
22893 <span class="entry_type_visibility"> [system]</span>
22900 </td> <!-- entry_type -->
22902 <td class="entry_description">
22903 <p>Maximum value possible for a sharpness map
22907 <td class="entry_units">
22910 <td class="entry_range">
22913 <td class="entry_tags">
22914 <ul class="entry_tags">
22915 <li><a href="#tag_FUTURE">FUTURE</a></li>
22922 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22923 <!-- end of entry -->
22926 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
22927 <td class="entry_name
22929 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
22931 <td class="entry_type">
22932 <span class="entry_type_name">int32</span>
22933 <span class="entry_type_container">x</span>
22935 <span class="entry_type_array">
22938 <span class="entry_type_visibility"> [system as size]</span>
22943 <div class="entry_type_notes">width x height</div>
22946 </td> <!-- entry_type -->
22948 <td class="entry_description">
22949 <p>Dimensions of the sharpness
22953 <td class="entry_units">
22956 <td class="entry_range">
22957 <p>Must be at least 32 x 32</p>
22960 <td class="entry_tags">
22961 <ul class="entry_tags">
22962 <li><a href="#tag_FUTURE">FUTURE</a></li>
22969 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22970 <!-- end of entry -->
22973 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
22974 <td class="entry_name
22976 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
22978 <td class="entry_type">
22979 <span class="entry_type_name">byte</span>
22980 <span class="entry_type_container">x</span>
22982 <span class="entry_type_array">
22985 <span class="entry_type_visibility"> [public as boolean]</span>
22990 <div class="entry_type_notes">list of enums</div>
22993 </td> <!-- entry_type -->
22995 <td class="entry_description">
22996 <p>List of hot pixel map output modes for <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a> that are
22997 supported by this camera device.<wbr/></p>
23000 <td class="entry_units">
23003 <td class="entry_range">
23004 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
23007 <td class="entry_tags">
23008 <ul class="entry_tags">
23009 <li><a href="#tag_V1">V1</a></li>
23010 <li><a href="#tag_RAW">RAW</a></li>
23015 <tr class="entries_header">
23016 <th class="th_details" colspan="5">Details</th>
23018 <tr class="entry_cont">
23019 <td class="entry_details" colspan="5">
23020 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
23021 <code>false</code>.<wbr/></p>
23022 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
23027 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23028 <!-- end of entry -->
23031 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
23032 <td class="entry_name
23034 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
23036 <td class="entry_type">
23037 <span class="entry_type_name">byte</span>
23038 <span class="entry_type_container">x</span>
23040 <span class="entry_type_array">
23043 <span class="entry_type_visibility"> [public as enumList]</span>
23048 <div class="entry_type_notes">list of enums</div>
23051 </td> <!-- entry_type -->
23053 <td class="entry_description">
23054 <p>List of lens shading map output modes for <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> that
23055 are supported by this camera device.<wbr/></p>
23058 <td class="entry_units">
23061 <td class="entry_range">
23062 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
23065 <td class="entry_tags">
23069 <tr class="entries_header">
23070 <th class="th_details" colspan="5">Details</th>
23072 <tr class="entry_cont">
23073 <td class="entry_details" colspan="5">
23074 <p>If no lens shading map output is available for this camera device,<wbr/> this key will
23075 contain only OFF.<wbr/></p>
23076 <p>ON is always supported on devices with the RAW capability.<wbr/>
23077 LEGACY mode devices will always only support OFF.<wbr/></p>
23082 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23083 <!-- end of entry -->
23090 <!-- end of kind -->
23092 <tr><td colspan="6" class="kind">dynamic</td></tr>
23094 <thead class="entries_header">
23096 <th class="th_name">Property Name</th>
23097 <th class="th_type">Type</th>
23098 <th class="th_description">Description</th>
23099 <th class="th_units">Units</th>
23100 <th class="th_range">Range</th>
23101 <th class="th_tags">Tags</th>
23116 <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
23117 <td class="entry_name
23119 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23121 <td class="entry_type">
23122 <span class="entry_type_name entry_type_name_enum">byte</span>
23124 <span class="entry_type_visibility"> [public]</span>
23127 <span class="entry_type_hwlevel">[legacy] </span>
23131 <ul class="entry_type_enum">
23133 <span class="entry_type_enum_name">OFF</span>
23134 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23135 results.<wbr/></p></span>
23138 <span class="entry_type_enum_name">SIMPLE</span>
23139 <span class="entry_type_enum_optional">[optional]</span>
23140 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
23143 <span class="entry_type_enum_name">FULL</span>
23144 <span class="entry_type_enum_optional">[optional]</span>
23145 <span class="entry_type_enum_notes"><p>Return all face
23146 metadata.<wbr/></p>
23147 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
23151 </td> <!-- entry_type -->
23153 <td class="entry_description">
23154 <p>Operating mode for the face detector
23158 <td class="entry_units">
23161 <td class="entry_range">
23162 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
23165 <td class="entry_tags">
23166 <ul class="entry_tags">
23167 <li><a href="#tag_BC">BC</a></li>
23172 <tr class="entries_header">
23173 <th class="th_details" colspan="5">Details</th>
23175 <tr class="entry_cont">
23176 <td class="entry_details" colspan="5">
23177 <p>Whether face detection is enabled,<wbr/> and whether it
23178 should output just the basic fields or the full set of
23183 <tr class="entries_header">
23184 <th class="th_details" colspan="5">HAL Implementation Details</th>
23186 <tr class="entry_cont">
23187 <td class="entry_details" colspan="5">
23188 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
23189 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
23190 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
23191 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
23195 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23196 <!-- end of entry -->
23199 <tr class="entry" id="dynamic_android.statistics.faceIds">
23200 <td class="entry_name
23202 android.<wbr/>statistics.<wbr/>face<wbr/>Ids
23204 <td class="entry_type">
23205 <span class="entry_type_name">int32</span>
23206 <span class="entry_type_container">x</span>
23208 <span class="entry_type_array">
23211 <span class="entry_type_visibility"> [ndk_public]</span>
23214 <span class="entry_type_hwlevel">[legacy] </span>
23219 </td> <!-- entry_type -->
23221 <td class="entry_description">
23222 <p>List of unique IDs for detected faces.<wbr/></p>
23225 <td class="entry_units">
23228 <td class="entry_range">
23231 <td class="entry_tags">
23232 <ul class="entry_tags">
23233 <li><a href="#tag_BC">BC</a></li>
23238 <tr class="entries_header">
23239 <th class="th_details" colspan="5">Details</th>
23241 <tr class="entry_cont">
23242 <td class="entry_details" colspan="5">
23243 <p>Each detected face is given a unique ID that is valid for as long as the face is visible
23244 to the camera device.<wbr/> A face that leaves the field of view and later returns may be
23245 assigned a new ID.<wbr/></p>
23246 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
23251 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23252 <!-- end of entry -->
23255 <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
23256 <td class="entry_name
23258 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
23260 <td class="entry_type">
23261 <span class="entry_type_name">int32</span>
23262 <span class="entry_type_container">x</span>
23264 <span class="entry_type_array">
23267 <span class="entry_type_visibility"> [ndk_public]</span>
23270 <span class="entry_type_hwlevel">[legacy] </span>
23273 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
23276 </td> <!-- entry_type -->
23278 <td class="entry_description">
23279 <p>List of landmarks for detected
23283 <td class="entry_units">
23286 <td class="entry_range">
23289 <td class="entry_tags">
23290 <ul class="entry_tags">
23291 <li><a href="#tag_BC">BC</a></li>
23296 <tr class="entries_header">
23297 <th class="th_details" colspan="5">Details</th>
23299 <tr class="entry_cont">
23300 <td class="entry_details" colspan="5">
23301 <p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
23302 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
23303 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
23308 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23309 <!-- end of entry -->
23312 <tr class="entry" id="dynamic_android.statistics.faceRectangles">
23313 <td class="entry_name
23315 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
23317 <td class="entry_type">
23318 <span class="entry_type_name">int32</span>
23319 <span class="entry_type_container">x</span>
23321 <span class="entry_type_array">
23324 <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
23327 <span class="entry_type_hwlevel">[legacy] </span>
23330 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
23333 </td> <!-- entry_type -->
23335 <td class="entry_description">
23336 <p>List of the bounding rectangles for detected
23340 <td class="entry_units">
23343 <td class="entry_range">
23346 <td class="entry_tags">
23347 <ul class="entry_tags">
23348 <li><a href="#tag_BC">BC</a></li>
23353 <tr class="entries_header">
23354 <th class="th_details" colspan="5">Details</th>
23356 <tr class="entry_cont">
23357 <td class="entry_details" colspan="5">
23358 <p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
23359 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
23360 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
23365 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23366 <!-- end of entry -->
23369 <tr class="entry" id="dynamic_android.statistics.faceScores">
23370 <td class="entry_name
23372 android.<wbr/>statistics.<wbr/>face<wbr/>Scores
23374 <td class="entry_type">
23375 <span class="entry_type_name">byte</span>
23376 <span class="entry_type_container">x</span>
23378 <span class="entry_type_array">
23381 <span class="entry_type_visibility"> [ndk_public]</span>
23384 <span class="entry_type_hwlevel">[legacy] </span>
23389 </td> <!-- entry_type -->
23391 <td class="entry_description">
23392 <p>List of the face confidence scores for
23396 <td class="entry_units">
23399 <td class="entry_range">
23403 <td class="entry_tags">
23404 <ul class="entry_tags">
23405 <li><a href="#tag_BC">BC</a></li>
23410 <tr class="entries_header">
23411 <th class="th_details" colspan="5">Details</th>
23413 <tr class="entry_cont">
23414 <td class="entry_details" colspan="5">
23415 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
23419 <tr class="entries_header">
23420 <th class="th_details" colspan="5">HAL Implementation Details</th>
23422 <tr class="entry_cont">
23423 <td class="entry_details" colspan="5">
23424 <p>The value should be meaningful (for example,<wbr/> setting 100 at
23425 all times is illegal).<wbr/></p>
23429 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23430 <!-- end of entry -->
23433 <tr class="entry" id="dynamic_android.statistics.faces">
23434 <td class="entry_name
23436 android.<wbr/>statistics.<wbr/>faces
23438 <td class="entry_type">
23439 <span class="entry_type_name">int32</span>
23440 <span class="entry_type_container">x</span>
23442 <span class="entry_type_array">
23445 <span class="entry_type_visibility"> [java_public as face]</span>
23447 <span class="entry_type_synthetic">[synthetic] </span>
23449 <span class="entry_type_hwlevel">[legacy] </span>
23454 </td> <!-- entry_type -->
23456 <td class="entry_description">
23457 <p>List of the faces detected through camera face detection
23458 in this capture.<wbr/></p>
23461 <td class="entry_units">
23464 <td class="entry_range">
23467 <td class="entry_tags">
23471 <tr class="entries_header">
23472 <th class="th_details" colspan="5">Details</th>
23474 <tr class="entry_cont">
23475 <td class="entry_details" colspan="5">
23476 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> <code>!=</code> OFF.<wbr/></p>
23481 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23482 <!-- end of entry -->
23485 <tr class="entry" id="dynamic_android.statistics.histogram">
23486 <td class="entry_name
23488 android.<wbr/>statistics.<wbr/>histogram
23490 <td class="entry_type">
23491 <span class="entry_type_name">int32</span>
23492 <span class="entry_type_container">x</span>
23494 <span class="entry_type_array">
23497 <span class="entry_type_visibility"> [system]</span>
23502 <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>
23505 </td> <!-- entry_type -->
23507 <td class="entry_description">
23508 <p>A 3-channel histogram based on the raw
23512 <td class="entry_units">
23515 <td class="entry_range">
23518 <td class="entry_tags">
23519 <ul class="entry_tags">
23520 <li><a href="#tag_FUTURE">FUTURE</a></li>
23525 <tr class="entries_header">
23526 <th class="th_details" colspan="5">Details</th>
23528 <tr class="entry_cont">
23529 <td class="entry_details" colspan="5">
23530 <p>The k'th bucket (0-based) covers the input range
23531 (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/>
23532 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
23533 supported,<wbr/> all channels should have the same data</p>
23538 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23539 <!-- end of entry -->
23542 <tr class="entry" id="dynamic_android.statistics.histogramMode">
23543 <td class="entry_name
23545 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23547 <td class="entry_type">
23548 <span class="entry_type_name entry_type_name_enum">byte</span>
23550 <span class="entry_type_visibility"> [system as boolean]</span>
23556 <ul class="entry_type_enum">
23558 <span class="entry_type_enum_name">OFF</span>
23561 <span class="entry_type_enum_name">ON</span>
23565 </td> <!-- entry_type -->
23567 <td class="entry_description">
23568 <p>Operating mode for histogram
23572 <td class="entry_units">
23575 <td class="entry_range">
23578 <td class="entry_tags">
23579 <ul class="entry_tags">
23580 <li><a href="#tag_FUTURE">FUTURE</a></li>
23587 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23588 <!-- end of entry -->
23591 <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
23592 <td class="entry_name
23594 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
23596 <td class="entry_type">
23597 <span class="entry_type_name">int32</span>
23598 <span class="entry_type_container">x</span>
23600 <span class="entry_type_array">
23603 <span class="entry_type_visibility"> [system]</span>
23608 <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>
23611 </td> <!-- entry_type -->
23613 <td class="entry_description">
23614 <p>A 3-channel sharpness map,<wbr/> based on the raw
23618 <td class="entry_units">
23621 <td class="entry_range">
23624 <td class="entry_tags">
23625 <ul class="entry_tags">
23626 <li><a href="#tag_FUTURE">FUTURE</a></li>
23631 <tr class="entries_header">
23632 <th class="th_details" colspan="5">Details</th>
23634 <tr class="entry_cont">
23635 <td class="entry_details" colspan="5">
23636 <p>If only a monochrome sharpness map is supported,<wbr/>
23637 all channels should have the same data</p>
23642 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23643 <!-- end of entry -->
23646 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
23647 <td class="entry_name
23649 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23651 <td class="entry_type">
23652 <span class="entry_type_name entry_type_name_enum">byte</span>
23654 <span class="entry_type_visibility"> [system as boolean]</span>
23660 <ul class="entry_type_enum">
23662 <span class="entry_type_enum_name">OFF</span>
23665 <span class="entry_type_enum_name">ON</span>
23669 </td> <!-- entry_type -->
23671 <td class="entry_description">
23672 <p>Operating mode for sharpness map
23676 <td class="entry_units">
23679 <td class="entry_range">
23682 <td class="entry_tags">
23683 <ul class="entry_tags">
23684 <li><a href="#tag_FUTURE">FUTURE</a></li>
23691 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23692 <!-- end of entry -->
23695 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
23696 <td class="entry_name
23698 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
23700 <td class="entry_type">
23701 <span class="entry_type_name">byte</span>
23703 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
23706 <span class="entry_type_hwlevel">[full] </span>
23711 </td> <!-- entry_type -->
23713 <td class="entry_description">
23714 <p>The shading map is a low-resolution floating-point map
23715 that lists the coefficients used to correct for vignetting,<wbr/> for each
23716 Bayer color channel.<wbr/></p>
23719 <td class="entry_units">
23722 <td class="entry_range">
23723 <p>Each gain factor is >= 1</p>
23726 <td class="entry_tags">
23730 <tr class="entries_header">
23731 <th class="th_details" colspan="5">Details</th>
23733 <tr class="entry_cont">
23734 <td class="entry_details" colspan="5">
23735 <p>The map provided here is the same map that is used by the camera device to
23736 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
23737 <p>When there is no lens shading correction applied to RAW
23738 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
23739 false),<wbr/> this map is the complete lens shading correction
23740 map; when there is some lens shading correction applied to
23741 the RAW output image (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a><code>==</code> true),<wbr/> this map reports the remaining lens shading
23742 correction map that needs to be applied to get shading
23743 corrected images that match the camera device's output for
23744 non-RAW formats.<wbr/></p>
23745 <p>For a complete shading correction map,<wbr/> the least shaded
23746 section of the image will have a gain factor of 1; all
23747 other sections will have gains above 1.<wbr/></p>
23748 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
23749 will take into account the colorCorrection settings.<wbr/></p>
23750 <p>The shading map is for the entire active pixel array,<wbr/> and is not
23751 affected by the crop region specified in the request.<wbr/> Each shading map
23752 entry is the value of the shading compensation map over a specific
23753 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
23754 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
23755 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
23756 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
23757 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
23758 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
23759 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
23760 The shading map is stored in a fully interleaved format.<wbr/></p>
23761 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
23762 and will be smaller than 64x64.<wbr/></p>
23763 <p>As an example,<wbr/> given a very small map defined as:</p>
23764 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
23766 [ 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/>
23767 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/>
23768 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/>
23769 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/>
23770 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/>
23771 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 ]
23773 <p>The low-resolution scaling map images for each channel are
23774 (displayed using nearest-neighbor interpolation):</p>
23775 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
23776 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
23777 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
23778 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
23779 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
23780 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
23781 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
23786 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23787 <!-- end of entry -->
23790 <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
23791 <td class="entry_name
23793 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
23795 <td class="entry_type">
23796 <span class="entry_type_name">float</span>
23797 <span class="entry_type_container">x</span>
23799 <span class="entry_type_array">
23802 <span class="entry_type_visibility"> [ndk_public]</span>
23805 <span class="entry_type_hwlevel">[full] </span>
23808 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
23811 </td> <!-- entry_type -->
23813 <td class="entry_description">
23814 <p>The shading map is a low-resolution floating-point map
23815 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
23816 for each Bayer color channel of RAW image data.<wbr/></p>
23819 <td class="entry_units">
23822 <td class="entry_range">
23823 <p>Each gain factor is >= 1</p>
23826 <td class="entry_tags">
23830 <tr class="entries_header">
23831 <th class="th_details" colspan="5">Details</th>
23833 <tr class="entry_cont">
23834 <td class="entry_details" colspan="5">
23835 <p>The map provided here is the same map that is used by the camera device to
23836 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
23837 <p>When there is no lens shading correction applied to RAW
23838 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
23839 false),<wbr/> this map is the complete lens shading correction
23840 map; when there is some lens shading correction applied to
23841 the RAW output image (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a><code>==</code> true),<wbr/> this map reports the remaining lens shading
23842 correction map that needs to be applied to get shading
23843 corrected images that match the camera device's output for
23844 non-RAW formats.<wbr/></p>
23845 <p>For a complete shading correction map,<wbr/> the least shaded
23846 section of the image will have a gain factor of 1; all
23847 other sections will have gains above 1.<wbr/></p>
23848 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
23849 will take into account the colorCorrection settings.<wbr/></p>
23850 <p>The shading map is for the entire active pixel array,<wbr/> and is not
23851 affected by the crop region specified in the request.<wbr/> Each shading map
23852 entry is the value of the shading compensation map over a specific
23853 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
23854 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
23855 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
23856 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
23857 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
23858 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
23859 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
23860 The shading map is stored in a fully interleaved format,<wbr/> and its size
23861 is provided in the camera static metadata by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>.<wbr/></p>
23862 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
23863 and will be smaller than 64x64.<wbr/></p>
23864 <p>As an example,<wbr/> given a very small map defined as:</p>
23865 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
23866 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
23867 [ 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/>
23868 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/>
23869 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/>
23870 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/>
23871 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/>
23872 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 ]
23874 <p>The low-resolution scaling map images for each channel are
23875 (displayed using nearest-neighbor interpolation):</p>
23876 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
23877 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
23878 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
23879 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
23880 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
23881 image of a gray wall (using bicubic interpolation for visual quality)
23882 as captured by the sensor gives:</p>
23883 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
23884 <p>Note that the RAW image data might be subject to lens shading
23885 correction not reported on this map.<wbr/> Query
23886 <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> to see if RAW image data has subject
23887 to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
23888 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
23889 correction.<wbr/> In the case full lens shading correction is applied to RAW
23890 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
23891 In other words,<wbr/> the map reported in this key is the remaining lens shading
23892 that needs to be applied on the RAW image to get images without lens shading
23893 artifacts.<wbr/> See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a list of RAW image
23898 <tr class="entries_header">
23899 <th class="th_details" colspan="5">HAL Implementation Details</th>
23901 <tr class="entry_cont">
23902 <td class="entry_details" colspan="5">
23903 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
23904 When AE and AWB are in AUTO modes
23905 (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code> OFF),<wbr/> the HAL
23906 may have all the information it need to generate most accurate lens shading map.<wbr/> When
23907 AE or AWB are in manual mode
23908 (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> OFF or <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>==</code> OFF),<wbr/> the shading map
23909 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
23910 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
23911 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
23915 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23916 <!-- end of entry -->
23919 <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
23920 <td class="entry_name
23921 entry_name_deprecated
23923 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
23925 <td class="entry_type">
23926 <span class="entry_type_name">float</span>
23927 <span class="entry_type_container">x</span>
23929 <span class="entry_type_array">
23932 <span class="entry_type_visibility"> [hidden]</span>
23936 <span class="entry_type_deprecated">[deprecated] </span>
23938 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
23941 </td> <!-- entry_type -->
23943 <td class="entry_description">
23944 <p>The best-fit color channel gains calculated
23945 by the camera device's statistics units for the current output frame.<wbr/></p>
23948 <td class="entry_units">
23951 <td class="entry_range">
23952 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23955 <td class="entry_tags">
23959 <tr class="entries_header">
23960 <th class="th_details" colspan="5">Details</th>
23962 <tr class="entry_cont">
23963 <td class="entry_details" colspan="5">
23964 <p>This may be different than the gains used for this frame,<wbr/>
23965 since statistics processing on data from a new frame
23966 typically completes after the transform has already been
23967 applied to that frame.<wbr/></p>
23968 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
23969 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
23970 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
23971 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
23976 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23977 <!-- end of entry -->
23980 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
23981 <td class="entry_name
23982 entry_name_deprecated
23984 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
23986 <td class="entry_type">
23987 <span class="entry_type_name">rational</span>
23988 <span class="entry_type_container">x</span>
23990 <span class="entry_type_array">
23993 <span class="entry_type_visibility"> [hidden]</span>
23997 <span class="entry_type_deprecated">[deprecated] </span>
23999 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
24002 </td> <!-- entry_type -->
24004 <td class="entry_description">
24005 <p>The best-fit color transform matrix estimate
24006 calculated by the camera device's statistics units for the current
24007 output frame.<wbr/></p>
24010 <td class="entry_units">
24013 <td class="entry_range">
24014 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
24017 <td class="entry_tags">
24021 <tr class="entries_header">
24022 <th class="th_details" colspan="5">Details</th>
24024 <tr class="entry_cont">
24025 <td class="entry_details" colspan="5">
24026 <p>The camera device will provide the estimate from its
24027 statistics unit on the white balance transforms to use
24028 for the next frame.<wbr/> These are the values the camera device believes
24029 are the best fit for the current output frame.<wbr/> This may
24030 be different than the transform used for this frame,<wbr/> since
24031 statistics processing on data from a new frame typically
24032 completes after the transform has already been applied to
24033 that frame.<wbr/></p>
24034 <p>These estimates must be provided for all frames,<wbr/> even if
24035 capture settings and color transforms are set by the application.<wbr/></p>
24036 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
24037 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
24042 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24043 <!-- end of entry -->
24046 <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
24047 <td class="entry_name
24049 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
24051 <td class="entry_type">
24052 <span class="entry_type_name entry_type_name_enum">byte</span>
24054 <span class="entry_type_visibility"> [public]</span>
24057 <span class="entry_type_hwlevel">[full] </span>
24061 <ul class="entry_type_enum">
24063 <span class="entry_type_enum_name">NONE</span>
24064 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
24065 in the current scene.<wbr/></p></span>
24068 <span class="entry_type_enum_name">50HZ</span>
24069 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
24070 in the current scene.<wbr/></p></span>
24073 <span class="entry_type_enum_name">60HZ</span>
24074 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
24075 in the current scene.<wbr/></p></span>
24079 </td> <!-- entry_type -->
24081 <td class="entry_description">
24082 <p>The camera device estimated scene illumination lighting
24083 frequency.<wbr/></p>
24086 <td class="entry_units">
24089 <td class="entry_range">
24092 <td class="entry_tags">
24096 <tr class="entries_header">
24097 <th class="th_details" colspan="5">Details</th>
24099 <tr class="entry_cont">
24100 <td class="entry_details" colspan="5">
24101 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
24102 that depends on the local utility power standards.<wbr/> This flicker must be
24103 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
24104 The camera device uses this entry to tell the application what the scene
24105 illuminant frequency is.<wbr/></p>
24106 <p>When manual exposure control is enabled
24107 (<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> ==
24108 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
24109 antibanding,<wbr/> and the application can ensure it selects
24110 exposure times that do not cause banding issues by looking
24111 into this metadata field.<wbr/> See
24112 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
24113 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
24118 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24119 <!-- end of entry -->
24122 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
24123 <td class="entry_name
24125 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
24127 <td class="entry_type">
24128 <span class="entry_type_name entry_type_name_enum">byte</span>
24130 <span class="entry_type_visibility"> [public as boolean]</span>
24136 <ul class="entry_type_enum">
24138 <span class="entry_type_enum_name">OFF</span>
24139 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
24142 <span class="entry_type_enum_name">ON</span>
24143 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
24147 </td> <!-- entry_type -->
24149 <td class="entry_description">
24150 <p>Operating mode for hot pixel map generation.<wbr/></p>
24153 <td class="entry_units">
24156 <td class="entry_range">
24157 <p><a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a></p>
24160 <td class="entry_tags">
24161 <ul class="entry_tags">
24162 <li><a href="#tag_V1">V1</a></li>
24163 <li><a href="#tag_RAW">RAW</a></li>
24168 <tr class="entries_header">
24169 <th class="th_details" colspan="5">Details</th>
24171 <tr class="entry_cont">
24172 <td class="entry_details" colspan="5">
24173 <p>If set to <code>true</code>,<wbr/> a hot pixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/>
24174 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
24179 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24180 <!-- end of entry -->
24183 <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
24184 <td class="entry_name
24186 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
24188 <td class="entry_type">
24189 <span class="entry_type_name">int32</span>
24190 <span class="entry_type_container">x</span>
24192 <span class="entry_type_array">
24195 <span class="entry_type_visibility"> [public as point]</span>
24200 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
24203 </td> <!-- entry_type -->
24205 <td class="entry_description">
24206 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
24209 <td class="entry_units">
24212 <td class="entry_range">
24213 <p>n <= number of pixels on the sensor.<wbr/>
24214 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
24215 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
24218 <td class="entry_tags">
24219 <ul class="entry_tags">
24220 <li><a href="#tag_V1">V1</a></li>
24221 <li><a href="#tag_RAW">RAW</a></li>
24226 <tr class="entries_header">
24227 <th class="th_details" colspan="5">Details</th>
24229 <tr class="entry_cont">
24230 <td class="entry_details" colspan="5">
24231 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
24232 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
24233 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
24234 height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
24235 This may include hot pixels that lie outside of the active array
24236 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
24240 <tr class="entries_header">
24241 <th class="th_details" colspan="5">HAL Implementation Details</th>
24243 <tr class="entry_cont">
24244 <td class="entry_details" colspan="5">
24245 <p>A hotpixel map contains the coordinates of pixels on the camera
24246 sensor that do report valid values (usually due to defects in
24247 the camera sensor).<wbr/> This includes pixels that are stuck at certain
24248 values,<wbr/> or have a response that does not accuractly encode the
24249 incoming light from the scene.<wbr/></p>
24250 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
24251 pixels than actual pixels on the camera sensor.<wbr/></p>
24255 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24256 <!-- end of entry -->
24259 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
24260 <td class="entry_name
24262 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
24264 <td class="entry_type">
24265 <span class="entry_type_name entry_type_name_enum">byte</span>
24267 <span class="entry_type_visibility"> [public]</span>
24270 <span class="entry_type_hwlevel">[full] </span>
24274 <ul class="entry_type_enum">
24276 <span class="entry_type_enum_name">OFF</span>
24277 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
24280 <span class="entry_type_enum_name">ON</span>
24281 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
24285 </td> <!-- entry_type -->
24287 <td class="entry_description">
24288 <p>Whether the camera device will output the lens
24289 shading map in output result metadata.<wbr/></p>
24292 <td class="entry_units">
24295 <td class="entry_range">
24296 <p><a href="#static_android.statistics.info.availableLensShadingMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes</a></p>
24299 <td class="entry_tags">
24300 <ul class="entry_tags">
24301 <li><a href="#tag_RAW">RAW</a></li>
24306 <tr class="entries_header">
24307 <th class="th_details" colspan="5">Details</th>
24309 <tr class="entry_cont">
24310 <td class="entry_details" colspan="5">
24311 <p>When set to ON,<wbr/>
24312 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
24313 the output result metadata.<wbr/></p>
24314 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24319 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24320 <!-- end of entry -->
24324 <!-- end of kind -->
24327 <!-- end of section -->
24328 <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
24331 <tr><td colspan="6" class="kind">controls</td></tr>
24333 <thead class="entries_header">
24335 <th class="th_name">Property Name</th>
24336 <th class="th_type">Type</th>
24337 <th class="th_description">Description</th>
24338 <th class="th_units">Units</th>
24339 <th class="th_range">Range</th>
24340 <th class="th_tags">Tags</th>
24355 <tr class="entry" id="controls_android.tonemap.curveBlue">
24356 <td class="entry_name
24358 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
24360 <td class="entry_type">
24361 <span class="entry_type_name">float</span>
24362 <span class="entry_type_container">x</span>
24364 <span class="entry_type_array">
24367 <span class="entry_type_visibility"> [ndk_public]</span>
24370 <span class="entry_type_hwlevel">[full] </span>
24373 <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>
24376 </td> <!-- entry_type -->
24378 <td class="entry_description">
24379 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
24380 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24381 CONTRAST_<wbr/>CURVE.<wbr/></p>
24384 <td class="entry_units">
24387 <td class="entry_range">
24390 <td class="entry_tags">
24394 <tr class="entries_header">
24395 <th class="th_details" colspan="5">Details</th>
24397 <tr class="entry_cont">
24398 <td class="entry_details" colspan="5">
24399 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24404 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24405 <!-- end of entry -->
24408 <tr class="entry" id="controls_android.tonemap.curveGreen">
24409 <td class="entry_name
24411 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
24413 <td class="entry_type">
24414 <span class="entry_type_name">float</span>
24415 <span class="entry_type_container">x</span>
24417 <span class="entry_type_array">
24420 <span class="entry_type_visibility"> [ndk_public]</span>
24423 <span class="entry_type_hwlevel">[full] </span>
24426 <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>
24429 </td> <!-- entry_type -->
24431 <td class="entry_description">
24432 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
24433 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24434 CONTRAST_<wbr/>CURVE.<wbr/></p>
24437 <td class="entry_units">
24440 <td class="entry_range">
24443 <td class="entry_tags">
24447 <tr class="entries_header">
24448 <th class="th_details" colspan="5">Details</th>
24450 <tr class="entry_cont">
24451 <td class="entry_details" colspan="5">
24452 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24457 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24458 <!-- end of entry -->
24461 <tr class="entry" id="controls_android.tonemap.curveRed">
24462 <td class="entry_name
24464 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
24466 <td class="entry_type">
24467 <span class="entry_type_name">float</span>
24468 <span class="entry_type_container">x</span>
24470 <span class="entry_type_array">
24473 <span class="entry_type_visibility"> [ndk_public]</span>
24476 <span class="entry_type_hwlevel">[full] </span>
24479 <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>
24482 </td> <!-- entry_type -->
24484 <td class="entry_description">
24485 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
24486 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24487 CONTRAST_<wbr/>CURVE.<wbr/></p>
24490 <td class="entry_units">
24493 <td class="entry_range">
24494 <p>0-1 on both input and output coordinates,<wbr/> normalized
24495 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
24498 <td class="entry_tags">
24502 <tr class="entries_header">
24503 <th class="th_details" colspan="5">Details</th>
24505 <tr class="entry_cont">
24506 <td class="entry_details" colspan="5">
24507 <p>Each channel's curve is defined by an array of control points:</p>
24508 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
24509 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
24510 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24511 <p>These are sorted in order of increasing <code>Pin</code>; it is
24512 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24513 define a complete mapping.<wbr/> For input values between control points,<wbr/>
24514 the camera device must linearly interpolate between the control
24516 <p>Each curve can have an independent number of points,<wbr/> and the number
24517 of points can be less than max (that is,<wbr/> the request doesn't have to
24518 always provide a curve with number of points equivalent to
24519 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24520 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
24521 only specify the red channel and the precision is limited to 4
24522 digits,<wbr/> for conciseness.<wbr/></p>
24523 <p>Linear mapping:</p>
24524 <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 ]
24526 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24527 <p>Invert mapping:</p>
24528 <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 ]
24530 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24531 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24532 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24533 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/>
24534 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/>
24535 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/>
24536 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 ]
24538 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24539 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24540 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24541 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/>
24542 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/>
24543 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/>
24544 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 ]
24546 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24550 <tr class="entries_header">
24551 <th class="th_details" colspan="5">HAL Implementation Details</th>
24553 <tr class="entry_cont">
24554 <td class="entry_details" colspan="5">
24555 <p>For good quality of mapping,<wbr/> at least 128 control points are
24556 preferred.<wbr/></p>
24557 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
24558 control points used as are available.<wbr/></p>
24562 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24563 <!-- end of entry -->
24566 <tr class="entry" id="controls_android.tonemap.curve">
24567 <td class="entry_name
24569 android.<wbr/>tonemap.<wbr/>curve
24571 <td class="entry_type">
24572 <span class="entry_type_name">float</span>
24574 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
24576 <span class="entry_type_synthetic">[synthetic] </span>
24578 <span class="entry_type_hwlevel">[full] </span>
24583 </td> <!-- entry_type -->
24585 <td class="entry_description">
24586 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
24587 is CONTRAST_<wbr/>CURVE.<wbr/></p>
24590 <td class="entry_units">
24593 <td class="entry_range">
24596 <td class="entry_tags">
24600 <tr class="entries_header">
24601 <th class="th_details" colspan="5">Details</th>
24603 <tr class="entry_cont">
24604 <td class="entry_details" colspan="5">
24605 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
24606 channels respectively.<wbr/> The following example uses the red channel as an
24607 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
24608 Each channel's curve is defined by an array of control points:</p>
24609 <pre><code>curveRed =
24610 [ P0(in,<wbr/> out),<wbr/> P1(in,<wbr/> out),<wbr/> P2(in,<wbr/> out),<wbr/> P3(in,<wbr/> out),<wbr/> ...,<wbr/> PN(in,<wbr/> out) ]
24611 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24612 <p>These are sorted in order of increasing <code>Pin</code>; it is always
24613 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24614 define a complete mapping.<wbr/> For input values between control points,<wbr/>
24615 the camera device must linearly interpolate between the control
24617 <p>Each curve can have an independent number of points,<wbr/> and the number
24618 of points can be less than max (that is,<wbr/> the request doesn't have to
24619 always provide a curve with number of points equivalent to
24620 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24621 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
24622 only specify the red channel and the precision is limited to 4
24623 digits,<wbr/> for conciseness.<wbr/></p>
24624 <p>Linear mapping:</p>
24625 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
24627 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24628 <p>Invert mapping:</p>
24629 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
24631 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24632 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24633 <pre><code>curveRed = [
24634 (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/>
24635 (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/>
24636 (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/>
24637 (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) ]
24639 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24640 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24641 <pre><code>curveRed = [
24642 (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/>
24643 (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/>
24644 (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/>
24645 (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) ]
24647 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24651 <tr class="entries_header">
24652 <th class="th_details" colspan="5">HAL Implementation Details</th>
24654 <tr class="entry_cont">
24655 <td class="entry_details" colspan="5">
24656 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
24657 curveBlue entries.<wbr/></p>
24661 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24662 <!-- end of entry -->
24665 <tr class="entry" id="controls_android.tonemap.mode">
24666 <td class="entry_name
24668 android.<wbr/>tonemap.<wbr/>mode
24670 <td class="entry_type">
24671 <span class="entry_type_name entry_type_name_enum">byte</span>
24673 <span class="entry_type_visibility"> [public]</span>
24676 <span class="entry_type_hwlevel">[full] </span>
24680 <ul class="entry_type_enum">
24682 <span class="entry_type_enum_name">CONTRAST_CURVE</span>
24683 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
24684 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
24685 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
24686 for applying the tonemapping curve specified by
24687 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24688 <p>Must not slow down frame rate relative to raw
24689 sensor output.<wbr/></p></span>
24692 <span class="entry_type_enum_name">FAST</span>
24693 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
24694 reducing frame rate compared to raw sensor output.<wbr/></p></span>
24697 <span class="entry_type_enum_name">HIGH_QUALITY</span>
24698 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
24699 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
24702 <span class="entry_type_enum_name">GAMMA_VALUE</span>
24703 <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
24704 tonemapping.<wbr/></p>
24705 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
24706 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
24707 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24710 <span class="entry_type_enum_name">PRESET_CURVE</span>
24711 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
24712 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
24713 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
24714 for applying the tonemapping curve specified by
24715 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
24716 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24720 </td> <!-- entry_type -->
24722 <td class="entry_description">
24723 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
24726 <td class="entry_units">
24729 <td class="entry_range">
24730 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
24733 <td class="entry_tags">
24737 <tr class="entries_header">
24738 <th class="th_details" colspan="5">Details</th>
24740 <tr class="entry_cont">
24741 <td class="entry_details" colspan="5">
24742 <p>When switching to an application-defined contrast curve by setting
24743 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
24744 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
24745 mapping from input high-bit-depth pixel value to the output
24746 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
24747 and output may change depending on the camera pipeline,<wbr/> the values
24748 are specified by normalized floating-point numbers.<wbr/></p>
24749 <p>More-complex color mapping operations such as 3D color look-up
24750 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
24751 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24752 CONTRAST_<wbr/>CURVE.<wbr/></p>
24753 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
24754 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
24755 These values are always available,<wbr/> and as close as possible to the
24756 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
24757 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
24758 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
24759 roughly the same.<wbr/></p>
24764 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24765 <!-- end of entry -->
24768 <tr class="entry" id="controls_android.tonemap.gamma">
24769 <td class="entry_name
24771 android.<wbr/>tonemap.<wbr/>gamma
24773 <td class="entry_type">
24774 <span class="entry_type_name">float</span>
24776 <span class="entry_type_visibility"> [public]</span>
24783 </td> <!-- entry_type -->
24785 <td class="entry_description">
24786 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24787 GAMMA_<wbr/>VALUE</p>
24790 <td class="entry_units">
24793 <td class="entry_range">
24796 <td class="entry_tags">
24800 <tr class="entries_header">
24801 <th class="th_details" colspan="5">Details</th>
24803 <tr class="entry_cont">
24804 <td class="entry_details" colspan="5">
24805 <p>The tonemap curve will be defined the following formula:
24806 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
24807 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
24808 pow is the power function and gamma is the gamma value specified by this
24810 <p>The same curve will be applied to all color channels.<wbr/> The camera device
24811 may clip the input gamma value to its supported range.<wbr/> The actual applied
24812 value will be returned in capture result.<wbr/></p>
24813 <p>The valid range of gamma value varies on different devices,<wbr/> but values
24814 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
24819 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24820 <!-- end of entry -->
24823 <tr class="entry" id="controls_android.tonemap.presetCurve">
24824 <td class="entry_name
24826 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
24828 <td class="entry_type">
24829 <span class="entry_type_name entry_type_name_enum">byte</span>
24831 <span class="entry_type_visibility"> [public]</span>
24837 <ul class="entry_type_enum">
24839 <span class="entry_type_enum_name">SRGB</span>
24840 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
24843 <span class="entry_type_enum_name">REC709</span>
24844 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
24848 </td> <!-- entry_type -->
24850 <td class="entry_description">
24851 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24852 PRESET_<wbr/>CURVE</p>
24855 <td class="entry_units">
24858 <td class="entry_range">
24861 <td class="entry_tags">
24865 <tr class="entries_header">
24866 <th class="th_details" colspan="5">Details</th>
24868 <tr class="entry_cont">
24869 <td class="entry_details" colspan="5">
24870 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
24871 <p>sRGB (approximated by 16 control points):</p>
24872 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24873 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
24874 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
24875 <p>Note that above figures show a 16 control points approximation of preset
24876 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
24881 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24882 <!-- end of entry -->
24886 <!-- end of kind -->
24888 <tr><td colspan="6" class="kind">static</td></tr>
24890 <thead class="entries_header">
24892 <th class="th_name">Property Name</th>
24893 <th class="th_type">Type</th>
24894 <th class="th_description">Description</th>
24895 <th class="th_units">Units</th>
24896 <th class="th_range">Range</th>
24897 <th class="th_tags">Tags</th>
24912 <tr class="entry" id="static_android.tonemap.maxCurvePoints">
24913 <td class="entry_name
24915 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
24917 <td class="entry_type">
24918 <span class="entry_type_name">int32</span>
24920 <span class="entry_type_visibility"> [public]</span>
24923 <span class="entry_type_hwlevel">[full] </span>
24928 </td> <!-- entry_type -->
24930 <td class="entry_description">
24931 <p>Maximum number of supported points in the
24932 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24935 <td class="entry_units">
24938 <td class="entry_range">
24941 <td class="entry_tags">
24945 <tr class="entries_header">
24946 <th class="th_details" colspan="5">Details</th>
24948 <tr class="entry_cont">
24949 <td class="entry_details" colspan="5">
24950 <p>If the actual number of points provided by the application (in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>*) is
24951 less than this maximum,<wbr/> the camera device will resample the curve to its internal
24952 representation,<wbr/> using linear interpolation.<wbr/></p>
24953 <p>The output curves in the result metadata may have a different number
24954 of points than the input curves,<wbr/> and will represent the actual
24955 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
24959 <tr class="entries_header">
24960 <th class="th_details" colspan="5">HAL Implementation Details</th>
24962 <tr class="entry_cont">
24963 <td class="entry_details" colspan="5">
24964 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
24968 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24969 <!-- end of entry -->
24972 <tr class="entry" id="static_android.tonemap.availableToneMapModes">
24973 <td class="entry_name
24975 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
24977 <td class="entry_type">
24978 <span class="entry_type_name">byte</span>
24979 <span class="entry_type_container">x</span>
24981 <span class="entry_type_array">
24984 <span class="entry_type_visibility"> [public as enumList]</span>
24987 <span class="entry_type_hwlevel">[full] </span>
24990 <div class="entry_type_notes">list of enums</div>
24993 </td> <!-- entry_type -->
24995 <td class="entry_description">
24996 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
25000 <td class="entry_units">
25003 <td class="entry_range">
25004 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
25007 <td class="entry_tags">
25011 <tr class="entries_header">
25012 <th class="th_details" colspan="5">Details</th>
25014 <tr class="entry_cont">
25015 <td class="entry_details" colspan="5">
25016 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
25017 at least one of below mode combinations:</p>
25019 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
25020 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
25022 <p>This includes all FULL level devices.<wbr/></p>
25026 <tr class="entries_header">
25027 <th class="th_details" colspan="5">HAL Implementation Details</th>
25029 <tr class="entry_cont">
25030 <td class="entry_details" colspan="5">
25031 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
25032 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
25033 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
25034 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
25038 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25039 <!-- end of entry -->
25043 <!-- end of kind -->
25045 <tr><td colspan="6" class="kind">dynamic</td></tr>
25047 <thead class="entries_header">
25049 <th class="th_name">Property Name</th>
25050 <th class="th_type">Type</th>
25051 <th class="th_description">Description</th>
25052 <th class="th_units">Units</th>
25053 <th class="th_range">Range</th>
25054 <th class="th_tags">Tags</th>
25069 <tr class="entry" id="dynamic_android.tonemap.curveBlue">
25070 <td class="entry_name
25072 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
25074 <td class="entry_type">
25075 <span class="entry_type_name">float</span>
25076 <span class="entry_type_container">x</span>
25078 <span class="entry_type_array">
25081 <span class="entry_type_visibility"> [ndk_public]</span>
25084 <span class="entry_type_hwlevel">[full] </span>
25087 <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>
25090 </td> <!-- entry_type -->
25092 <td class="entry_description">
25093 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
25094 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25095 CONTRAST_<wbr/>CURVE.<wbr/></p>
25098 <td class="entry_units">
25101 <td class="entry_range">
25104 <td class="entry_tags">
25108 <tr class="entries_header">
25109 <th class="th_details" colspan="5">Details</th>
25111 <tr class="entry_cont">
25112 <td class="entry_details" colspan="5">
25113 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25118 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25119 <!-- end of entry -->
25122 <tr class="entry" id="dynamic_android.tonemap.curveGreen">
25123 <td class="entry_name
25125 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
25127 <td class="entry_type">
25128 <span class="entry_type_name">float</span>
25129 <span class="entry_type_container">x</span>
25131 <span class="entry_type_array">
25134 <span class="entry_type_visibility"> [ndk_public]</span>
25137 <span class="entry_type_hwlevel">[full] </span>
25140 <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>
25143 </td> <!-- entry_type -->
25145 <td class="entry_description">
25146 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
25147 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25148 CONTRAST_<wbr/>CURVE.<wbr/></p>
25151 <td class="entry_units">
25154 <td class="entry_range">
25157 <td class="entry_tags">
25161 <tr class="entries_header">
25162 <th class="th_details" colspan="5">Details</th>
25164 <tr class="entry_cont">
25165 <td class="entry_details" colspan="5">
25166 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25171 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25172 <!-- end of entry -->
25175 <tr class="entry" id="dynamic_android.tonemap.curveRed">
25176 <td class="entry_name
25178 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
25180 <td class="entry_type">
25181 <span class="entry_type_name">float</span>
25182 <span class="entry_type_container">x</span>
25184 <span class="entry_type_array">
25187 <span class="entry_type_visibility"> [ndk_public]</span>
25190 <span class="entry_type_hwlevel">[full] </span>
25193 <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>
25196 </td> <!-- entry_type -->
25198 <td class="entry_description">
25199 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
25200 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25201 CONTRAST_<wbr/>CURVE.<wbr/></p>
25204 <td class="entry_units">
25207 <td class="entry_range">
25208 <p>0-1 on both input and output coordinates,<wbr/> normalized
25209 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
25212 <td class="entry_tags">
25216 <tr class="entries_header">
25217 <th class="th_details" colspan="5">Details</th>
25219 <tr class="entry_cont">
25220 <td class="entry_details" colspan="5">
25221 <p>Each channel's curve is defined by an array of control points:</p>
25222 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
25223 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
25224 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25225 <p>These are sorted in order of increasing <code>Pin</code>; it is
25226 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25227 define a complete mapping.<wbr/> For input values between control points,<wbr/>
25228 the camera device must linearly interpolate between the control
25230 <p>Each curve can have an independent number of points,<wbr/> and the number
25231 of points can be less than max (that is,<wbr/> the request doesn't have to
25232 always provide a curve with number of points equivalent to
25233 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25234 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
25235 only specify the red channel and the precision is limited to 4
25236 digits,<wbr/> for conciseness.<wbr/></p>
25237 <p>Linear mapping:</p>
25238 <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 ]
25240 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25241 <p>Invert mapping:</p>
25242 <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 ]
25244 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25245 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25246 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25247 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/>
25248 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/>
25249 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/>
25250 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 ]
25252 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25253 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25254 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25255 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/>
25256 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/>
25257 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/>
25258 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 ]
25260 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25264 <tr class="entries_header">
25265 <th class="th_details" colspan="5">HAL Implementation Details</th>
25267 <tr class="entry_cont">
25268 <td class="entry_details" colspan="5">
25269 <p>For good quality of mapping,<wbr/> at least 128 control points are
25270 preferred.<wbr/></p>
25271 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
25272 control points used as are available.<wbr/></p>
25276 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25277 <!-- end of entry -->
25280 <tr class="entry" id="dynamic_android.tonemap.curve">
25281 <td class="entry_name
25283 android.<wbr/>tonemap.<wbr/>curve
25285 <td class="entry_type">
25286 <span class="entry_type_name">float</span>
25288 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
25290 <span class="entry_type_synthetic">[synthetic] </span>
25292 <span class="entry_type_hwlevel">[full] </span>
25297 </td> <!-- entry_type -->
25299 <td class="entry_description">
25300 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
25301 is CONTRAST_<wbr/>CURVE.<wbr/></p>
25304 <td class="entry_units">
25307 <td class="entry_range">
25310 <td class="entry_tags">
25314 <tr class="entries_header">
25315 <th class="th_details" colspan="5">Details</th>
25317 <tr class="entry_cont">
25318 <td class="entry_details" colspan="5">
25319 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
25320 channels respectively.<wbr/> The following example uses the red channel as an
25321 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
25322 Each channel's curve is defined by an array of control points:</p>
25323 <pre><code>curveRed =
25324 [ P0(in,<wbr/> out),<wbr/> P1(in,<wbr/> out),<wbr/> P2(in,<wbr/> out),<wbr/> P3(in,<wbr/> out),<wbr/> ...,<wbr/> PN(in,<wbr/> out) ]
25325 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25326 <p>These are sorted in order of increasing <code>Pin</code>; it is always
25327 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25328 define a complete mapping.<wbr/> For input values between control points,<wbr/>
25329 the camera device must linearly interpolate between the control
25331 <p>Each curve can have an independent number of points,<wbr/> and the number
25332 of points can be less than max (that is,<wbr/> the request doesn't have to
25333 always provide a curve with number of points equivalent to
25334 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25335 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
25336 only specify the red channel and the precision is limited to 4
25337 digits,<wbr/> for conciseness.<wbr/></p>
25338 <p>Linear mapping:</p>
25339 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
25341 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25342 <p>Invert mapping:</p>
25343 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
25345 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25346 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25347 <pre><code>curveRed = [
25348 (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/>
25349 (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/>
25350 (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/>
25351 (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) ]
25353 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25354 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25355 <pre><code>curveRed = [
25356 (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/>
25357 (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/>
25358 (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/>
25359 (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) ]
25361 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25365 <tr class="entries_header">
25366 <th class="th_details" colspan="5">HAL Implementation Details</th>
25368 <tr class="entry_cont">
25369 <td class="entry_details" colspan="5">
25370 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
25371 curveBlue entries.<wbr/></p>
25375 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25376 <!-- end of entry -->
25379 <tr class="entry" id="dynamic_android.tonemap.mode">
25380 <td class="entry_name
25382 android.<wbr/>tonemap.<wbr/>mode
25384 <td class="entry_type">
25385 <span class="entry_type_name entry_type_name_enum">byte</span>
25387 <span class="entry_type_visibility"> [public]</span>
25390 <span class="entry_type_hwlevel">[full] </span>
25394 <ul class="entry_type_enum">
25396 <span class="entry_type_enum_name">CONTRAST_CURVE</span>
25397 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
25398 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
25399 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25400 for applying the tonemapping curve specified by
25401 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
25402 <p>Must not slow down frame rate relative to raw
25403 sensor output.<wbr/></p></span>
25406 <span class="entry_type_enum_name">FAST</span>
25407 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
25408 reducing frame rate compared to raw sensor output.<wbr/></p></span>
25411 <span class="entry_type_enum_name">HIGH_QUALITY</span>
25412 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
25413 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
25416 <span class="entry_type_enum_name">GAMMA_VALUE</span>
25417 <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
25418 tonemapping.<wbr/></p>
25419 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25420 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
25421 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25424 <span class="entry_type_enum_name">PRESET_CURVE</span>
25425 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
25426 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
25427 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25428 for applying the tonemapping curve specified by
25429 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
25430 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25434 </td> <!-- entry_type -->
25436 <td class="entry_description">
25437 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
25440 <td class="entry_units">
25443 <td class="entry_range">
25444 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
25447 <td class="entry_tags">
25451 <tr class="entries_header">
25452 <th class="th_details" colspan="5">Details</th>
25454 <tr class="entry_cont">
25455 <td class="entry_details" colspan="5">
25456 <p>When switching to an application-defined contrast curve by setting
25457 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
25458 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
25459 mapping from input high-bit-depth pixel value to the output
25460 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
25461 and output may change depending on the camera pipeline,<wbr/> the values
25462 are specified by normalized floating-point numbers.<wbr/></p>
25463 <p>More-complex color mapping operations such as 3D color look-up
25464 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
25465 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25466 CONTRAST_<wbr/>CURVE.<wbr/></p>
25467 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
25468 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
25469 These values are always available,<wbr/> and as close as possible to the
25470 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
25471 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
25472 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
25473 roughly the same.<wbr/></p>
25478 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25479 <!-- end of entry -->
25482 <tr class="entry" id="dynamic_android.tonemap.gamma">
25483 <td class="entry_name
25485 android.<wbr/>tonemap.<wbr/>gamma
25487 <td class="entry_type">
25488 <span class="entry_type_name">float</span>
25490 <span class="entry_type_visibility"> [public]</span>
25497 </td> <!-- entry_type -->
25499 <td class="entry_description">
25500 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25501 GAMMA_<wbr/>VALUE</p>
25504 <td class="entry_units">
25507 <td class="entry_range">
25510 <td class="entry_tags">
25514 <tr class="entries_header">
25515 <th class="th_details" colspan="5">Details</th>
25517 <tr class="entry_cont">
25518 <td class="entry_details" colspan="5">
25519 <p>The tonemap curve will be defined the following formula:
25520 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
25521 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
25522 pow is the power function and gamma is the gamma value specified by this
25524 <p>The same curve will be applied to all color channels.<wbr/> The camera device
25525 may clip the input gamma value to its supported range.<wbr/> The actual applied
25526 value will be returned in capture result.<wbr/></p>
25527 <p>The valid range of gamma value varies on different devices,<wbr/> but values
25528 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
25533 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25534 <!-- end of entry -->
25537 <tr class="entry" id="dynamic_android.tonemap.presetCurve">
25538 <td class="entry_name
25540 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
25542 <td class="entry_type">
25543 <span class="entry_type_name entry_type_name_enum">byte</span>
25545 <span class="entry_type_visibility"> [public]</span>
25551 <ul class="entry_type_enum">
25553 <span class="entry_type_enum_name">SRGB</span>
25554 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
25557 <span class="entry_type_enum_name">REC709</span>
25558 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
25562 </td> <!-- entry_type -->
25564 <td class="entry_description">
25565 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25566 PRESET_<wbr/>CURVE</p>
25569 <td class="entry_units">
25572 <td class="entry_range">
25575 <td class="entry_tags">
25579 <tr class="entries_header">
25580 <th class="th_details" colspan="5">Details</th>
25582 <tr class="entry_cont">
25583 <td class="entry_details" colspan="5">
25584 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
25585 <p>sRGB (approximated by 16 control points):</p>
25586 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25587 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
25588 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
25589 <p>Note that above figures show a 16 control points approximation of preset
25590 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
25595 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25596 <!-- end of entry -->
25600 <!-- end of kind -->
25603 <!-- end of section -->
25604 <tr><td colspan="6" id="section_led" class="section">led</td></tr>
25607 <tr><td colspan="6" class="kind">controls</td></tr>
25609 <thead class="entries_header">
25611 <th class="th_name">Property Name</th>
25612 <th class="th_type">Type</th>
25613 <th class="th_description">Description</th>
25614 <th class="th_units">Units</th>
25615 <th class="th_range">Range</th>
25616 <th class="th_tags">Tags</th>
25631 <tr class="entry" id="controls_android.led.transmit">
25632 <td class="entry_name
25634 android.<wbr/>led.<wbr/>transmit
25636 <td class="entry_type">
25637 <span class="entry_type_name entry_type_name_enum">byte</span>
25639 <span class="entry_type_visibility"> [hidden as boolean]</span>
25645 <ul class="entry_type_enum">
25647 <span class="entry_type_enum_name">OFF</span>
25650 <span class="entry_type_enum_name">ON</span>
25654 </td> <!-- entry_type -->
25656 <td class="entry_description">
25657 <p>This LED is nominally used to indicate to the user
25658 that the camera is powered on and may be streaming images back to the
25659 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
25660 disable this when video is processed locally and not transmitted to
25661 any untrusted applications.<wbr/></p>
25662 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
25663 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
25664 data is stored locally on the device.<wbr/></p>
25665 <p>The LED <em>may</em> be off if a trusted application is using the data that
25666 doesn't violate the above rules.<wbr/></p>
25669 <td class="entry_units">
25672 <td class="entry_range">
25675 <td class="entry_tags">
25681 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25682 <!-- end of entry -->
25686 <!-- end of kind -->
25688 <tr><td colspan="6" class="kind">dynamic</td></tr>
25690 <thead class="entries_header">
25692 <th class="th_name">Property Name</th>
25693 <th class="th_type">Type</th>
25694 <th class="th_description">Description</th>
25695 <th class="th_units">Units</th>
25696 <th class="th_range">Range</th>
25697 <th class="th_tags">Tags</th>
25712 <tr class="entry" id="dynamic_android.led.transmit">
25713 <td class="entry_name
25715 android.<wbr/>led.<wbr/>transmit
25717 <td class="entry_type">
25718 <span class="entry_type_name entry_type_name_enum">byte</span>
25720 <span class="entry_type_visibility"> [hidden as boolean]</span>
25726 <ul class="entry_type_enum">
25728 <span class="entry_type_enum_name">OFF</span>
25731 <span class="entry_type_enum_name">ON</span>
25735 </td> <!-- entry_type -->
25737 <td class="entry_description">
25738 <p>This LED is nominally used to indicate to the user
25739 that the camera is powered on and may be streaming images back to the
25740 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
25741 disable this when video is processed locally and not transmitted to
25742 any untrusted applications.<wbr/></p>
25743 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
25744 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
25745 data is stored locally on the device.<wbr/></p>
25746 <p>The LED <em>may</em> be off if a trusted application is using the data that
25747 doesn't violate the above rules.<wbr/></p>
25750 <td class="entry_units">
25753 <td class="entry_range">
25756 <td class="entry_tags">
25762 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25763 <!-- end of entry -->
25767 <!-- end of kind -->
25769 <tr><td colspan="6" class="kind">static</td></tr>
25771 <thead class="entries_header">
25773 <th class="th_name">Property Name</th>
25774 <th class="th_type">Type</th>
25775 <th class="th_description">Description</th>
25776 <th class="th_units">Units</th>
25777 <th class="th_range">Range</th>
25778 <th class="th_tags">Tags</th>
25793 <tr class="entry" id="static_android.led.availableLeds">
25794 <td class="entry_name
25796 android.<wbr/>led.<wbr/>available<wbr/>Leds
25798 <td class="entry_type">
25799 <span class="entry_type_name entry_type_name_enum">byte</span>
25800 <span class="entry_type_container">x</span>
25802 <span class="entry_type_array">
25805 <span class="entry_type_visibility"> [hidden]</span>
25811 <ul class="entry_type_enum">
25813 <span class="entry_type_enum_name">TRANSMIT</span>
25814 <span class="entry_type_enum_notes"><p><a href="#controls_android.led.transmit">android.<wbr/>led.<wbr/>transmit</a> control is used.<wbr/></p></span>
25818 </td> <!-- entry_type -->
25820 <td class="entry_description">
25821 <p>A list of camera LEDs that are available on this system.<wbr/></p>
25824 <td class="entry_units">
25827 <td class="entry_range">
25830 <td class="entry_tags">
25836 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25837 <!-- end of entry -->
25841 <!-- end of kind -->
25844 <!-- end of section -->
25845 <tr><td colspan="6" id="section_info" class="section">info</td></tr>
25848 <tr><td colspan="6" class="kind">static</td></tr>
25850 <thead class="entries_header">
25852 <th class="th_name">Property Name</th>
25853 <th class="th_type">Type</th>
25854 <th class="th_description">Description</th>
25855 <th class="th_units">Units</th>
25856 <th class="th_range">Range</th>
25857 <th class="th_tags">Tags</th>
25872 <tr class="entry" id="static_android.info.supportedHardwareLevel">
25873 <td class="entry_name
25875 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
25877 <td class="entry_type">
25878 <span class="entry_type_name entry_type_name_enum">byte</span>
25880 <span class="entry_type_visibility"> [public]</span>
25883 <span class="entry_type_hwlevel">[legacy] </span>
25887 <ul class="entry_type_enum">
25889 <span class="entry_type_enum_name">LIMITED</span>
25890 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
25892 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
25893 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
25894 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
25895 support for color image capture.<wbr/> The only exception is that the device may
25896 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
25897 measurements and not color images.<wbr/></p>
25898 <p><code>LIMITED</code> devices and above require the use of <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
25899 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
25900 capturing a high-quality still image.<wbr/></p>
25901 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
25902 required to support full-automatic operation and post-processing (<code>OFF</code> is not
25903 supported for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/> or
25904 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
25905 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
25906 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
25909 <span class="entry_type_enum_name">FULL</span>
25910 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
25911 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
25912 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
25913 <p>A <code>FULL</code> device will support below capabilities:</p>
25915 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25916 <code>BURST_<wbr/>CAPTURE</code>)</li>
25917 <li>Per frame control (<a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> <code>==</code> PER_<wbr/>FRAME_<wbr/>CONTROL)</li>
25918 <li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains <code>MANUAL_<wbr/>SENSOR</code>)</li>
25919 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25920 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
25921 <li>The required exposure time range defined in <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
25922 <li>The required maxFrameDuration defined in <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
25925 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
25926 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
25927 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
25930 <span class="entry_type_enum_name">LEGACY</span>
25931 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
25932 <p>Only the stream configurations listed in the <code>LEGACY</code> table in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a>
25933 documentation are supported.<wbr/></p>
25934 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
25935 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
25936 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
25937 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
25938 <p>In addition,<wbr/> the <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is not functional on <code>LEGACY</code>
25939 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
25940 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may
25941 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
25942 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
25943 enable the flash.<wbr/></p></span>
25946 <span class="entry_type_enum_name">3</span>
25947 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
25948 FULL-level capabilities.<wbr/></p>
25949 <p>The stream configurations listed in the <code>LEVEL_<wbr/>3</code>,<wbr/> <code>RAW</code>,<wbr/> <code>FULL</code>,<wbr/> <code>LEGACY</code> and
25950 <code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a>
25951 documentation are guaranteed to be supported.<wbr/></p>
25952 <p>The following additional capabilities are guaranteed to be supported:</p>
25954 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25955 <code>YUV_<wbr/>REPROCESSING</code>)</li>
25956 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25957 <code>RAW</code>)</li>
25962 </td> <!-- entry_type -->
25964 <td class="entry_description">
25965 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
25968 <td class="entry_units">
25971 <td class="entry_range">
25974 <td class="entry_tags">
25978 <tr class="entries_header">
25979 <th class="th_details" colspan="5">Details</th>
25981 <tr class="entry_cont">
25982 <td class="entry_details" colspan="5">
25983 <p>The supported hardware level is a high-level description of the camera device's
25984 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional
25985 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
25986 The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p>
25987 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
25988 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
25989 the following code snippet can be used:</p>
25990 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
25991 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
25992 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
25993 if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
25994 return requiredLevel == deviceLevel;
25996 //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
25997 return requiredLevel <= deviceLevel;
26000 <p>At a high level,<wbr/> the levels are:</p>
26002 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
26003 Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
26004 <li><code>LIMITED</code> devices represent the
26005 baseline feature set,<wbr/> and may also include additional capabilities that are
26006 subsets of <code>FULL</code>.<wbr/></li>
26007 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
26008 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
26009 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
26010 with additional output stream configurations.<wbr/></li>
26012 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The
26013 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
26014 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
26015 ranges defined in individual <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> entries.<wbr/></p>
26016 <p>Some features are not part of any particular hardware level or capability and must be
26017 queried separately.<wbr/> These include:</p>
26019 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
26020 <li>Precision lens control (<a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a> <code>==</code> CALIBRATED)</li>
26021 <li>Face detection (<a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>)</li>
26022 <li>Optical or electrical image stabilization
26023 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
26024 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
26029 <tr class="entries_header">
26030 <th class="th_details" colspan="5">HAL Implementation Details</th>
26032 <tr class="entry_cont">
26033 <td class="entry_details" colspan="5">
26034 <p>The camera 3 HAL device can implement one of three possible operational modes; LIMITED,<wbr/>
26035 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
26036 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
26037 mode has hardware requirements roughly in line with those for a camera HAL device v1
26038 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
26039 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
26040 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
26041 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
26042 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on HALv1 devices,<wbr/> and is implemented
26043 by the camera framework code.<wbr/></p>
26047 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26048 <!-- end of entry -->
26052 <!-- end of kind -->
26055 <!-- end of section -->
26056 <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
26059 <tr><td colspan="6" class="kind">controls</td></tr>
26061 <thead class="entries_header">
26063 <th class="th_name">Property Name</th>
26064 <th class="th_type">Type</th>
26065 <th class="th_description">Description</th>
26066 <th class="th_units">Units</th>
26067 <th class="th_range">Range</th>
26068 <th class="th_tags">Tags</th>
26083 <tr class="entry" id="controls_android.blackLevel.lock">
26084 <td class="entry_name
26086 android.<wbr/>black<wbr/>Level.<wbr/>lock
26088 <td class="entry_type">
26089 <span class="entry_type_name entry_type_name_enum">byte</span>
26091 <span class="entry_type_visibility"> [public as boolean]</span>
26094 <span class="entry_type_hwlevel">[full] </span>
26098 <ul class="entry_type_enum">
26100 <span class="entry_type_enum_name">OFF</span>
26103 <span class="entry_type_enum_name">ON</span>
26107 </td> <!-- entry_type -->
26109 <td class="entry_description">
26110 <p>Whether black-level compensation is locked
26111 to its current values,<wbr/> or is free to vary.<wbr/></p>
26114 <td class="entry_units">
26117 <td class="entry_range">
26120 <td class="entry_tags">
26121 <ul class="entry_tags">
26122 <li><a href="#tag_HAL2">HAL2</a></li>
26127 <tr class="entries_header">
26128 <th class="th_details" colspan="5">Details</th>
26130 <tr class="entry_cont">
26131 <td class="entry_details" colspan="5">
26132 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
26133 compensation will not change until the lock is set to
26134 <code>false</code> (OFF).<wbr/></p>
26135 <p>Since changes to certain capture parameters (such as
26136 exposure time) may require resetting of black level
26137 compensation,<wbr/> the camera device must report whether setting
26138 the black level lock was successful in the output result
26139 metadata.<wbr/></p>
26140 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
26142 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
26143 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
26144 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
26145 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26146 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26147 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26149 <p>And the exposure change in Request 4 requires the camera
26150 device to reset the black level offsets,<wbr/> then the output
26151 result metadata is expected to be:</p>
26153 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
26154 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
26155 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
26156 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
26157 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26158 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26160 <p>This indicates to the application that on frame 4,<wbr/> black
26161 levels were reset due to exposure value changes,<wbr/> and pixel
26162 values may not be consistent across captures.<wbr/></p>
26163 <p>The camera device will maintain the lock to the extent
26164 possible,<wbr/> only overriding the lock to OFF when changes to
26165 other request parameters require a black level recalculation
26166 or reset.<wbr/></p>
26170 <tr class="entries_header">
26171 <th class="th_details" colspan="5">HAL Implementation Details</th>
26173 <tr class="entry_cont">
26174 <td class="entry_details" colspan="5">
26175 <p>If for some reason black level locking is no longer possible
26176 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
26177 black level offsets to be recalculated),<wbr/> then the HAL must
26178 override this request (and it must report 'OFF' when this
26179 does happen) until the next capture for which locking is
26180 possible again.<wbr/></p>
26184 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26185 <!-- end of entry -->
26189 <!-- end of kind -->
26191 <tr><td colspan="6" class="kind">dynamic</td></tr>
26193 <thead class="entries_header">
26195 <th class="th_name">Property Name</th>
26196 <th class="th_type">Type</th>
26197 <th class="th_description">Description</th>
26198 <th class="th_units">Units</th>
26199 <th class="th_range">Range</th>
26200 <th class="th_tags">Tags</th>
26215 <tr class="entry" id="dynamic_android.blackLevel.lock">
26216 <td class="entry_name
26218 android.<wbr/>black<wbr/>Level.<wbr/>lock
26220 <td class="entry_type">
26221 <span class="entry_type_name entry_type_name_enum">byte</span>
26223 <span class="entry_type_visibility"> [public as boolean]</span>
26226 <span class="entry_type_hwlevel">[full] </span>
26230 <ul class="entry_type_enum">
26232 <span class="entry_type_enum_name">OFF</span>
26235 <span class="entry_type_enum_name">ON</span>
26239 </td> <!-- entry_type -->
26241 <td class="entry_description">
26242 <p>Whether black-level compensation is locked
26243 to its current values,<wbr/> or is free to vary.<wbr/></p>
26246 <td class="entry_units">
26249 <td class="entry_range">
26252 <td class="entry_tags">
26253 <ul class="entry_tags">
26254 <li><a href="#tag_HAL2">HAL2</a></li>
26259 <tr class="entries_header">
26260 <th class="th_details" colspan="5">Details</th>
26262 <tr class="entry_cont">
26263 <td class="entry_details" colspan="5">
26264 <p>Whether the black level offset was locked for this frame.<wbr/> Should be
26265 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
26266 a change in other capture settings forced the camera device to
26267 perform a black level reset.<wbr/></p>
26271 <tr class="entries_header">
26272 <th class="th_details" colspan="5">HAL Implementation Details</th>
26274 <tr class="entry_cont">
26275 <td class="entry_details" colspan="5">
26276 <p>If for some reason black level locking is no longer possible
26277 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
26278 black level offsets to be recalculated),<wbr/> then the HAL must
26279 override this request (and it must report 'OFF' when this
26280 does happen) until the next capture for which locking is
26281 possible again.<wbr/></p>
26285 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26286 <!-- end of entry -->
26290 <!-- end of kind -->
26293 <!-- end of section -->
26294 <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
26297 <tr><td colspan="6" class="kind">dynamic</td></tr>
26299 <thead class="entries_header">
26301 <th class="th_name">Property Name</th>
26302 <th class="th_type">Type</th>
26303 <th class="th_description">Description</th>
26304 <th class="th_units">Units</th>
26305 <th class="th_range">Range</th>
26306 <th class="th_tags">Tags</th>
26321 <tr class="entry" id="dynamic_android.sync.frameNumber">
26322 <td class="entry_name
26324 android.<wbr/>sync.<wbr/>frame<wbr/>Number
26326 <td class="entry_type">
26327 <span class="entry_type_name entry_type_name_enum">int64</span>
26329 <span class="entry_type_visibility"> [ndk_public]</span>
26332 <span class="entry_type_hwlevel">[legacy] </span>
26336 <ul class="entry_type_enum">
26338 <span class="entry_type_enum_name">CONVERGING</span>
26339 <span class="entry_type_enum_value">-1</span>
26340 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
26341 <p>Synchronization is in progress,<wbr/> and reading metadata from this
26342 result may include a mix of data that have taken effect since the
26343 last synchronization time.<wbr/></p>
26344 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
26345 this value will update to the actual frame number frame number
26346 the result is guaranteed to be synchronized to (as long as the
26347 request settings remain constant).<wbr/></p></span>
26350 <span class="entry_type_enum_name">UNKNOWN</span>
26351 <span class="entry_type_enum_value">-2</span>
26352 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
26353 <p>The result may have already converged,<wbr/> or it may be in
26354 progress.<wbr/> Reading from this result may include some mix
26355 of settings from past requests.<wbr/></p>
26356 <p>After a settings change,<wbr/> the new settings will eventually all
26357 take effect for the output buffers and results.<wbr/> However,<wbr/> this
26358 value will not change when that happens.<wbr/> Altering settings
26359 rapidly may provide outcomes using mixes of settings from recent
26360 requests.<wbr/></p>
26361 <p>This value is intended primarily for backwards compatibility with
26362 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
26366 </td> <!-- entry_type -->
26368 <td class="entry_description">
26369 <p>The frame number corresponding to the last request
26370 with which the output result (metadata + buffers) has been fully
26371 synchronized.<wbr/></p>
26374 <td class="entry_units">
26377 <td class="entry_range">
26378 <p>Either a non-negative value corresponding to a
26379 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
26382 <td class="entry_tags">
26383 <ul class="entry_tags">
26384 <li><a href="#tag_V1">V1</a></li>
26389 <tr class="entries_header">
26390 <th class="th_details" colspan="5">Details</th>
26392 <tr class="entry_cont">
26393 <td class="entry_details" colspan="5">
26394 <p>When a request is submitted to the camera device,<wbr/> there is usually a
26395 delay of several frames before the controls get applied.<wbr/> A camera
26396 device may either choose to account for this delay by implementing a
26397 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
26398 it may start streaming control changes that span over several frame
26399 boundaries.<wbr/></p>
26400 <p>In the latter case,<wbr/> whenever a request's settings change relative to
26401 the previous submitted request,<wbr/> the full set of changes may take
26402 multiple frame durations to fully take effect.<wbr/> Some settings may
26403 take effect sooner (in less frame durations) than others.<wbr/></p>
26404 <p>While a set of control changes are being propagated,<wbr/> this value
26405 will be CONVERGING.<wbr/></p>
26406 <p>Once it is fully known that a set of control changes have been
26407 finished propagating,<wbr/> and the resulting updated control settings
26408 have been read back by the camera device,<wbr/> this value will be set
26409 to a non-negative frame number (corresponding to the request to
26410 which the results have synchronized to).<wbr/></p>
26411 <p>Older camera device implementations may not have a way to detect
26412 when all camera controls have been applied,<wbr/> and will always set this
26413 value to UNKNOWN.<wbr/></p>
26414 <p>FULL capability devices will always have this value set to the
26415 frame number of the request corresponding to this result.<wbr/></p>
26416 <p><em>Further details</em>:</p>
26418 <li>Whenever a request differs from the last request,<wbr/> any future
26419 results not yet returned may have this value set to CONVERGING (this
26420 could include any in-progress captures not yet returned by the camera
26421 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
26422 <li>Submitting a series of multiple requests that differ from the
26423 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
26424 moves the new synchronization frame to the last non-repeating
26425 request (using the smallest frame number from the contiguous list of
26426 repeating requests).<wbr/></li>
26427 <li>Submitting the same request repeatedly will not change this value
26428 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
26429 <li>When this value changes to non-negative,<wbr/> that means that all of the
26430 metadata controls from the request have been applied,<wbr/> all of the
26431 metadata controls from the camera device have been read to the
26432 updated values (into the result),<wbr/> and all of the graphics buffers
26433 corresponding to this result are also synchronized to the request.<wbr/></li>
26435 <p><em>Pipeline considerations</em>:</p>
26436 <p>Submitting a request with updated controls relative to the previously
26437 submitted requests may also invalidate the synchronization state
26438 of all the results corresponding to currently in-flight requests.<wbr/></p>
26439 <p>In other words,<wbr/> results for this current request and up to
26440 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
26441 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
26445 <tr class="entries_header">
26446 <th class="th_details" colspan="5">HAL Implementation Details</th>
26448 <tr class="entry_cont">
26449 <td class="entry_details" colspan="5">
26450 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
26451 is also UNKNOWN.<wbr/></p>
26452 <p>FULL capability devices should simply set this value to the
26453 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
26457 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26458 <!-- end of entry -->
26462 <!-- end of kind -->
26464 <tr><td colspan="6" class="kind">static</td></tr>
26466 <thead class="entries_header">
26468 <th class="th_name">Property Name</th>
26469 <th class="th_type">Type</th>
26470 <th class="th_description">Description</th>
26471 <th class="th_units">Units</th>
26472 <th class="th_range">Range</th>
26473 <th class="th_tags">Tags</th>
26488 <tr class="entry" id="static_android.sync.maxLatency">
26489 <td class="entry_name
26491 android.<wbr/>sync.<wbr/>max<wbr/>Latency
26493 <td class="entry_type">
26494 <span class="entry_type_name entry_type_name_enum">int32</span>
26496 <span class="entry_type_visibility"> [public]</span>
26499 <span class="entry_type_hwlevel">[legacy] </span>
26503 <ul class="entry_type_enum">
26505 <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
26506 <span class="entry_type_enum_value">0</span>
26507 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
26508 <p>Changing controls over multiple requests one after another will
26509 produce results that have those controls applied atomically
26510 each frame.<wbr/></p>
26511 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
26514 <span class="entry_type_enum_name">UNKNOWN</span>
26515 <span class="entry_type_enum_value">-1</span>
26516 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
26517 of the past requests applied to the camera settings.<wbr/></p>
26518 <p>By submitting a series of identical requests,<wbr/> the camera device
26519 will eventually have the camera settings applied,<wbr/> but it is
26520 unknown when that exact point will be.<wbr/></p>
26521 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
26525 </td> <!-- entry_type -->
26527 <td class="entry_description">
26528 <p>The maximum number of frames that can occur after a request
26529 (different than the previous) has been submitted,<wbr/> and before the
26530 result's state becomes synchronized.<wbr/></p>
26533 <td class="entry_units">
26537 <td class="entry_range">
26538 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
26541 <td class="entry_tags">
26542 <ul class="entry_tags">
26543 <li><a href="#tag_V1">V1</a></li>
26548 <tr class="entries_header">
26549 <th class="th_details" colspan="5">Details</th>
26551 <tr class="entry_cont">
26552 <td class="entry_details" colspan="5">
26553 <p>This defines the maximum distance (in number of metadata results),<wbr/>
26554 between the frame number of the request that has new controls to apply
26555 and the frame number of the result that has all the controls applied.<wbr/></p>
26556 <p>In other words this acts as an upper boundary for how many frames
26557 must occur before the camera device knows for a fact that the new
26558 submitted camera settings have been applied in outgoing frames.<wbr/></p>
26562 <tr class="entries_header">
26563 <th class="th_details" colspan="5">HAL Implementation Details</th>
26565 <tr class="entry_cont">
26566 <td class="entry_details" colspan="5">
26567 <p>For example if maxLatency was 2,<wbr/></p>
26568 <pre><code>initial request = X (repeating)
26574 where requestN has frameNumber N,<wbr/> and the first of the repeating
26575 initial request's has frameNumber F (and F < 1).<wbr/>
26577 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
26578 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
26579 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
26580 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
26581 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
26583 where resultN has frameNumber N.<wbr/>
26585 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
26586 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
26587 <code>4 - 2 = 2</code>.<wbr/></p>
26588 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
26589 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
26590 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
26591 <p>LIMITED devices are strongly encouraged to use a non-negative
26592 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
26593 to know when sensor settings have been applied.<wbr/></p>
26597 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26598 <!-- end of entry -->
26602 <!-- end of kind -->
26605 <!-- end of section -->
26606 <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr>
26609 <tr><td colspan="6" class="kind">controls</td></tr>
26611 <thead class="entries_header">
26613 <th class="th_name">Property Name</th>
26614 <th class="th_type">Type</th>
26615 <th class="th_description">Description</th>
26616 <th class="th_units">Units</th>
26617 <th class="th_range">Range</th>
26618 <th class="th_tags">Tags</th>
26633 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
26634 <td class="entry_name
26636 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
26638 <td class="entry_type">
26639 <span class="entry_type_name">float</span>
26641 <span class="entry_type_visibility"> [java_public]</span>
26644 <span class="entry_type_hwlevel">[limited] </span>
26649 </td> <!-- entry_type -->
26651 <td class="entry_description">
26652 <p>The amount of exposure time increase factor applied to the original output
26653 frame by the application processing before sending for reprocessing.<wbr/></p>
26656 <td class="entry_units">
26657 Relative exposure time increase factor.<wbr/>
26660 <td class="entry_range">
26661 <p>>= 1.<wbr/>0</p>
26664 <td class="entry_tags">
26665 <ul class="entry_tags">
26666 <li><a href="#tag_REPROC">REPROC</a></li>
26671 <tr class="entries_header">
26672 <th class="th_details" colspan="5">Details</th>
26674 <tr class="entry_cont">
26675 <td class="entry_details" colspan="5">
26676 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
26677 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
26678 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
26679 output frames to effectively reduce the noise to the same level as a frame that was
26680 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
26681 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
26682 the camera device is that the amount of noise in the image would be approximately what
26683 would be expected if the original capture parameters had been a sensitivity of
26684 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
26685 than S and T respectively.<wbr/> If the captured images were processed by the application
26686 before being sent for reprocessing,<wbr/> then the application may have used image processing
26687 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
26688 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
26689 control,<wbr/> the application can communicate to the camera device the actual noise level
26690 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
26691 device can select appropriate noise reduction and edge enhancement parameters to avoid
26692 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
26693 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
26694 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
26695 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
26696 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
26697 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
26698 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
26699 produce the best quality images.<wbr/></p>
26700 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
26701 buffer in a way that affects its effective exposure time.<wbr/></p>
26702 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
26703 reduction reprocessing,<wbr/> it is only effective when <code><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> != OFF</code>.<wbr/>
26704 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
26705 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
26710 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26711 <!-- end of entry -->
26715 <!-- end of kind -->
26717 <tr><td colspan="6" class="kind">dynamic</td></tr>
26719 <thead class="entries_header">
26721 <th class="th_name">Property Name</th>
26722 <th class="th_type">Type</th>
26723 <th class="th_description">Description</th>
26724 <th class="th_units">Units</th>
26725 <th class="th_range">Range</th>
26726 <th class="th_tags">Tags</th>
26741 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
26742 <td class="entry_name
26744 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
26746 <td class="entry_type">
26747 <span class="entry_type_name">float</span>
26749 <span class="entry_type_visibility"> [java_public]</span>
26752 <span class="entry_type_hwlevel">[limited] </span>
26757 </td> <!-- entry_type -->
26759 <td class="entry_description">
26760 <p>The amount of exposure time increase factor applied to the original output
26761 frame by the application processing before sending for reprocessing.<wbr/></p>
26764 <td class="entry_units">
26765 Relative exposure time increase factor.<wbr/>
26768 <td class="entry_range">
26769 <p>>= 1.<wbr/>0</p>
26772 <td class="entry_tags">
26773 <ul class="entry_tags">
26774 <li><a href="#tag_REPROC">REPROC</a></li>
26779 <tr class="entries_header">
26780 <th class="th_details" colspan="5">Details</th>
26782 <tr class="entry_cont">
26783 <td class="entry_details" colspan="5">
26784 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
26785 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
26786 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
26787 output frames to effectively reduce the noise to the same level as a frame that was
26788 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
26789 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
26790 the camera device is that the amount of noise in the image would be approximately what
26791 would be expected if the original capture parameters had been a sensitivity of
26792 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
26793 than S and T respectively.<wbr/> If the captured images were processed by the application
26794 before being sent for reprocessing,<wbr/> then the application may have used image processing
26795 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
26796 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
26797 control,<wbr/> the application can communicate to the camera device the actual noise level
26798 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
26799 device can select appropriate noise reduction and edge enhancement parameters to avoid
26800 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
26801 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
26802 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
26803 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
26804 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
26805 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
26806 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
26807 produce the best quality images.<wbr/></p>
26808 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
26809 buffer in a way that affects its effective exposure time.<wbr/></p>
26810 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
26811 reduction reprocessing,<wbr/> it is only effective when <code><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> != OFF</code>.<wbr/>
26812 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
26813 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
26818 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26819 <!-- end of entry -->
26823 <!-- end of kind -->
26825 <tr><td colspan="6" class="kind">static</td></tr>
26827 <thead class="entries_header">
26829 <th class="th_name">Property Name</th>
26830 <th class="th_type">Type</th>
26831 <th class="th_description">Description</th>
26832 <th class="th_units">Units</th>
26833 <th class="th_range">Range</th>
26834 <th class="th_tags">Tags</th>
26849 <tr class="entry" id="static_android.reprocess.maxCaptureStall">
26850 <td class="entry_name
26852 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
26854 <td class="entry_type">
26855 <span class="entry_type_name">int32</span>
26857 <span class="entry_type_visibility"> [java_public]</span>
26860 <span class="entry_type_hwlevel">[limited] </span>
26865 </td> <!-- entry_type -->
26867 <td class="entry_description">
26868 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
26869 reprocess capture request.<wbr/></p>
26872 <td class="entry_units">
26873 Number of frames.<wbr/>
26876 <td class="entry_range">
26880 <td class="entry_tags">
26881 <ul class="entry_tags">
26882 <li><a href="#tag_REPROC">REPROC</a></li>
26887 <tr class="entries_header">
26888 <th class="th_details" colspan="5">Details</th>
26890 <tr class="entry_cont">
26891 <td class="entry_details" colspan="5">
26892 <p>The key describes the maximal interference that one reprocess (input) request
26893 can introduce to the camera simultaneous streaming of regular (output) capture
26894 requests,<wbr/> including repeating requests.<wbr/></p>
26895 <p>When a reprocessing capture request is submitted while a camera output repeating request
26896 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
26897 pipeline for at least one frame duration so that the camera device is unable to process
26898 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
26899 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
26900 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
26901 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
26902 the worst-case number of frame stall introduced by one reprocess request with any kind of
26903 formats/<wbr/>sizes combination.<wbr/></p>
26904 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
26905 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
26906 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
26907 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
26908 YUV_<wbr/>REPROCESSING).<wbr/></p>
26913 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26914 <!-- end of entry -->
26918 <!-- end of kind -->
26921 <!-- end of section -->
26922 <tr><td colspan="6" id="section_depth" class="section">depth</td></tr>
26925 <tr><td colspan="6" class="kind">static</td></tr>
26927 <thead class="entries_header">
26929 <th class="th_name">Property Name</th>
26930 <th class="th_type">Type</th>
26931 <th class="th_description">Description</th>
26932 <th class="th_units">Units</th>
26933 <th class="th_range">Range</th>
26934 <th class="th_tags">Tags</th>
26949 <tr class="entry" id="static_android.depth.maxDepthSamples">
26950 <td class="entry_name
26952 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
26954 <td class="entry_type">
26955 <span class="entry_type_name">int32</span>
26957 <span class="entry_type_visibility"> [system]</span>
26960 <span class="entry_type_hwlevel">[limited] </span>
26965 </td> <!-- entry_type -->
26967 <td class="entry_description">
26968 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
26971 <td class="entry_units">
26974 <td class="entry_range">
26977 <td class="entry_tags">
26978 <ul class="entry_tags">
26979 <li><a href="#tag_DEPTH">DEPTH</a></li>
26984 <tr class="entries_header">
26985 <th class="th_details" colspan="5">Details</th>
26987 <tr class="entry_cont">
26988 <td class="entry_details" colspan="5">
26989 <p>If a camera device supports outputting depth range data in the form of a depth point
26990 cloud (<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a>),<wbr/> this is the maximum
26991 number of points an output buffer may contain.<wbr/></p>
26992 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
26993 If output in the depth point cloud format is not supported,<wbr/> this entry will
26994 not be defined.<wbr/></p>
26999 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27000 <!-- end of entry -->
27003 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
27004 <td class="entry_name
27006 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
27008 <td class="entry_type">
27009 <span class="entry_type_name entry_type_name_enum">int32</span>
27010 <span class="entry_type_container">x</span>
27012 <span class="entry_type_array">
27015 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
27018 <span class="entry_type_hwlevel">[limited] </span>
27022 <ul class="entry_type_enum">
27024 <span class="entry_type_enum_name">OUTPUT</span>
27027 <span class="entry_type_enum_name">INPUT</span>
27031 </td> <!-- entry_type -->
27033 <td class="entry_description">
27034 <p>The available depth dataspace stream
27035 configurations that this camera device supports
27036 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
27039 <td class="entry_units">
27042 <td class="entry_range">
27045 <td class="entry_tags">
27046 <ul class="entry_tags">
27047 <li><a href="#tag_DEPTH">DEPTH</a></li>
27052 <tr class="entries_header">
27053 <th class="th_details" colspan="5">Details</th>
27055 <tr class="entry_cont">
27056 <td class="entry_details" colspan="5">
27057 <p>These are output stream configurations for use with
27058 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
27059 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
27060 <p>Only devices that support depth output for at least
27061 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
27062 this entry.<wbr/></p>
27063 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
27064 sparse depth point cloud must report a single entry for
27065 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
27066 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
27067 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
27072 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27073 <!-- end of entry -->
27076 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
27077 <td class="entry_name
27079 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
27081 <td class="entry_type">
27082 <span class="entry_type_name">int64</span>
27083 <span class="entry_type_container">x</span>
27085 <span class="entry_type_array">
27088 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
27091 <span class="entry_type_hwlevel">[limited] </span>
27096 </td> <!-- entry_type -->
27098 <td class="entry_description">
27099 <p>This lists the minimum frame duration for each
27100 format/<wbr/>size combination for depth output formats.<wbr/></p>
27103 <td class="entry_units">
27104 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
27107 <td class="entry_range">
27110 <td class="entry_tags">
27111 <ul class="entry_tags">
27112 <li><a href="#tag_DEPTH">DEPTH</a></li>
27117 <tr class="entries_header">
27118 <th class="th_details" colspan="5">Details</th>
27120 <tr class="entry_cont">
27121 <td class="entry_details" colspan="5">
27122 <p>This should correspond to the frame duration when only that
27123 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
27124 set to either OFF or FAST.<wbr/></p>
27125 <p>When multiple streams are used in a request,<wbr/> the minimum frame
27126 duration will be max(individual stream min durations).<wbr/></p>
27127 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
27128 is the same regardless of whether the stream is input or output.<wbr/></p>
27129 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
27130 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
27131 calculating the max frame rate.<wbr/></p>
27132 <p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
27137 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27138 <!-- end of entry -->
27141 <tr class="entry" id="static_android.depth.availableDepthStallDurations">
27142 <td class="entry_name
27144 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
27146 <td class="entry_type">
27147 <span class="entry_type_name">int64</span>
27148 <span class="entry_type_container">x</span>
27150 <span class="entry_type_array">
27153 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
27156 <span class="entry_type_hwlevel">[limited] </span>
27161 </td> <!-- entry_type -->
27163 <td class="entry_description">
27164 <p>This lists the maximum stall duration for each
27165 output format/<wbr/>size combination for depth streams.<wbr/></p>
27168 <td class="entry_units">
27169 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
27172 <td class="entry_range">
27175 <td class="entry_tags">
27176 <ul class="entry_tags">
27177 <li><a href="#tag_DEPTH">DEPTH</a></li>
27182 <tr class="entries_header">
27183 <th class="th_details" colspan="5">Details</th>
27185 <tr class="entry_cont">
27186 <td class="entry_details" colspan="5">
27187 <p>A stall duration is how much extra time would get added
27188 to the normal minimum frame duration for a repeating request
27189 that has streams with non-zero stall.<wbr/></p>
27190 <p>This functions similarly to
27191 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
27193 <p>All depth output stream formats may have a nonzero stall
27194 duration.<wbr/></p>
27199 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27200 <!-- end of entry -->
27203 <tr class="entry" id="static_android.depth.depthIsExclusive">
27204 <td class="entry_name
27206 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
27208 <td class="entry_type">
27209 <span class="entry_type_name entry_type_name_enum">byte</span>
27211 <span class="entry_type_visibility"> [public as boolean]</span>
27214 <span class="entry_type_hwlevel">[limited] </span>
27218 <ul class="entry_type_enum">
27220 <span class="entry_type_enum_name">FALSE</span>
27223 <span class="entry_type_enum_name">TRUE</span>
27227 </td> <!-- entry_type -->
27229 <td class="entry_description">
27230 <p>Indicates whether a capture request may target both a
27231 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
27232 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
27235 <td class="entry_units">
27238 <td class="entry_range">
27241 <td class="entry_tags">
27245 <tr class="entries_header">
27246 <th class="th_details" colspan="5">Details</th>
27248 <tr class="entry_cont">
27249 <td class="entry_details" colspan="5">
27250 <p>If TRUE,<wbr/> including both depth and color outputs in a single
27251 capture request is not supported.<wbr/> An application must interleave color
27252 and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types
27253 of output.<wbr/></p>
27254 <p>Typically,<wbr/> this restriction exists on camera devices that
27255 need to emit a specific pattern or wavelength of light to
27256 measure depth values,<wbr/> which causes the color image to be
27257 corrupted during depth measurement.<wbr/></p>
27262 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27263 <!-- end of entry -->
27267 <!-- end of kind -->
27270 <!-- end of section -->
27271 <!-- </namespace> -->
27274 <div class="tags" id="tag_index">
27277 <li id="tag_BC">BC -
27278 Needed for backwards compatibility with old Java API
27280 <ul class="tags_entries">
27281 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
27282 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
27283 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
27284 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
27285 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
27286 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
27287 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
27288 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
27289 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
27290 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
27291 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
27292 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
27293 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
27294 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
27295 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
27296 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
27297 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
27298 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
27299 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
27300 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
27301 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
27302 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
27303 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
27304 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
27305 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
27306 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
27307 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
27308 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
27309 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
27310 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
27311 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
27312 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
27313 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
27314 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
27315 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
27316 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
27317 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
27318 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
27319 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
27320 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
27321 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
27322 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
27323 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
27324 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
27325 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
27326 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
27327 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
27328 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
27329 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
27330 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
27331 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
27332 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
27333 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
27334 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
27335 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
27336 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
27337 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
27338 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
27339 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
27340 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
27341 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
27342 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
27343 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
27344 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
27345 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
27346 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
27347 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
27349 </li> <!-- tag_BC -->
27350 <li id="tag_V1">V1 -
27351 New features for first camera 2 release (API1)
27353 <ul class="tags_entries">
27354 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
27355 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
27356 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
27357 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
27358 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
27359 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
27360 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
27361 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
27362 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
27363 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
27364 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
27365 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
27366 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
27367 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
27368 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
27369 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
27370 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
27371 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
27372 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
27373 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
27374 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
27375 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
27376 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
27377 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
27378 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
27379 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
27380 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
27381 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
27382 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
27383 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
27384 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
27385 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
27386 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
27387 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
27388 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
27389 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
27390 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
27391 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
27392 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
27393 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
27394 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
27395 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
27396 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
27397 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
27398 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
27400 </li> <!-- tag_V1 -->
27401 <li id="tag_RAW">RAW -
27402 Needed for useful RAW image processing and DNG file support
27404 <ul class="tags_entries">
27405 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
27406 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
27407 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
27408 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
27409 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
27410 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
27411 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
27412 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
27413 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
27414 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
27415 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
27416 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
27417 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
27418 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
27419 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
27420 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
27421 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
27422 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
27423 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
27424 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
27425 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
27426 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
27427 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
27428 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
27429 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
27430 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
27431 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
27432 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
27433 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
27435 </li> <!-- tag_RAW -->
27436 <li id="tag_HAL2">HAL2 -
27437 Entry is only used by camera device HAL 2.x
27439 <ul class="tags_entries">
27440 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
27441 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
27442 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
27443 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
27444 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
27446 </li> <!-- tag_HAL2 -->
27447 <li id="tag_FULL">FULL -
27448 Entry is required for full hardware level devices, and optional for other hardware levels
27450 <ul class="tags_entries">
27451 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
27453 </li> <!-- tag_FULL -->
27454 <li id="tag_DEPTH">DEPTH -
27455 Entry is required for the depth capability.
27457 <ul class="tags_entries">
27458 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
27459 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
27460 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
27461 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
27462 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
27463 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
27464 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
27465 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
27467 </li> <!-- tag_DEPTH -->
27468 <li id="tag_REPROC">REPROC -
27469 Entry is required for the YUV or PRIVATE reprocessing capability.
27471 <ul class="tags_entries">
27472 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
27473 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
27474 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
27475 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
27476 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
27477 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
27478 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
27479 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
27480 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
27481 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
27483 </li> <!-- tag_REPROC -->
27484 <li id="tag_FUTURE">FUTURE -
27485 Entry is under-specified and is not required for now. This is for book-keeping purpose,
27486 do not implement or use it, it may be revised for future.
27488 <ul class="tags_entries">
27489 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
27490 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
27491 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
27492 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
27493 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
27494 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
27495 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
27496 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
27497 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
27498 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
27499 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
27500 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
27501 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
27502 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
27503 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
27504 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
27505 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
27506 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
27507 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
27508 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
27509 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
27511 </li> <!-- tag_FUTURE -->
27515 [ <a href="#">top</a> ]