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: 17% }
47 .th_description { width: 20% }
48 .th_range { width: 8% }
49 .th_hal_version { width: 5% }
50 td { font-size: 0.9em; }
52 /* hide the first thead, we need it there only to enforce column sizes */
53 .thead_dummy { visibility: hidden; }
56 .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
57 .entry_name_deprecated { text-decoration:line-through; }
59 /* Entry type flair */
60 .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
61 .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
62 .entry_type_visibility { font-weight: bolder; padding-left:1em}
63 .entry_type_synthetic { font-weight: bolder; color: #996600; }
64 .entry_type_hwlevel { font-weight: bolder; color: #000066; }
65 .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
66 .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
67 .entry_type_enum_notes:before { content:" - " }
68 .entry_type_enum_notes>p:first-child { display:inline; }
69 .entry_type_enum_value:before { content:" = " }
70 .entry_type_enum_value { font-family: monospace; }
71 .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
72 .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
73 .entry_range_deprecated { font-weight: bolder; }
75 /* Entry tags flair */
76 .entry_tags ul { list-style-type: none; }
78 /* Entry details (full docs) flair */
79 .entry_details_header { font-weight: bold; background-color: #dddddd;
80 text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
82 /* Entry spacer flair */
83 .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
85 /* TODO: generate abbr element for each tag link? */
86 /* TODO for each x.y.z try to link it to the entry */
94 supposedly there is a bug in chrome that it lays out tables before
95 it knows its being printed, so the page-break-* styles are ignored
97 tr { page-break-after: always; page-break-inside: avoid; }
106 <h1>Android Camera HAL3.2 Properties</h1>
109 <h2>Table of Contents</h2>
111 <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
113 <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
114 <ul class="toc_section">
116 <span class="toc_kind_header">controls</span>
117 <ul class="toc_section">
119 ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
121 ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
123 ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
125 ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
129 <span class="toc_kind_header">dynamic</span>
130 <ul class="toc_section">
132 ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
134 ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
136 ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
138 ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
142 <span class="toc_kind_header">static</span>
143 <ul class="toc_section">
145 ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
148 </ul> <!-- toc_section -->
151 <span class="toc_section_header"><a href="#section_control">control</a></span>
152 <ul class="toc_section">
154 <span class="toc_kind_header">controls</span>
155 <ul class="toc_section">
157 ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
159 ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
161 ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
163 ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
165 ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
167 ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
169 ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
171 ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
173 ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
175 ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
177 ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
179 ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
181 ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
183 ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
185 ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
187 ><a href="#controls_android.control.mode">android.control.mode</a></li>
189 ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
191 ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
193 ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
195 ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li>
199 <span class="toc_kind_header">static</span>
200 <ul class="toc_section">
202 ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
204 ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
206 ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
208 ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
210 ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
212 ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
214 ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
216 ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
218 ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
220 ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
222 ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
224 ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
226 ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
228 ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
230 ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
232 ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
234 ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
236 ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
238 ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
240 ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
244 <span class="toc_kind_header">dynamic</span>
245 <ul class="toc_section">
247 class="toc_deprecated"
248 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
250 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
252 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
254 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
256 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
258 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
260 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
262 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
264 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
266 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
268 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
270 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
272 ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
274 class="toc_deprecated"
275 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
277 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
279 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
281 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
283 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
285 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
287 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
289 ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
291 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
293 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
295 ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
297 ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
299 ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li>
302 </ul> <!-- toc_section -->
305 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
306 <ul class="toc_section">
308 <span class="toc_kind_header">controls</span>
309 <ul class="toc_section">
311 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
314 </ul> <!-- toc_section -->
317 <span class="toc_section_header"><a href="#section_edge">edge</a></span>
318 <ul class="toc_section">
320 <span class="toc_kind_header">controls</span>
321 <ul class="toc_section">
323 ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
325 ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
329 <span class="toc_kind_header">static</span>
330 <ul class="toc_section">
332 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
336 <span class="toc_kind_header">dynamic</span>
337 <ul class="toc_section">
339 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
342 </ul> <!-- toc_section -->
345 <span class="toc_section_header"><a href="#section_flash">flash</a></span>
346 <ul class="toc_section">
348 <span class="toc_kind_header">controls</span>
349 <ul class="toc_section">
351 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
353 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
355 ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
359 <span class="toc_kind_header">static</span>
360 <ul class="toc_section">
363 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
365 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
368 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
370 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
374 <span class="toc_kind_header">dynamic</span>
375 <ul class="toc_section">
377 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
379 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
381 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
383 ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
386 </ul> <!-- toc_section -->
389 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
390 <ul class="toc_section">
392 <span class="toc_kind_header">controls</span>
393 <ul class="toc_section">
395 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
399 <span class="toc_kind_header">static</span>
400 <ul class="toc_section">
402 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
406 <span class="toc_kind_header">dynamic</span>
407 <ul class="toc_section">
409 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
412 </ul> <!-- toc_section -->
415 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
416 <ul class="toc_section">
418 <span class="toc_kind_header">controls</span>
419 <ul class="toc_section">
421 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
423 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
425 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
427 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
429 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
431 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
433 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
435 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
439 <span class="toc_kind_header">static</span>
440 <ul class="toc_section">
442 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
444 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
448 <span class="toc_kind_header">dynamic</span>
449 <ul class="toc_section">
451 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
453 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
455 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
457 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
459 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
461 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
463 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
465 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
467 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
470 </ul> <!-- toc_section -->
473 <span class="toc_section_header"><a href="#section_lens">lens</a></span>
474 <ul class="toc_section">
476 <span class="toc_kind_header">controls</span>
477 <ul class="toc_section">
479 ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
481 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
483 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
485 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
487 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
491 <span class="toc_kind_header">static</span>
492 <ul class="toc_section">
495 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
497 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
499 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
501 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
503 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
505 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
507 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
509 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
512 ><a href="#static_android.lens.facing">android.lens.facing</a></li>
514 ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
516 ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
518 ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
520 ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
522 ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li>
526 <span class="toc_kind_header">dynamic</span>
527 <ul class="toc_section">
529 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
531 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
533 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
535 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
537 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
539 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
541 ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
543 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
545 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
547 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
549 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
552 </ul> <!-- toc_section -->
555 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
556 <ul class="toc_section">
558 <span class="toc_kind_header">controls</span>
559 <ul class="toc_section">
561 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
563 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
567 <span class="toc_kind_header">static</span>
568 <ul class="toc_section">
570 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
574 <span class="toc_kind_header">dynamic</span>
575 <ul class="toc_section">
577 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
580 </ul> <!-- toc_section -->
583 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
584 <ul class="toc_section">
586 <span class="toc_kind_header">static</span>
587 <ul class="toc_section">
589 class="toc_deprecated"
590 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
592 class="toc_deprecated"
593 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
595 class="toc_deprecated"
596 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
598 class="toc_deprecated"
599 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
603 <span class="toc_kind_header">dynamic</span>
604 <ul class="toc_section">
606 class="toc_deprecated"
607 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
610 </ul> <!-- toc_section -->
613 <span class="toc_section_header"><a href="#section_request">request</a></span>
614 <ul class="toc_section">
616 <span class="toc_kind_header">controls</span>
617 <ul class="toc_section">
619 class="toc_deprecated"
620 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
622 ><a href="#controls_android.request.id">android.request.id</a></li>
624 class="toc_deprecated"
625 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
627 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
629 class="toc_deprecated"
630 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
632 class="toc_deprecated"
633 ><a href="#controls_android.request.type">android.request.type</a></li>
637 <span class="toc_kind_header">static</span>
638 <ul class="toc_section">
640 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
642 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
644 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
646 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
648 class="toc_deprecated"
649 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
651 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
653 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
655 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
657 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
659 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
661 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
663 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
665 ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
669 <span class="toc_kind_header">dynamic</span>
670 <ul class="toc_section">
672 class="toc_deprecated"
673 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
675 ><a href="#dynamic_android.request.id">android.request.id</a></li>
677 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
679 class="toc_deprecated"
680 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
682 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
685 </ul> <!-- toc_section -->
688 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
689 <ul class="toc_section">
691 <span class="toc_kind_header">controls</span>
692 <ul class="toc_section">
694 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
698 <span class="toc_kind_header">static</span>
699 <ul class="toc_section">
701 class="toc_deprecated"
702 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
704 class="toc_deprecated"
705 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
707 class="toc_deprecated"
708 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
710 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
712 class="toc_deprecated"
713 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
715 class="toc_deprecated"
716 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
718 class="toc_deprecated"
719 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
721 class="toc_deprecated"
722 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
724 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
726 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
728 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
730 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
732 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
734 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
738 <span class="toc_kind_header">dynamic</span>
739 <ul class="toc_section">
741 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
744 </ul> <!-- toc_section -->
747 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
748 <ul class="toc_section">
750 <span class="toc_kind_header">controls</span>
751 <ul class="toc_section">
753 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
755 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
757 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
759 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
761 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
765 <span class="toc_kind_header">static</span>
766 <ul class="toc_section">
769 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
771 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
773 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
775 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
777 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
779 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
781 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
783 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
785 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
787 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
789 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
792 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
794 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
796 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
798 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
800 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
802 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
804 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
806 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
808 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
810 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
812 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
814 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
816 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
818 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
820 ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
822 ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
826 <span class="toc_kind_header">dynamic</span>
827 <ul class="toc_section">
829 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
831 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
833 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
835 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
837 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
839 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
841 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
843 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
845 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
847 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
849 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
851 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
853 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
855 ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
857 ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
860 </ul> <!-- toc_section -->
863 <span class="toc_section_header"><a href="#section_shading">shading</a></span>
864 <ul class="toc_section">
866 <span class="toc_kind_header">controls</span>
867 <ul class="toc_section">
869 ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
871 ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
875 <span class="toc_kind_header">dynamic</span>
876 <ul class="toc_section">
878 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
882 <span class="toc_kind_header">static</span>
883 <ul class="toc_section">
885 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
888 </ul> <!-- toc_section -->
891 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
892 <ul class="toc_section">
894 <span class="toc_kind_header">controls</span>
895 <ul class="toc_section">
897 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
899 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
901 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
903 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
905 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
907 ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
911 <span class="toc_kind_header">static</span>
912 <ul class="toc_section">
915 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
917 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
919 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
921 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
923 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
925 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
927 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
929 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
931 ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li>
936 <span class="toc_kind_header">dynamic</span>
937 <ul class="toc_section">
939 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
941 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
943 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
945 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
947 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
949 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
951 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
953 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
955 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
957 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
959 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
961 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
963 class="toc_deprecated"
964 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
966 class="toc_deprecated"
967 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
969 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
971 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
973 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
975 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
977 ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
979 ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li>
981 ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li>
983 ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li>
986 </ul> <!-- toc_section -->
989 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
990 <ul class="toc_section">
992 <span class="toc_kind_header">controls</span>
993 <ul class="toc_section">
995 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
997 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
999 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1001 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
1003 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
1005 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
1007 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1011 <span class="toc_kind_header">static</span>
1012 <ul class="toc_section">
1014 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1016 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1020 <span class="toc_kind_header">dynamic</span>
1021 <ul class="toc_section">
1023 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1025 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1027 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1029 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1031 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1033 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1035 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1038 </ul> <!-- toc_section -->
1041 <span class="toc_section_header"><a href="#section_led">led</a></span>
1042 <ul class="toc_section">
1044 <span class="toc_kind_header">controls</span>
1045 <ul class="toc_section">
1047 ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1051 <span class="toc_kind_header">dynamic</span>
1052 <ul class="toc_section">
1054 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1058 <span class="toc_kind_header">static</span>
1059 <ul class="toc_section">
1061 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1064 </ul> <!-- toc_section -->
1067 <span class="toc_section_header"><a href="#section_info">info</a></span>
1068 <ul class="toc_section">
1070 <span class="toc_kind_header">static</span>
1071 <ul class="toc_section">
1073 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1075 ><a href="#static_android.info.version">android.info.version</a></li>
1078 </ul> <!-- toc_section -->
1081 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1082 <ul class="toc_section">
1084 <span class="toc_kind_header">controls</span>
1085 <ul class="toc_section">
1087 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1091 <span class="toc_kind_header">dynamic</span>
1092 <ul class="toc_section">
1094 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1097 </ul> <!-- toc_section -->
1100 <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1101 <ul class="toc_section">
1103 <span class="toc_kind_header">dynamic</span>
1104 <ul class="toc_section">
1106 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1110 <span class="toc_kind_header">static</span>
1111 <ul class="toc_section">
1113 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1116 </ul> <!-- toc_section -->
1119 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1120 <ul class="toc_section">
1122 <span class="toc_kind_header">controls</span>
1123 <ul class="toc_section">
1125 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1129 <span class="toc_kind_header">dynamic</span>
1130 <ul class="toc_section">
1132 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1136 <span class="toc_kind_header">static</span>
1137 <ul class="toc_section">
1139 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1142 </ul> <!-- toc_section -->
1145 <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1146 <ul class="toc_section">
1148 <span class="toc_kind_header">static</span>
1149 <ul class="toc_section">
1151 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1153 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1155 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1157 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1159 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1162 </ul> <!-- toc_section -->
1168 <table class="properties">
1170 <thead class="thead_dummy">
1172 <th class="th_name">Property Name</th>
1173 <th class="th_type">Type</th>
1174 <th class="th_description">Description</th>
1175 <th class="th_units">Units</th>
1176 <th class="th_range">Range</th>
1177 <th class="th_hal_version">HIDL HAL version</th>
1178 <th class="th_tags">Tags</th>
1180 </thead> <!-- so that the first occurrence of thead is not
1181 above the first occurrence of tr -->
1182 <!-- <namespace name="android"> -->
1183 <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1186 <tr><td colspan="7" class="kind">controls</td></tr>
1188 <thead class="entries_header">
1190 <th class="th_name">Property Name</th>
1191 <th class="th_type">Type</th>
1192 <th class="th_description">Description</th>
1193 <th class="th_units">Units</th>
1194 <th class="th_range">Range</th>
1195 <th class="th_hal_version">Initial HIDL HAL version</th>
1196 <th class="th_tags">Tags</th>
1211 <tr class="entry" id="controls_android.colorCorrection.mode">
1212 <td class="entry_name
1214 android.<wbr/>color<wbr/>Correction.<wbr/>mode
1216 <td class="entry_type">
1217 <span class="entry_type_name entry_type_name_enum">byte</span>
1219 <span class="entry_type_visibility"> [public]</span>
1222 <span class="entry_type_hwlevel">[full] </span>
1226 <ul class="entry_type_enum">
1228 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1229 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1230 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1231 <p>All advanced white balance adjustments (not specified
1232 by our white balance pipeline) must be disabled.<wbr/></p>
1233 <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
1234 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1235 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1238 <span class="entry_type_enum_name">FAST (v3.2)</span>
1239 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1240 capture rate relative to sensor raw output.<wbr/></p>
1241 <p>Advanced white balance adjustments above and beyond
1242 the specified white balance pipeline may be applied.<wbr/></p>
1243 <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
1244 the camera device uses the last frame's AWB values
1245 (or defaults if AWB has never been run).<wbr/></p></span>
1248 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1249 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1250 quality but the capture rate might be reduced (relative to sensor
1251 raw output rate)</p>
1252 <p>Advanced white balance adjustments above and beyond
1253 the specified white balance pipeline may be applied.<wbr/></p>
1254 <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
1255 the camera device uses the last frame's AWB values
1256 (or defaults if AWB has never been run).<wbr/></p></span>
1260 </td> <!-- entry_type -->
1262 <td class="entry_description">
1263 <p>The mode control selects how the image data is converted from the
1264 sensor's native color into linear sRGB color.<wbr/></p>
1267 <td class="entry_units">
1270 <td class="entry_range">
1273 <td class="entry_hal_version">
1277 <td class="entry_tags">
1281 <tr class="entries_header">
1282 <th class="th_details" colspan="6">Details</th>
1284 <tr class="entry_cont">
1285 <td class="entry_details" colspan="6">
1286 <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
1287 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1288 application controls how the color mapping is performed.<wbr/></p>
1289 <p>We define the expected processing pipeline below.<wbr/> For consistency
1290 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1291 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1292 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1293 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1294 camera device (in the results) and be roughly correct.<wbr/></p>
1295 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1296 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1297 as what was produced by the camera device in the earlier frame.<wbr/></p>
1298 <p>The expected processing pipeline is as follows:</p>
1299 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1300 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1301 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1302 matrix (applied after demosaic).<wbr/></p>
1303 <p>The 4-channel white-balance gains are defined as:</p>
1304 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1306 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1307 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1308 These may be identical for a given camera device implementation; if
1309 the camera device does not support a separate gain for even/<wbr/>odd green
1310 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1311 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1312 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1313 <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 ]
1315 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1316 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1317 <p>with colors as follows:</p>
1318 <pre><code>r' = I0r + I1g + I2b
1319 g' = I3r + I4g + I5b
1320 b' = I6r + I7g + I8b
1322 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1323 values are clipped to fit within the range.<wbr/></p>
1327 <tr class="entries_header">
1328 <th class="th_details" colspan="6">HAL Implementation Details</th>
1330 <tr class="entry_cont">
1331 <td class="entry_details" colspan="6">
1332 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1333 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1334 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1335 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1339 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1340 <!-- end of entry -->
1343 <tr class="entry" id="controls_android.colorCorrection.transform">
1344 <td class="entry_name
1346 android.<wbr/>color<wbr/>Correction.<wbr/>transform
1348 <td class="entry_type">
1349 <span class="entry_type_name">rational</span>
1350 <span class="entry_type_container">x</span>
1352 <span class="entry_type_array">
1355 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1358 <span class="entry_type_hwlevel">[full] </span>
1361 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1364 </td> <!-- entry_type -->
1366 <td class="entry_description">
1367 <p>A color transform matrix to use to transform
1368 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1371 <td class="entry_units">
1372 Unitless scale factors
1375 <td class="entry_range">
1378 <td class="entry_hal_version">
1382 <td class="entry_tags">
1386 <tr class="entries_header">
1387 <th class="th_details" colspan="6">Details</th>
1389 <tr class="entry_cont">
1390 <td class="entry_details" colspan="6">
1391 <p>This matrix is either set by the camera device when the request
1392 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1393 directly by the application in the request when the
1394 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1395 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1396 for precision issues; the final rounded matrix should be reported back
1397 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1398 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1399 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1400 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1401 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1406 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1407 <!-- end of entry -->
1410 <tr class="entry" id="controls_android.colorCorrection.gains">
1411 <td class="entry_name
1413 android.<wbr/>color<wbr/>Correction.<wbr/>gains
1415 <td class="entry_type">
1416 <span class="entry_type_name">float</span>
1417 <span class="entry_type_container">x</span>
1419 <span class="entry_type_array">
1422 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1425 <span class="entry_type_hwlevel">[full] </span>
1428 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1431 </td> <!-- entry_type -->
1433 <td class="entry_description">
1434 <p>Gains applying to Bayer raw color channels for
1435 white-balance.<wbr/></p>
1438 <td class="entry_units">
1439 Unitless gain factors
1442 <td class="entry_range">
1445 <td class="entry_hal_version">
1449 <td class="entry_tags">
1453 <tr class="entries_header">
1454 <th class="th_details" colspan="6">Details</th>
1456 <tr class="entry_cont">
1457 <td class="entry_details" colspan="6">
1458 <p>These per-channel gains are either set by the camera device
1459 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1460 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1461 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1462 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1463 <p>The gains in the result metadata are the gains actually
1464 applied by the camera device to the current frame.<wbr/></p>
1465 <p>The valid range of gains varies on different devices,<wbr/> but gains
1466 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1467 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1468 this can create color artifacts.<wbr/></p>
1472 <tr class="entries_header">
1473 <th class="th_details" colspan="6">HAL Implementation Details</th>
1475 <tr class="entry_cont">
1476 <td class="entry_details" colspan="6">
1477 <p>The 4-channel white-balance gains are defined in
1478 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1479 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1480 is the gain for green pixels on the odd rows.<wbr/></p>
1481 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1482 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1483 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1487 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1488 <!-- end of entry -->
1491 <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1492 <td class="entry_name
1494 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1496 <td class="entry_type">
1497 <span class="entry_type_name entry_type_name_enum">byte</span>
1499 <span class="entry_type_visibility"> [public]</span>
1502 <span class="entry_type_hwlevel">[legacy] </span>
1506 <ul class="entry_type_enum">
1508 <span class="entry_type_enum_name">OFF (v3.2)</span>
1509 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1512 <span class="entry_type_enum_name">FAST (v3.2)</span>
1513 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1514 relative to sensor raw output.<wbr/></p></span>
1517 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1518 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1519 reduced (relative to sensor raw output rate)</p></span>
1523 </td> <!-- entry_type -->
1525 <td class="entry_description">
1526 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1529 <td class="entry_units">
1532 <td class="entry_range">
1533 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1536 <td class="entry_hal_version">
1540 <td class="entry_tags">
1544 <tr class="entries_header">
1545 <th class="th_details" colspan="6">Details</th>
1547 <tr class="entry_cont">
1548 <td class="entry_details" colspan="6">
1549 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1550 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1551 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1552 minimize the chromatic artifacts that may occur along the object boundaries in an
1554 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1555 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1556 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1557 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1558 applying aberration correction.<wbr/></p>
1559 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1564 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1565 <!-- end of entry -->
1569 <!-- end of kind -->
1571 <tr><td colspan="7" class="kind">dynamic</td></tr>
1573 <thead class="entries_header">
1575 <th class="th_name">Property Name</th>
1576 <th class="th_type">Type</th>
1577 <th class="th_description">Description</th>
1578 <th class="th_units">Units</th>
1579 <th class="th_range">Range</th>
1580 <th class="th_hal_version">Initial HIDL HAL version</th>
1581 <th class="th_tags">Tags</th>
1596 <tr class="entry" id="dynamic_android.colorCorrection.mode">
1597 <td class="entry_name
1599 android.<wbr/>color<wbr/>Correction.<wbr/>mode
1601 <td class="entry_type">
1602 <span class="entry_type_name entry_type_name_enum">byte</span>
1604 <span class="entry_type_visibility"> [public]</span>
1607 <span class="entry_type_hwlevel">[full] </span>
1611 <ul class="entry_type_enum">
1613 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1614 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1615 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1616 <p>All advanced white balance adjustments (not specified
1617 by our white balance pipeline) must be disabled.<wbr/></p>
1618 <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
1619 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1620 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1623 <span class="entry_type_enum_name">FAST (v3.2)</span>
1624 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1625 capture rate relative to sensor raw output.<wbr/></p>
1626 <p>Advanced white balance adjustments above and beyond
1627 the specified white balance pipeline may be applied.<wbr/></p>
1628 <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
1629 the camera device uses the last frame's AWB values
1630 (or defaults if AWB has never been run).<wbr/></p></span>
1633 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1634 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1635 quality but the capture rate might be reduced (relative to sensor
1636 raw output rate)</p>
1637 <p>Advanced white balance adjustments above and beyond
1638 the specified white balance pipeline may be applied.<wbr/></p>
1639 <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
1640 the camera device uses the last frame's AWB values
1641 (or defaults if AWB has never been run).<wbr/></p></span>
1645 </td> <!-- entry_type -->
1647 <td class="entry_description">
1648 <p>The mode control selects how the image data is converted from the
1649 sensor's native color into linear sRGB color.<wbr/></p>
1652 <td class="entry_units">
1655 <td class="entry_range">
1658 <td class="entry_hal_version">
1662 <td class="entry_tags">
1666 <tr class="entries_header">
1667 <th class="th_details" colspan="6">Details</th>
1669 <tr class="entry_cont">
1670 <td class="entry_details" colspan="6">
1671 <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
1672 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1673 application controls how the color mapping is performed.<wbr/></p>
1674 <p>We define the expected processing pipeline below.<wbr/> For consistency
1675 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1676 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1677 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1678 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1679 camera device (in the results) and be roughly correct.<wbr/></p>
1680 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1681 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1682 as what was produced by the camera device in the earlier frame.<wbr/></p>
1683 <p>The expected processing pipeline is as follows:</p>
1684 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1685 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1686 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1687 matrix (applied after demosaic).<wbr/></p>
1688 <p>The 4-channel white-balance gains are defined as:</p>
1689 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1691 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1692 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1693 These may be identical for a given camera device implementation; if
1694 the camera device does not support a separate gain for even/<wbr/>odd green
1695 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1696 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1697 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1698 <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 ]
1700 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1701 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1702 <p>with colors as follows:</p>
1703 <pre><code>r' = I0r + I1g + I2b
1704 g' = I3r + I4g + I5b
1705 b' = I6r + I7g + I8b
1707 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1708 values are clipped to fit within the range.<wbr/></p>
1712 <tr class="entries_header">
1713 <th class="th_details" colspan="6">HAL Implementation Details</th>
1715 <tr class="entry_cont">
1716 <td class="entry_details" colspan="6">
1717 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1718 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1719 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1720 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1724 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1725 <!-- end of entry -->
1728 <tr class="entry" id="dynamic_android.colorCorrection.transform">
1729 <td class="entry_name
1731 android.<wbr/>color<wbr/>Correction.<wbr/>transform
1733 <td class="entry_type">
1734 <span class="entry_type_name">rational</span>
1735 <span class="entry_type_container">x</span>
1737 <span class="entry_type_array">
1740 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1743 <span class="entry_type_hwlevel">[full] </span>
1746 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1749 </td> <!-- entry_type -->
1751 <td class="entry_description">
1752 <p>A color transform matrix to use to transform
1753 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1756 <td class="entry_units">
1757 Unitless scale factors
1760 <td class="entry_range">
1763 <td class="entry_hal_version">
1767 <td class="entry_tags">
1771 <tr class="entries_header">
1772 <th class="th_details" colspan="6">Details</th>
1774 <tr class="entry_cont">
1775 <td class="entry_details" colspan="6">
1776 <p>This matrix is either set by the camera device when the request
1777 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1778 directly by the application in the request when the
1779 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1780 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1781 for precision issues; the final rounded matrix should be reported back
1782 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1783 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1784 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1785 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1786 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1791 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1792 <!-- end of entry -->
1795 <tr class="entry" id="dynamic_android.colorCorrection.gains">
1796 <td class="entry_name
1798 android.<wbr/>color<wbr/>Correction.<wbr/>gains
1800 <td class="entry_type">
1801 <span class="entry_type_name">float</span>
1802 <span class="entry_type_container">x</span>
1804 <span class="entry_type_array">
1807 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1810 <span class="entry_type_hwlevel">[full] </span>
1813 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1816 </td> <!-- entry_type -->
1818 <td class="entry_description">
1819 <p>Gains applying to Bayer raw color channels for
1820 white-balance.<wbr/></p>
1823 <td class="entry_units">
1824 Unitless gain factors
1827 <td class="entry_range">
1830 <td class="entry_hal_version">
1834 <td class="entry_tags">
1838 <tr class="entries_header">
1839 <th class="th_details" colspan="6">Details</th>
1841 <tr class="entry_cont">
1842 <td class="entry_details" colspan="6">
1843 <p>These per-channel gains are either set by the camera device
1844 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1845 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1846 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1847 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1848 <p>The gains in the result metadata are the gains actually
1849 applied by the camera device to the current frame.<wbr/></p>
1850 <p>The valid range of gains varies on different devices,<wbr/> but gains
1851 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1852 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1853 this can create color artifacts.<wbr/></p>
1857 <tr class="entries_header">
1858 <th class="th_details" colspan="6">HAL Implementation Details</th>
1860 <tr class="entry_cont">
1861 <td class="entry_details" colspan="6">
1862 <p>The 4-channel white-balance gains are defined in
1863 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1864 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1865 is the gain for green pixels on the odd rows.<wbr/></p>
1866 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1867 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1868 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1872 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1873 <!-- end of entry -->
1876 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1877 <td class="entry_name
1879 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1881 <td class="entry_type">
1882 <span class="entry_type_name entry_type_name_enum">byte</span>
1884 <span class="entry_type_visibility"> [public]</span>
1887 <span class="entry_type_hwlevel">[legacy] </span>
1891 <ul class="entry_type_enum">
1893 <span class="entry_type_enum_name">OFF (v3.2)</span>
1894 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1897 <span class="entry_type_enum_name">FAST (v3.2)</span>
1898 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1899 relative to sensor raw output.<wbr/></p></span>
1902 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1903 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1904 reduced (relative to sensor raw output rate)</p></span>
1908 </td> <!-- entry_type -->
1910 <td class="entry_description">
1911 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1914 <td class="entry_units">
1917 <td class="entry_range">
1918 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1921 <td class="entry_hal_version">
1925 <td class="entry_tags">
1929 <tr class="entries_header">
1930 <th class="th_details" colspan="6">Details</th>
1932 <tr class="entry_cont">
1933 <td class="entry_details" colspan="6">
1934 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1935 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1936 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1937 minimize the chromatic artifacts that may occur along the object boundaries in an
1939 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1940 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1941 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1942 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1943 applying aberration correction.<wbr/></p>
1944 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1949 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1950 <!-- end of entry -->
1954 <!-- end of kind -->
1956 <tr><td colspan="7" class="kind">static</td></tr>
1958 <thead class="entries_header">
1960 <th class="th_name">Property Name</th>
1961 <th class="th_type">Type</th>
1962 <th class="th_description">Description</th>
1963 <th class="th_units">Units</th>
1964 <th class="th_range">Range</th>
1965 <th class="th_hal_version">Initial HIDL HAL version</th>
1966 <th class="th_tags">Tags</th>
1981 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1982 <td class="entry_name
1984 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1986 <td class="entry_type">
1987 <span class="entry_type_name">byte</span>
1988 <span class="entry_type_container">x</span>
1990 <span class="entry_type_array">
1993 <span class="entry_type_visibility"> [public as enumList]</span>
1996 <span class="entry_type_hwlevel">[legacy] </span>
1999 <div class="entry_type_notes">list of enums</div>
2002 </td> <!-- entry_type -->
2004 <td class="entry_description">
2005 <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
2006 supported by this camera device.<wbr/></p>
2009 <td class="entry_units">
2012 <td class="entry_range">
2013 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
2016 <td class="entry_hal_version">
2020 <td class="entry_tags">
2021 <ul class="entry_tags">
2022 <li><a href="#tag_V1">V1</a></li>
2027 <tr class="entries_header">
2028 <th class="th_details" colspan="6">Details</th>
2030 <tr class="entry_cont">
2031 <td class="entry_details" colspan="6">
2032 <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
2033 aberration correction modes are available for a device,<wbr/> this list will solely include
2034 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2035 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2036 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2037 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
2041 <tr class="entries_header">
2042 <th class="th_details" colspan="6">HAL Implementation Details</th>
2044 <tr class="entry_cont">
2045 <td class="entry_details" colspan="6">
2046 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2047 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2048 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2049 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2053 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2054 <!-- end of entry -->
2058 <!-- end of kind -->
2061 <!-- end of section -->
2062 <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2065 <tr><td colspan="7" class="kind">controls</td></tr>
2067 <thead class="entries_header">
2069 <th class="th_name">Property Name</th>
2070 <th class="th_type">Type</th>
2071 <th class="th_description">Description</th>
2072 <th class="th_units">Units</th>
2073 <th class="th_range">Range</th>
2074 <th class="th_hal_version">Initial HIDL HAL version</th>
2075 <th class="th_tags">Tags</th>
2090 <tr class="entry" id="controls_android.control.aeAntibandingMode">
2091 <td class="entry_name
2093 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2095 <td class="entry_type">
2096 <span class="entry_type_name entry_type_name_enum">byte</span>
2098 <span class="entry_type_visibility"> [public]</span>
2101 <span class="entry_type_hwlevel">[legacy] </span>
2105 <ul class="entry_type_enum">
2107 <span class="entry_type_enum_name">OFF (v3.2)</span>
2108 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2109 avoid banding problems.<wbr/></p></span>
2112 <span class="entry_type_enum_name">50HZ (v3.2)</span>
2113 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2114 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2117 <span class="entry_type_enum_name">60HZ (v3.2)</span>
2118 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2119 avoid banding problems with 60Hz illumination
2120 sources.<wbr/></p></span>
2123 <span class="entry_type_enum_name">AUTO (v3.2)</span>
2124 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2125 antibanding routine to the current illumination
2126 condition.<wbr/> This is the default mode if AUTO is
2127 available on given camera device.<wbr/></p></span>
2131 </td> <!-- entry_type -->
2133 <td class="entry_description">
2134 <p>The desired setting for the camera device's auto-exposure
2135 algorithm's antibanding compensation.<wbr/></p>
2138 <td class="entry_units">
2141 <td class="entry_range">
2142 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2145 <td class="entry_hal_version">
2149 <td class="entry_tags">
2150 <ul class="entry_tags">
2151 <li><a href="#tag_BC">BC</a></li>
2156 <tr class="entries_header">
2157 <th class="th_details" colspan="6">Details</th>
2159 <tr class="entry_cont">
2160 <td class="entry_details" colspan="6">
2161 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2162 lights,<wbr/> flicker at the rate of the power supply frequency
2163 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2164 typically not noticeable to a person,<wbr/> it can be visible to
2165 a camera device.<wbr/> If a camera sets its exposure time to the
2166 wrong value,<wbr/> the flicker may become visible in the
2167 viewfinder as flicker or in a final captured image,<wbr/> as a
2168 set of variable-brightness bands across the image.<wbr/></p>
2169 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2170 include antibanding routines that ensure that the chosen
2171 exposure value will not cause such banding.<wbr/> The choice of
2172 exposure time depends on the rate of flicker,<wbr/> which the
2173 camera device can detect automatically,<wbr/> or the expected
2174 rate can be selected by the application using this
2176 <p>A given camera device may not support all of the possible
2177 options for the antibanding mode.<wbr/> The
2178 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2179 the available modes for a given camera device.<wbr/></p>
2180 <p>AUTO mode is the default if it is available on given
2181 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2182 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2183 and 60HZ will be available.<wbr/></p>
2184 <p>If manual exposure control is enabled (by setting
2185 <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/>
2186 then this setting has no effect,<wbr/> and the application must
2187 ensure it selects exposure times that do not cause banding
2188 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2189 the application in this.<wbr/></p>
2193 <tr class="entries_header">
2194 <th class="th_details" colspan="6">HAL Implementation Details</th>
2196 <tr class="entry_cont">
2197 <td class="entry_details" colspan="6">
2198 <p>For all capture request templates,<wbr/> this field must be set
2199 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2200 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2201 60HZ must be available.<wbr/></p>
2202 <p>If manual exposure control is enabled (by setting
2203 <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/>
2204 then the exposure values provided by the application must not be
2205 adjusted for antibanding.<wbr/></p>
2209 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2210 <!-- end of entry -->
2213 <tr class="entry" id="controls_android.control.aeExposureCompensation">
2214 <td class="entry_name
2216 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2218 <td class="entry_type">
2219 <span class="entry_type_name">int32</span>
2221 <span class="entry_type_visibility"> [public]</span>
2224 <span class="entry_type_hwlevel">[legacy] </span>
2229 </td> <!-- entry_type -->
2231 <td class="entry_description">
2232 <p>Adjustment to auto-exposure (AE) target image
2233 brightness.<wbr/></p>
2236 <td class="entry_units">
2240 <td class="entry_range">
2241 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2244 <td class="entry_hal_version">
2248 <td class="entry_tags">
2249 <ul class="entry_tags">
2250 <li><a href="#tag_BC">BC</a></li>
2255 <tr class="entries_header">
2256 <th class="th_details" colspan="6">Details</th>
2258 <tr class="entry_cont">
2259 <td class="entry_details" colspan="6">
2260 <p>The adjustment is measured as a count of steps,<wbr/> with the
2261 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2262 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2263 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2264 will mean an exposure compensation of +2 EV; -3 will mean an
2265 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2266 of image brightness.<wbr/> Note that this control will only be
2267 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2268 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2269 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2270 may take several frames to reach the newly requested exposure target.<wbr/>
2271 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2272 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
2273 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2274 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2279 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2280 <!-- end of entry -->
2283 <tr class="entry" id="controls_android.control.aeLock">
2284 <td class="entry_name
2286 android.<wbr/>control.<wbr/>ae<wbr/>Lock
2288 <td class="entry_type">
2289 <span class="entry_type_name entry_type_name_enum">byte</span>
2291 <span class="entry_type_visibility"> [public as boolean]</span>
2294 <span class="entry_type_hwlevel">[legacy] </span>
2298 <ul class="entry_type_enum">
2300 <span class="entry_type_enum_name">OFF (v3.2)</span>
2301 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2302 is free to update its parameters.<wbr/></p></span>
2305 <span class="entry_type_enum_name">ON (v3.2)</span>
2306 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2307 must not update the exposure and sensitivity parameters
2308 while the lock is active.<wbr/></p>
2309 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2310 will still take effect while auto-exposure is locked.<wbr/></p>
2311 <p>Some rare LEGACY devices may not support
2312 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2316 </td> <!-- entry_type -->
2318 <td class="entry_description">
2319 <p>Whether auto-exposure (AE) is currently locked to its latest
2320 calculated values.<wbr/></p>
2323 <td class="entry_units">
2326 <td class="entry_range">
2329 <td class="entry_hal_version">
2333 <td class="entry_tags">
2334 <ul class="entry_tags">
2335 <li><a href="#tag_BC">BC</a></li>
2340 <tr class="entries_header">
2341 <th class="th_details" colspan="6">Details</th>
2343 <tr class="entry_cont">
2344 <td class="entry_details" colspan="6">
2345 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2346 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2347 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2348 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2349 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2350 <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
2351 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2352 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2353 when AE is already locked,<wbr/> the camera device will not change the exposure time
2354 (<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>)
2355 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2356 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2357 <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/>
2358 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2359 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2360 the AE if AE is locked by the camera device internally during precapture metering
2361 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2362 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2363 will never succeed in a sequence of preview requests where AE lock is always set
2364 to <code>false</code>.<wbr/></p>
2365 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2366 get locked do not necessarily correspond to the settings that were present in the
2367 latest capture result received from the camera device,<wbr/> since additional captures
2368 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2369 application is switching between automatic and manual control and wishes to eliminate
2370 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2372 <li>Starting in auto-AE mode:</li>
2374 <li>Wait for the first result to be output that has the AE locked</li>
2375 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2376 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2378 <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>
2383 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2384 <!-- end of entry -->
2387 <tr class="entry" id="controls_android.control.aeMode">
2388 <td class="entry_name
2390 android.<wbr/>control.<wbr/>ae<wbr/>Mode
2392 <td class="entry_type">
2393 <span class="entry_type_name entry_type_name_enum">byte</span>
2395 <span class="entry_type_visibility"> [public]</span>
2398 <span class="entry_type_hwlevel">[legacy] </span>
2402 <ul class="entry_type_enum">
2404 <span class="entry_type_enum_name">OFF (v3.2)</span>
2405 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2406 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2407 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2408 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2409 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2410 a flash unit for this camera device.<wbr/></p>
2411 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2412 behavior is device dependent when AE is in OFF mode.<wbr/>
2413 To have consistent behavior across different devices,<wbr/>
2414 it is recommended to either set AWB and AF to OFF mode
2415 or lock AWB and AF before setting AE to OFF.<wbr/>
2416 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/>
2417 <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>
2418 for more details.<wbr/></p>
2419 <p>LEGACY devices do not support the OFF mode and will
2420 override attempts to use this value to ON.<wbr/></p></span>
2423 <span class="entry_type_enum_name">ON (v3.2)</span>
2424 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2425 with no flash control.<wbr/></p>
2426 <p>The application's values for
2427 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2428 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2429 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2430 application has control over the various
2431 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2434 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
2435 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2436 the camera's flash unit,<wbr/> firing it in low-light
2437 conditions.<wbr/></p>
2438 <p>The flash may be fired during a precapture sequence
2439 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2440 may be fired for captures for which the
2441 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2442 STILL_<wbr/>CAPTURE</p></span>
2445 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
2446 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2447 the camera's flash unit,<wbr/> always firing it for still
2449 <p>The flash may be fired during a precapture sequence
2450 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2451 will always be fired for captures for which the
2452 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2453 STILL_<wbr/>CAPTURE</p></span>
2456 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
2457 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2458 reduction.<wbr/></p>
2459 <p>If deemed necessary by the camera device,<wbr/> a red eye
2460 reduction flash will fire during the precapture
2461 sequence.<wbr/></p></span>
2464 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
2465 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
2466 <p>It informs the camera device that an external flash has been turned on,<wbr/> and that
2467 metering (and continuous focus if active) should be quickly recaculated to account
2468 for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
2469 <p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
2470 other available AE modes.<wbr/></p>
2471 <p>If the camera device supports AE external flash mode,<wbr/> aeState must be
2472 FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
2473 flash.<wbr/></p></span>
2477 </td> <!-- entry_type -->
2479 <td class="entry_description">
2480 <p>The desired mode for the camera device's
2481 auto-exposure routine.<wbr/></p>
2484 <td class="entry_units">
2487 <td class="entry_range">
2488 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2491 <td class="entry_hal_version">
2495 <td class="entry_tags">
2496 <ul class="entry_tags">
2497 <li><a href="#tag_BC">BC</a></li>
2502 <tr class="entries_header">
2503 <th class="th_details" colspan="6">Details</th>
2505 <tr class="entry_cont">
2506 <td class="entry_details" colspan="6">
2507 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2509 <p>When set to any of the ON modes,<wbr/> the camera device's
2510 auto-exposure routine is enabled,<wbr/> overriding the
2511 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2512 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2513 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2514 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2515 is selected,<wbr/> the camera device's flash unit controls are
2516 also overridden.<wbr/></p>
2517 <p>The FLASH modes are only available if the camera device
2518 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>
2519 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2520 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2521 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2522 camera device auto-exposure routine for the overridden
2523 fields for a given capture will be available in its
2524 CaptureResult.<wbr/></p>
2529 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2530 <!-- end of entry -->
2533 <tr class="entry" id="controls_android.control.aeRegions">
2534 <td class="entry_name
2536 android.<wbr/>control.<wbr/>ae<wbr/>Regions
2538 <td class="entry_type">
2539 <span class="entry_type_name">int32</span>
2540 <span class="entry_type_container">x</span>
2542 <span class="entry_type_array">
2545 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2552 </td> <!-- entry_type -->
2554 <td class="entry_description">
2555 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2558 <td class="entry_units">
2559 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2562 <td class="entry_range">
2563 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2564 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2567 <td class="entry_hal_version">
2571 <td class="entry_tags">
2572 <ul class="entry_tags">
2573 <li><a href="#tag_BC">BC</a></li>
2578 <tr class="entries_header">
2579 <th class="th_details" colspan="6">Details</th>
2581 <tr class="entry_cont">
2582 <td class="entry_details" colspan="6">
2583 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2584 Otherwise will always be present.<wbr/></p>
2585 <p>The maximum number of regions supported by the device is determined by the value
2586 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2587 <p>The coordinate system is based on the active pixel array,<wbr/>
2588 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2589 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2590 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2591 bottom-right pixel in the active pixel array.<wbr/></p>
2592 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2593 for every pixel in the area.<wbr/> This means that a large metering area
2594 with the same weight as a smaller area will have more effect in
2595 the metering result.<wbr/> Metering areas can partially overlap and the
2596 camera device will add the weights in the overlap region.<wbr/></p>
2597 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2598 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2599 weight is ignored.<wbr/></p>
2600 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2601 camera device.<wbr/></p>
2602 <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
2603 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2604 region and output only the intersection rectangle as the metering region in the result
2605 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2606 not reported in the result metadata.<wbr/></p>
2610 <tr class="entries_header">
2611 <th class="th_details" colspan="6">HAL Implementation Details</th>
2613 <tr class="entry_cont">
2614 <td class="entry_details" colspan="6">
2615 <p>The HAL level representation of MeteringRectangle[] is a
2616 int[5 * area_<wbr/>count].<wbr/>
2617 Every five elements represent a metering region of
2618 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2619 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2620 exclusive on xmax and ymax.<wbr/></p>
2624 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2625 <!-- end of entry -->
2628 <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2629 <td class="entry_name
2631 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2633 <td class="entry_type">
2634 <span class="entry_type_name">int32</span>
2635 <span class="entry_type_container">x</span>
2637 <span class="entry_type_array">
2640 <span class="entry_type_visibility"> [public as rangeInt]</span>
2643 <span class="entry_type_hwlevel">[legacy] </span>
2648 </td> <!-- entry_type -->
2650 <td class="entry_description">
2651 <p>Range over which the auto-exposure routine can
2652 adjust the capture frame rate to maintain good
2656 <td class="entry_units">
2657 Frames per second (FPS)
2660 <td class="entry_range">
2661 <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>
2664 <td class="entry_hal_version">
2668 <td class="entry_tags">
2669 <ul class="entry_tags">
2670 <li><a href="#tag_BC">BC</a></li>
2675 <tr class="entries_header">
2676 <th class="th_details" colspan="6">Details</th>
2678 <tr class="entry_cont">
2679 <td class="entry_details" colspan="6">
2680 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2681 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2682 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2687 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2688 <!-- end of entry -->
2691 <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2692 <td class="entry_name
2694 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2696 <td class="entry_type">
2697 <span class="entry_type_name entry_type_name_enum">byte</span>
2699 <span class="entry_type_visibility"> [public]</span>
2702 <span class="entry_type_hwlevel">[limited] </span>
2706 <ul class="entry_type_enum">
2708 <span class="entry_type_enum_name">IDLE (v3.2)</span>
2709 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2712 <span class="entry_type_enum_name">START (v3.2)</span>
2713 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2714 by the camera device.<wbr/></p>
2715 <p>The exact effect of the precapture trigger depends on
2716 the current AE mode and state.<wbr/></p></span>
2719 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
2720 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2721 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2722 initial state.<wbr/></p></span>
2726 </td> <!-- entry_type -->
2728 <td class="entry_description">
2729 <p>Whether the camera device will trigger a precapture
2730 metering sequence when it processes this request.<wbr/></p>
2733 <td class="entry_units">
2736 <td class="entry_range">
2739 <td class="entry_hal_version">
2743 <td class="entry_tags">
2744 <ul class="entry_tags">
2745 <li><a href="#tag_BC">BC</a></li>
2750 <tr class="entries_header">
2751 <th class="th_details" colspan="6">Details</th>
2753 <tr class="entry_cont">
2754 <td class="entry_details" colspan="6">
2755 <p>This entry is normally set to IDLE,<wbr/> or is not
2756 included at all in the request settings.<wbr/> When included and
2757 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2758 precapture metering sequence.<wbr/></p>
2759 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2760 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2761 If a precapture metering sequence is already completed,<wbr/> and the camera
2762 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2763 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2764 <p>The precapture sequence should be triggered before starting a
2765 high-quality still capture for final metering decisions to
2766 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2767 scene brightness and required final capture flash power,<wbr/> when
2768 the flash is enabled.<wbr/></p>
2769 <p>Normally,<wbr/> this entry should be set to START for only a
2770 single request,<wbr/> and the application should wait until the
2771 sequence completes before starting a new one.<wbr/></p>
2772 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2773 may lock the auto-exposure routine internally to be able to accurately expose the
2774 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2775 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2776 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2777 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
2778 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
2779 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2780 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2781 internally locked AE if the application doesn't submit a still capture request after
2782 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2783 be used in devices that have earlier API levels.<wbr/></p>
2784 <p>The exact effect of auto-exposure (AE) precapture trigger
2785 depends on the current AE mode and state; see
2786 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2788 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2789 capturing a high-resolution JPEG image will automatically trigger a
2790 precapture sequence before the high-resolution capture,<wbr/> including
2791 potentially firing a pre-capture flash.<wbr/></p>
2792 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2793 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2794 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2795 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2796 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2797 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
2799 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2800 the camera device will complete them in the optimal order for that device.<wbr/></p>
2804 <tr class="entries_header">
2805 <th class="th_details" colspan="6">HAL Implementation Details</th>
2807 <tr class="entry_cont">
2808 <td class="entry_details" colspan="6">
2809 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2810 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
2811 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2812 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2813 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2817 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2818 <!-- end of entry -->
2821 <tr class="entry" id="controls_android.control.afMode">
2822 <td class="entry_name
2824 android.<wbr/>control.<wbr/>af<wbr/>Mode
2826 <td class="entry_type">
2827 <span class="entry_type_name entry_type_name_enum">byte</span>
2829 <span class="entry_type_visibility"> [public]</span>
2832 <span class="entry_type_hwlevel">[legacy] </span>
2836 <ul class="entry_type_enum">
2838 <span class="entry_type_enum_name">OFF (v3.2)</span>
2839 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2840 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2841 application.<wbr/></p></span>
2844 <span class="entry_type_enum_name">AUTO (v3.2)</span>
2845 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2846 <p>In this mode,<wbr/> the lens does not move unless
2847 the autofocus trigger action is called.<wbr/> When that trigger
2848 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2849 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2850 <p>Always supported if lens is not fixed focus.<wbr/></p>
2851 <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
2852 is fixed-focus.<wbr/></p>
2853 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2854 and sets the AF state to INACTIVE.<wbr/></p></span>
2857 <span class="entry_type_enum_name">MACRO (v3.2)</span>
2858 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2859 <p>In this mode,<wbr/> the lens does not move unless the
2860 autofocus trigger action is called.<wbr/> When that trigger is
2861 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2862 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2863 mode is optimized for focusing on objects very close to
2864 the camera.<wbr/></p>
2865 <p>When that trigger is activated,<wbr/> AF will transition to
2866 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2867 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2868 position to default,<wbr/> and sets the AF state to
2869 INACTIVE.<wbr/></p></span>
2872 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
2873 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2874 position continually to attempt to provide a
2875 constantly-in-focus image stream.<wbr/></p>
2876 <p>The focusing behavior should be suitable for good quality
2877 video recording; typically this means slower focus
2878 movement and no overshoots.<wbr/> When the AF trigger is not
2879 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2880 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2881 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2882 the algorithm should immediately transition into
2883 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2884 lens position until a cancel AF trigger is received.<wbr/></p>
2885 <p>Once cancel is received,<wbr/> the algorithm should transition
2886 back to INACTIVE and resume passive scan.<wbr/> Note that this
2887 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2888 ongoing PASSIVE_<wbr/>SCAN must immediately be
2889 canceled.<wbr/></p></span>
2892 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
2893 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2894 position continually to attempt to provide a
2895 constantly-in-focus image stream.<wbr/></p>
2896 <p>The focusing behavior should be suitable for still image
2897 capture; typically this means focusing as fast as
2898 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2899 algorithm should start in INACTIVE state,<wbr/> and then
2900 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2901 appropriate as it attempts to maintain focus.<wbr/> When the AF
2902 trigger is activated,<wbr/> the algorithm should finish its
2903 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2904 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2905 lens position until a cancel AF trigger is received.<wbr/></p>
2906 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2907 should transition back to INACTIVE and then act as if it
2908 has just been started.<wbr/></p></span>
2911 <span class="entry_type_enum_name">EDOF (v3.2)</span>
2912 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2913 <p>The camera device will produce images with an extended
2914 depth of field automatically; no special focusing
2915 operations need to be done before taking a picture.<wbr/></p>
2916 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2917 INACTIVE.<wbr/></p></span>
2921 </td> <!-- entry_type -->
2923 <td class="entry_description">
2924 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2925 mode it is set to.<wbr/></p>
2928 <td class="entry_units">
2931 <td class="entry_range">
2932 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2935 <td class="entry_hal_version">
2939 <td class="entry_tags">
2940 <ul class="entry_tags">
2941 <li><a href="#tag_BC">BC</a></li>
2946 <tr class="entries_header">
2947 <th class="th_details" colspan="6">Details</th>
2949 <tr class="entry_cont">
2950 <td class="entry_details" colspan="6">
2951 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2952 (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
2953 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2954 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
2955 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>
2956 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2957 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2958 in result metadata.<wbr/></p>
2962 <tr class="entries_header">
2963 <th class="th_details" colspan="6">HAL Implementation Details</th>
2965 <tr class="entry_cont">
2966 <td class="entry_details" colspan="6">
2967 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2968 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
2969 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2970 <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
2971 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2972 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2973 the same focal plane remains in focus.<wbr/></p>
2974 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2975 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2976 (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
2977 same lock behavior as above.<wbr/></p>
2978 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2979 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/>
2980 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2981 manual control.<wbr/></p>
2982 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2983 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2984 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2985 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2986 that will arise on camera modules with open-loop VCMs.<wbr/></p>
2990 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2991 <!-- end of entry -->
2994 <tr class="entry" id="controls_android.control.afRegions">
2995 <td class="entry_name
2997 android.<wbr/>control.<wbr/>af<wbr/>Regions
2999 <td class="entry_type">
3000 <span class="entry_type_name">int32</span>
3001 <span class="entry_type_container">x</span>
3003 <span class="entry_type_array">
3006 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3013 </td> <!-- entry_type -->
3015 <td class="entry_description">
3016 <p>List of metering areas to use for auto-focus.<wbr/></p>
3019 <td class="entry_units">
3020 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3023 <td class="entry_range">
3024 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3025 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3028 <td class="entry_hal_version">
3032 <td class="entry_tags">
3033 <ul class="entry_tags">
3034 <li><a href="#tag_BC">BC</a></li>
3039 <tr class="entries_header">
3040 <th class="th_details" colspan="6">Details</th>
3042 <tr class="entry_cont">
3043 <td class="entry_details" colspan="6">
3044 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3045 Otherwise will always be present.<wbr/></p>
3046 <p>The maximum number of focus areas supported by the device is determined by the value
3047 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3048 <p>The coordinate system is based on the active pixel array,<wbr/>
3049 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3050 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3051 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3052 bottom-right pixel in the active pixel array.<wbr/></p>
3053 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3054 for every pixel in the area.<wbr/> This means that a large metering area
3055 with the same weight as a smaller area will have more effect in
3056 the metering result.<wbr/> Metering areas can partially overlap and the
3057 camera device will add the weights in the overlap region.<wbr/></p>
3058 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3059 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3061 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3062 camera device.<wbr/></p>
3063 <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
3064 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3065 region and output only the intersection rectangle as the metering region in the result
3066 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3067 not reported in the result metadata.<wbr/></p>
3071 <tr class="entries_header">
3072 <th class="th_details" colspan="6">HAL Implementation Details</th>
3074 <tr class="entry_cont">
3075 <td class="entry_details" colspan="6">
3076 <p>The HAL level representation of MeteringRectangle[] is a
3077 int[5 * area_<wbr/>count].<wbr/>
3078 Every five elements represent a metering region of
3079 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3080 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3081 exclusive on xmax and ymax.<wbr/></p>
3085 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3086 <!-- end of entry -->
3089 <tr class="entry" id="controls_android.control.afTrigger">
3090 <td class="entry_name
3092 android.<wbr/>control.<wbr/>af<wbr/>Trigger
3094 <td class="entry_type">
3095 <span class="entry_type_name entry_type_name_enum">byte</span>
3097 <span class="entry_type_visibility"> [public]</span>
3100 <span class="entry_type_hwlevel">[legacy] </span>
3104 <ul class="entry_type_enum">
3106 <span class="entry_type_enum_name">IDLE (v3.2)</span>
3107 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3110 <span class="entry_type_enum_name">START (v3.2)</span>
3111 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3114 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
3115 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3116 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3120 </td> <!-- entry_type -->
3122 <td class="entry_description">
3123 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3126 <td class="entry_units">
3129 <td class="entry_range">
3132 <td class="entry_hal_version">
3136 <td class="entry_tags">
3137 <ul class="entry_tags">
3138 <li><a href="#tag_BC">BC</a></li>
3143 <tr class="entries_header">
3144 <th class="th_details" colspan="6">Details</th>
3146 <tr class="entry_cont">
3147 <td class="entry_details" colspan="6">
3148 <p>This entry is normally set to IDLE,<wbr/> or is not
3149 included at all in the request settings.<wbr/></p>
3150 <p>When included and set to START,<wbr/> the camera device will trigger the
3151 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3152 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3153 and return to its initial AF state.<wbr/></p>
3154 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3155 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3156 START for multiple captures in a row means restarting the AF operation over
3157 and over again.<wbr/></p>
3158 <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>
3159 <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>
3160 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3161 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3162 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3163 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3164 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3168 <tr class="entries_header">
3169 <th class="th_details" colspan="6">HAL Implementation Details</th>
3171 <tr class="entry_cont">
3172 <td class="entry_details" colspan="6">
3173 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3174 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
3175 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3176 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3177 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3181 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3182 <!-- end of entry -->
3185 <tr class="entry" id="controls_android.control.awbLock">
3186 <td class="entry_name
3188 android.<wbr/>control.<wbr/>awb<wbr/>Lock
3190 <td class="entry_type">
3191 <span class="entry_type_name entry_type_name_enum">byte</span>
3193 <span class="entry_type_visibility"> [public as boolean]</span>
3196 <span class="entry_type_hwlevel">[legacy] </span>
3200 <ul class="entry_type_enum">
3202 <span class="entry_type_enum_name">OFF (v3.2)</span>
3203 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3204 algorithm is free to update its parameters if in AUTO
3205 mode.<wbr/></p></span>
3208 <span class="entry_type_enum_name">ON (v3.2)</span>
3209 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3210 algorithm will not update its parameters while the lock
3211 is active.<wbr/></p></span>
3215 </td> <!-- entry_type -->
3217 <td class="entry_description">
3218 <p>Whether auto-white balance (AWB) is currently locked to its
3219 latest calculated values.<wbr/></p>
3222 <td class="entry_units">
3225 <td class="entry_range">
3228 <td class="entry_hal_version">
3232 <td class="entry_tags">
3233 <ul class="entry_tags">
3234 <li><a href="#tag_BC">BC</a></li>
3239 <tr class="entries_header">
3240 <th class="th_details" colspan="6">Details</th>
3242 <tr class="entry_cont">
3243 <td class="entry_details" colspan="6">
3244 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3245 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3246 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3247 get locked do not necessarily correspond to the settings that were present in the
3248 latest capture result received from the camera device,<wbr/> since additional captures
3249 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3250 application is switching between automatic and manual control and wishes to eliminate
3251 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3253 <li>Starting in auto-AWB mode:</li>
3255 <li>Wait for the first result to be output that has the AWB locked</li>
3256 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3257 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3259 <p>Note that AWB lock is only meaningful when
3260 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3261 AWB is already fixed to a specific setting.<wbr/></p>
3262 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3267 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3268 <!-- end of entry -->
3271 <tr class="entry" id="controls_android.control.awbMode">
3272 <td class="entry_name
3274 android.<wbr/>control.<wbr/>awb<wbr/>Mode
3276 <td class="entry_type">
3277 <span class="entry_type_name entry_type_name_enum">byte</span>
3279 <span class="entry_type_visibility"> [public]</span>
3282 <span class="entry_type_hwlevel">[legacy] </span>
3286 <ul class="entry_type_enum">
3288 <span class="entry_type_enum_name">OFF (v3.2)</span>
3289 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3290 <p>The application-selected color transform matrix
3291 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3292 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3293 device for manual white balance control.<wbr/></p></span>
3296 <span class="entry_type_enum_name">AUTO (v3.2)</span>
3297 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3298 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3299 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3300 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3301 values used by the camera device for the transform and gains
3302 will be available in the capture result for this request.<wbr/></p></span>
3305 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
3306 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3307 the camera device uses incandescent light as the assumed scene
3308 illumination for white balance.<wbr/></p>
3309 <p>While the exact white balance transforms are up to the
3310 camera device,<wbr/> they will approximately match the CIE
3311 standard illuminant A.<wbr/></p>
3312 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3313 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3314 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3315 values used by the camera device for the transform and gains
3316 will be available in the capture result for this request.<wbr/></p></span>
3319 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
3320 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3321 the camera device uses fluorescent light as the assumed scene
3322 illumination for white balance.<wbr/></p>
3323 <p>While the exact white balance transforms are up to the
3324 camera device,<wbr/> they will approximately match the CIE
3325 standard illuminant F2.<wbr/></p>
3326 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3327 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3328 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3329 values used by the camera device for the transform and gains
3330 will be available in the capture result for this request.<wbr/></p></span>
3333 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
3334 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3335 the camera device uses warm fluorescent light as the assumed scene
3336 illumination for white balance.<wbr/></p>
3337 <p>While the exact white balance transforms are up to the
3338 camera device,<wbr/> they will approximately match the CIE
3339 standard illuminant F4.<wbr/></p>
3340 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3341 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3342 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3343 values used by the camera device for the transform and gains
3344 will be available in the capture result for this request.<wbr/></p></span>
3347 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
3348 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3349 the camera device uses daylight light as the assumed scene
3350 illumination for white balance.<wbr/></p>
3351 <p>While the exact white balance transforms are up to the
3352 camera device,<wbr/> they will approximately match the CIE
3353 standard illuminant D65.<wbr/></p>
3354 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3355 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3356 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3357 values used by the camera device for the transform and gains
3358 will be available in the capture result for this request.<wbr/></p></span>
3361 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
3362 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3363 the camera device uses cloudy daylight light as the assumed scene
3364 illumination for white balance.<wbr/></p>
3365 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3366 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3367 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3368 values used by the camera device for the transform and gains
3369 will be available in the capture result for this request.<wbr/></p></span>
3372 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
3373 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3374 the camera device uses twilight light as the assumed scene
3375 illumination for white balance.<wbr/></p>
3376 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3377 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3378 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3379 values used by the camera device for the transform and gains
3380 will be available in the capture result for this request.<wbr/></p></span>
3383 <span class="entry_type_enum_name">SHADE (v3.2)</span>
3384 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3385 the camera device uses shade light as the assumed scene
3386 illumination for white balance.<wbr/></p>
3387 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3388 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3389 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3390 values used by the camera device for the transform and gains
3391 will be available in the capture result for this request.<wbr/></p></span>
3395 </td> <!-- entry_type -->
3397 <td class="entry_description">
3398 <p>Whether auto-white balance (AWB) is currently setting the color
3399 transform fields,<wbr/> and what its illumination target
3403 <td class="entry_units">
3406 <td class="entry_range">
3407 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3410 <td class="entry_hal_version">
3414 <td class="entry_tags">
3415 <ul class="entry_tags">
3416 <li><a href="#tag_BC">BC</a></li>
3421 <tr class="entries_header">
3422 <th class="th_details" colspan="6">Details</th>
3424 <tr class="entry_cont">
3425 <td class="entry_details" colspan="6">
3426 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3427 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3428 routine is enabled,<wbr/> overriding the application's selected
3429 <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
3430 <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>
3431 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3432 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
3433 setting AE mode to OFF.<wbr/></p>
3434 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3435 routine is disabled.<wbr/> The application manually controls the white
3436 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>
3437 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3438 <p>When set to any other modes,<wbr/> the camera device's auto-white
3439 balance routine is disabled.<wbr/> The camera device uses each
3440 particular illumination target for white balance
3441 adjustment.<wbr/> The application's values for
3442 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3443 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3444 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3449 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3450 <!-- end of entry -->
3453 <tr class="entry" id="controls_android.control.awbRegions">
3454 <td class="entry_name
3456 android.<wbr/>control.<wbr/>awb<wbr/>Regions
3458 <td class="entry_type">
3459 <span class="entry_type_name">int32</span>
3460 <span class="entry_type_container">x</span>
3462 <span class="entry_type_array">
3465 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3472 </td> <!-- entry_type -->
3474 <td class="entry_description">
3475 <p>List of metering areas to use for auto-white-balance illuminant
3476 estimation.<wbr/></p>
3479 <td class="entry_units">
3480 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3483 <td class="entry_range">
3484 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3485 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3488 <td class="entry_hal_version">
3492 <td class="entry_tags">
3493 <ul class="entry_tags">
3494 <li><a href="#tag_BC">BC</a></li>
3499 <tr class="entries_header">
3500 <th class="th_details" colspan="6">Details</th>
3502 <tr class="entry_cont">
3503 <td class="entry_details" colspan="6">
3504 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3505 Otherwise will always be present.<wbr/></p>
3506 <p>The maximum number of regions supported by the device is determined by the value
3507 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3508 <p>The coordinate system is based on the active pixel array,<wbr/>
3509 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3510 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3511 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3512 bottom-right pixel in the active pixel array.<wbr/></p>
3513 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3514 for every pixel in the area.<wbr/> This means that a large metering area
3515 with the same weight as a smaller area will have more effect in
3516 the metering result.<wbr/> Metering areas can partially overlap and the
3517 camera device will add the weights in the overlap region.<wbr/></p>
3518 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3519 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3520 0 weight is ignored.<wbr/></p>
3521 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3522 camera device.<wbr/></p>
3523 <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
3524 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3525 region and output only the intersection rectangle as the metering region in the result
3526 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3527 not reported in the result metadata.<wbr/></p>
3531 <tr class="entries_header">
3532 <th class="th_details" colspan="6">HAL Implementation Details</th>
3534 <tr class="entry_cont">
3535 <td class="entry_details" colspan="6">
3536 <p>The HAL level representation of MeteringRectangle[] is a
3537 int[5 * area_<wbr/>count].<wbr/>
3538 Every five elements represent a metering region of
3539 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3540 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3541 exclusive on xmax and ymax.<wbr/></p>
3545 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3546 <!-- end of entry -->
3549 <tr class="entry" id="controls_android.control.captureIntent">
3550 <td class="entry_name
3552 android.<wbr/>control.<wbr/>capture<wbr/>Intent
3554 <td class="entry_type">
3555 <span class="entry_type_name entry_type_name_enum">byte</span>
3557 <span class="entry_type_visibility"> [public]</span>
3560 <span class="entry_type_hwlevel">[legacy] </span>
3564 <ul class="entry_type_enum">
3566 <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
3567 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3568 categories.<wbr/> The camera device will default to preview-like
3569 behavior.<wbr/></p></span>
3572 <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
3573 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3574 <p>The precapture trigger may be used to start off a metering
3575 w/<wbr/>flash sequence.<wbr/></p></span>
3578 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
3579 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3581 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3584 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
3585 <span class="entry_type_enum_notes"><p>This request is for a video recording
3586 use case.<wbr/></p></span>
3589 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
3590 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3591 image while recording video) use case.<wbr/></p>
3592 <p>The camera device should take the highest-quality image
3593 possible (given the other settings) without disrupting the
3594 frame rate of video recording.<wbr/> </p></span>
3597 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
3598 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3599 application will stream full-resolution images and
3600 reprocess one or several later for a final
3601 capture.<wbr/></p></span>
3604 <span class="entry_type_enum_name">MANUAL (v3.2)</span>
3605 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3606 the applications want to directly control the capture parameters.<wbr/></p>
3607 <p>For example,<wbr/> the application may wish to manually control
3608 <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>
3611 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
3612 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
3613 the application will use camera and inertial sensor data to
3614 locate and track objects in the world.<wbr/></p>
3615 <p>The camera device auto-exposure routine will limit the exposure time
3616 of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
3620 </td> <!-- entry_type -->
3622 <td class="entry_description">
3623 <p>Information to the camera device 3A (auto-exposure,<wbr/>
3624 auto-focus,<wbr/> auto-white balance) routines about the purpose
3625 of this capture,<wbr/> to help the camera device to decide optimal 3A
3629 <td class="entry_units">
3632 <td class="entry_range">
3635 <td class="entry_hal_version">
3639 <td class="entry_tags">
3640 <ul class="entry_tags">
3641 <li><a href="#tag_BC">BC</a></li>
3646 <tr class="entries_header">
3647 <th class="th_details" colspan="6">Details</th>
3649 <tr class="entry_cont">
3650 <td class="entry_details" colspan="6">
3651 <p>This control (except for MANUAL) is only effective if
3652 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3653 <p>All intents are supported by all devices,<wbr/> except that:
3654 * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3655 PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
3656 * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3657 MANUAL_<wbr/>SENSOR.<wbr/>
3658 * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3659 MOTION_<wbr/>TRACKING.<wbr/></p>
3664 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3665 <!-- end of entry -->
3668 <tr class="entry" id="controls_android.control.effectMode">
3669 <td class="entry_name
3671 android.<wbr/>control.<wbr/>effect<wbr/>Mode
3673 <td class="entry_type">
3674 <span class="entry_type_name entry_type_name_enum">byte</span>
3676 <span class="entry_type_visibility"> [public]</span>
3679 <span class="entry_type_hwlevel">[legacy] </span>
3683 <ul class="entry_type_enum">
3685 <span class="entry_type_enum_name">OFF (v3.2)</span>
3686 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3689 <span class="entry_type_enum_name">MONO (v3.2)</span>
3690 <span class="entry_type_enum_optional">[optional]</span>
3691 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3692 a single color.<wbr/></p>
3693 <p>This will typically be grayscale.<wbr/></p></span>
3696 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
3697 <span class="entry_type_enum_optional">[optional]</span>
3698 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3699 are inverted.<wbr/></p></span>
3702 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
3703 <span class="entry_type_enum_optional">[optional]</span>
3704 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3705 image is wholly or partially reversed in
3706 tone.<wbr/></p></span>
3709 <span class="entry_type_enum_name">SEPIA (v3.2)</span>
3710 <span class="entry_type_enum_optional">[optional]</span>
3711 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3712 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3715 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
3716 <span class="entry_type_enum_optional">[optional]</span>
3717 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3718 discrete regions of tone rather than a continuous
3719 gradient of tones.<wbr/></p></span>
3722 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
3723 <span class="entry_type_enum_optional">[optional]</span>
3724 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3725 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3728 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
3729 <span class="entry_type_enum_optional">[optional]</span>
3730 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3731 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3734 <span class="entry_type_enum_name">AQUA (v3.2)</span>
3735 <span class="entry_type_enum_optional">[optional]</span>
3736 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3740 </td> <!-- entry_type -->
3742 <td class="entry_description">
3743 <p>A special color effect to apply.<wbr/></p>
3746 <td class="entry_units">
3749 <td class="entry_range">
3750 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3753 <td class="entry_hal_version">
3757 <td class="entry_tags">
3758 <ul class="entry_tags">
3759 <li><a href="#tag_BC">BC</a></li>
3764 <tr class="entries_header">
3765 <th class="th_details" colspan="6">Details</th>
3767 <tr class="entry_cont">
3768 <td class="entry_details" colspan="6">
3769 <p>When this mode is set,<wbr/> a color effect will be applied
3770 to images produced by the camera device.<wbr/> The interpretation
3771 and implementation of these color effects is left to the
3772 implementor of the camera device,<wbr/> and should not be
3773 depended on to be consistent (or present) across all
3779 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3780 <!-- end of entry -->
3783 <tr class="entry" id="controls_android.control.mode">
3784 <td class="entry_name
3786 android.<wbr/>control.<wbr/>mode
3788 <td class="entry_type">
3789 <span class="entry_type_name entry_type_name_enum">byte</span>
3791 <span class="entry_type_visibility"> [public]</span>
3794 <span class="entry_type_hwlevel">[legacy] </span>
3798 <ul class="entry_type_enum">
3800 <span class="entry_type_enum_name">OFF (v3.2)</span>
3801 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3802 <p>All control by the device's metering and focusing (3A)
3803 routines is disabled,<wbr/> and no other settings in
3804 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3805 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3806 device to select post-processing values for processing
3807 blocks that do not allow for manual control,<wbr/> or are not
3808 exposed by the camera API.<wbr/></p>
3809 <p>However,<wbr/> the camera device's 3A routines may continue to
3810 collect statistics and update their internal state so that
3811 when control is switched to AUTO mode,<wbr/> good control values
3812 can be immediately applied.<wbr/></p></span>
3815 <span class="entry_type_enum_name">AUTO (v3.2)</span>
3816 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3817 <p>Manual control of capture parameters is disabled.<wbr/> All
3818 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3819 effect.<wbr/></p></span>
3822 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
3823 <span class="entry_type_enum_optional">[optional]</span>
3824 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3825 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3826 control.<wbr/>afMode controls; the camera device will ignore
3827 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3828 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3829 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3830 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3831 contain some modes other than DISABLED).<wbr/></p></span>
3834 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
3835 <span class="entry_type_enum_optional">[optional]</span>
3836 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3837 used by camera device background auto-exposure,<wbr/> auto-white balance and
3838 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3839 <p>Specifically,<wbr/> the 3A routines are locked to the last
3840 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3841 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3842 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3843 discarded by the camera device.<wbr/></p></span>
3847 </td> <!-- entry_type -->
3849 <td class="entry_description">
3850 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3854 <td class="entry_units">
3857 <td class="entry_range">
3858 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3861 <td class="entry_hal_version">
3865 <td class="entry_tags">
3866 <ul class="entry_tags">
3867 <li><a href="#tag_BC">BC</a></li>
3872 <tr class="entries_header">
3873 <th class="th_details" colspan="6">Details</th>
3875 <tr class="entry_cont">
3876 <td class="entry_details" colspan="6">
3877 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3878 by the camera device is disabled.<wbr/> The application must set the fields for
3879 capture parameters itself.<wbr/></p>
3880 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3881 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>
3882 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3883 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
3884 implements one of the scene mode settings (such as ACTION,<wbr/>
3885 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
3886 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3887 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3888 is that this frame will not be used by camera device background 3A statistics
3889 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3890 where the application doesn't want a 3A manual control capture to affect
3891 the subsequent auto 3A capture results.<wbr/></p>
3896 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3897 <!-- end of entry -->
3900 <tr class="entry" id="controls_android.control.sceneMode">
3901 <td class="entry_name
3903 android.<wbr/>control.<wbr/>scene<wbr/>Mode
3905 <td class="entry_type">
3906 <span class="entry_type_name entry_type_name_enum">byte</span>
3908 <span class="entry_type_visibility"> [public]</span>
3911 <span class="entry_type_hwlevel">[legacy] </span>
3915 <ul class="entry_type_enum">
3917 <span class="entry_type_enum_name">DISABLED (v3.2)</span>
3918 <span class="entry_type_enum_value">0</span>
3919 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3922 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
3923 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3924 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3925 auto-exposure routines.<wbr/></p>
3926 <p>If face detection statistics are disabled
3927 (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/>
3928 this should still operate correctly (but will not return
3929 face detection statistics to the framework).<wbr/></p>
3930 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3931 <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>
3932 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3935 <span class="entry_type_enum_name">ACTION (v3.2)</span>
3936 <span class="entry_type_enum_optional">[optional]</span>
3937 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3938 <p>Similar to SPORTS.<wbr/></p></span>
3941 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
3942 <span class="entry_type_enum_optional">[optional]</span>
3943 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3946 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
3947 <span class="entry_type_enum_optional">[optional]</span>
3948 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3951 <span class="entry_type_enum_name">NIGHT (v3.2)</span>
3952 <span class="entry_type_enum_optional">[optional]</span>
3953 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3956 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
3957 <span class="entry_type_enum_optional">[optional]</span>
3958 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3959 settings.<wbr/></p></span>
3962 <span class="entry_type_enum_name">THEATRE (v3.2)</span>
3963 <span class="entry_type_enum_optional">[optional]</span>
3964 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3965 remain off.<wbr/></p></span>
3968 <span class="entry_type_enum_name">BEACH (v3.2)</span>
3969 <span class="entry_type_enum_optional">[optional]</span>
3970 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3973 <span class="entry_type_enum_name">SNOW (v3.2)</span>
3974 <span class="entry_type_enum_optional">[optional]</span>
3975 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3978 <span class="entry_type_enum_name">SUNSET (v3.2)</span>
3979 <span class="entry_type_enum_optional">[optional]</span>
3980 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3983 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
3984 <span class="entry_type_enum_optional">[optional]</span>
3985 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3986 device motion (for example: due to hand shake).<wbr/></p></span>
3989 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
3990 <span class="entry_type_enum_optional">[optional]</span>
3991 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3994 <span class="entry_type_enum_name">SPORTS (v3.2)</span>
3995 <span class="entry_type_enum_optional">[optional]</span>
3996 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3997 <p>Similar to ACTION.<wbr/></p></span>
4000 <span class="entry_type_enum_name">PARTY (v3.2)</span>
4001 <span class="entry_type_enum_optional">[optional]</span>
4002 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
4003 people.<wbr/></p></span>
4006 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
4007 <span class="entry_type_enum_optional">[optional]</span>
4008 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
4009 is a flame.<wbr/></p></span>
4012 <span class="entry_type_enum_name">BARCODE (v3.2)</span>
4013 <span class="entry_type_enum_optional">[optional]</span>
4014 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
4015 for use by camera applications that wish to read the
4016 barcode value.<wbr/></p></span>
4019 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
4020 <span class="entry_type_enum_deprecated">[deprecated]</span>
4021 <span class="entry_type_enum_optional">[optional]</span>
4022 <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>
4023 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
4024 for high speed video recording.<wbr/></p>
4025 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p>
4026 <p>The supported high speed video sizes and fps ranges are specified in
4027 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
4028 output frame rates,<wbr/> the application is only allowed to select video size
4029 and fps range combinations listed in this static metadata.<wbr/> The fps range
4030 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
4031 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
4032 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
4033 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
4034 and post-processing parameters is possible.<wbr/> All other controls operate the
4035 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
4036 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
4038 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
4039 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
4040 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4041 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4042 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4043 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4044 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4045 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4046 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4047 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
4049 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4051 <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>
4052 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4053 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4054 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4056 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4057 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4058 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4059 the application need check if the video encoder is capable of supporting the
4060 high frame rate for a given video size,<wbr/> or it will end up with lower recording
4061 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4062 rate will be bounded by the screen refresh rate.<wbr/></p>
4063 <p>The camera device will only support up to 2 output high speed streams
4064 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4065 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4067 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4068 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4069 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>
4070 <li>The stream sizes are selected from the sizes reported by
4071 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4072 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
4074 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
4075 <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/>
4076 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
4077 and the returned capture result metadata will give the fps range choosen
4078 by the camera device.<wbr/></p>
4079 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4080 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4081 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4084 <span class="entry_type_enum_name">HDR (v3.2)</span>
4085 <span class="entry_type_enum_optional">[optional]</span>
4086 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4087 <p>In this scene mode,<wbr/> the camera device captures images
4088 that keep a larger range of scene illumination levels
4089 visible in the final image.<wbr/> For example,<wbr/> when taking a
4090 picture of a object in front of a bright window,<wbr/> both
4091 the object and the scene through the window may be
4092 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4093 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4094 HDR mode generally takes much longer to capture a single
4095 image,<wbr/> has no user control,<wbr/> and may have other artifacts
4096 depending on the HDR method used.<wbr/></p>
4097 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
4098 than regular captures.<wbr/></p>
4099 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4100 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4101 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4102 using a high dynamic range capture technique.<wbr/> On LEGACY
4103 devices,<wbr/> captures that target a JPEG-format output will
4104 be captured with HDR,<wbr/> and the capture intent is not
4106 <p>The HDR capture may involve the device capturing a burst
4107 of images internally and combining them into one,<wbr/> or it
4108 may involve the device using specialized high dynamic
4109 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4110 produced in response to a capture request submitted
4111 while in HDR mode.<wbr/></p>
4112 <p>Since substantial post-processing is generally needed to
4113 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4114 outputs are supported for LIMITED/<wbr/>FULL device HDR
4115 captures,<wbr/> and only JPEG outputs are supported for LEGACY
4116 HDR captures.<wbr/> Using a RAW output for HDR capture is not
4117 supported.<wbr/></p>
4118 <p>Some devices may also support always-on HDR,<wbr/> which
4119 applies HDR processing at full frame rate.<wbr/> For these
4120 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4121 produce an HDR output with no frame rate impact compared
4122 to normal operation,<wbr/> though the quality may be lower
4123 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4124 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4125 or capture intents,<wbr/> the images captured will be as if
4126 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
4129 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
4130 <span class="entry_type_enum_optional">[optional]</span>
4131 <span class="entry_type_enum_hidden">[hidden]</span>
4132 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
4133 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
4134 under low light conditions.<wbr/></p>
4135 <p>The camera device may be tuned to expose the images in a reduced
4136 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4137 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/>
4138 the camera device auto-exposure routine tuning process may limit the actual
4139 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
4140 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
4141 low light may be under-exposed when the sensor max exposure time (bounded by the
4142 <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
4143 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
4144 camera device auto-exposure routine to increase the sensitivity up to the max
4145 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
4146 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
4147 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
4148 recommended that the application only use this scene mode when it is capable of
4149 reducing the noise level of the captured images.<wbr/></p>
4150 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4151 <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>
4152 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4155 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
4156 <span class="entry_type_enum_optional">[optional]</span>
4157 <span class="entry_type_enum_hidden">[hidden]</span>
4158 <span class="entry_type_enum_value">100</span>
4159 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4160 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4161 customized scene modes.<wbr/></p></span>
4164 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
4165 <span class="entry_type_enum_optional">[optional]</span>
4166 <span class="entry_type_enum_hidden">[hidden]</span>
4167 <span class="entry_type_enum_value">127</span>
4168 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4169 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4170 customized scene modes.<wbr/></p></span>
4174 </td> <!-- entry_type -->
4176 <td class="entry_description">
4177 <p>Control for which scene mode is currently active.<wbr/></p>
4180 <td class="entry_units">
4183 <td class="entry_range">
4184 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4187 <td class="entry_hal_version">
4191 <td class="entry_tags">
4192 <ul class="entry_tags">
4193 <li><a href="#tag_BC">BC</a></li>
4198 <tr class="entries_header">
4199 <th class="th_details" colspan="6">Details</th>
4201 <tr class="entry_cont">
4202 <td class="entry_details" colspan="6">
4203 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4204 capture settings.<wbr/></p>
4205 <p>This is the mode that that is active when
4206 <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
4207 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>
4208 while in use.<wbr/></p>
4209 <p>The interpretation and implementation of these scene modes is left
4210 to the implementor of the camera device.<wbr/> Their behavior will not be
4211 consistent across all devices,<wbr/> and any given device may only implement
4212 a subset of these modes.<wbr/></p>
4216 <tr class="entries_header">
4217 <th class="th_details" colspan="6">HAL Implementation Details</th>
4219 <tr class="entry_cont">
4220 <td class="entry_details" colspan="6">
4221 <p>HAL implementations that include scene modes are expected to provide
4222 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4223 <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
4224 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4225 <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/> the
4226 HAL must list supported video size and fps range in
4227 <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/> 1280x720,<wbr/>
4228 if the HAL has two different sensor configurations for normal streaming mode and high
4229 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4230 HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
4231 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4232 <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
4233 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4237 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4238 <!-- end of entry -->
4241 <tr class="entry" id="controls_android.control.videoStabilizationMode">
4242 <td class="entry_name
4244 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4246 <td class="entry_type">
4247 <span class="entry_type_name entry_type_name_enum">byte</span>
4249 <span class="entry_type_visibility"> [public]</span>
4252 <span class="entry_type_hwlevel">[legacy] </span>
4256 <ul class="entry_type_enum">
4258 <span class="entry_type_enum_name">OFF (v3.2)</span>
4259 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4262 <span class="entry_type_enum_name">ON (v3.2)</span>
4263 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4267 </td> <!-- entry_type -->
4269 <td class="entry_description">
4270 <p>Whether video stabilization is
4274 <td class="entry_units">
4277 <td class="entry_range">
4280 <td class="entry_hal_version">
4284 <td class="entry_tags">
4285 <ul class="entry_tags">
4286 <li><a href="#tag_BC">BC</a></li>
4291 <tr class="entries_header">
4292 <th class="th_details" colspan="6">Details</th>
4294 <tr class="entry_cont">
4295 <td class="entry_details" colspan="6">
4296 <p>Video stabilization automatically warps images from
4297 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4298 <p>If enabled,<wbr/> video stabilization can modify the
4299 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4300 <p>Switching between different video stabilization modes may take several
4301 frames to initialize,<wbr/> the camera device will report the current mode
4302 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4303 the video stabilization modes in the first several capture results may
4304 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4306 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4307 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4308 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4309 the recording resolution is less than or equal to 1920 x 1080 (width less than
4310 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4311 frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
4312 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4313 OFF if the recording output is not stabilized,<wbr/> or if there are no output
4314 Surface types that can be stabilized.<wbr/></p>
4315 <p>If a camera device supports both this mode and OIS
4316 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4317 produce undesirable interaction,<wbr/> so it is recommended not to enable
4318 both at the same time.<wbr/></p>
4323 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4324 <!-- end of entry -->
4327 <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4328 <td class="entry_name
4330 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4332 <td class="entry_type">
4333 <span class="entry_type_name">int32</span>
4335 <span class="entry_type_visibility"> [public]</span>
4342 </td> <!-- entry_type -->
4344 <td class="entry_description">
4345 <p>The amount of additional sensitivity boost applied to output images
4346 after RAW sensor data is captured.<wbr/></p>
4349 <td class="entry_units">
4350 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4353 <td class="entry_range">
4354 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4357 <td class="entry_hal_version">
4361 <td class="entry_tags">
4365 <tr class="entries_header">
4366 <th class="th_details" colspan="6">Details</th>
4368 <tr class="entry_cont">
4369 <td class="entry_details" colspan="6">
4370 <p>Some camera devices support additional digital sensitivity boosting in the
4371 camera processing pipeline after sensor RAW image is captured.<wbr/>
4372 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4373 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4374 <p>This key will be <code>null</code> for devices that do not support any RAW format
4375 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4376 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4377 list <code>100</code> in this key.<wbr/></p>
4378 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4379 boost to the nearest supported value.<wbr/>
4380 The final boost value used will be available in the output capture result.<wbr/></p>
4381 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4382 of such device will have the total sensitivity of
4383 <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>
4384 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4385 <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
4386 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4391 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4392 <!-- end of entry -->
4395 <tr class="entry" id="controls_android.control.enableZsl">
4396 <td class="entry_name
4398 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4400 <td class="entry_type">
4401 <span class="entry_type_name entry_type_name_enum">byte</span>
4403 <span class="entry_type_visibility"> [public as boolean]</span>
4409 <ul class="entry_type_enum">
4411 <span class="entry_type_enum_name">FALSE (v3.2)</span>
4412 <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
4413 after previous requests.<wbr/></p></span>
4416 <span class="entry_type_enum_name">TRUE (v3.2)</span>
4417 <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
4418 captured before previous requests.<wbr/></p></span>
4422 </td> <!-- entry_type -->
4424 <td class="entry_description">
4425 <p>Allow camera device to enable zero-shutter-lag mode for requests with
4426 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4429 <td class="entry_units">
4432 <td class="entry_range">
4435 <td class="entry_hal_version">
4439 <td class="entry_tags">
4443 <tr class="entries_header">
4444 <th class="th_details" colspan="6">Details</th>
4446 <tr class="entry_cont">
4447 <td class="entry_details" colspan="6">
4448 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4449 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4450 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4451 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4452 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4453 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4454 capture intents.<wbr/></p>
4455 <p>For example,<wbr/> when requests are submitted in the following order:
4456 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4457 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>
4458 <p>The output images for request B may have contents captured before the output images for
4459 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4460 request A.<wbr/></p>
4461 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4462 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4463 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4464 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4465 <code>false</code> if present.<wbr/></p>
4466 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4467 capture templates is always <code>false</code> if present.<wbr/></p>
4468 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4472 <tr class="entries_header">
4473 <th class="th_details" colspan="6">HAL Implementation Details</th>
4475 <tr class="entry_cont">
4476 <td class="entry_details" colspan="6">
4477 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4478 capture intent.<wbr/></p>
4482 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4483 <!-- end of entry -->
4487 <!-- end of kind -->
4489 <tr><td colspan="7" class="kind">static</td></tr>
4491 <thead class="entries_header">
4493 <th class="th_name">Property Name</th>
4494 <th class="th_type">Type</th>
4495 <th class="th_description">Description</th>
4496 <th class="th_units">Units</th>
4497 <th class="th_range">Range</th>
4498 <th class="th_hal_version">Initial HIDL HAL version</th>
4499 <th class="th_tags">Tags</th>
4514 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4515 <td class="entry_name
4517 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4519 <td class="entry_type">
4520 <span class="entry_type_name">byte</span>
4521 <span class="entry_type_container">x</span>
4523 <span class="entry_type_array">
4526 <span class="entry_type_visibility"> [public as enumList]</span>
4529 <span class="entry_type_hwlevel">[legacy] </span>
4532 <div class="entry_type_notes">list of enums</div>
4535 </td> <!-- entry_type -->
4537 <td class="entry_description">
4538 <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
4539 supported by this camera device.<wbr/></p>
4542 <td class="entry_units">
4545 <td class="entry_range">
4546 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4549 <td class="entry_hal_version">
4553 <td class="entry_tags">
4554 <ul class="entry_tags">
4555 <li><a href="#tag_BC">BC</a></li>
4560 <tr class="entries_header">
4561 <th class="th_details" colspan="6">Details</th>
4563 <tr class="entry_cont">
4564 <td class="entry_details" colspan="6">
4565 <p>Not all of the auto-exposure anti-banding modes may be
4566 supported by a given camera device.<wbr/> This field lists the
4567 valid anti-banding modes that the application may request
4568 for this camera device with the
4569 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4574 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4575 <!-- end of entry -->
4578 <tr class="entry" id="static_android.control.aeAvailableModes">
4579 <td class="entry_name
4581 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4583 <td class="entry_type">
4584 <span class="entry_type_name">byte</span>
4585 <span class="entry_type_container">x</span>
4587 <span class="entry_type_array">
4590 <span class="entry_type_visibility"> [public as enumList]</span>
4593 <span class="entry_type_hwlevel">[legacy] </span>
4596 <div class="entry_type_notes">list of enums</div>
4599 </td> <!-- entry_type -->
4601 <td class="entry_description">
4602 <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
4606 <td class="entry_units">
4609 <td class="entry_range">
4610 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4613 <td class="entry_hal_version">
4617 <td class="entry_tags">
4618 <ul class="entry_tags">
4619 <li><a href="#tag_BC">BC</a></li>
4624 <tr class="entries_header">
4625 <th class="th_details" colspan="6">Details</th>
4627 <tr class="entry_cont">
4628 <td class="entry_details" colspan="6">
4629 <p>Not all the auto-exposure modes may be supported by a
4630 given camera device,<wbr/> especially if no flash unit is
4631 available.<wbr/> This entry lists the valid modes for
4632 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4633 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4634 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4635 <p>FULL mode camera devices always support OFF mode,<wbr/>
4636 which enables application control of camera exposure time,<wbr/>
4637 sensitivity,<wbr/> and frame duration.<wbr/></p>
4638 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4639 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4640 capability.<wbr/></p>
4645 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4646 <!-- end of entry -->
4649 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4650 <td class="entry_name
4652 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4654 <td class="entry_type">
4655 <span class="entry_type_name">int32</span>
4656 <span class="entry_type_container">x</span>
4658 <span class="entry_type_array">
4661 <span class="entry_type_visibility"> [public as rangeInt]</span>
4664 <span class="entry_type_hwlevel">[legacy] </span>
4667 <div class="entry_type_notes">list of pairs of frame rates</div>
4670 </td> <!-- entry_type -->
4672 <td class="entry_description">
4673 <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
4674 this camera device.<wbr/></p>
4677 <td class="entry_units">
4678 Frames per second (FPS)
4681 <td class="entry_range">
4684 <td class="entry_hal_version">
4688 <td class="entry_tags">
4689 <ul class="entry_tags">
4690 <li><a href="#tag_BC">BC</a></li>
4695 <tr class="entries_header">
4696 <th class="th_details" colspan="6">Details</th>
4698 <tr class="entry_cont">
4699 <td class="entry_details" colspan="6">
4700 <p>For devices at the LEGACY level or above:</p>
4703 <p>For constant-framerate recording,<wbr/> for each normal
4704 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4705 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4706 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4707 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4708 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4709 supported by the device and has
4710 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4711 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4714 <p>Also,<wbr/> a camera device must either not support any
4715 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4716 or support at least one
4717 normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4718 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p>
4721 <p>For devices at the LIMITED level or above:</p>
4723 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4724 and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the
4725 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4731 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4732 <!-- end of entry -->
4735 <tr class="entry" id="static_android.control.aeCompensationRange">
4736 <td class="entry_name
4738 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4740 <td class="entry_type">
4741 <span class="entry_type_name">int32</span>
4742 <span class="entry_type_container">x</span>
4744 <span class="entry_type_array">
4747 <span class="entry_type_visibility"> [public as rangeInt]</span>
4750 <span class="entry_type_hwlevel">[legacy] </span>
4755 </td> <!-- entry_type -->
4757 <td class="entry_description">
4758 <p>Maximum and minimum exposure compensation values for
4759 <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/>
4760 that are supported by this camera device.<wbr/></p>
4763 <td class="entry_units">
4766 <td class="entry_range">
4767 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4768 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4769 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4770 <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>
4771 <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>
4772 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4775 <td class="entry_hal_version">
4779 <td class="entry_tags">
4780 <ul class="entry_tags">
4781 <li><a href="#tag_BC">BC</a></li>
4788 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4789 <!-- end of entry -->
4792 <tr class="entry" id="static_android.control.aeCompensationStep">
4793 <td class="entry_name
4795 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4797 <td class="entry_type">
4798 <span class="entry_type_name">rational</span>
4800 <span class="entry_type_visibility"> [public]</span>
4803 <span class="entry_type_hwlevel">[legacy] </span>
4808 </td> <!-- entry_type -->
4810 <td class="entry_description">
4811 <p>Smallest step by which the exposure compensation
4812 can be changed.<wbr/></p>
4815 <td class="entry_units">
4819 <td class="entry_range">
4822 <td class="entry_hal_version">
4826 <td class="entry_tags">
4827 <ul class="entry_tags">
4828 <li><a href="#tag_BC">BC</a></li>
4833 <tr class="entries_header">
4834 <th class="th_details" colspan="6">Details</th>
4836 <tr class="entry_cont">
4837 <td class="entry_details" colspan="6">
4838 <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
4839 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
4840 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4841 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4842 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4846 <tr class="entries_header">
4847 <th class="th_details" colspan="6">HAL Implementation Details</th>
4849 <tr class="entry_cont">
4850 <td class="entry_details" colspan="6">
4851 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4855 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4856 <!-- end of entry -->
4859 <tr class="entry" id="static_android.control.afAvailableModes">
4860 <td class="entry_name
4862 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4864 <td class="entry_type">
4865 <span class="entry_type_name">byte</span>
4866 <span class="entry_type_container">x</span>
4868 <span class="entry_type_array">
4871 <span class="entry_type_visibility"> [public as enumList]</span>
4874 <span class="entry_type_hwlevel">[legacy] </span>
4877 <div class="entry_type_notes">List of enums</div>
4880 </td> <!-- entry_type -->
4882 <td class="entry_description">
4883 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4884 supported by this camera device.<wbr/></p>
4887 <td class="entry_units">
4890 <td class="entry_range">
4891 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4894 <td class="entry_hal_version">
4898 <td class="entry_tags">
4899 <ul class="entry_tags">
4900 <li><a href="#tag_BC">BC</a></li>
4905 <tr class="entries_header">
4906 <th class="th_details" colspan="6">Details</th>
4908 <tr class="entry_cont">
4909 <td class="entry_details" colspan="6">
4910 <p>Not all the auto-focus modes may be supported by a
4911 given camera device.<wbr/> This entry lists the valid modes for
4912 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4913 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4914 camera devices with adjustable focuser units
4915 (<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>
4916 <p>LEGACY devices will support OFF mode only if they support
4917 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4918 <code>0.<wbr/>0f</code>).<wbr/></p>
4923 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4924 <!-- end of entry -->
4927 <tr class="entry" id="static_android.control.availableEffects">
4928 <td class="entry_name
4930 android.<wbr/>control.<wbr/>available<wbr/>Effects
4932 <td class="entry_type">
4933 <span class="entry_type_name">byte</span>
4934 <span class="entry_type_container">x</span>
4936 <span class="entry_type_array">
4939 <span class="entry_type_visibility"> [public as enumList]</span>
4942 <span class="entry_type_hwlevel">[legacy] </span>
4945 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4948 </td> <!-- entry_type -->
4950 <td class="entry_description">
4951 <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
4955 <td class="entry_units">
4958 <td class="entry_range">
4959 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4962 <td class="entry_hal_version">
4966 <td class="entry_tags">
4967 <ul class="entry_tags">
4968 <li><a href="#tag_BC">BC</a></li>
4973 <tr class="entries_header">
4974 <th class="th_details" colspan="6">Details</th>
4976 <tr class="entry_cont">
4977 <td class="entry_details" colspan="6">
4978 <p>This list contains the color effect modes that can be applied to
4979 images produced by the camera device.<wbr/>
4980 Implementations are not expected to be consistent across all devices.<wbr/>
4981 If no color effect modes are available for a device,<wbr/> this will only list
4983 <p>A color effect will only be applied if
4984 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p>
4985 <p>This control has no effect on the operation of other control routines such
4986 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4991 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4992 <!-- end of entry -->
4995 <tr class="entry" id="static_android.control.availableSceneModes">
4996 <td class="entry_name
4998 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
5000 <td class="entry_type">
5001 <span class="entry_type_name">byte</span>
5002 <span class="entry_type_container">x</span>
5004 <span class="entry_type_array">
5007 <span class="entry_type_visibility"> [public as enumList]</span>
5010 <span class="entry_type_hwlevel">[legacy] </span>
5013 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
5016 </td> <!-- entry_type -->
5018 <td class="entry_description">
5019 <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
5023 <td class="entry_units">
5026 <td class="entry_range">
5027 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
5030 <td class="entry_hal_version">
5034 <td class="entry_tags">
5035 <ul class="entry_tags">
5036 <li><a href="#tag_BC">BC</a></li>
5041 <tr class="entries_header">
5042 <th class="th_details" colspan="6">Details</th>
5044 <tr class="entry_cont">
5045 <td class="entry_details" colspan="6">
5046 <p>This list contains scene modes that can be set for the camera device.<wbr/>
5047 Only scene modes that have been fully implemented for the
5048 camera device may be included here.<wbr/> Implementations are not expected
5049 to be consistent across all devices.<wbr/></p>
5050 <p>If no scene modes are supported by the camera device,<wbr/> this
5051 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5052 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
5053 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> >
5054 0</code>).<wbr/></p>
5059 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5060 <!-- end of entry -->
5063 <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
5064 <td class="entry_name
5066 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
5068 <td class="entry_type">
5069 <span class="entry_type_name">byte</span>
5070 <span class="entry_type_container">x</span>
5072 <span class="entry_type_array">
5075 <span class="entry_type_visibility"> [public as enumList]</span>
5078 <span class="entry_type_hwlevel">[legacy] </span>
5081 <div class="entry_type_notes">List of enums.<wbr/></div>
5084 </td> <!-- entry_type -->
5086 <td class="entry_description">
5087 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5088 that are supported by this camera device.<wbr/></p>
5091 <td class="entry_units">
5094 <td class="entry_range">
5095 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
5098 <td class="entry_hal_version">
5102 <td class="entry_tags">
5103 <ul class="entry_tags">
5104 <li><a href="#tag_BC">BC</a></li>
5109 <tr class="entries_header">
5110 <th class="th_details" colspan="6">Details</th>
5112 <tr class="entry_cont">
5113 <td class="entry_details" colspan="6">
5114 <p>OFF will always be listed.<wbr/></p>
5119 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5120 <!-- end of entry -->
5123 <tr class="entry" id="static_android.control.awbAvailableModes">
5124 <td class="entry_name
5126 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
5128 <td class="entry_type">
5129 <span class="entry_type_name">byte</span>
5130 <span class="entry_type_container">x</span>
5132 <span class="entry_type_array">
5135 <span class="entry_type_visibility"> [public as enumList]</span>
5138 <span class="entry_type_hwlevel">[legacy] </span>
5141 <div class="entry_type_notes">List of enums</div>
5144 </td> <!-- entry_type -->
5146 <td class="entry_description">
5147 <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
5148 camera device.<wbr/></p>
5151 <td class="entry_units">
5154 <td class="entry_range">
5155 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
5158 <td class="entry_hal_version">
5162 <td class="entry_tags">
5163 <ul class="entry_tags">
5164 <li><a href="#tag_BC">BC</a></li>
5169 <tr class="entries_header">
5170 <th class="th_details" colspan="6">Details</th>
5172 <tr class="entry_cont">
5173 <td class="entry_details" colspan="6">
5174 <p>Not all the auto-white-balance modes may be supported by a
5175 given camera device.<wbr/> This entry lists the valid modes for
5176 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
5177 <p>All camera devices will support ON mode.<wbr/></p>
5178 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
5179 mode,<wbr/> which enables application control of white balance,<wbr/> by using
5180 <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
5181 mode camera devices.<wbr/></p>
5186 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5187 <!-- end of entry -->
5190 <tr class="entry" id="static_android.control.maxRegions">
5191 <td class="entry_name
5193 android.<wbr/>control.<wbr/>max<wbr/>Regions
5195 <td class="entry_type">
5196 <span class="entry_type_name">int32</span>
5197 <span class="entry_type_container">x</span>
5199 <span class="entry_type_array">
5202 <span class="entry_type_visibility"> [ndk_public]</span>
5205 <span class="entry_type_hwlevel">[legacy] </span>
5210 </td> <!-- entry_type -->
5212 <td class="entry_description">
5213 <p>List of the maximum number of regions that can be used for metering in
5214 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5215 this corresponds to the the maximum number of elements in
5216 <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/>
5217 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5220 <td class="entry_units">
5223 <td class="entry_range">
5224 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices
5225 this value must be >= 1 for AE and AF.<wbr/> The order of the elements is:
5226 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5229 <td class="entry_hal_version">
5233 <td class="entry_tags">
5234 <ul class="entry_tags">
5235 <li><a href="#tag_BC">BC</a></li>
5242 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5243 <!-- end of entry -->
5246 <tr class="entry" id="static_android.control.maxRegionsAe">
5247 <td class="entry_name
5249 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5251 <td class="entry_type">
5252 <span class="entry_type_name">int32</span>
5254 <span class="entry_type_visibility"> [java_public]</span>
5256 <span class="entry_type_synthetic">[synthetic] </span>
5258 <span class="entry_type_hwlevel">[legacy] </span>
5263 </td> <!-- entry_type -->
5265 <td class="entry_description">
5266 <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5270 <td class="entry_units">
5273 <td class="entry_range">
5274 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this
5275 value will be >= 1.<wbr/></p>
5278 <td class="entry_hal_version">
5282 <td class="entry_tags">
5286 <tr class="entries_header">
5287 <th class="th_details" colspan="6">Details</th>
5289 <tr class="entry_cont">
5290 <td class="entry_details" colspan="6">
5291 <p>This corresponds to the the maximum allowed number of elements in
5292 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5296 <tr class="entries_header">
5297 <th class="th_details" colspan="6">HAL Implementation Details</th>
5299 <tr class="entry_cont">
5300 <td class="entry_details" colspan="6">
5301 <p>This entry is private to the framework.<wbr/> Fill in
5302 maxRegions to have this entry be automatically populated.<wbr/></p>
5306 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5307 <!-- end of entry -->
5310 <tr class="entry" id="static_android.control.maxRegionsAwb">
5311 <td class="entry_name
5313 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5315 <td class="entry_type">
5316 <span class="entry_type_name">int32</span>
5318 <span class="entry_type_visibility"> [java_public]</span>
5320 <span class="entry_type_synthetic">[synthetic] </span>
5322 <span class="entry_type_hwlevel">[legacy] </span>
5327 </td> <!-- entry_type -->
5329 <td class="entry_description">
5330 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5334 <td class="entry_units">
5337 <td class="entry_range">
5338 <p>Value will be >= 0.<wbr/></p>
5341 <td class="entry_hal_version">
5345 <td class="entry_tags">
5349 <tr class="entries_header">
5350 <th class="th_details" colspan="6">Details</th>
5352 <tr class="entry_cont">
5353 <td class="entry_details" colspan="6">
5354 <p>This corresponds to the the maximum allowed number of elements in
5355 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5359 <tr class="entries_header">
5360 <th class="th_details" colspan="6">HAL Implementation Details</th>
5362 <tr class="entry_cont">
5363 <td class="entry_details" colspan="6">
5364 <p>This entry is private to the framework.<wbr/> Fill in
5365 maxRegions to have this entry be automatically populated.<wbr/></p>
5369 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5370 <!-- end of entry -->
5373 <tr class="entry" id="static_android.control.maxRegionsAf">
5374 <td class="entry_name
5376 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5378 <td class="entry_type">
5379 <span class="entry_type_name">int32</span>
5381 <span class="entry_type_visibility"> [java_public]</span>
5383 <span class="entry_type_synthetic">[synthetic] </span>
5385 <span class="entry_type_hwlevel">[legacy] </span>
5390 </td> <!-- entry_type -->
5392 <td class="entry_description">
5393 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5396 <td class="entry_units">
5399 <td class="entry_range">
5400 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this
5401 value will be >= 1.<wbr/></p>
5404 <td class="entry_hal_version">
5408 <td class="entry_tags">
5412 <tr class="entries_header">
5413 <th class="th_details" colspan="6">Details</th>
5415 <tr class="entry_cont">
5416 <td class="entry_details" colspan="6">
5417 <p>This corresponds to the the maximum allowed number of elements in
5418 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5422 <tr class="entries_header">
5423 <th class="th_details" colspan="6">HAL Implementation Details</th>
5425 <tr class="entry_cont">
5426 <td class="entry_details" colspan="6">
5427 <p>This entry is private to the framework.<wbr/> Fill in
5428 maxRegions to have this entry be automatically populated.<wbr/></p>
5432 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5433 <!-- end of entry -->
5436 <tr class="entry" id="static_android.control.sceneModeOverrides">
5437 <td class="entry_name
5439 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5441 <td class="entry_type">
5442 <span class="entry_type_name">byte</span>
5443 <span class="entry_type_container">x</span>
5445 <span class="entry_type_array">
5446 3 x length(availableSceneModes)
5448 <span class="entry_type_visibility"> [system]</span>
5451 <span class="entry_type_hwlevel">[limited] </span>
5456 </td> <!-- entry_type -->
5458 <td class="entry_description">
5459 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5460 settings to use with each available scene mode.<wbr/></p>
5463 <td class="entry_units">
5466 <td class="entry_range">
5467 <p>For each available scene mode,<wbr/> the list must contain three
5468 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5469 <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
5470 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5471 where aeMode has the lowest index position.<wbr/></p>
5474 <td class="entry_hal_version">
5478 <td class="entry_tags">
5479 <ul class="entry_tags">
5480 <li><a href="#tag_BC">BC</a></li>
5485 <tr class="entries_header">
5486 <th class="th_details" colspan="6">Details</th>
5488 <tr class="entry_cont">
5489 <td class="entry_details" colspan="6">
5490 <p>When a scene mode is enabled,<wbr/> the camera device is expected
5491 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/>
5492 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5493 that scene mode.<wbr/></p>
5494 <p>The order of this list matches that of availableSceneModes,<wbr/>
5495 with 3 entries for each mode.<wbr/> The overrides listed
5496 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5497 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5498 <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
5499 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5500 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5501 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5502 <p>For example,<wbr/> if availableSceneModes contains
5503 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework
5504 expects sceneModeOverrides to have 9 entries formatted like:
5505 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5506 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5510 <tr class="entries_header">
5511 <th class="th_details" colspan="6">HAL Implementation Details</th>
5513 <tr class="entry_cont">
5514 <td class="entry_details" colspan="6">
5515 <p>To maintain backward compatibility,<wbr/> this list will be made available
5516 in the static metadata of the camera service.<wbr/> The camera service will
5517 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5518 <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
5519 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5523 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5524 <!-- end of entry -->
5527 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5528 <td class="entry_name
5530 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5532 <td class="entry_type">
5533 <span class="entry_type_name">int32</span>
5534 <span class="entry_type_container">x</span>
5536 <span class="entry_type_array">
5539 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5542 <span class="entry_type_hwlevel">[limited] </span>
5547 </td> <!-- entry_type -->
5549 <td class="entry_description">
5550 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5551 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>
5554 <td class="entry_units">
5557 <td class="entry_range">
5558 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p>
5561 <td class="entry_hal_version">
5565 <td class="entry_tags">
5566 <ul class="entry_tags">
5567 <li><a href="#tag_V1">V1</a></li>
5572 <tr class="entries_header">
5573 <th class="th_details" colspan="6">Details</th>
5575 <tr class="entry_cont">
5576 <td class="entry_details" colspan="6">
5577 <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/>
5578 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5579 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5580 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5581 for processed non-stalling formats.<wbr/></p>
5582 <p>For the high speed video use case,<wbr/> the application must
5583 select the video size and fps range from this metadata to configure the recording and
5584 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5585 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5586 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5587 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5588 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5589 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5590 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5591 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5592 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5593 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5594 multiple frames together and send to camera device for processing where the request
5595 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5596 the max possible number of frames the camera device will group together for this high
5597 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5598 recording request list by
5599 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5600 The max batch size for each configuration will satisfy below conditions:</p>
5602 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5603 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5604 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5605 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5606 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>
5607 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5609 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5610 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5611 <p>This fps ranges in this configuration list can only be used to create requests
5612 that are submitted to a high speed camera capture session created by
5613 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5614 The fps ranges reported in this metadata must not be used to setup capture requests for
5615 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5619 <tr class="entries_header">
5620 <th class="th_details" colspan="6">HAL Implementation Details</th>
5622 <tr class="entry_cont">
5623 <td class="entry_details" colspan="6">
5624 <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5625 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5626 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5627 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5628 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5629 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5630 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5631 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5632 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5633 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5634 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5635 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5636 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5637 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5638 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5639 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5640 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5644 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5645 <!-- end of entry -->
5648 <tr class="entry" id="static_android.control.aeLockAvailable">
5649 <td class="entry_name
5651 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5653 <td class="entry_type">
5654 <span class="entry_type_name entry_type_name_enum">byte</span>
5656 <span class="entry_type_visibility"> [public as boolean]</span>
5659 <span class="entry_type_hwlevel">[legacy] </span>
5663 <ul class="entry_type_enum">
5665 <span class="entry_type_enum_name">FALSE (v3.2)</span>
5668 <span class="entry_type_enum_name">TRUE (v3.2)</span>
5672 </td> <!-- entry_type -->
5674 <td class="entry_description">
5675 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5678 <td class="entry_units">
5681 <td class="entry_range">
5684 <td class="entry_hal_version">
5688 <td class="entry_tags">
5689 <ul class="entry_tags">
5690 <li><a href="#tag_BC">BC</a></li>
5695 <tr class="entries_header">
5696 <th class="th_details" colspan="6">Details</th>
5698 <tr class="entry_cont">
5699 <td class="entry_details" colspan="6">
5700 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5701 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5706 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5707 <!-- end of entry -->
5710 <tr class="entry" id="static_android.control.awbLockAvailable">
5711 <td class="entry_name
5713 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5715 <td class="entry_type">
5716 <span class="entry_type_name entry_type_name_enum">byte</span>
5718 <span class="entry_type_visibility"> [public as boolean]</span>
5721 <span class="entry_type_hwlevel">[legacy] </span>
5725 <ul class="entry_type_enum">
5727 <span class="entry_type_enum_name">FALSE (v3.2)</span>
5730 <span class="entry_type_enum_name">TRUE (v3.2)</span>
5734 </td> <!-- entry_type -->
5736 <td class="entry_description">
5737 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5740 <td class="entry_units">
5743 <td class="entry_range">
5746 <td class="entry_hal_version">
5750 <td class="entry_tags">
5751 <ul class="entry_tags">
5752 <li><a href="#tag_BC">BC</a></li>
5757 <tr class="entries_header">
5758 <th class="th_details" colspan="6">Details</th>
5760 <tr class="entry_cont">
5761 <td class="entry_details" colspan="6">
5762 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5763 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5768 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5769 <!-- end of entry -->
5772 <tr class="entry" id="static_android.control.availableModes">
5773 <td class="entry_name
5775 android.<wbr/>control.<wbr/>available<wbr/>Modes
5777 <td class="entry_type">
5778 <span class="entry_type_name">byte</span>
5779 <span class="entry_type_container">x</span>
5781 <span class="entry_type_array">
5784 <span class="entry_type_visibility"> [public as enumList]</span>
5787 <span class="entry_type_hwlevel">[legacy] </span>
5790 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5793 </td> <!-- entry_type -->
5795 <td class="entry_description">
5796 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5800 <td class="entry_units">
5803 <td class="entry_range">
5804 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5807 <td class="entry_hal_version">
5811 <td class="entry_tags">
5815 <tr class="entries_header">
5816 <th class="th_details" colspan="6">Details</th>
5818 <tr class="entry_cont">
5819 <td class="entry_details" colspan="6">
5820 <p>This list contains control modes that can be set for the camera device.<wbr/>
5821 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5822 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5827 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5828 <!-- end of entry -->
5831 <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5832 <td class="entry_name
5834 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5836 <td class="entry_type">
5837 <span class="entry_type_name">int32</span>
5838 <span class="entry_type_container">x</span>
5840 <span class="entry_type_array">
5843 <span class="entry_type_visibility"> [public as rangeInt]</span>
5848 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5851 </td> <!-- entry_type -->
5853 <td class="entry_description">
5854 <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5855 by this camera device.<wbr/></p>
5858 <td class="entry_units">
5859 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5862 <td class="entry_range">
5865 <td class="entry_hal_version">
5869 <td class="entry_tags">
5873 <tr class="entries_header">
5874 <th class="th_details" colspan="6">Details</th>
5876 <tr class="entry_cont">
5877 <td class="entry_details" colspan="6">
5878 <p>Devices support post RAW sensitivity boost will advertise
5879 <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5880 post RAW sensitivity boost.<wbr/></p>
5881 <p>This key will be <code>null</code> for devices that do not support any RAW format
5882 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5883 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5884 list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5888 <tr class="entries_header">
5889 <th class="th_details" colspan="6">HAL Implementation Details</th>
5891 <tr class="entry_cont">
5892 <td class="entry_details" colspan="6">
5893 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
5894 framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
5895 formats.<wbr/> All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
5896 any of RAW output formats.<wbr/></p>
5900 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5901 <!-- end of entry -->
5905 <!-- end of kind -->
5907 <tr><td colspan="7" class="kind">dynamic</td></tr>
5909 <thead class="entries_header">
5911 <th class="th_name">Property Name</th>
5912 <th class="th_type">Type</th>
5913 <th class="th_description">Description</th>
5914 <th class="th_units">Units</th>
5915 <th class="th_range">Range</th>
5916 <th class="th_hal_version">Initial HIDL HAL version</th>
5917 <th class="th_tags">Tags</th>
5932 <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5933 <td class="entry_name
5934 entry_name_deprecated
5936 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5938 <td class="entry_type">
5939 <span class="entry_type_name">int32</span>
5941 <span class="entry_type_visibility"> [system]</span>
5945 <span class="entry_type_deprecated">[deprecated] </span>
5949 </td> <!-- entry_type -->
5951 <td class="entry_description">
5952 <p>The ID sent with the latest
5953 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5956 <td class="entry_units">
5959 <td class="entry_range">
5960 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5963 <td class="entry_hal_version">
5967 <td class="entry_tags">
5971 <tr class="entries_header">
5972 <th class="th_details" colspan="6">Details</th>
5974 <tr class="entry_cont">
5975 <td class="entry_details" colspan="6">
5977 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5978 by HAL.<wbr/> Always updated even if AE algorithm ignores the
5984 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5985 <!-- end of entry -->
5988 <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5989 <td class="entry_name
5991 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5993 <td class="entry_type">
5994 <span class="entry_type_name entry_type_name_enum">byte</span>
5996 <span class="entry_type_visibility"> [public]</span>
5999 <span class="entry_type_hwlevel">[legacy] </span>
6003 <ul class="entry_type_enum">
6005 <span class="entry_type_enum_name">OFF (v3.2)</span>
6006 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
6007 avoid banding problems.<wbr/></p></span>
6010 <span class="entry_type_enum_name">50HZ (v3.2)</span>
6011 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6012 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
6015 <span class="entry_type_enum_name">60HZ (v3.2)</span>
6016 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6017 avoid banding problems with 60Hz illumination
6018 sources.<wbr/></p></span>
6021 <span class="entry_type_enum_name">AUTO (v3.2)</span>
6022 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
6023 antibanding routine to the current illumination
6024 condition.<wbr/> This is the default mode if AUTO is
6025 available on given camera device.<wbr/></p></span>
6029 </td> <!-- entry_type -->
6031 <td class="entry_description">
6032 <p>The desired setting for the camera device's auto-exposure
6033 algorithm's antibanding compensation.<wbr/></p>
6036 <td class="entry_units">
6039 <td class="entry_range">
6040 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
6043 <td class="entry_hal_version">
6047 <td class="entry_tags">
6048 <ul class="entry_tags">
6049 <li><a href="#tag_BC">BC</a></li>
6054 <tr class="entries_header">
6055 <th class="th_details" colspan="6">Details</th>
6057 <tr class="entry_cont">
6058 <td class="entry_details" colspan="6">
6059 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
6060 lights,<wbr/> flicker at the rate of the power supply frequency
6061 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
6062 typically not noticeable to a person,<wbr/> it can be visible to
6063 a camera device.<wbr/> If a camera sets its exposure time to the
6064 wrong value,<wbr/> the flicker may become visible in the
6065 viewfinder as flicker or in a final captured image,<wbr/> as a
6066 set of variable-brightness bands across the image.<wbr/></p>
6067 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
6068 include antibanding routines that ensure that the chosen
6069 exposure value will not cause such banding.<wbr/> The choice of
6070 exposure time depends on the rate of flicker,<wbr/> which the
6071 camera device can detect automatically,<wbr/> or the expected
6072 rate can be selected by the application using this
6074 <p>A given camera device may not support all of the possible
6075 options for the antibanding mode.<wbr/> The
6076 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
6077 the available modes for a given camera device.<wbr/></p>
6078 <p>AUTO mode is the default if it is available on given
6079 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
6080 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
6081 and 60HZ will be available.<wbr/></p>
6082 <p>If manual exposure control is enabled (by setting
6083 <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/>
6084 then this setting has no effect,<wbr/> and the application must
6085 ensure it selects exposure times that do not cause banding
6086 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
6087 the application in this.<wbr/></p>
6091 <tr class="entries_header">
6092 <th class="th_details" colspan="6">HAL Implementation Details</th>
6094 <tr class="entry_cont">
6095 <td class="entry_details" colspan="6">
6096 <p>For all capture request templates,<wbr/> this field must be set
6097 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
6098 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
6099 60HZ must be available.<wbr/></p>
6100 <p>If manual exposure control is enabled (by setting
6101 <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/>
6102 then the exposure values provided by the application must not be
6103 adjusted for antibanding.<wbr/></p>
6107 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6108 <!-- end of entry -->
6111 <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
6112 <td class="entry_name
6114 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
6116 <td class="entry_type">
6117 <span class="entry_type_name">int32</span>
6119 <span class="entry_type_visibility"> [public]</span>
6122 <span class="entry_type_hwlevel">[legacy] </span>
6127 </td> <!-- entry_type -->
6129 <td class="entry_description">
6130 <p>Adjustment to auto-exposure (AE) target image
6131 brightness.<wbr/></p>
6134 <td class="entry_units">
6138 <td class="entry_range">
6139 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
6142 <td class="entry_hal_version">
6146 <td class="entry_tags">
6147 <ul class="entry_tags">
6148 <li><a href="#tag_BC">BC</a></li>
6153 <tr class="entries_header">
6154 <th class="th_details" colspan="6">Details</th>
6156 <tr class="entry_cont">
6157 <td class="entry_details" colspan="6">
6158 <p>The adjustment is measured as a count of steps,<wbr/> with the
6159 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
6160 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
6161 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
6162 will mean an exposure compensation of +2 EV; -3 will mean an
6163 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
6164 of image brightness.<wbr/> Note that this control will only be
6165 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
6166 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
6167 <p>In the event of exposure compensation value being changed,<wbr/> camera device
6168 may take several frames to reach the newly requested exposure target.<wbr/>
6169 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
6170 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
6171 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
6172 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
6177 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6178 <!-- end of entry -->
6181 <tr class="entry" id="dynamic_android.control.aeLock">
6182 <td class="entry_name
6184 android.<wbr/>control.<wbr/>ae<wbr/>Lock
6186 <td class="entry_type">
6187 <span class="entry_type_name entry_type_name_enum">byte</span>
6189 <span class="entry_type_visibility"> [public as boolean]</span>
6192 <span class="entry_type_hwlevel">[legacy] </span>
6196 <ul class="entry_type_enum">
6198 <span class="entry_type_enum_name">OFF (v3.2)</span>
6199 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
6200 is free to update its parameters.<wbr/></p></span>
6203 <span class="entry_type_enum_name">ON (v3.2)</span>
6204 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
6205 must not update the exposure and sensitivity parameters
6206 while the lock is active.<wbr/></p>
6207 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
6208 will still take effect while auto-exposure is locked.<wbr/></p>
6209 <p>Some rare LEGACY devices may not support
6210 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
6214 </td> <!-- entry_type -->
6216 <td class="entry_description">
6217 <p>Whether auto-exposure (AE) is currently locked to its latest
6218 calculated values.<wbr/></p>
6221 <td class="entry_units">
6224 <td class="entry_range">
6227 <td class="entry_hal_version">
6231 <td class="entry_tags">
6232 <ul class="entry_tags">
6233 <li><a href="#tag_BC">BC</a></li>
6238 <tr class="entries_header">
6239 <th class="th_details" colspan="6">Details</th>
6241 <tr class="entry_cont">
6242 <td class="entry_details" colspan="6">
6243 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
6244 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
6245 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
6246 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
6247 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
6248 <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
6249 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
6250 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
6251 when AE is already locked,<wbr/> the camera device will not change the exposure time
6252 (<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>)
6253 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
6254 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
6255 <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/>
6256 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
6257 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
6258 the AE if AE is locked by the camera device internally during precapture metering
6259 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
6260 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
6261 will never succeed in a sequence of preview requests where AE lock is always set
6262 to <code>false</code>.<wbr/></p>
6263 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6264 get locked do not necessarily correspond to the settings that were present in the
6265 latest capture result received from the camera device,<wbr/> since additional captures
6266 and AE updates may have occurred even before the result was sent out.<wbr/> If an
6267 application is switching between automatic and manual control and wishes to eliminate
6268 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6270 <li>Starting in auto-AE mode:</li>
6272 <li>Wait for the first result to be output that has the AE locked</li>
6273 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6274 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6276 <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>
6281 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6282 <!-- end of entry -->
6285 <tr class="entry" id="dynamic_android.control.aeMode">
6286 <td class="entry_name
6288 android.<wbr/>control.<wbr/>ae<wbr/>Mode
6290 <td class="entry_type">
6291 <span class="entry_type_name entry_type_name_enum">byte</span>
6293 <span class="entry_type_visibility"> [public]</span>
6296 <span class="entry_type_hwlevel">[legacy] </span>
6300 <ul class="entry_type_enum">
6302 <span class="entry_type_enum_name">OFF (v3.2)</span>
6303 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6304 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6305 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6306 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6307 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6308 a flash unit for this camera device.<wbr/></p>
6309 <p>Note that auto-white balance (AWB) and auto-focus (AF)
6310 behavior is device dependent when AE is in OFF mode.<wbr/>
6311 To have consistent behavior across different devices,<wbr/>
6312 it is recommended to either set AWB and AF to OFF mode
6313 or lock AWB and AF before setting AE to OFF.<wbr/>
6314 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/>
6315 <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>
6316 for more details.<wbr/></p>
6317 <p>LEGACY devices do not support the OFF mode and will
6318 override attempts to use this value to ON.<wbr/></p></span>
6321 <span class="entry_type_enum_name">ON (v3.2)</span>
6322 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6323 with no flash control.<wbr/></p>
6324 <p>The application's values for
6325 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6326 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6327 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6328 application has control over the various
6329 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6332 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
6333 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6334 the camera's flash unit,<wbr/> firing it in low-light
6335 conditions.<wbr/></p>
6336 <p>The flash may be fired during a precapture sequence
6337 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6338 may be fired for captures for which the
6339 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6340 STILL_<wbr/>CAPTURE</p></span>
6343 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
6344 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6345 the camera's flash unit,<wbr/> always firing it for still
6347 <p>The flash may be fired during a precapture sequence
6348 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6349 will always be fired for captures for which the
6350 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6351 STILL_<wbr/>CAPTURE</p></span>
6354 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
6355 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6356 reduction.<wbr/></p>
6357 <p>If deemed necessary by the camera device,<wbr/> a red eye
6358 reduction flash will fire during the precapture
6359 sequence.<wbr/></p></span>
6362 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
6363 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
6364 <p>It informs the camera device that an external flash has been turned on,<wbr/> and that
6365 metering (and continuous focus if active) should be quickly recaculated to account
6366 for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
6367 <p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
6368 other available AE modes.<wbr/></p>
6369 <p>If the camera device supports AE external flash mode,<wbr/> aeState must be
6370 FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
6371 flash.<wbr/></p></span>
6375 </td> <!-- entry_type -->
6377 <td class="entry_description">
6378 <p>The desired mode for the camera device's
6379 auto-exposure routine.<wbr/></p>
6382 <td class="entry_units">
6385 <td class="entry_range">
6386 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6389 <td class="entry_hal_version">
6393 <td class="entry_tags">
6394 <ul class="entry_tags">
6395 <li><a href="#tag_BC">BC</a></li>
6400 <tr class="entries_header">
6401 <th class="th_details" colspan="6">Details</th>
6403 <tr class="entry_cont">
6404 <td class="entry_details" colspan="6">
6405 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6407 <p>When set to any of the ON modes,<wbr/> the camera device's
6408 auto-exposure routine is enabled,<wbr/> overriding the
6409 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6410 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6411 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6412 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6413 is selected,<wbr/> the camera device's flash unit controls are
6414 also overridden.<wbr/></p>
6415 <p>The FLASH modes are only available if the camera device
6416 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>
6417 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
6418 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6419 <p>When set to any of the ON modes,<wbr/> the values chosen by the
6420 camera device auto-exposure routine for the overridden
6421 fields for a given capture will be available in its
6422 CaptureResult.<wbr/></p>
6427 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6428 <!-- end of entry -->
6431 <tr class="entry" id="dynamic_android.control.aeRegions">
6432 <td class="entry_name
6434 android.<wbr/>control.<wbr/>ae<wbr/>Regions
6436 <td class="entry_type">
6437 <span class="entry_type_name">int32</span>
6438 <span class="entry_type_container">x</span>
6440 <span class="entry_type_array">
6443 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6450 </td> <!-- entry_type -->
6452 <td class="entry_description">
6453 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6456 <td class="entry_units">
6457 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6460 <td class="entry_range">
6461 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6462 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6465 <td class="entry_hal_version">
6469 <td class="entry_tags">
6470 <ul class="entry_tags">
6471 <li><a href="#tag_BC">BC</a></li>
6476 <tr class="entries_header">
6477 <th class="th_details" colspan="6">Details</th>
6479 <tr class="entry_cont">
6480 <td class="entry_details" colspan="6">
6481 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6482 Otherwise will always be present.<wbr/></p>
6483 <p>The maximum number of regions supported by the device is determined by the value
6484 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6485 <p>The coordinate system is based on the active pixel array,<wbr/>
6486 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6487 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6488 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6489 bottom-right pixel in the active pixel array.<wbr/></p>
6490 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6491 for every pixel in the area.<wbr/> This means that a large metering area
6492 with the same weight as a smaller area will have more effect in
6493 the metering result.<wbr/> Metering areas can partially overlap and the
6494 camera device will add the weights in the overlap region.<wbr/></p>
6495 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6496 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6497 weight is ignored.<wbr/></p>
6498 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6499 camera device.<wbr/></p>
6500 <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
6501 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6502 region and output only the intersection rectangle as the metering region in the result
6503 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6504 not reported in the result metadata.<wbr/></p>
6508 <tr class="entries_header">
6509 <th class="th_details" colspan="6">HAL Implementation Details</th>
6511 <tr class="entry_cont">
6512 <td class="entry_details" colspan="6">
6513 <p>The HAL level representation of MeteringRectangle[] is a
6514 int[5 * area_<wbr/>count].<wbr/>
6515 Every five elements represent a metering region of
6516 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6517 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6518 exclusive on xmax and ymax.<wbr/></p>
6522 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6523 <!-- end of entry -->
6526 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6527 <td class="entry_name
6529 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6531 <td class="entry_type">
6532 <span class="entry_type_name">int32</span>
6533 <span class="entry_type_container">x</span>
6535 <span class="entry_type_array">
6538 <span class="entry_type_visibility"> [public as rangeInt]</span>
6541 <span class="entry_type_hwlevel">[legacy] </span>
6546 </td> <!-- entry_type -->
6548 <td class="entry_description">
6549 <p>Range over which the auto-exposure routine can
6550 adjust the capture frame rate to maintain good
6554 <td class="entry_units">
6555 Frames per second (FPS)
6558 <td class="entry_range">
6559 <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>
6562 <td class="entry_hal_version">
6566 <td class="entry_tags">
6567 <ul class="entry_tags">
6568 <li><a href="#tag_BC">BC</a></li>
6573 <tr class="entries_header">
6574 <th class="th_details" colspan="6">Details</th>
6576 <tr class="entry_cont">
6577 <td class="entry_details" colspan="6">
6578 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6579 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6580 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6585 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6586 <!-- end of entry -->
6589 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6590 <td class="entry_name
6592 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6594 <td class="entry_type">
6595 <span class="entry_type_name entry_type_name_enum">byte</span>
6597 <span class="entry_type_visibility"> [public]</span>
6600 <span class="entry_type_hwlevel">[limited] </span>
6604 <ul class="entry_type_enum">
6606 <span class="entry_type_enum_name">IDLE (v3.2)</span>
6607 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6610 <span class="entry_type_enum_name">START (v3.2)</span>
6611 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6612 by the camera device.<wbr/></p>
6613 <p>The exact effect of the precapture trigger depends on
6614 the current AE mode and state.<wbr/></p></span>
6617 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
6618 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6619 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6620 initial state.<wbr/></p></span>
6624 </td> <!-- entry_type -->
6626 <td class="entry_description">
6627 <p>Whether the camera device will trigger a precapture
6628 metering sequence when it processes this request.<wbr/></p>
6631 <td class="entry_units">
6634 <td class="entry_range">
6637 <td class="entry_hal_version">
6641 <td class="entry_tags">
6642 <ul class="entry_tags">
6643 <li><a href="#tag_BC">BC</a></li>
6648 <tr class="entries_header">
6649 <th class="th_details" colspan="6">Details</th>
6651 <tr class="entry_cont">
6652 <td class="entry_details" colspan="6">
6653 <p>This entry is normally set to IDLE,<wbr/> or is not
6654 included at all in the request settings.<wbr/> When included and
6655 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6656 precapture metering sequence.<wbr/></p>
6657 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
6658 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6659 If a precapture metering sequence is already completed,<wbr/> and the camera
6660 device has implicitly locked the AE for subsequent still capture,<wbr/> the
6661 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6662 <p>The precapture sequence should be triggered before starting a
6663 high-quality still capture for final metering decisions to
6664 be made,<wbr/> and for firing pre-capture flash pulses to estimate
6665 scene brightness and required final capture flash power,<wbr/> when
6666 the flash is enabled.<wbr/></p>
6667 <p>Normally,<wbr/> this entry should be set to START for only a
6668 single request,<wbr/> and the application should wait until the
6669 sequence completes before starting a new one.<wbr/></p>
6670 <p>When a precapture metering sequence is finished,<wbr/> the camera device
6671 may lock the auto-exposure routine internally to be able to accurately expose the
6672 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6673 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6674 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6675 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
6676 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
6677 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6678 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6679 internally locked AE if the application doesn't submit a still capture request after
6680 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6681 be used in devices that have earlier API levels.<wbr/></p>
6682 <p>The exact effect of auto-exposure (AE) precapture trigger
6683 depends on the current AE mode and state; see
6684 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6686 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6687 capturing a high-resolution JPEG image will automatically trigger a
6688 precapture sequence before the high-resolution capture,<wbr/> including
6689 potentially firing a pre-capture flash.<wbr/></p>
6690 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6691 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6692 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6693 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6694 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6695 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
6697 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6698 the camera device will complete them in the optimal order for that device.<wbr/></p>
6702 <tr class="entries_header">
6703 <th class="th_details" colspan="6">HAL Implementation Details</th>
6705 <tr class="entry_cont">
6706 <td class="entry_details" colspan="6">
6707 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6708 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
6709 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6710 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6711 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6715 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6716 <!-- end of entry -->
6719 <tr class="entry" id="dynamic_android.control.aeState">
6720 <td class="entry_name
6722 android.<wbr/>control.<wbr/>ae<wbr/>State
6724 <td class="entry_type">
6725 <span class="entry_type_name entry_type_name_enum">byte</span>
6727 <span class="entry_type_visibility"> [public]</span>
6730 <span class="entry_type_hwlevel">[limited] </span>
6734 <ul class="entry_type_enum">
6736 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
6737 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6738 <p>When a camera device is opened,<wbr/> it starts in
6739 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6740 this state in capture result.<wbr/></p></span>
6743 <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
6744 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6745 for the current scene.<wbr/></p>
6746 <p>This is a transient state,<wbr/> the camera device may skip
6747 reporting this state in capture result.<wbr/></p></span>
6750 <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
6751 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6752 current scene.<wbr/></p></span>
6755 <span class="entry_type_enum_name">LOCKED (v3.2)</span>
6756 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6759 <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
6760 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6761 needs to be fired for good quality still
6762 capture.<wbr/></p></span>
6765 <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
6766 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6767 and is currently executing it.<wbr/></p>
6768 <p>Precapture can be triggered through setting
6769 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6770 active and completed (if it causes camera device internal AE lock) precapture
6771 metering sequence can be canceled through setting
6772 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6773 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6774 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6775 state,<wbr/> the camera device may skip reporting this state in
6776 capture result.<wbr/></p></span>
6780 </td> <!-- entry_type -->
6782 <td class="entry_description">
6783 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6786 <td class="entry_units">
6789 <td class="entry_range">
6792 <td class="entry_hal_version">
6796 <td class="entry_tags">
6800 <tr class="entries_header">
6801 <th class="th_details" colspan="6">Details</th>
6803 <tr class="entry_cont">
6804 <td class="entry_details" colspan="6">
6805 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6806 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6807 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
6808 the algorithm states to INACTIVE.<wbr/></p>
6809 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6810 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6811 seen in a result.<wbr/></p>
6812 <p>The state in the result is the state for this image (in sync with this image): if
6813 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6814 be good to use.<wbr/></p>
6815 <p>Below are state transition tables for different AE modes.<wbr/></p>
6819 <th align="center">State</th>
6820 <th align="center">Transition Cause</th>
6821 <th align="center">New State</th>
6822 <th align="center">Notes</th>
6827 <td align="center">INACTIVE</td>
6828 <td align="center"></td>
6829 <td align="center">INACTIVE</td>
6830 <td align="center">Camera device auto exposure algorithm is disabled</td>
6834 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p>
6838 <th align="center">State</th>
6839 <th align="center">Transition Cause</th>
6840 <th align="center">New State</th>
6841 <th align="center">Notes</th>
6846 <td align="center">INACTIVE</td>
6847 <td align="center">Camera device initiates AE scan</td>
6848 <td align="center">SEARCHING</td>
6849 <td align="center">Values changing</td>
6852 <td align="center">INACTIVE</td>
6853 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6854 <td align="center">LOCKED</td>
6855 <td align="center">Values locked</td>
6858 <td align="center">SEARCHING</td>
6859 <td align="center">Camera device finishes AE scan</td>
6860 <td align="center">CONVERGED</td>
6861 <td align="center">Good values,<wbr/> not changing</td>
6864 <td align="center">SEARCHING</td>
6865 <td align="center">Camera device finishes AE scan</td>
6866 <td align="center">FLASH_<wbr/>REQUIRED</td>
6867 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6870 <td align="center">SEARCHING</td>
6871 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6872 <td align="center">LOCKED</td>
6873 <td align="center">Values locked</td>
6876 <td align="center">CONVERGED</td>
6877 <td align="center">Camera device initiates AE scan</td>
6878 <td align="center">SEARCHING</td>
6879 <td align="center">Values changing</td>
6882 <td align="center">CONVERGED</td>
6883 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6884 <td align="center">LOCKED</td>
6885 <td align="center">Values locked</td>
6888 <td align="center">FLASH_<wbr/>REQUIRED</td>
6889 <td align="center">Camera device initiates AE scan</td>
6890 <td align="center">SEARCHING</td>
6891 <td align="center">Values changing</td>
6894 <td align="center">FLASH_<wbr/>REQUIRED</td>
6895 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6896 <td align="center">LOCKED</td>
6897 <td align="center">Values locked</td>
6900 <td align="center">LOCKED</td>
6901 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6902 <td align="center">SEARCHING</td>
6903 <td align="center">Values not good after unlock</td>
6906 <td align="center">LOCKED</td>
6907 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6908 <td align="center">CONVERGED</td>
6909 <td align="center">Values good after unlock</td>
6912 <td align="center">LOCKED</td>
6913 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6914 <td align="center">FLASH_<wbr/>REQUIRED</td>
6915 <td align="center">Exposure good,<wbr/> but too dark</td>
6918 <td align="center">PRECAPTURE</td>
6919 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6920 <td align="center">CONVERGED</td>
6921 <td align="center">Ready for high-quality capture</td>
6924 <td align="center">PRECAPTURE</td>
6925 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6926 <td align="center">LOCKED</td>
6927 <td align="center">Ready for high-quality capture</td>
6930 <td align="center">LOCKED</td>
6931 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6932 <td align="center">LOCKED</td>
6933 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6936 <td align="center">LOCKED</td>
6937 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6938 <td align="center">LOCKED</td>
6939 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6942 <td align="center">Any state (excluding LOCKED)</td>
6943 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6944 <td align="center">PRECAPTURE</td>
6945 <td align="center">Start AE precapture metering sequence</td>
6948 <td align="center">Any state (excluding LOCKED)</td>
6949 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6950 <td align="center">INACTIVE</td>
6951 <td align="center">Currently active precapture metering sequence is canceled</td>
6955 <p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in
6956 <a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a>),<wbr/> aeState must be FLASH_<wbr/>REQUIRED after the camera device
6957 finishes AE scan and it's too dark without flash.<wbr/></p>
6958 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6959 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6960 can be skipped in that manner is called a transient state.<wbr/></p>
6961 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions
6962 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6963 transient states between two results.<wbr/> See below table for examples:</p>
6967 <th align="center">State</th>
6968 <th align="center">Transition Cause</th>
6969 <th align="center">New State</th>
6970 <th align="center">Notes</th>
6975 <td align="center">INACTIVE</td>
6976 <td align="center">Camera device finished AE scan</td>
6977 <td align="center">CONVERGED</td>
6978 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6981 <td align="center">Any state (excluding LOCKED)</td>
6982 <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>
6983 <td align="center">FLASH_<wbr/>REQUIRED</td>
6984 <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>
6987 <td align="center">Any state (excluding LOCKED)</td>
6988 <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>
6989 <td align="center">CONVERGED</td>
6990 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6993 <td align="center">Any state (excluding LOCKED)</td>
6994 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6995 <td align="center">FLASH_<wbr/>REQUIRED</td>
6996 <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>
6999 <td align="center">Any state (excluding LOCKED)</td>
7000 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7001 <td align="center">CONVERGED</td>
7002 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
7005 <td align="center">CONVERGED</td>
7006 <td align="center">Camera device finished AE scan</td>
7007 <td align="center">FLASH_<wbr/>REQUIRED</td>
7008 <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>
7011 <td align="center">FLASH_<wbr/>REQUIRED</td>
7012 <td align="center">Camera device finished AE scan</td>
7013 <td align="center">CONVERGED</td>
7014 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
7022 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7023 <!-- end of entry -->
7026 <tr class="entry" id="dynamic_android.control.afMode">
7027 <td class="entry_name
7029 android.<wbr/>control.<wbr/>af<wbr/>Mode
7031 <td class="entry_type">
7032 <span class="entry_type_name entry_type_name_enum">byte</span>
7034 <span class="entry_type_visibility"> [public]</span>
7037 <span class="entry_type_hwlevel">[legacy] </span>
7041 <ul class="entry_type_enum">
7043 <span class="entry_type_enum_name">OFF (v3.2)</span>
7044 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
7045 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
7046 application.<wbr/></p></span>
7049 <span class="entry_type_enum_name">AUTO (v3.2)</span>
7050 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
7051 <p>In this mode,<wbr/> the lens does not move unless
7052 the autofocus trigger action is called.<wbr/> When that trigger
7053 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7054 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
7055 <p>Always supported if lens is not fixed focus.<wbr/></p>
7056 <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
7057 is fixed-focus.<wbr/></p>
7058 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
7059 and sets the AF state to INACTIVE.<wbr/></p></span>
7062 <span class="entry_type_enum_name">MACRO (v3.2)</span>
7063 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
7064 <p>In this mode,<wbr/> the lens does not move unless the
7065 autofocus trigger action is called.<wbr/> When that trigger is
7066 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7067 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
7068 mode is optimized for focusing on objects very close to
7069 the camera.<wbr/></p>
7070 <p>When that trigger is activated,<wbr/> AF will transition to
7071 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
7072 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
7073 position to default,<wbr/> and sets the AF state to
7074 INACTIVE.<wbr/></p></span>
7077 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
7078 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7079 position continually to attempt to provide a
7080 constantly-in-focus image stream.<wbr/></p>
7081 <p>The focusing behavior should be suitable for good quality
7082 video recording; typically this means slower focus
7083 movement and no overshoots.<wbr/> When the AF trigger is not
7084 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
7085 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
7086 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
7087 the algorithm should immediately transition into
7088 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7089 lens position until a cancel AF trigger is received.<wbr/></p>
7090 <p>Once cancel is received,<wbr/> the algorithm should transition
7091 back to INACTIVE and resume passive scan.<wbr/> Note that this
7092 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
7093 ongoing PASSIVE_<wbr/>SCAN must immediately be
7094 canceled.<wbr/></p></span>
7097 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
7098 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7099 position continually to attempt to provide a
7100 constantly-in-focus image stream.<wbr/></p>
7101 <p>The focusing behavior should be suitable for still image
7102 capture; typically this means focusing as fast as
7103 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
7104 algorithm should start in INACTIVE state,<wbr/> and then
7105 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
7106 appropriate as it attempts to maintain focus.<wbr/> When the AF
7107 trigger is activated,<wbr/> the algorithm should finish its
7108 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
7109 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7110 lens position until a cancel AF trigger is received.<wbr/></p>
7111 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
7112 should transition back to INACTIVE and then act as if it
7113 has just been started.<wbr/></p></span>
7116 <span class="entry_type_enum_name">EDOF (v3.2)</span>
7117 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
7118 <p>The camera device will produce images with an extended
7119 depth of field automatically; no special focusing
7120 operations need to be done before taking a picture.<wbr/></p>
7121 <p>AF triggers are ignored,<wbr/> and the AF state will always be
7122 INACTIVE.<wbr/></p></span>
7126 </td> <!-- entry_type -->
7128 <td class="entry_description">
7129 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
7130 mode it is set to.<wbr/></p>
7133 <td class="entry_units">
7136 <td class="entry_range">
7137 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
7140 <td class="entry_hal_version">
7144 <td class="entry_tags">
7145 <ul class="entry_tags">
7146 <li><a href="#tag_BC">BC</a></li>
7151 <tr class="entries_header">
7152 <th class="th_details" colspan="6">Details</th>
7154 <tr class="entry_cont">
7155 <td class="entry_details" colspan="6">
7156 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
7157 (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
7158 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
7159 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
7160 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>
7161 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
7162 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
7163 in result metadata.<wbr/></p>
7167 <tr class="entries_header">
7168 <th class="th_details" colspan="6">HAL Implementation Details</th>
7170 <tr class="entry_cont">
7171 <td class="entry_details" colspan="6">
7172 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
7173 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
7174 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
7175 <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
7176 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
7177 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
7178 the same focal plane remains in focus.<wbr/></p>
7179 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
7180 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
7181 (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
7182 same lock behavior as above.<wbr/></p>
7183 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
7184 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/>
7185 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
7186 manual control.<wbr/></p>
7187 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
7188 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
7189 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
7190 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
7191 that will arise on camera modules with open-loop VCMs.<wbr/></p>
7195 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7196 <!-- end of entry -->
7199 <tr class="entry" id="dynamic_android.control.afRegions">
7200 <td class="entry_name
7202 android.<wbr/>control.<wbr/>af<wbr/>Regions
7204 <td class="entry_type">
7205 <span class="entry_type_name">int32</span>
7206 <span class="entry_type_container">x</span>
7208 <span class="entry_type_array">
7211 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7218 </td> <!-- entry_type -->
7220 <td class="entry_description">
7221 <p>List of metering areas to use for auto-focus.<wbr/></p>
7224 <td class="entry_units">
7225 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7228 <td class="entry_range">
7229 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7230 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7233 <td class="entry_hal_version">
7237 <td class="entry_tags">
7238 <ul class="entry_tags">
7239 <li><a href="#tag_BC">BC</a></li>
7244 <tr class="entries_header">
7245 <th class="th_details" colspan="6">Details</th>
7247 <tr class="entry_cont">
7248 <td class="entry_details" colspan="6">
7249 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
7250 Otherwise will always be present.<wbr/></p>
7251 <p>The maximum number of focus areas supported by the device is determined by the value
7252 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
7253 <p>The coordinate system is based on the active pixel array,<wbr/>
7254 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7255 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7256 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7257 bottom-right pixel in the active pixel array.<wbr/></p>
7258 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
7259 for every pixel in the area.<wbr/> This means that a large metering area
7260 with the same weight as a smaller area will have more effect in
7261 the metering result.<wbr/> Metering areas can partially overlap and the
7262 camera device will add the weights in the overlap region.<wbr/></p>
7263 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
7264 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
7266 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7267 camera device.<wbr/></p>
7268 <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
7269 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7270 region and output only the intersection rectangle as the metering region in the result
7271 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7272 not reported in the result metadata.<wbr/></p>
7276 <tr class="entries_header">
7277 <th class="th_details" colspan="6">HAL Implementation Details</th>
7279 <tr class="entry_cont">
7280 <td class="entry_details" colspan="6">
7281 <p>The HAL level representation of MeteringRectangle[] is a
7282 int[5 * area_<wbr/>count].<wbr/>
7283 Every five elements represent a metering region of
7284 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7285 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7286 exclusive on xmax and ymax.<wbr/></p>
7290 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7291 <!-- end of entry -->
7294 <tr class="entry" id="dynamic_android.control.afTrigger">
7295 <td class="entry_name
7297 android.<wbr/>control.<wbr/>af<wbr/>Trigger
7299 <td class="entry_type">
7300 <span class="entry_type_name entry_type_name_enum">byte</span>
7302 <span class="entry_type_visibility"> [public]</span>
7305 <span class="entry_type_hwlevel">[legacy] </span>
7309 <ul class="entry_type_enum">
7311 <span class="entry_type_enum_name">IDLE (v3.2)</span>
7312 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7315 <span class="entry_type_enum_name">START (v3.2)</span>
7316 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7319 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
7320 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7321 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7325 </td> <!-- entry_type -->
7327 <td class="entry_description">
7328 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7331 <td class="entry_units">
7334 <td class="entry_range">
7337 <td class="entry_hal_version">
7341 <td class="entry_tags">
7342 <ul class="entry_tags">
7343 <li><a href="#tag_BC">BC</a></li>
7348 <tr class="entries_header">
7349 <th class="th_details" colspan="6">Details</th>
7351 <tr class="entry_cont">
7352 <td class="entry_details" colspan="6">
7353 <p>This entry is normally set to IDLE,<wbr/> or is not
7354 included at all in the request settings.<wbr/></p>
7355 <p>When included and set to START,<wbr/> the camera device will trigger the
7356 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7357 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7358 and return to its initial AF state.<wbr/></p>
7359 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7360 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7361 START for multiple captures in a row means restarting the AF operation over
7362 and over again.<wbr/></p>
7363 <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>
7364 <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>
7365 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7366 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7367 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7368 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7369 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7373 <tr class="entries_header">
7374 <th class="th_details" colspan="6">HAL Implementation Details</th>
7376 <tr class="entry_cont">
7377 <td class="entry_details" colspan="6">
7378 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7379 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
7380 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7381 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7382 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7386 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7387 <!-- end of entry -->
7390 <tr class="entry" id="dynamic_android.control.afState">
7391 <td class="entry_name
7393 android.<wbr/>control.<wbr/>af<wbr/>State
7395 <td class="entry_type">
7396 <span class="entry_type_name entry_type_name_enum">byte</span>
7398 <span class="entry_type_visibility"> [public]</span>
7401 <span class="entry_type_hwlevel">[legacy] </span>
7405 <ul class="entry_type_enum">
7407 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
7408 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7410 <p>When a camera device is opened,<wbr/> it starts in this
7411 state.<wbr/> This is a transient state,<wbr/> the camera device may
7412 skip reporting this state in capture
7413 result.<wbr/></p></span>
7416 <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
7417 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7418 camera device in a continuous autofocus mode.<wbr/></p>
7419 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7420 state,<wbr/> the camera device may skip reporting this state in
7421 capture result.<wbr/></p></span>
7424 <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
7425 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7426 restart scanning at any time.<wbr/></p>
7427 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7428 state,<wbr/> the camera device may skip reporting this state in
7429 capture result.<wbr/></p></span>
7432 <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
7433 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7434 triggered by AF trigger.<wbr/></p>
7435 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7436 state,<wbr/> the camera device may skip reporting this state in
7437 capture result.<wbr/></p></span>
7440 <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
7441 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7443 <p>This state is reached only after an explicit START AF trigger has been
7444 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7445 <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
7446 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>
7449 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
7450 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7452 <p>This state is reached only after an explicit START AF trigger has been
7453 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7454 <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
7455 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>
7458 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
7459 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7460 and may restart scanning at any time.<wbr/></p>
7461 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7462 device may skip reporting this state in capture result.<wbr/></p>
7463 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
7464 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7468 </td> <!-- entry_type -->
7470 <td class="entry_description">
7471 <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7474 <td class="entry_units">
7477 <td class="entry_range">
7480 <td class="entry_hal_version">
7484 <td class="entry_tags">
7488 <tr class="entries_header">
7489 <th class="th_details" colspan="6">Details</th>
7491 <tr class="entry_cont">
7492 <td class="entry_details" colspan="6">
7493 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7494 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7495 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
7496 the algorithm states to INACTIVE.<wbr/></p>
7497 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7498 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7499 seen in a result.<wbr/></p>
7500 <p>The state in the result is the state for this image (in sync with this image): if
7501 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7503 <p>Below are state transition tables for different AF modes.<wbr/></p>
7504 <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>
7508 <th align="center">State</th>
7509 <th align="center">Transition Cause</th>
7510 <th align="center">New State</th>
7511 <th align="center">Notes</th>
7516 <td align="center">INACTIVE</td>
7517 <td align="center"></td>
7518 <td align="center">INACTIVE</td>
7519 <td align="center">Never changes</td>
7523 <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>
7527 <th align="center">State</th>
7528 <th align="center">Transition Cause</th>
7529 <th align="center">New State</th>
7530 <th align="center">Notes</th>
7535 <td align="center">INACTIVE</td>
7536 <td align="center">AF_<wbr/>TRIGGER</td>
7537 <td align="center">ACTIVE_<wbr/>SCAN</td>
7538 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7541 <td align="center">ACTIVE_<wbr/>SCAN</td>
7542 <td align="center">AF sweep done</td>
7543 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7544 <td align="center">Focused,<wbr/> Lens now locked</td>
7547 <td align="center">ACTIVE_<wbr/>SCAN</td>
7548 <td align="center">AF sweep done</td>
7549 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7550 <td align="center">Not focused,<wbr/> Lens now locked</td>
7553 <td align="center">ACTIVE_<wbr/>SCAN</td>
7554 <td align="center">AF_<wbr/>CANCEL</td>
7555 <td align="center">INACTIVE</td>
7556 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7559 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7560 <td align="center">AF_<wbr/>CANCEL</td>
7561 <td align="center">INACTIVE</td>
7562 <td align="center">Cancel/<wbr/>reset AF</td>
7565 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7566 <td align="center">AF_<wbr/>TRIGGER</td>
7567 <td align="center">ACTIVE_<wbr/>SCAN</td>
7568 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7571 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7572 <td align="center">AF_<wbr/>CANCEL</td>
7573 <td align="center">INACTIVE</td>
7574 <td align="center">Cancel/<wbr/>reset AF</td>
7577 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7578 <td align="center">AF_<wbr/>TRIGGER</td>
7579 <td align="center">ACTIVE_<wbr/>SCAN</td>
7580 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7583 <td align="center">Any state</td>
7584 <td align="center">Mode change</td>
7585 <td align="center">INACTIVE</td>
7586 <td align="center"></td>
7590 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7591 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7592 can be skipped in that manner is called a transient state.<wbr/></p>
7593 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7594 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7595 one or more transient states between two results.<wbr/> See below table for examples:</p>
7599 <th align="center">State</th>
7600 <th align="center">Transition Cause</th>
7601 <th align="center">New State</th>
7602 <th align="center">Notes</th>
7607 <td align="center">INACTIVE</td>
7608 <td align="center">AF_<wbr/>TRIGGER</td>
7609 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7610 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7613 <td align="center">INACTIVE</td>
7614 <td align="center">AF_<wbr/>TRIGGER</td>
7615 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7616 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7619 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7620 <td align="center">AF_<wbr/>TRIGGER</td>
7621 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7622 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7625 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7626 <td align="center">AF_<wbr/>TRIGGER</td>
7627 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7628 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7632 <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>
7636 <th align="center">State</th>
7637 <th align="center">Transition Cause</th>
7638 <th align="center">New State</th>
7639 <th align="center">Notes</th>
7644 <td align="center">INACTIVE</td>
7645 <td align="center">Camera device initiates new scan</td>
7646 <td align="center">PASSIVE_<wbr/>SCAN</td>
7647 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7650 <td align="center">INACTIVE</td>
7651 <td align="center">AF_<wbr/>TRIGGER</td>
7652 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7653 <td align="center">AF state query,<wbr/> Lens now locked</td>
7656 <td align="center">PASSIVE_<wbr/>SCAN</td>
7657 <td align="center">Camera device completes current scan</td>
7658 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7659 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7662 <td align="center">PASSIVE_<wbr/>SCAN</td>
7663 <td align="center">Camera device fails current scan</td>
7664 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7665 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7668 <td align="center">PASSIVE_<wbr/>SCAN</td>
7669 <td align="center">AF_<wbr/>TRIGGER</td>
7670 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7671 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7674 <td align="center">PASSIVE_<wbr/>SCAN</td>
7675 <td align="center">AF_<wbr/>TRIGGER</td>
7676 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7677 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7680 <td align="center">PASSIVE_<wbr/>SCAN</td>
7681 <td align="center">AF_<wbr/>CANCEL</td>
7682 <td align="center">INACTIVE</td>
7683 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7686 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7687 <td align="center">Camera device initiates new scan</td>
7688 <td align="center">PASSIVE_<wbr/>SCAN</td>
7689 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7692 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7693 <td align="center">Camera device initiates new scan</td>
7694 <td align="center">PASSIVE_<wbr/>SCAN</td>
7695 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7698 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7699 <td align="center">AF_<wbr/>TRIGGER</td>
7700 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7701 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7704 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7705 <td align="center">AF_<wbr/>TRIGGER</td>
7706 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7707 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7710 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7711 <td align="center">AF_<wbr/>TRIGGER</td>
7712 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7713 <td align="center">No effect</td>
7716 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7717 <td align="center">AF_<wbr/>CANCEL</td>
7718 <td align="center">INACTIVE</td>
7719 <td align="center">Restart AF scan</td>
7722 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7723 <td align="center">AF_<wbr/>TRIGGER</td>
7724 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7725 <td align="center">No effect</td>
7728 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7729 <td align="center">AF_<wbr/>CANCEL</td>
7730 <td align="center">INACTIVE</td>
7731 <td align="center">Restart AF scan</td>
7735 <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>
7739 <th align="center">State</th>
7740 <th align="center">Transition Cause</th>
7741 <th align="center">New State</th>
7742 <th align="center">Notes</th>
7747 <td align="center">INACTIVE</td>
7748 <td align="center">Camera device initiates new scan</td>
7749 <td align="center">PASSIVE_<wbr/>SCAN</td>
7750 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7753 <td align="center">INACTIVE</td>
7754 <td align="center">AF_<wbr/>TRIGGER</td>
7755 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7756 <td align="center">AF state query,<wbr/> Lens now locked</td>
7759 <td align="center">PASSIVE_<wbr/>SCAN</td>
7760 <td align="center">Camera device completes current scan</td>
7761 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7762 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7765 <td align="center">PASSIVE_<wbr/>SCAN</td>
7766 <td align="center">Camera device fails current scan</td>
7767 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7768 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7771 <td align="center">PASSIVE_<wbr/>SCAN</td>
7772 <td align="center">AF_<wbr/>TRIGGER</td>
7773 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7774 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7777 <td align="center">PASSIVE_<wbr/>SCAN</td>
7778 <td align="center">AF_<wbr/>TRIGGER</td>
7779 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7780 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7783 <td align="center">PASSIVE_<wbr/>SCAN</td>
7784 <td align="center">AF_<wbr/>CANCEL</td>
7785 <td align="center">INACTIVE</td>
7786 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7789 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7790 <td align="center">Camera device initiates new scan</td>
7791 <td align="center">PASSIVE_<wbr/>SCAN</td>
7792 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7795 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7796 <td align="center">Camera device initiates new scan</td>
7797 <td align="center">PASSIVE_<wbr/>SCAN</td>
7798 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7801 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7802 <td align="center">AF_<wbr/>TRIGGER</td>
7803 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7804 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7807 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7808 <td align="center">AF_<wbr/>TRIGGER</td>
7809 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7810 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7813 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7814 <td align="center">AF_<wbr/>TRIGGER</td>
7815 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7816 <td align="center">No effect</td>
7819 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7820 <td align="center">AF_<wbr/>CANCEL</td>
7821 <td align="center">INACTIVE</td>
7822 <td align="center">Restart AF scan</td>
7825 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7826 <td align="center">AF_<wbr/>TRIGGER</td>
7827 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7828 <td align="center">No effect</td>
7831 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7832 <td align="center">AF_<wbr/>CANCEL</td>
7833 <td align="center">INACTIVE</td>
7834 <td align="center">Restart AF scan</td>
7838 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7839 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7840 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7841 will be evaluated in the context of the new mode in the request.<wbr/>
7842 See below table for examples:</p>
7846 <th align="center">State</th>
7847 <th align="center">Transition Cause</th>
7848 <th align="center">New State</th>
7849 <th align="center">Notes</th>
7854 <td align="center">any state</td>
7855 <td align="center">CAF-->AUTO mode switch</td>
7856 <td align="center">INACTIVE</td>
7857 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7860 <td align="center">any state</td>
7861 <td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td>
7862 <td align="center">trigger-reachable states from INACTIVE</td>
7863 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7866 <td align="center">any state</td>
7867 <td align="center">AUTO-->CAF mode switch</td>
7868 <td align="center">passively reachable states from INACTIVE</td>
7869 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7877 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7878 <!-- end of entry -->
7881 <tr class="entry" id="dynamic_android.control.afTriggerId">
7882 <td class="entry_name
7883 entry_name_deprecated
7885 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7887 <td class="entry_type">
7888 <span class="entry_type_name">int32</span>
7890 <span class="entry_type_visibility"> [system]</span>
7894 <span class="entry_type_deprecated">[deprecated] </span>
7898 </td> <!-- entry_type -->
7900 <td class="entry_description">
7901 <p>The ID sent with the latest
7902 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7905 <td class="entry_units">
7908 <td class="entry_range">
7909 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7912 <td class="entry_hal_version">
7916 <td class="entry_tags">
7920 <tr class="entries_header">
7921 <th class="th_details" colspan="6">Details</th>
7923 <tr class="entry_cont">
7924 <td class="entry_details" colspan="6">
7925 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7926 received yet by HAL.<wbr/> Always updated even if AF algorithm
7927 ignores the trigger</p>
7932 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7933 <!-- end of entry -->
7936 <tr class="entry" id="dynamic_android.control.awbLock">
7937 <td class="entry_name
7939 android.<wbr/>control.<wbr/>awb<wbr/>Lock
7941 <td class="entry_type">
7942 <span class="entry_type_name entry_type_name_enum">byte</span>
7944 <span class="entry_type_visibility"> [public as boolean]</span>
7947 <span class="entry_type_hwlevel">[legacy] </span>
7951 <ul class="entry_type_enum">
7953 <span class="entry_type_enum_name">OFF (v3.2)</span>
7954 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7955 algorithm is free to update its parameters if in AUTO
7956 mode.<wbr/></p></span>
7959 <span class="entry_type_enum_name">ON (v3.2)</span>
7960 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7961 algorithm will not update its parameters while the lock
7962 is active.<wbr/></p></span>
7966 </td> <!-- entry_type -->
7968 <td class="entry_description">
7969 <p>Whether auto-white balance (AWB) is currently locked to its
7970 latest calculated values.<wbr/></p>
7973 <td class="entry_units">
7976 <td class="entry_range">
7979 <td class="entry_hal_version">
7983 <td class="entry_tags">
7984 <ul class="entry_tags">
7985 <li><a href="#tag_BC">BC</a></li>
7990 <tr class="entries_header">
7991 <th class="th_details" colspan="6">Details</th>
7993 <tr class="entry_cont">
7994 <td class="entry_details" colspan="6">
7995 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7996 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7997 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7998 get locked do not necessarily correspond to the settings that were present in the
7999 latest capture result received from the camera device,<wbr/> since additional captures
8000 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
8001 application is switching between automatic and manual control and wishes to eliminate
8002 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
8004 <li>Starting in auto-AWB mode:</li>
8006 <li>Wait for the first result to be output that has the AWB locked</li>
8007 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
8008 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
8010 <p>Note that AWB lock is only meaningful when
8011 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
8012 AWB is already fixed to a specific setting.<wbr/></p>
8013 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
8018 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8019 <!-- end of entry -->
8022 <tr class="entry" id="dynamic_android.control.awbMode">
8023 <td class="entry_name
8025 android.<wbr/>control.<wbr/>awb<wbr/>Mode
8027 <td class="entry_type">
8028 <span class="entry_type_name entry_type_name_enum">byte</span>
8030 <span class="entry_type_visibility"> [public]</span>
8033 <span class="entry_type_hwlevel">[legacy] </span>
8037 <ul class="entry_type_enum">
8039 <span class="entry_type_enum_name">OFF (v3.2)</span>
8040 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
8041 <p>The application-selected color transform matrix
8042 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
8043 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
8044 device for manual white balance control.<wbr/></p></span>
8047 <span class="entry_type_enum_name">AUTO (v3.2)</span>
8048 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
8049 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8050 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8051 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8052 values used by the camera device for the transform and gains
8053 will be available in the capture result for this request.<wbr/></p></span>
8056 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
8057 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8058 the camera device uses incandescent light as the assumed scene
8059 illumination for white balance.<wbr/></p>
8060 <p>While the exact white balance transforms are up to the
8061 camera device,<wbr/> they will approximately match the CIE
8062 standard illuminant A.<wbr/></p>
8063 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8064 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8065 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8066 values used by the camera device for the transform and gains
8067 will be available in the capture result for this request.<wbr/></p></span>
8070 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
8071 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8072 the camera device uses fluorescent light as the assumed scene
8073 illumination for white balance.<wbr/></p>
8074 <p>While the exact white balance transforms are up to the
8075 camera device,<wbr/> they will approximately match the CIE
8076 standard illuminant F2.<wbr/></p>
8077 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8078 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8079 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8080 values used by the camera device for the transform and gains
8081 will be available in the capture result for this request.<wbr/></p></span>
8084 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
8085 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8086 the camera device uses warm fluorescent light as the assumed scene
8087 illumination for white balance.<wbr/></p>
8088 <p>While the exact white balance transforms are up to the
8089 camera device,<wbr/> they will approximately match the CIE
8090 standard illuminant F4.<wbr/></p>
8091 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8092 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8093 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8094 values used by the camera device for the transform and gains
8095 will be available in the capture result for this request.<wbr/></p></span>
8098 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
8099 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8100 the camera device uses daylight light as the assumed scene
8101 illumination for white balance.<wbr/></p>
8102 <p>While the exact white balance transforms are up to the
8103 camera device,<wbr/> they will approximately match the CIE
8104 standard illuminant D65.<wbr/></p>
8105 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8106 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8107 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8108 values used by the camera device for the transform and gains
8109 will be available in the capture result for this request.<wbr/></p></span>
8112 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
8113 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8114 the camera device uses cloudy daylight light as the assumed scene
8115 illumination for white balance.<wbr/></p>
8116 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8117 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8118 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8119 values used by the camera device for the transform and gains
8120 will be available in the capture result for this request.<wbr/></p></span>
8123 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
8124 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8125 the camera device uses twilight light as the assumed scene
8126 illumination for white balance.<wbr/></p>
8127 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8128 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8129 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8130 values used by the camera device for the transform and gains
8131 will be available in the capture result for this request.<wbr/></p></span>
8134 <span class="entry_type_enum_name">SHADE (v3.2)</span>
8135 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8136 the camera device uses shade light as the assumed scene
8137 illumination for white balance.<wbr/></p>
8138 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8139 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8140 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8141 values used by the camera device for the transform and gains
8142 will be available in the capture result for this request.<wbr/></p></span>
8146 </td> <!-- entry_type -->
8148 <td class="entry_description">
8149 <p>Whether auto-white balance (AWB) is currently setting the color
8150 transform fields,<wbr/> and what its illumination target
8154 <td class="entry_units">
8157 <td class="entry_range">
8158 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
8161 <td class="entry_hal_version">
8165 <td class="entry_tags">
8166 <ul class="entry_tags">
8167 <li><a href="#tag_BC">BC</a></li>
8172 <tr class="entries_header">
8173 <th class="th_details" colspan="6">Details</th>
8175 <tr class="entry_cont">
8176 <td class="entry_details" colspan="6">
8177 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
8178 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
8179 routine is enabled,<wbr/> overriding the application's selected
8180 <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
8181 <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>
8182 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
8183 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
8184 setting AE mode to OFF.<wbr/></p>
8185 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
8186 routine is disabled.<wbr/> The application manually controls the white
8187 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>
8188 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
8189 <p>When set to any other modes,<wbr/> the camera device's auto-white
8190 balance routine is disabled.<wbr/> The camera device uses each
8191 particular illumination target for white balance
8192 adjustment.<wbr/> The application's values for
8193 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
8194 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
8195 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
8200 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8201 <!-- end of entry -->
8204 <tr class="entry" id="dynamic_android.control.awbRegions">
8205 <td class="entry_name
8207 android.<wbr/>control.<wbr/>awb<wbr/>Regions
8209 <td class="entry_type">
8210 <span class="entry_type_name">int32</span>
8211 <span class="entry_type_container">x</span>
8213 <span class="entry_type_array">
8216 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
8223 </td> <!-- entry_type -->
8225 <td class="entry_description">
8226 <p>List of metering areas to use for auto-white-balance illuminant
8227 estimation.<wbr/></p>
8230 <td class="entry_units">
8231 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
8234 <td class="entry_range">
8235 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
8236 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
8239 <td class="entry_hal_version">
8243 <td class="entry_tags">
8244 <ul class="entry_tags">
8245 <li><a href="#tag_BC">BC</a></li>
8250 <tr class="entries_header">
8251 <th class="th_details" colspan="6">Details</th>
8253 <tr class="entry_cont">
8254 <td class="entry_details" colspan="6">
8255 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
8256 Otherwise will always be present.<wbr/></p>
8257 <p>The maximum number of regions supported by the device is determined by the value
8258 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
8259 <p>The coordinate system is based on the active pixel array,<wbr/>
8260 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
8261 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8262 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
8263 bottom-right pixel in the active pixel array.<wbr/></p>
8264 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
8265 for every pixel in the area.<wbr/> This means that a large metering area
8266 with the same weight as a smaller area will have more effect in
8267 the metering result.<wbr/> Metering areas can partially overlap and the
8268 camera device will add the weights in the overlap region.<wbr/></p>
8269 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
8270 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
8271 0 weight is ignored.<wbr/></p>
8272 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
8273 camera device.<wbr/></p>
8274 <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
8275 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8276 region and output only the intersection rectangle as the metering region in the result
8277 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
8278 not reported in the result metadata.<wbr/></p>
8282 <tr class="entries_header">
8283 <th class="th_details" colspan="6">HAL Implementation Details</th>
8285 <tr class="entry_cont">
8286 <td class="entry_details" colspan="6">
8287 <p>The HAL level representation of MeteringRectangle[] is a
8288 int[5 * area_<wbr/>count].<wbr/>
8289 Every five elements represent a metering region of
8290 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8291 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
8292 exclusive on xmax and ymax.<wbr/></p>
8296 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8297 <!-- end of entry -->
8300 <tr class="entry" id="dynamic_android.control.captureIntent">
8301 <td class="entry_name
8303 android.<wbr/>control.<wbr/>capture<wbr/>Intent
8305 <td class="entry_type">
8306 <span class="entry_type_name entry_type_name_enum">byte</span>
8308 <span class="entry_type_visibility"> [public]</span>
8311 <span class="entry_type_hwlevel">[legacy] </span>
8315 <ul class="entry_type_enum">
8317 <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
8318 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
8319 categories.<wbr/> The camera device will default to preview-like
8320 behavior.<wbr/></p></span>
8323 <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
8324 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
8325 <p>The precapture trigger may be used to start off a metering
8326 w/<wbr/>flash sequence.<wbr/></p></span>
8329 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
8330 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8332 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8335 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
8336 <span class="entry_type_enum_notes"><p>This request is for a video recording
8337 use case.<wbr/></p></span>
8340 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
8341 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8342 image while recording video) use case.<wbr/></p>
8343 <p>The camera device should take the highest-quality image
8344 possible (given the other settings) without disrupting the
8345 frame rate of video recording.<wbr/> </p></span>
8348 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
8349 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8350 application will stream full-resolution images and
8351 reprocess one or several later for a final
8352 capture.<wbr/></p></span>
8355 <span class="entry_type_enum_name">MANUAL (v3.2)</span>
8356 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8357 the applications want to directly control the capture parameters.<wbr/></p>
8358 <p>For example,<wbr/> the application may wish to manually control
8359 <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>
8362 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
8363 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
8364 the application will use camera and inertial sensor data to
8365 locate and track objects in the world.<wbr/></p>
8366 <p>The camera device auto-exposure routine will limit the exposure time
8367 of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
8371 </td> <!-- entry_type -->
8373 <td class="entry_description">
8374 <p>Information to the camera device 3A (auto-exposure,<wbr/>
8375 auto-focus,<wbr/> auto-white balance) routines about the purpose
8376 of this capture,<wbr/> to help the camera device to decide optimal 3A
8380 <td class="entry_units">
8383 <td class="entry_range">
8386 <td class="entry_hal_version">
8390 <td class="entry_tags">
8391 <ul class="entry_tags">
8392 <li><a href="#tag_BC">BC</a></li>
8397 <tr class="entries_header">
8398 <th class="th_details" colspan="6">Details</th>
8400 <tr class="entry_cont">
8401 <td class="entry_details" colspan="6">
8402 <p>This control (except for MANUAL) is only effective if
8403 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8404 <p>All intents are supported by all devices,<wbr/> except that:
8405 * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8406 PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
8407 * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8408 MANUAL_<wbr/>SENSOR.<wbr/>
8409 * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8410 MOTION_<wbr/>TRACKING.<wbr/></p>
8415 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8416 <!-- end of entry -->
8419 <tr class="entry" id="dynamic_android.control.awbState">
8420 <td class="entry_name
8422 android.<wbr/>control.<wbr/>awb<wbr/>State
8424 <td class="entry_type">
8425 <span class="entry_type_name entry_type_name_enum">byte</span>
8427 <span class="entry_type_visibility"> [public]</span>
8430 <span class="entry_type_hwlevel">[limited] </span>
8434 <ul class="entry_type_enum">
8436 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
8437 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8438 <p>When a camera device is opened,<wbr/> it starts in this
8439 state.<wbr/> This is a transient state,<wbr/> the camera device may
8440 skip reporting this state in capture
8441 result.<wbr/></p></span>
8444 <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
8445 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8446 values for the current scene.<wbr/></p>
8447 <p>This is a transient state,<wbr/> the camera device
8448 may skip reporting this state in capture result.<wbr/></p></span>
8451 <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
8452 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8453 current scene.<wbr/></p></span>
8456 <span class="entry_type_enum_name">LOCKED (v3.2)</span>
8457 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8461 </td> <!-- entry_type -->
8463 <td class="entry_description">
8464 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8467 <td class="entry_units">
8470 <td class="entry_range">
8473 <td class="entry_hal_version">
8477 <td class="entry_tags">
8481 <tr class="entries_header">
8482 <th class="th_details" colspan="6">Details</th>
8484 <tr class="entry_cont">
8485 <td class="entry_details" colspan="6">
8486 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8487 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8488 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
8489 the algorithm states to INACTIVE.<wbr/></p>
8490 <p>The camera device can do several state transitions between two results,<wbr/> if it is
8491 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8493 <p>The state in the result is the state for this image (in sync with this image): if
8494 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8495 be good to use.<wbr/></p>
8496 <p>Below are state transition tables for different AWB modes.<wbr/></p>
8497 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8501 <th align="center">State</th>
8502 <th align="center">Transition Cause</th>
8503 <th align="center">New State</th>
8504 <th align="center">Notes</th>
8509 <td align="center">INACTIVE</td>
8510 <td align="center"></td>
8511 <td align="center">INACTIVE</td>
8512 <td align="center">Camera device auto white balance algorithm is disabled</td>
8516 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8520 <th align="center">State</th>
8521 <th align="center">Transition Cause</th>
8522 <th align="center">New State</th>
8523 <th align="center">Notes</th>
8528 <td align="center">INACTIVE</td>
8529 <td align="center">Camera device initiates AWB scan</td>
8530 <td align="center">SEARCHING</td>
8531 <td align="center">Values changing</td>
8534 <td align="center">INACTIVE</td>
8535 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8536 <td align="center">LOCKED</td>
8537 <td align="center">Values locked</td>
8540 <td align="center">SEARCHING</td>
8541 <td align="center">Camera device finishes AWB scan</td>
8542 <td align="center">CONVERGED</td>
8543 <td align="center">Good values,<wbr/> not changing</td>
8546 <td align="center">SEARCHING</td>
8547 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8548 <td align="center">LOCKED</td>
8549 <td align="center">Values locked</td>
8552 <td align="center">CONVERGED</td>
8553 <td align="center">Camera device initiates AWB scan</td>
8554 <td align="center">SEARCHING</td>
8555 <td align="center">Values changing</td>
8558 <td align="center">CONVERGED</td>
8559 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8560 <td align="center">LOCKED</td>
8561 <td align="center">Values locked</td>
8564 <td align="center">LOCKED</td>
8565 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8566 <td align="center">SEARCHING</td>
8567 <td align="center">Values not good after unlock</td>
8571 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8572 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8573 can be skipped in that manner is called a transient state.<wbr/></p>
8574 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8575 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8576 transient states between two results.<wbr/> See below table for examples:</p>
8580 <th align="center">State</th>
8581 <th align="center">Transition Cause</th>
8582 <th align="center">New State</th>
8583 <th align="center">Notes</th>
8588 <td align="center">INACTIVE</td>
8589 <td align="center">Camera device finished AWB scan</td>
8590 <td align="center">CONVERGED</td>
8591 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8594 <td align="center">LOCKED</td>
8595 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8596 <td align="center">CONVERGED</td>
8597 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8605 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8606 <!-- end of entry -->
8609 <tr class="entry" id="dynamic_android.control.effectMode">
8610 <td class="entry_name
8612 android.<wbr/>control.<wbr/>effect<wbr/>Mode
8614 <td class="entry_type">
8615 <span class="entry_type_name entry_type_name_enum">byte</span>
8617 <span class="entry_type_visibility"> [public]</span>
8620 <span class="entry_type_hwlevel">[legacy] </span>
8624 <ul class="entry_type_enum">
8626 <span class="entry_type_enum_name">OFF (v3.2)</span>
8627 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8630 <span class="entry_type_enum_name">MONO (v3.2)</span>
8631 <span class="entry_type_enum_optional">[optional]</span>
8632 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8633 a single color.<wbr/></p>
8634 <p>This will typically be grayscale.<wbr/></p></span>
8637 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
8638 <span class="entry_type_enum_optional">[optional]</span>
8639 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8640 are inverted.<wbr/></p></span>
8643 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
8644 <span class="entry_type_enum_optional">[optional]</span>
8645 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8646 image is wholly or partially reversed in
8647 tone.<wbr/></p></span>
8650 <span class="entry_type_enum_name">SEPIA (v3.2)</span>
8651 <span class="entry_type_enum_optional">[optional]</span>
8652 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8653 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8656 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
8657 <span class="entry_type_enum_optional">[optional]</span>
8658 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8659 discrete regions of tone rather than a continuous
8660 gradient of tones.<wbr/></p></span>
8663 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
8664 <span class="entry_type_enum_optional">[optional]</span>
8665 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8666 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8669 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
8670 <span class="entry_type_enum_optional">[optional]</span>
8671 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8672 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8675 <span class="entry_type_enum_name">AQUA (v3.2)</span>
8676 <span class="entry_type_enum_optional">[optional]</span>
8677 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8681 </td> <!-- entry_type -->
8683 <td class="entry_description">
8684 <p>A special color effect to apply.<wbr/></p>
8687 <td class="entry_units">
8690 <td class="entry_range">
8691 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8694 <td class="entry_hal_version">
8698 <td class="entry_tags">
8699 <ul class="entry_tags">
8700 <li><a href="#tag_BC">BC</a></li>
8705 <tr class="entries_header">
8706 <th class="th_details" colspan="6">Details</th>
8708 <tr class="entry_cont">
8709 <td class="entry_details" colspan="6">
8710 <p>When this mode is set,<wbr/> a color effect will be applied
8711 to images produced by the camera device.<wbr/> The interpretation
8712 and implementation of these color effects is left to the
8713 implementor of the camera device,<wbr/> and should not be
8714 depended on to be consistent (or present) across all
8720 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8721 <!-- end of entry -->
8724 <tr class="entry" id="dynamic_android.control.mode">
8725 <td class="entry_name
8727 android.<wbr/>control.<wbr/>mode
8729 <td class="entry_type">
8730 <span class="entry_type_name entry_type_name_enum">byte</span>
8732 <span class="entry_type_visibility"> [public]</span>
8735 <span class="entry_type_hwlevel">[legacy] </span>
8739 <ul class="entry_type_enum">
8741 <span class="entry_type_enum_name">OFF (v3.2)</span>
8742 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8743 <p>All control by the device's metering and focusing (3A)
8744 routines is disabled,<wbr/> and no other settings in
8745 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8746 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8747 device to select post-processing values for processing
8748 blocks that do not allow for manual control,<wbr/> or are not
8749 exposed by the camera API.<wbr/></p>
8750 <p>However,<wbr/> the camera device's 3A routines may continue to
8751 collect statistics and update their internal state so that
8752 when control is switched to AUTO mode,<wbr/> good control values
8753 can be immediately applied.<wbr/></p></span>
8756 <span class="entry_type_enum_name">AUTO (v3.2)</span>
8757 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8758 <p>Manual control of capture parameters is disabled.<wbr/> All
8759 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8760 effect.<wbr/></p></span>
8763 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
8764 <span class="entry_type_enum_optional">[optional]</span>
8765 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8766 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8767 control.<wbr/>afMode controls; the camera device will ignore
8768 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8769 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8770 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8771 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8772 contain some modes other than DISABLED).<wbr/></p></span>
8775 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
8776 <span class="entry_type_enum_optional">[optional]</span>
8777 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8778 used by camera device background auto-exposure,<wbr/> auto-white balance and
8779 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8780 <p>Specifically,<wbr/> the 3A routines are locked to the last
8781 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8782 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8783 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8784 discarded by the camera device.<wbr/></p></span>
8788 </td> <!-- entry_type -->
8790 <td class="entry_description">
8791 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8795 <td class="entry_units">
8798 <td class="entry_range">
8799 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8802 <td class="entry_hal_version">
8806 <td class="entry_tags">
8807 <ul class="entry_tags">
8808 <li><a href="#tag_BC">BC</a></li>
8813 <tr class="entries_header">
8814 <th class="th_details" colspan="6">Details</th>
8816 <tr class="entry_cont">
8817 <td class="entry_details" colspan="6">
8818 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8819 by the camera device is disabled.<wbr/> The application must set the fields for
8820 capture parameters itself.<wbr/></p>
8821 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8822 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>
8823 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8824 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
8825 implements one of the scene mode settings (such as ACTION,<wbr/>
8826 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
8827 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8828 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8829 is that this frame will not be used by camera device background 3A statistics
8830 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8831 where the application doesn't want a 3A manual control capture to affect
8832 the subsequent auto 3A capture results.<wbr/></p>
8837 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8838 <!-- end of entry -->
8841 <tr class="entry" id="dynamic_android.control.sceneMode">
8842 <td class="entry_name
8844 android.<wbr/>control.<wbr/>scene<wbr/>Mode
8846 <td class="entry_type">
8847 <span class="entry_type_name entry_type_name_enum">byte</span>
8849 <span class="entry_type_visibility"> [public]</span>
8852 <span class="entry_type_hwlevel">[legacy] </span>
8856 <ul class="entry_type_enum">
8858 <span class="entry_type_enum_name">DISABLED (v3.2)</span>
8859 <span class="entry_type_enum_value">0</span>
8860 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8863 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
8864 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8865 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8866 auto-exposure routines.<wbr/></p>
8867 <p>If face detection statistics are disabled
8868 (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/>
8869 this should still operate correctly (but will not return
8870 face detection statistics to the framework).<wbr/></p>
8871 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8872 <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>
8873 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8876 <span class="entry_type_enum_name">ACTION (v3.2)</span>
8877 <span class="entry_type_enum_optional">[optional]</span>
8878 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8879 <p>Similar to SPORTS.<wbr/></p></span>
8882 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
8883 <span class="entry_type_enum_optional">[optional]</span>
8884 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8887 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
8888 <span class="entry_type_enum_optional">[optional]</span>
8889 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8892 <span class="entry_type_enum_name">NIGHT (v3.2)</span>
8893 <span class="entry_type_enum_optional">[optional]</span>
8894 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8897 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
8898 <span class="entry_type_enum_optional">[optional]</span>
8899 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8900 settings.<wbr/></p></span>
8903 <span class="entry_type_enum_name">THEATRE (v3.2)</span>
8904 <span class="entry_type_enum_optional">[optional]</span>
8905 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8906 remain off.<wbr/></p></span>
8909 <span class="entry_type_enum_name">BEACH (v3.2)</span>
8910 <span class="entry_type_enum_optional">[optional]</span>
8911 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8914 <span class="entry_type_enum_name">SNOW (v3.2)</span>
8915 <span class="entry_type_enum_optional">[optional]</span>
8916 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8919 <span class="entry_type_enum_name">SUNSET (v3.2)</span>
8920 <span class="entry_type_enum_optional">[optional]</span>
8921 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8924 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
8925 <span class="entry_type_enum_optional">[optional]</span>
8926 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8927 device motion (for example: due to hand shake).<wbr/></p></span>
8930 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
8931 <span class="entry_type_enum_optional">[optional]</span>
8932 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8935 <span class="entry_type_enum_name">SPORTS (v3.2)</span>
8936 <span class="entry_type_enum_optional">[optional]</span>
8937 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8938 <p>Similar to ACTION.<wbr/></p></span>
8941 <span class="entry_type_enum_name">PARTY (v3.2)</span>
8942 <span class="entry_type_enum_optional">[optional]</span>
8943 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8944 people.<wbr/></p></span>
8947 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
8948 <span class="entry_type_enum_optional">[optional]</span>
8949 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8950 is a flame.<wbr/></p></span>
8953 <span class="entry_type_enum_name">BARCODE (v3.2)</span>
8954 <span class="entry_type_enum_optional">[optional]</span>
8955 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8956 for use by camera applications that wish to read the
8957 barcode value.<wbr/></p></span>
8960 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
8961 <span class="entry_type_enum_deprecated">[deprecated]</span>
8962 <span class="entry_type_enum_optional">[optional]</span>
8963 <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>
8964 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8965 for high speed video recording.<wbr/></p>
8966 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p>
8967 <p>The supported high speed video sizes and fps ranges are specified in
8968 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8969 output frame rates,<wbr/> the application is only allowed to select video size
8970 and fps range combinations listed in this static metadata.<wbr/> The fps range
8971 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8972 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8973 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8974 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8975 and post-processing parameters is possible.<wbr/> All other controls operate the
8976 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8977 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8979 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8980 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8981 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8982 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8983 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8984 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8985 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8986 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8987 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8988 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8990 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8992 <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>
8993 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8994 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8995 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8997 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8998 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8999 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
9000 the application need check if the video encoder is capable of supporting the
9001 high frame rate for a given video size,<wbr/> or it will end up with lower recording
9002 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
9003 rate will be bounded by the screen refresh rate.<wbr/></p>
9004 <p>The camera device will only support up to 2 output high speed streams
9005 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
9006 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
9008 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
9009 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
9010 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>
9011 <li>The stream sizes are selected from the sizes reported by
9012 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
9013 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
9015 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
9016 <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/>
9017 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
9018 and the returned capture result metadata will give the fps range choosen
9019 by the camera device.<wbr/></p>
9020 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
9021 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
9022 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
9025 <span class="entry_type_enum_name">HDR (v3.2)</span>
9026 <span class="entry_type_enum_optional">[optional]</span>
9027 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
9028 <p>In this scene mode,<wbr/> the camera device captures images
9029 that keep a larger range of scene illumination levels
9030 visible in the final image.<wbr/> For example,<wbr/> when taking a
9031 picture of a object in front of a bright window,<wbr/> both
9032 the object and the scene through the window may be
9033 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
9034 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
9035 HDR mode generally takes much longer to capture a single
9036 image,<wbr/> has no user control,<wbr/> and may have other artifacts
9037 depending on the HDR method used.<wbr/></p>
9038 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
9039 than regular captures.<wbr/></p>
9040 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
9041 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
9042 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
9043 using a high dynamic range capture technique.<wbr/> On LEGACY
9044 devices,<wbr/> captures that target a JPEG-format output will
9045 be captured with HDR,<wbr/> and the capture intent is not
9047 <p>The HDR capture may involve the device capturing a burst
9048 of images internally and combining them into one,<wbr/> or it
9049 may involve the device using specialized high dynamic
9050 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
9051 produced in response to a capture request submitted
9052 while in HDR mode.<wbr/></p>
9053 <p>Since substantial post-processing is generally needed to
9054 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
9055 outputs are supported for LIMITED/<wbr/>FULL device HDR
9056 captures,<wbr/> and only JPEG outputs are supported for LEGACY
9057 HDR captures.<wbr/> Using a RAW output for HDR capture is not
9058 supported.<wbr/></p>
9059 <p>Some devices may also support always-on HDR,<wbr/> which
9060 applies HDR processing at full frame rate.<wbr/> For these
9061 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
9062 produce an HDR output with no frame rate impact compared
9063 to normal operation,<wbr/> though the quality may be lower
9064 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
9065 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
9066 or capture intents,<wbr/> the images captured will be as if
9067 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
9070 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
9071 <span class="entry_type_enum_optional">[optional]</span>
9072 <span class="entry_type_enum_hidden">[hidden]</span>
9073 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
9074 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
9075 under low light conditions.<wbr/></p>
9076 <p>The camera device may be tuned to expose the images in a reduced
9077 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
9078 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/>
9079 the camera device auto-exposure routine tuning process may limit the actual
9080 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
9081 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
9082 low light may be under-exposed when the sensor max exposure time (bounded by the
9083 <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
9084 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
9085 camera device auto-exposure routine to increase the sensitivity up to the max
9086 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
9087 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
9088 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
9089 recommended that the application only use this scene mode when it is capable of
9090 reducing the noise level of the captured images.<wbr/></p>
9091 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9092 <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>
9093 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
9096 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
9097 <span class="entry_type_enum_optional">[optional]</span>
9098 <span class="entry_type_enum_hidden">[hidden]</span>
9099 <span class="entry_type_enum_value">100</span>
9100 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9101 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9102 customized scene modes.<wbr/></p></span>
9105 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
9106 <span class="entry_type_enum_optional">[optional]</span>
9107 <span class="entry_type_enum_hidden">[hidden]</span>
9108 <span class="entry_type_enum_value">127</span>
9109 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9110 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9111 customized scene modes.<wbr/></p></span>
9115 </td> <!-- entry_type -->
9117 <td class="entry_description">
9118 <p>Control for which scene mode is currently active.<wbr/></p>
9121 <td class="entry_units">
9124 <td class="entry_range">
9125 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
9128 <td class="entry_hal_version">
9132 <td class="entry_tags">
9133 <ul class="entry_tags">
9134 <li><a href="#tag_BC">BC</a></li>
9139 <tr class="entries_header">
9140 <th class="th_details" colspan="6">Details</th>
9142 <tr class="entry_cont">
9143 <td class="entry_details" colspan="6">
9144 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
9145 capture settings.<wbr/></p>
9146 <p>This is the mode that that is active when
9147 <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
9148 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>
9149 while in use.<wbr/></p>
9150 <p>The interpretation and implementation of these scene modes is left
9151 to the implementor of the camera device.<wbr/> Their behavior will not be
9152 consistent across all devices,<wbr/> and any given device may only implement
9153 a subset of these modes.<wbr/></p>
9157 <tr class="entries_header">
9158 <th class="th_details" colspan="6">HAL Implementation Details</th>
9160 <tr class="entry_cont">
9161 <td class="entry_details" colspan="6">
9162 <p>HAL implementations that include scene modes are expected to provide
9163 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9164 <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
9165 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
9166 <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/> the
9167 HAL must list supported video size and fps range in
9168 <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/> 1280x720,<wbr/>
9169 if the HAL has two different sensor configurations for normal streaming mode and high
9170 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
9171 HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
9172 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
9173 <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
9174 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
9178 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9179 <!-- end of entry -->
9182 <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
9183 <td class="entry_name
9185 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
9187 <td class="entry_type">
9188 <span class="entry_type_name entry_type_name_enum">byte</span>
9190 <span class="entry_type_visibility"> [public]</span>
9193 <span class="entry_type_hwlevel">[legacy] </span>
9197 <ul class="entry_type_enum">
9199 <span class="entry_type_enum_name">OFF (v3.2)</span>
9200 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
9203 <span class="entry_type_enum_name">ON (v3.2)</span>
9204 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
9208 </td> <!-- entry_type -->
9210 <td class="entry_description">
9211 <p>Whether video stabilization is
9215 <td class="entry_units">
9218 <td class="entry_range">
9221 <td class="entry_hal_version">
9225 <td class="entry_tags">
9226 <ul class="entry_tags">
9227 <li><a href="#tag_BC">BC</a></li>
9232 <tr class="entries_header">
9233 <th class="th_details" colspan="6">Details</th>
9235 <tr class="entry_cont">
9236 <td class="entry_details" colspan="6">
9237 <p>Video stabilization automatically warps images from
9238 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
9239 <p>If enabled,<wbr/> video stabilization can modify the
9240 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
9241 <p>Switching between different video stabilization modes may take several
9242 frames to initialize,<wbr/> the camera device will report the current mode
9243 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
9244 the video stabilization modes in the first several capture results may
9245 still be "OFF",<wbr/> and it will become "ON" when the initialization is
9247 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
9248 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
9249 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
9250 the recording resolution is less than or equal to 1920 x 1080 (width less than
9251 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
9252 frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
9253 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
9254 OFF if the recording output is not stabilized,<wbr/> or if there are no output
9255 Surface types that can be stabilized.<wbr/></p>
9256 <p>If a camera device supports both this mode and OIS
9257 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
9258 produce undesirable interaction,<wbr/> so it is recommended not to enable
9259 both at the same time.<wbr/></p>
9264 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9265 <!-- end of entry -->
9268 <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
9269 <td class="entry_name
9271 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
9273 <td class="entry_type">
9274 <span class="entry_type_name">int32</span>
9276 <span class="entry_type_visibility"> [public]</span>
9283 </td> <!-- entry_type -->
9285 <td class="entry_description">
9286 <p>The amount of additional sensitivity boost applied to output images
9287 after RAW sensor data is captured.<wbr/></p>
9290 <td class="entry_units">
9291 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
9294 <td class="entry_range">
9295 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
9298 <td class="entry_hal_version">
9302 <td class="entry_tags">
9306 <tr class="entries_header">
9307 <th class="th_details" colspan="6">Details</th>
9309 <tr class="entry_cont">
9310 <td class="entry_details" colspan="6">
9311 <p>Some camera devices support additional digital sensitivity boosting in the
9312 camera processing pipeline after sensor RAW image is captured.<wbr/>
9313 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
9314 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
9315 <p>This key will be <code>null</code> for devices that do not support any RAW format
9316 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
9317 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
9318 list <code>100</code> in this key.<wbr/></p>
9319 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
9320 boost to the nearest supported value.<wbr/>
9321 The final boost value used will be available in the output capture result.<wbr/></p>
9322 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
9323 of such device will have the total sensitivity of
9324 <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>
9325 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
9326 <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
9327 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
9332 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9333 <!-- end of entry -->
9336 <tr class="entry" id="dynamic_android.control.enableZsl">
9337 <td class="entry_name
9339 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
9341 <td class="entry_type">
9342 <span class="entry_type_name entry_type_name_enum">byte</span>
9344 <span class="entry_type_visibility"> [public as boolean]</span>
9350 <ul class="entry_type_enum">
9352 <span class="entry_type_enum_name">FALSE (v3.2)</span>
9353 <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
9354 after previous requests.<wbr/></p></span>
9357 <span class="entry_type_enum_name">TRUE (v3.2)</span>
9358 <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
9359 captured before previous requests.<wbr/></p></span>
9363 </td> <!-- entry_type -->
9365 <td class="entry_description">
9366 <p>Allow camera device to enable zero-shutter-lag mode for requests with
9367 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
9370 <td class="entry_units">
9373 <td class="entry_range">
9376 <td class="entry_hal_version">
9380 <td class="entry_tags">
9384 <tr class="entries_header">
9385 <th class="th_details" colspan="6">Details</th>
9387 <tr class="entry_cont">
9388 <td class="entry_details" colspan="6">
9389 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9390 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9391 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9392 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9393 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9394 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9395 capture intents.<wbr/></p>
9396 <p>For example,<wbr/> when requests are submitted in the following order:
9397 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9398 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>
9399 <p>The output images for request B may have contents captured before the output images for
9400 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9401 request A.<wbr/></p>
9402 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9403 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9404 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9405 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9406 <code>false</code> if present.<wbr/></p>
9407 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9408 capture templates is always <code>false</code> if present.<wbr/></p>
9409 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9413 <tr class="entries_header">
9414 <th class="th_details" colspan="6">HAL Implementation Details</th>
9416 <tr class="entry_cont">
9417 <td class="entry_details" colspan="6">
9418 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9419 capture intent.<wbr/></p>
9423 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9424 <!-- end of entry -->
9427 <tr class="entry" id="dynamic_android.control.afSceneChange">
9428 <td class="entry_name
9430 android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
9432 <td class="entry_type">
9433 <span class="entry_type_name entry_type_name_enum">int32</span>
9435 <span class="entry_type_visibility"> [public]</span>
9441 <ul class="entry_type_enum">
9443 <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
9444 <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
9447 <span class="entry_type_enum_name">DETECTED (v3.3)</span>
9448 <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
9452 </td> <!-- entry_type -->
9454 <td class="entry_description">
9455 <p>Whether a significant scene change is detected within the currently-set AF
9456 region(s).<wbr/></p>
9459 <td class="entry_units">
9462 <td class="entry_range">
9465 <td class="entry_hal_version">
9469 <td class="entry_tags">
9473 <tr class="entries_header">
9474 <th class="th_details" colspan="6">Details</th>
9476 <tr class="entry_cont">
9477 <td class="entry_details" colspan="6">
9478 <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
9479 such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
9480 significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
9481 result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
9482 to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
9483 <p>afSceneChange may be DETECTED only if afMode is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>VIDEO or
9484 AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>PICTURE.<wbr/> In other AF modes,<wbr/> afSceneChange must be NOT_<wbr/>DETECTED.<wbr/></p>
9485 <p>This key will be available if the camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
9490 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9491 <!-- end of entry -->
9495 <!-- end of kind -->
9498 <!-- end of section -->
9499 <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
9502 <tr><td colspan="7" class="kind">controls</td></tr>
9504 <thead class="entries_header">
9506 <th class="th_name">Property Name</th>
9507 <th class="th_type">Type</th>
9508 <th class="th_description">Description</th>
9509 <th class="th_units">Units</th>
9510 <th class="th_range">Range</th>
9511 <th class="th_hal_version">Initial HIDL HAL version</th>
9512 <th class="th_tags">Tags</th>
9527 <tr class="entry" id="controls_android.demosaic.mode">
9528 <td class="entry_name
9530 android.<wbr/>demosaic.<wbr/>mode
9532 <td class="entry_type">
9533 <span class="entry_type_name entry_type_name_enum">byte</span>
9535 <span class="entry_type_visibility"> [system]</span>
9541 <ul class="entry_type_enum">
9543 <span class="entry_type_enum_name">FAST (v3.2)</span>
9544 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9545 Bayer RAW output.<wbr/></p></span>
9548 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9549 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9550 relative to raw output.<wbr/></p></span>
9554 </td> <!-- entry_type -->
9556 <td class="entry_description">
9557 <p>Controls the quality of the demosaicing
9558 processing.<wbr/></p>
9561 <td class="entry_units">
9564 <td class="entry_range">
9567 <td class="entry_hal_version">
9571 <td class="entry_tags">
9572 <ul class="entry_tags">
9573 <li><a href="#tag_FUTURE">FUTURE</a></li>
9580 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9581 <!-- end of entry -->
9585 <!-- end of kind -->
9588 <!-- end of section -->
9589 <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
9592 <tr><td colspan="7" class="kind">controls</td></tr>
9594 <thead class="entries_header">
9596 <th class="th_name">Property Name</th>
9597 <th class="th_type">Type</th>
9598 <th class="th_description">Description</th>
9599 <th class="th_units">Units</th>
9600 <th class="th_range">Range</th>
9601 <th class="th_hal_version">Initial HIDL HAL version</th>
9602 <th class="th_tags">Tags</th>
9617 <tr class="entry" id="controls_android.edge.mode">
9618 <td class="entry_name
9620 android.<wbr/>edge.<wbr/>mode
9622 <td class="entry_type">
9623 <span class="entry_type_name entry_type_name_enum">byte</span>
9625 <span class="entry_type_visibility"> [public]</span>
9628 <span class="entry_type_hwlevel">[full] </span>
9632 <ul class="entry_type_enum">
9634 <span class="entry_type_enum_name">OFF (v3.2)</span>
9635 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9638 <span class="entry_type_enum_name">FAST (v3.2)</span>
9639 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9640 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9641 slow down frame rate relative to sensor.<wbr/></p></span>
9644 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9645 <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>
9648 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9649 <span class="entry_type_enum_optional">[optional]</span>
9650 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9651 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9652 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9653 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9654 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9655 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9656 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9657 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9658 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9659 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9660 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
9661 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9662 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9663 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9664 reasonable preview quality.<wbr/></p>
9665 <p>This mode is guaranteed to be supported by devices that support either the
9666 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9667 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9668 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9672 </td> <!-- entry_type -->
9674 <td class="entry_description">
9675 <p>Operation mode for edge
9676 enhancement.<wbr/></p>
9679 <td class="entry_units">
9682 <td class="entry_range">
9683 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9686 <td class="entry_hal_version">
9690 <td class="entry_tags">
9691 <ul class="entry_tags">
9692 <li><a href="#tag_V1">V1</a></li>
9693 <li><a href="#tag_REPROC">REPROC</a></li>
9698 <tr class="entries_header">
9699 <th class="th_details" colspan="6">Details</th>
9701 <tr class="entry_cont">
9702 <td class="entry_details" colspan="6">
9703 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9704 no enhancement will be applied by the camera device.<wbr/></p>
9705 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9706 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9707 camera device will use the highest-quality enhancement algorithms,<wbr/>
9708 even if it slows down capture rate.<wbr/> FAST means the camera device will
9709 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9710 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9711 amount of enhancement applied.<wbr/></p>
9712 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9713 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9714 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9715 edge enhancement to low-resolution streams (below maximum recording resolution) to
9716 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9717 since those will be reprocessed later if necessary.<wbr/></p>
9718 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9719 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9720 The camera device may adjust its internal edge enhancement parameters for best
9721 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>
9725 <tr class="entries_header">
9726 <th class="th_details" colspan="6">HAL Implementation Details</th>
9728 <tr class="entry_cont">
9729 <td class="entry_details" colspan="6">
9730 <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
9731 adjust the internal edge enhancement reduction parameters appropriately to get the best
9732 quality images.<wbr/></p>
9736 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9737 <!-- end of entry -->
9740 <tr class="entry" id="controls_android.edge.strength">
9741 <td class="entry_name
9743 android.<wbr/>edge.<wbr/>strength
9745 <td class="entry_type">
9746 <span class="entry_type_name">byte</span>
9748 <span class="entry_type_visibility"> [system]</span>
9755 </td> <!-- entry_type -->
9757 <td class="entry_description">
9758 <p>Control the amount of edge enhancement
9759 applied to the images</p>
9762 <td class="entry_units">
9763 1-10; 10 is maximum sharpening
9766 <td class="entry_range">
9769 <td class="entry_hal_version">
9773 <td class="entry_tags">
9774 <ul class="entry_tags">
9775 <li><a href="#tag_FUTURE">FUTURE</a></li>
9782 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9783 <!-- end of entry -->
9787 <!-- end of kind -->
9789 <tr><td colspan="7" class="kind">static</td></tr>
9791 <thead class="entries_header">
9793 <th class="th_name">Property Name</th>
9794 <th class="th_type">Type</th>
9795 <th class="th_description">Description</th>
9796 <th class="th_units">Units</th>
9797 <th class="th_range">Range</th>
9798 <th class="th_hal_version">Initial HIDL HAL version</th>
9799 <th class="th_tags">Tags</th>
9814 <tr class="entry" id="static_android.edge.availableEdgeModes">
9815 <td class="entry_name
9817 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9819 <td class="entry_type">
9820 <span class="entry_type_name">byte</span>
9821 <span class="entry_type_container">x</span>
9823 <span class="entry_type_array">
9826 <span class="entry_type_visibility"> [public as enumList]</span>
9829 <span class="entry_type_hwlevel">[full] </span>
9832 <div class="entry_type_notes">list of enums</div>
9835 </td> <!-- entry_type -->
9837 <td class="entry_description">
9838 <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
9842 <td class="entry_units">
9845 <td class="entry_range">
9846 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9849 <td class="entry_hal_version">
9853 <td class="entry_tags">
9854 <ul class="entry_tags">
9855 <li><a href="#tag_V1">V1</a></li>
9856 <li><a href="#tag_REPROC">REPROC</a></li>
9861 <tr class="entries_header">
9862 <th class="th_details" colspan="6">Details</th>
9864 <tr class="entry_cont">
9865 <td class="entry_details" colspan="6">
9866 <p>Full-capability camera devices must always support OFF; camera devices that support
9867 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9868 list FAST.<wbr/></p>
9872 <tr class="entries_header">
9873 <th class="th_details" colspan="6">HAL Implementation Details</th>
9875 <tr class="entry_cont">
9876 <td class="entry_details" colspan="6">
9877 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9878 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9879 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9880 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9884 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9885 <!-- end of entry -->
9889 <!-- end of kind -->
9891 <tr><td colspan="7" class="kind">dynamic</td></tr>
9893 <thead class="entries_header">
9895 <th class="th_name">Property Name</th>
9896 <th class="th_type">Type</th>
9897 <th class="th_description">Description</th>
9898 <th class="th_units">Units</th>
9899 <th class="th_range">Range</th>
9900 <th class="th_hal_version">Initial HIDL HAL version</th>
9901 <th class="th_tags">Tags</th>
9916 <tr class="entry" id="dynamic_android.edge.mode">
9917 <td class="entry_name
9919 android.<wbr/>edge.<wbr/>mode
9921 <td class="entry_type">
9922 <span class="entry_type_name entry_type_name_enum">byte</span>
9924 <span class="entry_type_visibility"> [public]</span>
9927 <span class="entry_type_hwlevel">[full] </span>
9931 <ul class="entry_type_enum">
9933 <span class="entry_type_enum_name">OFF (v3.2)</span>
9934 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9937 <span class="entry_type_enum_name">FAST (v3.2)</span>
9938 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9939 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9940 slow down frame rate relative to sensor.<wbr/></p></span>
9943 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9944 <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>
9947 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9948 <span class="entry_type_enum_optional">[optional]</span>
9949 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9950 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9951 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9952 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9953 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9954 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9955 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9956 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9957 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9958 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9959 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
9960 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9961 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9962 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9963 reasonable preview quality.<wbr/></p>
9964 <p>This mode is guaranteed to be supported by devices that support either the
9965 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9966 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9967 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9971 </td> <!-- entry_type -->
9973 <td class="entry_description">
9974 <p>Operation mode for edge
9975 enhancement.<wbr/></p>
9978 <td class="entry_units">
9981 <td class="entry_range">
9982 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9985 <td class="entry_hal_version">
9989 <td class="entry_tags">
9990 <ul class="entry_tags">
9991 <li><a href="#tag_V1">V1</a></li>
9992 <li><a href="#tag_REPROC">REPROC</a></li>
9997 <tr class="entries_header">
9998 <th class="th_details" colspan="6">Details</th>
10000 <tr class="entry_cont">
10001 <td class="entry_details" colspan="6">
10002 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
10003 no enhancement will be applied by the camera device.<wbr/></p>
10004 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
10005 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
10006 camera device will use the highest-quality enhancement algorithms,<wbr/>
10007 even if it slows down capture rate.<wbr/> FAST means the camera device will
10008 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
10009 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
10010 amount of enhancement applied.<wbr/></p>
10011 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
10012 buffer of high-resolution images during preview and reprocess image(s) from that buffer
10013 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
10014 edge enhancement to low-resolution streams (below maximum recording resolution) to
10015 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
10016 since those will be reprocessed later if necessary.<wbr/></p>
10017 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
10018 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
10019 The camera device may adjust its internal edge enhancement parameters for best
10020 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>
10024 <tr class="entries_header">
10025 <th class="th_details" colspan="6">HAL Implementation Details</th>
10027 <tr class="entry_cont">
10028 <td class="entry_details" colspan="6">
10029 <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
10030 adjust the internal edge enhancement reduction parameters appropriately to get the best
10031 quality images.<wbr/></p>
10035 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10036 <!-- end of entry -->
10040 <!-- end of kind -->
10043 <!-- end of section -->
10044 <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
10047 <tr><td colspan="7" class="kind">controls</td></tr>
10049 <thead class="entries_header">
10051 <th class="th_name">Property Name</th>
10052 <th class="th_type">Type</th>
10053 <th class="th_description">Description</th>
10054 <th class="th_units">Units</th>
10055 <th class="th_range">Range</th>
10056 <th class="th_hal_version">Initial HIDL HAL version</th>
10057 <th class="th_tags">Tags</th>
10072 <tr class="entry" id="controls_android.flash.firingPower">
10073 <td class="entry_name
10075 android.<wbr/>flash.<wbr/>firing<wbr/>Power
10077 <td class="entry_type">
10078 <span class="entry_type_name">byte</span>
10080 <span class="entry_type_visibility"> [system]</span>
10087 </td> <!-- entry_type -->
10089 <td class="entry_description">
10090 <p>Power for flash firing/<wbr/>torch</p>
10093 <td class="entry_units">
10094 10 is max power; 0 is no flash.<wbr/> Linear
10097 <td class="entry_range">
10101 <td class="entry_hal_version">
10105 <td class="entry_tags">
10106 <ul class="entry_tags">
10107 <li><a href="#tag_FUTURE">FUTURE</a></li>
10112 <tr class="entries_header">
10113 <th class="th_details" colspan="6">Details</th>
10115 <tr class="entry_cont">
10116 <td class="entry_details" colspan="6">
10117 <p>Power for snapshot may use a different scale than
10118 for torch mode.<wbr/> Only one entry for torch mode will be
10124 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10125 <!-- end of entry -->
10128 <tr class="entry" id="controls_android.flash.firingTime">
10129 <td class="entry_name
10131 android.<wbr/>flash.<wbr/>firing<wbr/>Time
10133 <td class="entry_type">
10134 <span class="entry_type_name">int64</span>
10136 <span class="entry_type_visibility"> [system]</span>
10143 </td> <!-- entry_type -->
10145 <td class="entry_description">
10146 <p>Firing time of flash relative to start of
10150 <td class="entry_units">
10154 <td class="entry_range">
10155 <p>0-(exposure time-flash duration)</p>
10158 <td class="entry_hal_version">
10162 <td class="entry_tags">
10163 <ul class="entry_tags">
10164 <li><a href="#tag_FUTURE">FUTURE</a></li>
10169 <tr class="entries_header">
10170 <th class="th_details" colspan="6">Details</th>
10172 <tr class="entry_cont">
10173 <td class="entry_details" colspan="6">
10174 <p>Clamped to (0,<wbr/> exposure time - flash
10175 duration).<wbr/></p>
10180 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10181 <!-- end of entry -->
10184 <tr class="entry" id="controls_android.flash.mode">
10185 <td class="entry_name
10187 android.<wbr/>flash.<wbr/>mode
10189 <td class="entry_type">
10190 <span class="entry_type_name entry_type_name_enum">byte</span>
10192 <span class="entry_type_visibility"> [public]</span>
10195 <span class="entry_type_hwlevel">[legacy] </span>
10199 <ul class="entry_type_enum">
10201 <span class="entry_type_enum_name">OFF (v3.2)</span>
10202 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10205 <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10206 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10207 for this capture.<wbr/></p></span>
10210 <span class="entry_type_enum_name">TORCH (v3.2)</span>
10211 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10215 </td> <!-- entry_type -->
10217 <td class="entry_description">
10218 <p>The desired mode for for the camera device's flash control.<wbr/></p>
10221 <td class="entry_units">
10224 <td class="entry_range">
10227 <td class="entry_hal_version">
10231 <td class="entry_tags">
10232 <ul class="entry_tags">
10233 <li><a href="#tag_BC">BC</a></li>
10238 <tr class="entries_header">
10239 <th class="th_details" colspan="6">Details</th>
10241 <tr class="entry_cont">
10242 <td class="entry_details" colspan="6">
10243 <p>This control is only effective when flash unit is available
10244 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10245 <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/>
10246 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10247 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10248 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10249 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10250 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10251 control should be used along with auto-exposure (AE) precapture metering sequence
10252 (<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>
10253 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10254 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10255 <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>
10260 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10261 <!-- end of entry -->
10265 <!-- end of kind -->
10267 <tr><td colspan="7" class="kind">static</td></tr>
10269 <thead class="entries_header">
10271 <th class="th_name">Property Name</th>
10272 <th class="th_type">Type</th>
10273 <th class="th_description">Description</th>
10274 <th class="th_units">Units</th>
10275 <th class="th_range">Range</th>
10276 <th class="th_hal_version">Initial HIDL HAL version</th>
10277 <th class="th_tags">Tags</th>
10294 <tr class="entry" id="static_android.flash.info.available">
10295 <td class="entry_name
10297 android.<wbr/>flash.<wbr/>info.<wbr/>available
10299 <td class="entry_type">
10300 <span class="entry_type_name entry_type_name_enum">byte</span>
10302 <span class="entry_type_visibility"> [public as boolean]</span>
10305 <span class="entry_type_hwlevel">[legacy] </span>
10309 <ul class="entry_type_enum">
10311 <span class="entry_type_enum_name">FALSE (v3.2)</span>
10314 <span class="entry_type_enum_name">TRUE (v3.2)</span>
10318 </td> <!-- entry_type -->
10320 <td class="entry_description">
10321 <p>Whether this camera device has a
10322 flash unit.<wbr/></p>
10325 <td class="entry_units">
10328 <td class="entry_range">
10331 <td class="entry_hal_version">
10335 <td class="entry_tags">
10336 <ul class="entry_tags">
10337 <li><a href="#tag_BC">BC</a></li>
10342 <tr class="entries_header">
10343 <th class="th_details" colspan="6">Details</th>
10345 <tr class="entry_cont">
10346 <td class="entry_details" colspan="6">
10347 <p>Will be <code>false</code> if no flash is available.<wbr/></p>
10348 <p>If there is no flash unit,<wbr/> none of the flash controls do
10349 anything.<wbr/></p>
10354 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10355 <!-- end of entry -->
10358 <tr class="entry" id="static_android.flash.info.chargeDuration">
10359 <td class="entry_name
10361 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
10363 <td class="entry_type">
10364 <span class="entry_type_name">int64</span>
10366 <span class="entry_type_visibility"> [system]</span>
10373 </td> <!-- entry_type -->
10375 <td class="entry_description">
10376 <p>Time taken before flash can fire
10380 <td class="entry_units">
10384 <td class="entry_range">
10388 <td class="entry_hal_version">
10392 <td class="entry_tags">
10393 <ul class="entry_tags">
10394 <li><a href="#tag_FUTURE">FUTURE</a></li>
10399 <tr class="entries_header">
10400 <th class="th_details" colspan="6">Details</th>
10402 <tr class="entry_cont">
10403 <td class="entry_details" colspan="6">
10404 <p>1 second too long/<wbr/>too short for recharge? Should
10405 this be power-dependent?</p>
10410 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10411 <!-- end of entry -->
10417 <tr class="entry" id="static_android.flash.colorTemperature">
10418 <td class="entry_name
10420 android.<wbr/>flash.<wbr/>color<wbr/>Temperature
10422 <td class="entry_type">
10423 <span class="entry_type_name">byte</span>
10425 <span class="entry_type_visibility"> [system]</span>
10432 </td> <!-- entry_type -->
10434 <td class="entry_description">
10435 <p>The x,<wbr/>y whitepoint of the
10439 <td class="entry_units">
10443 <td class="entry_range">
10444 <p>0-1 for both</p>
10447 <td class="entry_hal_version">
10451 <td class="entry_tags">
10452 <ul class="entry_tags">
10453 <li><a href="#tag_FUTURE">FUTURE</a></li>
10460 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10461 <!-- end of entry -->
10464 <tr class="entry" id="static_android.flash.maxEnergy">
10465 <td class="entry_name
10467 android.<wbr/>flash.<wbr/>max<wbr/>Energy
10469 <td class="entry_type">
10470 <span class="entry_type_name">byte</span>
10472 <span class="entry_type_visibility"> [system]</span>
10479 </td> <!-- entry_type -->
10481 <td class="entry_description">
10482 <p>Max energy output of the flash for a full
10483 power single flash</p>
10486 <td class="entry_units">
10490 <td class="entry_range">
10494 <td class="entry_hal_version">
10498 <td class="entry_tags">
10499 <ul class="entry_tags">
10500 <li><a href="#tag_FUTURE">FUTURE</a></li>
10507 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10508 <!-- end of entry -->
10512 <!-- end of kind -->
10514 <tr><td colspan="7" class="kind">dynamic</td></tr>
10516 <thead class="entries_header">
10518 <th class="th_name">Property Name</th>
10519 <th class="th_type">Type</th>
10520 <th class="th_description">Description</th>
10521 <th class="th_units">Units</th>
10522 <th class="th_range">Range</th>
10523 <th class="th_hal_version">Initial HIDL HAL version</th>
10524 <th class="th_tags">Tags</th>
10539 <tr class="entry" id="dynamic_android.flash.firingPower">
10540 <td class="entry_name
10542 android.<wbr/>flash.<wbr/>firing<wbr/>Power
10544 <td class="entry_type">
10545 <span class="entry_type_name">byte</span>
10547 <span class="entry_type_visibility"> [system]</span>
10554 </td> <!-- entry_type -->
10556 <td class="entry_description">
10557 <p>Power for flash firing/<wbr/>torch</p>
10560 <td class="entry_units">
10561 10 is max power; 0 is no flash.<wbr/> Linear
10564 <td class="entry_range">
10568 <td class="entry_hal_version">
10572 <td class="entry_tags">
10573 <ul class="entry_tags">
10574 <li><a href="#tag_FUTURE">FUTURE</a></li>
10579 <tr class="entries_header">
10580 <th class="th_details" colspan="6">Details</th>
10582 <tr class="entry_cont">
10583 <td class="entry_details" colspan="6">
10584 <p>Power for snapshot may use a different scale than
10585 for torch mode.<wbr/> Only one entry for torch mode will be
10591 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10592 <!-- end of entry -->
10595 <tr class="entry" id="dynamic_android.flash.firingTime">
10596 <td class="entry_name
10598 android.<wbr/>flash.<wbr/>firing<wbr/>Time
10600 <td class="entry_type">
10601 <span class="entry_type_name">int64</span>
10603 <span class="entry_type_visibility"> [system]</span>
10610 </td> <!-- entry_type -->
10612 <td class="entry_description">
10613 <p>Firing time of flash relative to start of
10617 <td class="entry_units">
10621 <td class="entry_range">
10622 <p>0-(exposure time-flash duration)</p>
10625 <td class="entry_hal_version">
10629 <td class="entry_tags">
10630 <ul class="entry_tags">
10631 <li><a href="#tag_FUTURE">FUTURE</a></li>
10636 <tr class="entries_header">
10637 <th class="th_details" colspan="6">Details</th>
10639 <tr class="entry_cont">
10640 <td class="entry_details" colspan="6">
10641 <p>Clamped to (0,<wbr/> exposure time - flash
10642 duration).<wbr/></p>
10647 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10648 <!-- end of entry -->
10651 <tr class="entry" id="dynamic_android.flash.mode">
10652 <td class="entry_name
10654 android.<wbr/>flash.<wbr/>mode
10656 <td class="entry_type">
10657 <span class="entry_type_name entry_type_name_enum">byte</span>
10659 <span class="entry_type_visibility"> [public]</span>
10662 <span class="entry_type_hwlevel">[legacy] </span>
10666 <ul class="entry_type_enum">
10668 <span class="entry_type_enum_name">OFF (v3.2)</span>
10669 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10672 <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10673 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10674 for this capture.<wbr/></p></span>
10677 <span class="entry_type_enum_name">TORCH (v3.2)</span>
10678 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10682 </td> <!-- entry_type -->
10684 <td class="entry_description">
10685 <p>The desired mode for for the camera device's flash control.<wbr/></p>
10688 <td class="entry_units">
10691 <td class="entry_range">
10694 <td class="entry_hal_version">
10698 <td class="entry_tags">
10699 <ul class="entry_tags">
10700 <li><a href="#tag_BC">BC</a></li>
10705 <tr class="entries_header">
10706 <th class="th_details" colspan="6">Details</th>
10708 <tr class="entry_cont">
10709 <td class="entry_details" colspan="6">
10710 <p>This control is only effective when flash unit is available
10711 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10712 <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/>
10713 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10714 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10715 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10716 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10717 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10718 control should be used along with auto-exposure (AE) precapture metering sequence
10719 (<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>
10720 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10721 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10722 <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>
10727 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10728 <!-- end of entry -->
10731 <tr class="entry" id="dynamic_android.flash.state">
10732 <td class="entry_name
10734 android.<wbr/>flash.<wbr/>state
10736 <td class="entry_type">
10737 <span class="entry_type_name entry_type_name_enum">byte</span>
10739 <span class="entry_type_visibility"> [public]</span>
10742 <span class="entry_type_hwlevel">[limited] </span>
10746 <ul class="entry_type_enum">
10748 <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
10749 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10752 <span class="entry_type_enum_name">CHARGING (v3.2)</span>
10753 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10756 <span class="entry_type_enum_name">READY (v3.2)</span>
10757 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10760 <span class="entry_type_enum_name">FIRED (v3.2)</span>
10761 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10764 <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
10765 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10766 <p>This is usually due to the next or previous frame having
10767 the flash fire,<wbr/> and the flash spilling into this capture
10768 due to hardware limitations.<wbr/></p></span>
10772 </td> <!-- entry_type -->
10774 <td class="entry_description">
10775 <p>Current state of the flash
10779 <td class="entry_units">
10782 <td class="entry_range">
10785 <td class="entry_hal_version">
10789 <td class="entry_tags">
10793 <tr class="entries_header">
10794 <th class="th_details" colspan="6">Details</th>
10796 <tr class="entry_cont">
10797 <td class="entry_details" colspan="6">
10798 <p>When the camera device doesn't have flash unit
10799 (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/>
10800 Other states indicate the current flash status.<wbr/></p>
10801 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10803 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10804 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10805 will always return FIRED.<wbr/></li>
10806 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10807 will always return FIRED.<wbr/></li>
10809 <p>In all other conditions the state will not be available on
10810 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10815 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10816 <!-- end of entry -->
10820 <!-- end of kind -->
10823 <!-- end of section -->
10824 <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
10827 <tr><td colspan="7" class="kind">controls</td></tr>
10829 <thead class="entries_header">
10831 <th class="th_name">Property Name</th>
10832 <th class="th_type">Type</th>
10833 <th class="th_description">Description</th>
10834 <th class="th_units">Units</th>
10835 <th class="th_range">Range</th>
10836 <th class="th_hal_version">Initial HIDL HAL version</th>
10837 <th class="th_tags">Tags</th>
10852 <tr class="entry" id="controls_android.hotPixel.mode">
10853 <td class="entry_name
10855 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10857 <td class="entry_type">
10858 <span class="entry_type_name entry_type_name_enum">byte</span>
10860 <span class="entry_type_visibility"> [public]</span>
10866 <ul class="entry_type_enum">
10868 <span class="entry_type_enum_name">OFF (v3.2)</span>
10869 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10870 <p>The frame rate must not be reduced relative to sensor raw output
10871 for this option.<wbr/></p>
10872 <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>
10875 <span class="entry_type_enum_name">FAST (v3.2)</span>
10876 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10877 rate relative to sensor raw output.<wbr/></p>
10878 <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>
10881 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
10882 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10883 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10884 <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>
10888 </td> <!-- entry_type -->
10890 <td class="entry_description">
10891 <p>Operational mode for hot pixel correction.<wbr/></p>
10894 <td class="entry_units">
10897 <td class="entry_range">
10898 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10901 <td class="entry_hal_version">
10905 <td class="entry_tags">
10906 <ul class="entry_tags">
10907 <li><a href="#tag_V1">V1</a></li>
10908 <li><a href="#tag_RAW">RAW</a></li>
10913 <tr class="entries_header">
10914 <th class="th_details" colspan="6">Details</th>
10916 <tr class="entry_cont">
10917 <td class="entry_details" colspan="6">
10918 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10919 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10920 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10925 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10926 <!-- end of entry -->
10930 <!-- end of kind -->
10932 <tr><td colspan="7" class="kind">static</td></tr>
10934 <thead class="entries_header">
10936 <th class="th_name">Property Name</th>
10937 <th class="th_type">Type</th>
10938 <th class="th_description">Description</th>
10939 <th class="th_units">Units</th>
10940 <th class="th_range">Range</th>
10941 <th class="th_hal_version">Initial HIDL HAL version</th>
10942 <th class="th_tags">Tags</th>
10957 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
10958 <td class="entry_name
10960 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
10962 <td class="entry_type">
10963 <span class="entry_type_name">byte</span>
10964 <span class="entry_type_container">x</span>
10966 <span class="entry_type_array">
10969 <span class="entry_type_visibility"> [public as enumList]</span>
10974 <div class="entry_type_notes">list of enums</div>
10977 </td> <!-- entry_type -->
10979 <td class="entry_description">
10980 <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
10981 camera device.<wbr/></p>
10984 <td class="entry_units">
10987 <td class="entry_range">
10988 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10991 <td class="entry_hal_version">
10995 <td class="entry_tags">
10996 <ul class="entry_tags">
10997 <li><a href="#tag_V1">V1</a></li>
10998 <li><a href="#tag_RAW">RAW</a></li>
11003 <tr class="entries_header">
11004 <th class="th_details" colspan="6">Details</th>
11006 <tr class="entry_cont">
11007 <td class="entry_details" colspan="6">
11008 <p>FULL mode camera devices will always support FAST.<wbr/></p>
11012 <tr class="entries_header">
11013 <th class="th_details" colspan="6">HAL Implementation Details</th>
11015 <tr class="entry_cont">
11016 <td class="entry_details" colspan="6">
11017 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
11018 pixels than actual pixels on the camera sensor.<wbr/>
11019 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
11020 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
11021 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
11022 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
11026 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11027 <!-- end of entry -->
11031 <!-- end of kind -->
11033 <tr><td colspan="7" class="kind">dynamic</td></tr>
11035 <thead class="entries_header">
11037 <th class="th_name">Property Name</th>
11038 <th class="th_type">Type</th>
11039 <th class="th_description">Description</th>
11040 <th class="th_units">Units</th>
11041 <th class="th_range">Range</th>
11042 <th class="th_hal_version">Initial HIDL HAL version</th>
11043 <th class="th_tags">Tags</th>
11058 <tr class="entry" id="dynamic_android.hotPixel.mode">
11059 <td class="entry_name
11061 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
11063 <td class="entry_type">
11064 <span class="entry_type_name entry_type_name_enum">byte</span>
11066 <span class="entry_type_visibility"> [public]</span>
11072 <ul class="entry_type_enum">
11074 <span class="entry_type_enum_name">OFF (v3.2)</span>
11075 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
11076 <p>The frame rate must not be reduced relative to sensor raw output
11077 for this option.<wbr/></p>
11078 <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>
11081 <span class="entry_type_enum_name">FAST (v3.2)</span>
11082 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
11083 rate relative to sensor raw output.<wbr/></p>
11084 <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>
11087 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11088 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
11089 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
11090 <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>
11094 </td> <!-- entry_type -->
11096 <td class="entry_description">
11097 <p>Operational mode for hot pixel correction.<wbr/></p>
11100 <td class="entry_units">
11103 <td class="entry_range">
11104 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
11107 <td class="entry_hal_version">
11111 <td class="entry_tags">
11112 <ul class="entry_tags">
11113 <li><a href="#tag_V1">V1</a></li>
11114 <li><a href="#tag_RAW">RAW</a></li>
11119 <tr class="entries_header">
11120 <th class="th_details" colspan="6">Details</th>
11122 <tr class="entry_cont">
11123 <td class="entry_details" colspan="6">
11124 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
11125 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
11126 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
11131 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11132 <!-- end of entry -->
11136 <!-- end of kind -->
11139 <!-- end of section -->
11140 <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
11143 <tr><td colspan="7" class="kind">controls</td></tr>
11145 <thead class="entries_header">
11147 <th class="th_name">Property Name</th>
11148 <th class="th_type">Type</th>
11149 <th class="th_description">Description</th>
11150 <th class="th_units">Units</th>
11151 <th class="th_range">Range</th>
11152 <th class="th_hal_version">Initial HIDL HAL version</th>
11153 <th class="th_tags">Tags</th>
11168 <tr class="entry" id="controls_android.jpeg.gpsLocation">
11169 <td class="entry_name
11171 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11173 <td class="entry_type">
11174 <span class="entry_type_name">byte</span>
11176 <span class="entry_type_visibility"> [java_public as location]</span>
11178 <span class="entry_type_synthetic">[synthetic] </span>
11180 <span class="entry_type_hwlevel">[legacy] </span>
11185 </td> <!-- entry_type -->
11187 <td class="entry_description">
11188 <p>A location object to use when generating image GPS metadata.<wbr/></p>
11191 <td class="entry_units">
11194 <td class="entry_range">
11197 <td class="entry_hal_version">
11201 <td class="entry_tags">
11205 <tr class="entries_header">
11206 <th class="th_details" colspan="6">Details</th>
11208 <tr class="entry_cont">
11209 <td class="entry_details" colspan="6">
11210 <p>Setting a location object in a request will include the GPS coordinates of the location
11211 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11212 viewed by anyone who receives the JPEG image.<wbr/></p>
11217 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11218 <!-- end of entry -->
11221 <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
11222 <td class="entry_name
11224 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11226 <td class="entry_type">
11227 <span class="entry_type_name">double</span>
11228 <span class="entry_type_container">x</span>
11230 <span class="entry_type_array">
11233 <span class="entry_type_visibility"> [ndk_public]</span>
11236 <span class="entry_type_hwlevel">[legacy] </span>
11239 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11242 </td> <!-- entry_type -->
11244 <td class="entry_description">
11245 <p>GPS coordinates to include in output JPEG
11249 <td class="entry_units">
11252 <td class="entry_range">
11253 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11256 <td class="entry_hal_version">
11260 <td class="entry_tags">
11261 <ul class="entry_tags">
11262 <li><a href="#tag_BC">BC</a></li>
11269 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11270 <!-- end of entry -->
11273 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
11274 <td class="entry_name
11276 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11278 <td class="entry_type">
11279 <span class="entry_type_name">byte</span>
11281 <span class="entry_type_visibility"> [ndk_public as string]</span>
11284 <span class="entry_type_hwlevel">[legacy] </span>
11289 </td> <!-- entry_type -->
11291 <td class="entry_description">
11292 <p>32 characters describing GPS algorithm to
11293 include in EXIF.<wbr/></p>
11296 <td class="entry_units">
11297 UTF-8 null-terminated string
11300 <td class="entry_range">
11303 <td class="entry_hal_version">
11307 <td class="entry_tags">
11308 <ul class="entry_tags">
11309 <li><a href="#tag_BC">BC</a></li>
11316 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11317 <!-- end of entry -->
11320 <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
11321 <td class="entry_name
11323 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11325 <td class="entry_type">
11326 <span class="entry_type_name">int64</span>
11328 <span class="entry_type_visibility"> [ndk_public]</span>
11331 <span class="entry_type_hwlevel">[legacy] </span>
11336 </td> <!-- entry_type -->
11338 <td class="entry_description">
11339 <p>Time GPS fix was made to include in
11343 <td class="entry_units">
11344 UTC in seconds since January 1,<wbr/> 1970
11347 <td class="entry_range">
11350 <td class="entry_hal_version">
11354 <td class="entry_tags">
11355 <ul class="entry_tags">
11356 <li><a href="#tag_BC">BC</a></li>
11363 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11364 <!-- end of entry -->
11367 <tr class="entry" id="controls_android.jpeg.orientation">
11368 <td class="entry_name
11370 android.<wbr/>jpeg.<wbr/>orientation
11372 <td class="entry_type">
11373 <span class="entry_type_name">int32</span>
11375 <span class="entry_type_visibility"> [public]</span>
11378 <span class="entry_type_hwlevel">[legacy] </span>
11383 </td> <!-- entry_type -->
11385 <td class="entry_description">
11386 <p>The orientation for a JPEG image.<wbr/></p>
11389 <td class="entry_units">
11390 Degrees in multiples of 90
11393 <td class="entry_range">
11394 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11397 <td class="entry_hal_version">
11401 <td class="entry_tags">
11402 <ul class="entry_tags">
11403 <li><a href="#tag_BC">BC</a></li>
11408 <tr class="entries_header">
11409 <th class="th_details" colspan="6">Details</th>
11411 <tr class="entry_cont">
11412 <td class="entry_details" colspan="6">
11413 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11414 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11416 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11417 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11418 the thumbnail data will also be rotated.<wbr/></p>
11419 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11420 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11421 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11422 sample code may be used:</p>
11423 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11424 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11425 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11427 //<wbr/> Round device orientation to a multiple of 90
11428 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11430 //<wbr/> Reverse device orientation for front-facing cameras
11431 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11432 if (facingFront) deviceOrientation = -deviceOrientation;
11434 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11435 //<wbr/> the image upright relative to the device orientation
11436 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11438 return jpegOrientation;
11445 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11446 <!-- end of entry -->
11449 <tr class="entry" id="controls_android.jpeg.quality">
11450 <td class="entry_name
11452 android.<wbr/>jpeg.<wbr/>quality
11454 <td class="entry_type">
11455 <span class="entry_type_name">byte</span>
11457 <span class="entry_type_visibility"> [public]</span>
11460 <span class="entry_type_hwlevel">[legacy] </span>
11465 </td> <!-- entry_type -->
11467 <td class="entry_description">
11468 <p>Compression quality of the final JPEG
11472 <td class="entry_units">
11475 <td class="entry_range">
11476 <p>1-100; larger is higher quality</p>
11479 <td class="entry_hal_version">
11483 <td class="entry_tags">
11484 <ul class="entry_tags">
11485 <li><a href="#tag_BC">BC</a></li>
11490 <tr class="entries_header">
11491 <th class="th_details" colspan="6">Details</th>
11493 <tr class="entry_cont">
11494 <td class="entry_details" colspan="6">
11495 <p>85-95 is typical usage range.<wbr/></p>
11500 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11501 <!-- end of entry -->
11504 <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11505 <td class="entry_name
11507 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11509 <td class="entry_type">
11510 <span class="entry_type_name">byte</span>
11512 <span class="entry_type_visibility"> [public]</span>
11515 <span class="entry_type_hwlevel">[legacy] </span>
11520 </td> <!-- entry_type -->
11522 <td class="entry_description">
11523 <p>Compression quality of JPEG
11524 thumbnail.<wbr/></p>
11527 <td class="entry_units">
11530 <td class="entry_range">
11531 <p>1-100; larger is higher quality</p>
11534 <td class="entry_hal_version">
11538 <td class="entry_tags">
11539 <ul class="entry_tags">
11540 <li><a href="#tag_BC">BC</a></li>
11547 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11548 <!-- end of entry -->
11551 <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11552 <td class="entry_name
11554 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11556 <td class="entry_type">
11557 <span class="entry_type_name">int32</span>
11558 <span class="entry_type_container">x</span>
11560 <span class="entry_type_array">
11563 <span class="entry_type_visibility"> [public as size]</span>
11566 <span class="entry_type_hwlevel">[legacy] </span>
11571 </td> <!-- entry_type -->
11573 <td class="entry_description">
11574 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11577 <td class="entry_units">
11580 <td class="entry_range">
11581 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11584 <td class="entry_hal_version">
11588 <td class="entry_tags">
11589 <ul class="entry_tags">
11590 <li><a href="#tag_BC">BC</a></li>
11595 <tr class="entries_header">
11596 <th class="th_details" colspan="6">Details</th>
11598 <tr class="entry_cont">
11599 <td class="entry_details" colspan="6">
11600 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11601 but the captured JPEG will still be a valid image.<wbr/></p>
11602 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11603 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11604 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11605 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11606 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11607 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11608 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11609 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11610 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11611 the camera device will handle thumbnail rotation in one of the following ways:</p>
11613 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11614 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11615 <li>Rotate the jpeg and thumbnail image data and not set
11616 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11617 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11618 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11619 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11625 <tr class="entries_header">
11626 <th class="th_details" colspan="6">HAL Implementation Details</th>
11628 <tr class="entry_cont">
11629 <td class="entry_details" colspan="6">
11630 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11631 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11632 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11633 thumbnail image cropping.<wbr/></p>
11637 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11638 <!-- end of entry -->
11642 <!-- end of kind -->
11644 <tr><td colspan="7" class="kind">static</td></tr>
11646 <thead class="entries_header">
11648 <th class="th_name">Property Name</th>
11649 <th class="th_type">Type</th>
11650 <th class="th_description">Description</th>
11651 <th class="th_units">Units</th>
11652 <th class="th_range">Range</th>
11653 <th class="th_hal_version">Initial HIDL HAL version</th>
11654 <th class="th_tags">Tags</th>
11669 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11670 <td class="entry_name
11672 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11674 <td class="entry_type">
11675 <span class="entry_type_name">int32</span>
11676 <span class="entry_type_container">x</span>
11678 <span class="entry_type_array">
11681 <span class="entry_type_visibility"> [public as size]</span>
11684 <span class="entry_type_hwlevel">[legacy] </span>
11689 </td> <!-- entry_type -->
11691 <td class="entry_description">
11692 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11693 camera device.<wbr/></p>
11696 <td class="entry_units">
11699 <td class="entry_range">
11702 <td class="entry_hal_version">
11706 <td class="entry_tags">
11707 <ul class="entry_tags">
11708 <li><a href="#tag_BC">BC</a></li>
11713 <tr class="entries_header">
11714 <th class="th_details" colspan="6">Details</th>
11716 <tr class="entry_cont">
11717 <td class="entry_details" colspan="6">
11718 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11719 thumbnail should be generated.<wbr/></p>
11720 <p>Below condiditions will be satisfied for this size list:</p>
11722 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11723 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11724 <li>The aspect ratio of the largest thumbnail size will be same as the
11725 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/>
11726 The largest size is defined as the size that has the largest pixel area
11727 in a given size list.<wbr/></li>
11728 <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
11729 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11730 and vice versa.<wbr/></li>
11731 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11737 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11738 <!-- end of entry -->
11741 <tr class="entry" id="static_android.jpeg.maxSize">
11742 <td class="entry_name
11744 android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11746 <td class="entry_type">
11747 <span class="entry_type_name">int32</span>
11749 <span class="entry_type_visibility"> [system]</span>
11756 </td> <!-- entry_type -->
11758 <td class="entry_description">
11759 <p>Maximum size in bytes for the compressed
11763 <td class="entry_units">
11766 <td class="entry_range">
11767 <p>Must be large enough to fit any JPEG produced by
11771 <td class="entry_hal_version">
11775 <td class="entry_tags">
11779 <tr class="entries_header">
11780 <th class="th_details" colspan="6">Details</th>
11782 <tr class="entry_cont">
11783 <td class="entry_details" colspan="6">
11784 <p>This is used for sizing the gralloc buffers for
11790 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11791 <!-- end of entry -->
11795 <!-- end of kind -->
11797 <tr><td colspan="7" class="kind">dynamic</td></tr>
11799 <thead class="entries_header">
11801 <th class="th_name">Property Name</th>
11802 <th class="th_type">Type</th>
11803 <th class="th_description">Description</th>
11804 <th class="th_units">Units</th>
11805 <th class="th_range">Range</th>
11806 <th class="th_hal_version">Initial HIDL HAL version</th>
11807 <th class="th_tags">Tags</th>
11822 <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11823 <td class="entry_name
11825 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11827 <td class="entry_type">
11828 <span class="entry_type_name">byte</span>
11830 <span class="entry_type_visibility"> [java_public as location]</span>
11832 <span class="entry_type_synthetic">[synthetic] </span>
11834 <span class="entry_type_hwlevel">[legacy] </span>
11839 </td> <!-- entry_type -->
11841 <td class="entry_description">
11842 <p>A location object to use when generating image GPS metadata.<wbr/></p>
11845 <td class="entry_units">
11848 <td class="entry_range">
11851 <td class="entry_hal_version">
11855 <td class="entry_tags">
11859 <tr class="entries_header">
11860 <th class="th_details" colspan="6">Details</th>
11862 <tr class="entry_cont">
11863 <td class="entry_details" colspan="6">
11864 <p>Setting a location object in a request will include the GPS coordinates of the location
11865 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11866 viewed by anyone who receives the JPEG image.<wbr/></p>
11871 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11872 <!-- end of entry -->
11875 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11876 <td class="entry_name
11878 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11880 <td class="entry_type">
11881 <span class="entry_type_name">double</span>
11882 <span class="entry_type_container">x</span>
11884 <span class="entry_type_array">
11887 <span class="entry_type_visibility"> [ndk_public]</span>
11890 <span class="entry_type_hwlevel">[legacy] </span>
11893 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11896 </td> <!-- entry_type -->
11898 <td class="entry_description">
11899 <p>GPS coordinates to include in output JPEG
11903 <td class="entry_units">
11906 <td class="entry_range">
11907 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11910 <td class="entry_hal_version">
11914 <td class="entry_tags">
11915 <ul class="entry_tags">
11916 <li><a href="#tag_BC">BC</a></li>
11923 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11924 <!-- end of entry -->
11927 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11928 <td class="entry_name
11930 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11932 <td class="entry_type">
11933 <span class="entry_type_name">byte</span>
11935 <span class="entry_type_visibility"> [ndk_public as string]</span>
11938 <span class="entry_type_hwlevel">[legacy] </span>
11943 </td> <!-- entry_type -->
11945 <td class="entry_description">
11946 <p>32 characters describing GPS algorithm to
11947 include in EXIF.<wbr/></p>
11950 <td class="entry_units">
11951 UTF-8 null-terminated string
11954 <td class="entry_range">
11957 <td class="entry_hal_version">
11961 <td class="entry_tags">
11962 <ul class="entry_tags">
11963 <li><a href="#tag_BC">BC</a></li>
11970 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11971 <!-- end of entry -->
11974 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
11975 <td class="entry_name
11977 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11979 <td class="entry_type">
11980 <span class="entry_type_name">int64</span>
11982 <span class="entry_type_visibility"> [ndk_public]</span>
11985 <span class="entry_type_hwlevel">[legacy] </span>
11990 </td> <!-- entry_type -->
11992 <td class="entry_description">
11993 <p>Time GPS fix was made to include in
11997 <td class="entry_units">
11998 UTC in seconds since January 1,<wbr/> 1970
12001 <td class="entry_range">
12004 <td class="entry_hal_version">
12008 <td class="entry_tags">
12009 <ul class="entry_tags">
12010 <li><a href="#tag_BC">BC</a></li>
12017 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12018 <!-- end of entry -->
12021 <tr class="entry" id="dynamic_android.jpeg.orientation">
12022 <td class="entry_name
12024 android.<wbr/>jpeg.<wbr/>orientation
12026 <td class="entry_type">
12027 <span class="entry_type_name">int32</span>
12029 <span class="entry_type_visibility"> [public]</span>
12032 <span class="entry_type_hwlevel">[legacy] </span>
12037 </td> <!-- entry_type -->
12039 <td class="entry_description">
12040 <p>The orientation for a JPEG image.<wbr/></p>
12043 <td class="entry_units">
12044 Degrees in multiples of 90
12047 <td class="entry_range">
12048 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
12051 <td class="entry_hal_version">
12055 <td class="entry_tags">
12056 <ul class="entry_tags">
12057 <li><a href="#tag_BC">BC</a></li>
12062 <tr class="entries_header">
12063 <th class="th_details" colspan="6">Details</th>
12065 <tr class="entry_cont">
12066 <td class="entry_details" colspan="6">
12067 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12068 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12070 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12071 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12072 the thumbnail data will also be rotated.<wbr/></p>
12073 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12074 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12075 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
12076 sample code may be used:</p>
12077 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12078 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12079 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12081 //<wbr/> Round device orientation to a multiple of 90
12082 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12084 //<wbr/> Reverse device orientation for front-facing cameras
12085 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12086 if (facingFront) deviceOrientation = -deviceOrientation;
12088 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12089 //<wbr/> the image upright relative to the device orientation
12090 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12092 return jpegOrientation;
12099 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12100 <!-- end of entry -->
12103 <tr class="entry" id="dynamic_android.jpeg.quality">
12104 <td class="entry_name
12106 android.<wbr/>jpeg.<wbr/>quality
12108 <td class="entry_type">
12109 <span class="entry_type_name">byte</span>
12111 <span class="entry_type_visibility"> [public]</span>
12114 <span class="entry_type_hwlevel">[legacy] </span>
12119 </td> <!-- entry_type -->
12121 <td class="entry_description">
12122 <p>Compression quality of the final JPEG
12126 <td class="entry_units">
12129 <td class="entry_range">
12130 <p>1-100; larger is higher quality</p>
12133 <td class="entry_hal_version">
12137 <td class="entry_tags">
12138 <ul class="entry_tags">
12139 <li><a href="#tag_BC">BC</a></li>
12144 <tr class="entries_header">
12145 <th class="th_details" colspan="6">Details</th>
12147 <tr class="entry_cont">
12148 <td class="entry_details" colspan="6">
12149 <p>85-95 is typical usage range.<wbr/></p>
12154 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12155 <!-- end of entry -->
12158 <tr class="entry" id="dynamic_android.jpeg.size">
12159 <td class="entry_name
12161 android.<wbr/>jpeg.<wbr/>size
12163 <td class="entry_type">
12164 <span class="entry_type_name">int32</span>
12166 <span class="entry_type_visibility"> [system]</span>
12173 </td> <!-- entry_type -->
12175 <td class="entry_description">
12176 <p>The size of the compressed JPEG image,<wbr/> in
12180 <td class="entry_units">
12183 <td class="entry_range">
12187 <td class="entry_hal_version">
12191 <td class="entry_tags">
12192 <ul class="entry_tags">
12193 <li><a href="#tag_FUTURE">FUTURE</a></li>
12198 <tr class="entries_header">
12199 <th class="th_details" colspan="6">Details</th>
12201 <tr class="entry_cont">
12202 <td class="entry_details" colspan="6">
12203 <p>If no JPEG output is produced for the request,<wbr/>
12204 this must be 0.<wbr/></p>
12205 <p>Otherwise,<wbr/> this describes the real size of the compressed
12206 JPEG image placed in the output stream.<wbr/> More specifically,<wbr/>
12207 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12208 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12209 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12210 500000 make up the real data.<wbr/></p>
12215 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12216 <!-- end of entry -->
12219 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12220 <td class="entry_name
12222 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12224 <td class="entry_type">
12225 <span class="entry_type_name">byte</span>
12227 <span class="entry_type_visibility"> [public]</span>
12230 <span class="entry_type_hwlevel">[legacy] </span>
12235 </td> <!-- entry_type -->
12237 <td class="entry_description">
12238 <p>Compression quality of JPEG
12239 thumbnail.<wbr/></p>
12242 <td class="entry_units">
12245 <td class="entry_range">
12246 <p>1-100; larger is higher quality</p>
12249 <td class="entry_hal_version">
12253 <td class="entry_tags">
12254 <ul class="entry_tags">
12255 <li><a href="#tag_BC">BC</a></li>
12262 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12263 <!-- end of entry -->
12266 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12267 <td class="entry_name
12269 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12271 <td class="entry_type">
12272 <span class="entry_type_name">int32</span>
12273 <span class="entry_type_container">x</span>
12275 <span class="entry_type_array">
12278 <span class="entry_type_visibility"> [public as size]</span>
12281 <span class="entry_type_hwlevel">[legacy] </span>
12286 </td> <!-- entry_type -->
12288 <td class="entry_description">
12289 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12292 <td class="entry_units">
12295 <td class="entry_range">
12296 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12299 <td class="entry_hal_version">
12303 <td class="entry_tags">
12304 <ul class="entry_tags">
12305 <li><a href="#tag_BC">BC</a></li>
12310 <tr class="entries_header">
12311 <th class="th_details" colspan="6">Details</th>
12313 <tr class="entry_cont">
12314 <td class="entry_details" colspan="6">
12315 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12316 but the captured JPEG will still be a valid image.<wbr/></p>
12317 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12318 should have the same aspect ratio as the main JPEG output.<wbr/></p>
12319 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12320 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12321 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
12322 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12323 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12324 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12325 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12326 the camera device will handle thumbnail rotation in one of the following ways:</p>
12328 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12329 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12330 <li>Rotate the jpeg and thumbnail image data and not set
12331 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12332 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12333 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12334 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12340 <tr class="entries_header">
12341 <th class="th_details" colspan="6">HAL Implementation Details</th>
12343 <tr class="entry_cont">
12344 <td class="entry_details" colspan="6">
12345 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12346 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
12347 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
12348 thumbnail image cropping.<wbr/></p>
12352 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12353 <!-- end of entry -->
12357 <!-- end of kind -->
12360 <!-- end of section -->
12361 <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12364 <tr><td colspan="7" class="kind">controls</td></tr>
12366 <thead class="entries_header">
12368 <th class="th_name">Property Name</th>
12369 <th class="th_type">Type</th>
12370 <th class="th_description">Description</th>
12371 <th class="th_units">Units</th>
12372 <th class="th_range">Range</th>
12373 <th class="th_hal_version">Initial HIDL HAL version</th>
12374 <th class="th_tags">Tags</th>
12389 <tr class="entry" id="controls_android.lens.aperture">
12390 <td class="entry_name
12392 android.<wbr/>lens.<wbr/>aperture
12394 <td class="entry_type">
12395 <span class="entry_type_name">float</span>
12397 <span class="entry_type_visibility"> [public]</span>
12400 <span class="entry_type_hwlevel">[full] </span>
12405 </td> <!-- entry_type -->
12407 <td class="entry_description">
12408 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12409 effective aperture diameter.<wbr/></p>
12412 <td class="entry_units">
12413 The f-number (f/<wbr/>N)
12416 <td class="entry_range">
12417 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12420 <td class="entry_hal_version">
12424 <td class="entry_tags">
12425 <ul class="entry_tags">
12426 <li><a href="#tag_V1">V1</a></li>
12431 <tr class="entries_header">
12432 <th class="th_details" colspan="6">Details</th>
12434 <tr class="entry_cont">
12435 <td class="entry_details" colspan="6">
12436 <p>Setting this value is only supported on the camera devices that have a variable
12437 aperture lens.<wbr/></p>
12438 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12439 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12440 <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>
12441 to achieve manual exposure control.<wbr/></p>
12442 <p>The requested aperture value may take several frames to reach the
12443 requested value; the camera device will report the current (intermediate)
12444 aperture size in capture result metadata while the aperture is changing.<wbr/>
12445 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>
12446 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12447 the ON modes,<wbr/> this will be overridden by the camera device
12448 auto-exposure algorithm,<wbr/> the overridden values are then provided
12449 back to the user in the corresponding result.<wbr/></p>
12454 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12455 <!-- end of entry -->
12458 <tr class="entry" id="controls_android.lens.filterDensity">
12459 <td class="entry_name
12461 android.<wbr/>lens.<wbr/>filter<wbr/>Density
12463 <td class="entry_type">
12464 <span class="entry_type_name">float</span>
12466 <span class="entry_type_visibility"> [public]</span>
12469 <span class="entry_type_hwlevel">[full] </span>
12474 </td> <!-- entry_type -->
12476 <td class="entry_description">
12477 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12480 <td class="entry_units">
12481 Exposure Value (EV)
12484 <td class="entry_range">
12485 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12488 <td class="entry_hal_version">
12492 <td class="entry_tags">
12493 <ul class="entry_tags">
12494 <li><a href="#tag_V1">V1</a></li>
12499 <tr class="entries_header">
12500 <th class="th_details" colspan="6">Details</th>
12502 <tr class="entry_cont">
12503 <td class="entry_details" colspan="6">
12504 <p>This control will not be supported on most camera devices.<wbr/></p>
12505 <p>Lens filters are typically used to lower the amount of light the
12506 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12507 step is the standard logarithmic representation,<wbr/> which are
12508 non-negative,<wbr/> and inversely proportional to the amount of light
12509 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
12510 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12511 mean that the filter is set to reduce incoming light by two stops
12512 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12513 <p>It may take several frames before the lens filter density changes
12514 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12515 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12520 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12521 <!-- end of entry -->
12524 <tr class="entry" id="controls_android.lens.focalLength">
12525 <td class="entry_name
12527 android.<wbr/>lens.<wbr/>focal<wbr/>Length
12529 <td class="entry_type">
12530 <span class="entry_type_name">float</span>
12532 <span class="entry_type_visibility"> [public]</span>
12535 <span class="entry_type_hwlevel">[legacy] </span>
12540 </td> <!-- entry_type -->
12542 <td class="entry_description">
12543 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12546 <td class="entry_units">
12550 <td class="entry_range">
12551 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12554 <td class="entry_hal_version">
12558 <td class="entry_tags">
12559 <ul class="entry_tags">
12560 <li><a href="#tag_V1">V1</a></li>
12565 <tr class="entries_header">
12566 <th class="th_details" colspan="6">Details</th>
12568 <tr class="entry_cont">
12569 <td class="entry_details" colspan="6">
12570 <p>This setting controls the physical focal length of the camera
12571 device's lens.<wbr/> Changing the focal length changes the field of
12572 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12573 <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
12574 setting won't be applied instantaneously,<wbr/> and it may take several
12575 frames before the lens can change to the requested focal length.<wbr/>
12576 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12577 be set to MOVING.<wbr/></p>
12578 <p>Optical zoom will not be supported on most devices.<wbr/></p>
12583 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12584 <!-- end of entry -->
12587 <tr class="entry" id="controls_android.lens.focusDistance">
12588 <td class="entry_name
12590 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12592 <td class="entry_type">
12593 <span class="entry_type_name">float</span>
12595 <span class="entry_type_visibility"> [public]</span>
12598 <span class="entry_type_hwlevel">[full] </span>
12603 </td> <!-- entry_type -->
12605 <td class="entry_description">
12606 <p>Desired distance to plane of sharpest focus,<wbr/>
12607 measured from frontmost surface of the lens.<wbr/></p>
12610 <td class="entry_units">
12611 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12614 <td class="entry_range">
12618 <td class="entry_hal_version">
12622 <td class="entry_tags">
12623 <ul class="entry_tags">
12624 <li><a href="#tag_BC">BC</a></li>
12625 <li><a href="#tag_V1">V1</a></li>
12630 <tr class="entries_header">
12631 <th class="th_details" colspan="6">Details</th>
12633 <tr class="entry_cont">
12634 <td class="entry_details" colspan="6">
12635 <p>This control can be used for setting manual focus,<wbr/> on devices that support
12636 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12637 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12638 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12639 <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>
12640 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12641 instantaneously,<wbr/> and it may take several frames before the lens
12642 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12643 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12644 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12645 for infinity focus.<wbr/></p>
12650 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12651 <!-- end of entry -->
12654 <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12655 <td class="entry_name
12657 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12659 <td class="entry_type">
12660 <span class="entry_type_name entry_type_name_enum">byte</span>
12662 <span class="entry_type_visibility"> [public]</span>
12665 <span class="entry_type_hwlevel">[limited] </span>
12669 <ul class="entry_type_enum">
12671 <span class="entry_type_enum_name">OFF (v3.2)</span>
12672 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12675 <span class="entry_type_enum_name">ON (v3.2)</span>
12676 <span class="entry_type_enum_optional">[optional]</span>
12677 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12681 </td> <!-- entry_type -->
12683 <td class="entry_description">
12684 <p>Sets whether the camera device uses optical image stabilization (OIS)
12685 when capturing images.<wbr/></p>
12688 <td class="entry_units">
12691 <td class="entry_range">
12692 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12695 <td class="entry_hal_version">
12699 <td class="entry_tags">
12700 <ul class="entry_tags">
12701 <li><a href="#tag_V1">V1</a></li>
12706 <tr class="entries_header">
12707 <th class="th_details" colspan="6">Details</th>
12709 <tr class="entry_cont">
12710 <td class="entry_details" colspan="6">
12711 <p>OIS is used to compensate for motion blur due to small
12712 movements of the camera during capture.<wbr/> Unlike digital image
12713 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12714 makes use of mechanical elements to stabilize the camera
12715 sensor,<wbr/> and thus allows for longer exposure times before
12716 camera shake becomes apparent.<wbr/></p>
12717 <p>Switching between different optical stabilization modes may take several
12718 frames to initialize,<wbr/> the camera device will report the current mode in
12719 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12720 optical stabilization modes in the first several capture results may still
12721 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12722 <p>If a camera device supports both OIS and digital image stabilization
12723 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12724 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12725 <p>Not all devices will support OIS; see
12726 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12727 available controls.<wbr/></p>
12732 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12733 <!-- end of entry -->
12737 <!-- end of kind -->
12739 <tr><td colspan="7" class="kind">static</td></tr>
12741 <thead class="entries_header">
12743 <th class="th_name">Property Name</th>
12744 <th class="th_type">Type</th>
12745 <th class="th_description">Description</th>
12746 <th class="th_units">Units</th>
12747 <th class="th_range">Range</th>
12748 <th class="th_hal_version">Initial HIDL HAL version</th>
12749 <th class="th_tags">Tags</th>
12766 <tr class="entry" id="static_android.lens.info.availableApertures">
12767 <td class="entry_name
12769 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12771 <td class="entry_type">
12772 <span class="entry_type_name">float</span>
12773 <span class="entry_type_container">x</span>
12775 <span class="entry_type_array">
12778 <span class="entry_type_visibility"> [public]</span>
12781 <span class="entry_type_hwlevel">[full] </span>
12786 </td> <!-- entry_type -->
12788 <td class="entry_description">
12789 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12790 supported by this camera device.<wbr/></p>
12793 <td class="entry_units">
12794 The aperture f-number
12797 <td class="entry_range">
12800 <td class="entry_hal_version">
12804 <td class="entry_tags">
12805 <ul class="entry_tags">
12806 <li><a href="#tag_V1">V1</a></li>
12811 <tr class="entries_header">
12812 <th class="th_details" colspan="6">Details</th>
12814 <tr class="entry_cont">
12815 <td class="entry_details" colspan="6">
12816 <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12817 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12818 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12819 in this list will be sorted in ascending order.<wbr/></p>
12824 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12825 <!-- end of entry -->
12828 <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12829 <td class="entry_name
12831 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12833 <td class="entry_type">
12834 <span class="entry_type_name">float</span>
12835 <span class="entry_type_container">x</span>
12837 <span class="entry_type_array">
12840 <span class="entry_type_visibility"> [public]</span>
12843 <span class="entry_type_hwlevel">[full] </span>
12848 </td> <!-- entry_type -->
12850 <td class="entry_description">
12851 <p>List of neutral density filter values for
12852 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12855 <td class="entry_units">
12856 Exposure value (EV)
12859 <td class="entry_range">
12860 <p>Values are >= 0</p>
12863 <td class="entry_hal_version">
12867 <td class="entry_tags">
12868 <ul class="entry_tags">
12869 <li><a href="#tag_V1">V1</a></li>
12874 <tr class="entries_header">
12875 <th class="th_details" colspan="6">Details</th>
12877 <tr class="entry_cont">
12878 <td class="entry_details" colspan="6">
12879 <p>If a neutral density filter is not supported by this camera device,<wbr/>
12880 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12881 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12886 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12887 <!-- end of entry -->
12890 <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12891 <td class="entry_name
12893 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12895 <td class="entry_type">
12896 <span class="entry_type_name">float</span>
12897 <span class="entry_type_container">x</span>
12899 <span class="entry_type_array">
12902 <span class="entry_type_visibility"> [public]</span>
12905 <span class="entry_type_hwlevel">[legacy] </span>
12908 <div class="entry_type_notes">The list of available focal lengths</div>
12911 </td> <!-- entry_type -->
12913 <td class="entry_description">
12914 <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
12918 <td class="entry_units">
12922 <td class="entry_range">
12923 <p>Values are > 0</p>
12926 <td class="entry_hal_version">
12930 <td class="entry_tags">
12931 <ul class="entry_tags">
12932 <li><a href="#tag_BC">BC</a></li>
12933 <li><a href="#tag_V1">V1</a></li>
12938 <tr class="entries_header">
12939 <th class="th_details" colspan="6">Details</th>
12941 <tr class="entry_cont">
12942 <td class="entry_details" colspan="6">
12943 <p>If optical zoom is not supported,<wbr/> this list will only contain
12944 a single value corresponding to the fixed focal length of the
12945 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12946 by the camera device,<wbr/> in ascending order.<wbr/></p>
12951 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12952 <!-- end of entry -->
12955 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
12956 <td class="entry_name
12958 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
12960 <td class="entry_type">
12961 <span class="entry_type_name">byte</span>
12962 <span class="entry_type_container">x</span>
12964 <span class="entry_type_array">
12967 <span class="entry_type_visibility"> [public as enumList]</span>
12970 <span class="entry_type_hwlevel">[limited] </span>
12973 <div class="entry_type_notes">list of enums</div>
12976 </td> <!-- entry_type -->
12978 <td class="entry_description">
12979 <p>List of optical image stabilization (OIS) modes for
12980 <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>
12983 <td class="entry_units">
12986 <td class="entry_range">
12987 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
12990 <td class="entry_hal_version">
12994 <td class="entry_tags">
12995 <ul class="entry_tags">
12996 <li><a href="#tag_V1">V1</a></li>
13001 <tr class="entries_header">
13002 <th class="th_details" colspan="6">Details</th>
13004 <tr class="entry_cont">
13005 <td class="entry_details" colspan="6">
13006 <p>If OIS is not supported by a given camera device,<wbr/> this list will
13007 contain only OFF.<wbr/></p>
13012 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13013 <!-- end of entry -->
13016 <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
13017 <td class="entry_name
13019 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
13021 <td class="entry_type">
13022 <span class="entry_type_name">float</span>
13024 <span class="entry_type_visibility"> [public]</span>
13027 <span class="entry_type_hwlevel">[limited] </span>
13032 </td> <!-- entry_type -->
13034 <td class="entry_description">
13035 <p>Hyperfocal distance for this lens.<wbr/></p>
13038 <td class="entry_units">
13039 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13042 <td class="entry_range">
13043 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
13044 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>
13047 <td class="entry_hal_version">
13051 <td class="entry_tags">
13055 <tr class="entries_header">
13056 <th class="th_details" colspan="6">Details</th>
13058 <tr class="entry_cont">
13059 <td class="entry_details" colspan="6">
13060 <p>If the lens is not fixed focus,<wbr/> the camera device will report this
13061 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>
13066 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13067 <!-- end of entry -->
13070 <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13071 <td class="entry_name
13073 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13075 <td class="entry_type">
13076 <span class="entry_type_name">float</span>
13078 <span class="entry_type_visibility"> [public]</span>
13081 <span class="entry_type_hwlevel">[limited] </span>
13086 </td> <!-- entry_type -->
13088 <td class="entry_description">
13089 <p>Shortest distance from frontmost surface
13090 of the lens that can be brought into sharp focus.<wbr/></p>
13093 <td class="entry_units">
13094 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13097 <td class="entry_range">
13101 <td class="entry_hal_version">
13105 <td class="entry_tags">
13106 <ul class="entry_tags">
13107 <li><a href="#tag_V1">V1</a></li>
13112 <tr class="entries_header">
13113 <th class="th_details" colspan="6">Details</th>
13115 <tr class="entry_cont">
13116 <td class="entry_details" colspan="6">
13117 <p>If the lens is fixed-focus,<wbr/> this will be
13122 <tr class="entries_header">
13123 <th class="th_details" colspan="6">HAL Implementation Details</th>
13125 <tr class="entry_cont">
13126 <td class="entry_details" colspan="6">
13127 <p>Mandatory for FULL devices; LIMITED devices
13128 must always set this value to 0 for fixed-focus; and may omit
13129 the minimum focus distance otherwise.<wbr/></p>
13130 <p>This field is also mandatory for all devices advertising
13131 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13135 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13136 <!-- end of entry -->
13139 <tr class="entry" id="static_android.lens.info.shadingMapSize">
13140 <td class="entry_name
13142 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13144 <td class="entry_type">
13145 <span class="entry_type_name">int32</span>
13146 <span class="entry_type_container">x</span>
13148 <span class="entry_type_array">
13151 <span class="entry_type_visibility"> [ndk_public as size]</span>
13154 <span class="entry_type_hwlevel">[full] </span>
13157 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13160 </td> <!-- entry_type -->
13162 <td class="entry_description">
13163 <p>Dimensions of lens shading map.<wbr/></p>
13166 <td class="entry_units">
13169 <td class="entry_range">
13170 <p>Both values >= 1</p>
13173 <td class="entry_hal_version">
13177 <td class="entry_tags">
13178 <ul class="entry_tags">
13179 <li><a href="#tag_V1">V1</a></li>
13184 <tr class="entries_header">
13185 <th class="th_details" colspan="6">Details</th>
13187 <tr class="entry_cont">
13188 <td class="entry_details" colspan="6">
13189 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13190 must be smaller than 64x64.<wbr/></p>
13195 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13196 <!-- end of entry -->
13199 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13200 <td class="entry_name
13202 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13204 <td class="entry_type">
13205 <span class="entry_type_name entry_type_name_enum">byte</span>
13207 <span class="entry_type_visibility"> [public]</span>
13210 <span class="entry_type_hwlevel">[limited] </span>
13214 <ul class="entry_type_enum">
13216 <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
13217 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13218 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13219 <p>Setting the lens to the same focus distance on separate occasions may
13220 result in a different real focus distance,<wbr/> depending on factors such
13221 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13222 and the device temperature.<wbr/> The focus distance value will still be
13223 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
13224 represents the farthest focus.<wbr/></p></span>
13227 <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
13228 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13229 <p>However,<wbr/> setting the lens to the same focus distance
13230 on separate occasions may result in a different real
13231 focus distance,<wbr/> depending on factors such as the
13232 orientation of the device,<wbr/> the age of the focusing
13233 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13236 <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
13237 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13238 is calibrated.<wbr/></p>
13239 <p>The lens mechanism is calibrated so that setting the
13240 same focus distance is repeatable on multiple
13241 occasions with good accuracy,<wbr/> and the focus distance
13242 corresponds to the real physical distance to the plane
13243 of best focus.<wbr/></p></span>
13247 </td> <!-- entry_type -->
13249 <td class="entry_description">
13250 <p>The lens focus distance calibration quality.<wbr/></p>
13253 <td class="entry_units">
13256 <td class="entry_range">
13259 <td class="entry_hal_version">
13263 <td class="entry_tags">
13264 <ul class="entry_tags">
13265 <li><a href="#tag_V1">V1</a></li>
13270 <tr class="entries_header">
13271 <th class="th_details" colspan="6">Details</th>
13273 <tr class="entry_cont">
13274 <td class="entry_details" colspan="6">
13275 <p>The lens focus distance calibration quality determines the reliability of
13276 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13277 <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
13278 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13279 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13280 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13281 and increasing positive numbers represent focusing closer and closer
13282 to the camera device.<wbr/> The focus distance control also uses diopters
13283 on these devices.<wbr/></p>
13284 <p>UNCALIBRATED devices do not use units that are directly comparable
13285 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13286 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13287 nearest focus the device can achieve.<wbr/></p>
13291 <tr class="entries_header">
13292 <th class="th_details" colspan="6">HAL Implementation Details</th>
13294 <tr class="entry_cont">
13295 <td class="entry_details" colspan="6">
13296 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13297 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13298 and the lens focus distance is set to 0 diopters
13299 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13300 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13301 lens some time to move; during the move the lens state should be MOVING and
13302 the output diopter value should be changing toward 0.<wbr/></p>
13306 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13307 <!-- end of entry -->
13313 <tr class="entry" id="static_android.lens.facing">
13314 <td class="entry_name
13316 android.<wbr/>lens.<wbr/>facing
13318 <td class="entry_type">
13319 <span class="entry_type_name entry_type_name_enum">byte</span>
13321 <span class="entry_type_visibility"> [public]</span>
13324 <span class="entry_type_hwlevel">[legacy] </span>
13328 <ul class="entry_type_enum">
13330 <span class="entry_type_enum_name">FRONT (v3.2)</span>
13331 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13334 <span class="entry_type_enum_name">BACK (v3.2)</span>
13335 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13338 <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
13339 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13340 device's screen.<wbr/></p></span>
13344 </td> <!-- entry_type -->
13346 <td class="entry_description">
13347 <p>Direction the camera faces relative to
13348 device screen.<wbr/></p>
13351 <td class="entry_units">
13354 <td class="entry_range">
13357 <td class="entry_hal_version">
13361 <td class="entry_tags">
13367 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13368 <!-- end of entry -->
13371 <tr class="entry" id="static_android.lens.poseRotation">
13372 <td class="entry_name
13374 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13376 <td class="entry_type">
13377 <span class="entry_type_name">float</span>
13378 <span class="entry_type_container">x</span>
13380 <span class="entry_type_array">
13383 <span class="entry_type_visibility"> [public]</span>
13390 </td> <!-- entry_type -->
13392 <td class="entry_description">
13393 <p>The orientation of the camera relative to the sensor
13394 coordinate system.<wbr/></p>
13397 <td class="entry_units">
13399 Quaternion coefficients
13403 <td class="entry_range">
13406 <td class="entry_hal_version">
13410 <td class="entry_tags">
13411 <ul class="entry_tags">
13412 <li><a href="#tag_DEPTH">DEPTH</a></li>
13417 <tr class="entries_header">
13418 <th class="th_details" colspan="6">Details</th>
13420 <tr class="entry_cont">
13421 <td class="entry_details" colspan="6">
13422 <p>The four coefficients that describe the quaternion
13423 rotation from the Android sensor coordinate system to a
13424 camera-aligned coordinate system where the X-axis is
13425 aligned with the long side of the image sensor,<wbr/> the Y-axis
13426 is aligned with the short side of the image sensor,<wbr/> and
13427 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13428 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13429 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13430 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13431 <pre><code> theta = 2 * acos(w)
13432 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13433 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13434 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13436 <p>To create a 3x3 rotation matrix that applies the rotation
13437 defined by this quaternion,<wbr/> the following matrix can be
13439 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
13440 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
13441 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13443 <p>This matrix can then be used to apply the rotation to a
13444 column vector point with</p>
13445 <p><code>p' = Rp</code></p>
13446 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13447 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13452 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13453 <!-- end of entry -->
13456 <tr class="entry" id="static_android.lens.poseTranslation">
13457 <td class="entry_name
13459 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13461 <td class="entry_type">
13462 <span class="entry_type_name">float</span>
13463 <span class="entry_type_container">x</span>
13465 <span class="entry_type_array">
13468 <span class="entry_type_visibility"> [public]</span>
13475 </td> <!-- entry_type -->
13477 <td class="entry_description">
13478 <p>Position of the camera optical center.<wbr/></p>
13481 <td class="entry_units">
13485 <td class="entry_range">
13488 <td class="entry_hal_version">
13492 <td class="entry_tags">
13493 <ul class="entry_tags">
13494 <li><a href="#tag_DEPTH">DEPTH</a></li>
13499 <tr class="entries_header">
13500 <th class="th_details" colspan="6">Details</th>
13502 <tr class="entry_cont">
13503 <td class="entry_details" colspan="6">
13504 <p>The position of the camera device's lens optical center,<wbr/>
13505 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
13506 <p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
13507 is relative to the optical center of the largest camera device facing in the same
13508 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
13509 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
13510 coordinate system,<wbr/> but not the origin.<wbr/></p>
13511 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
13512 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
13513 from the main sensor along the +X axis (to the right from the user's perspective) will
13514 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13515 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
13516 the source camera <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then the source
13517 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
13518 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
13519 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
13520 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
13521 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
13522 coordinates.<wbr/></p>
13523 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
13524 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
13525 <p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
13526 the center of the primary gyroscope on the device.<wbr/></p>
13531 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13532 <!-- end of entry -->
13535 <tr class="entry" id="static_android.lens.intrinsicCalibration">
13536 <td class="entry_name
13538 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13540 <td class="entry_type">
13541 <span class="entry_type_name">float</span>
13542 <span class="entry_type_container">x</span>
13544 <span class="entry_type_array">
13547 <span class="entry_type_visibility"> [public]</span>
13554 </td> <!-- entry_type -->
13556 <td class="entry_description">
13557 <p>The parameters for this camera device's intrinsic
13558 calibration.<wbr/></p>
13561 <td class="entry_units">
13564 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13565 coordinate system.<wbr/>
13569 <td class="entry_range">
13572 <td class="entry_hal_version">
13576 <td class="entry_tags">
13577 <ul class="entry_tags">
13578 <li><a href="#tag_DEPTH">DEPTH</a></li>
13583 <tr class="entries_header">
13584 <th class="th_details" colspan="6">Details</th>
13586 <tr class="entry_cont">
13587 <td class="entry_details" colspan="6">
13588 <p>The five calibration parameters that describe the
13589 transform from camera-centric 3D coordinates to sensor
13590 pixel coordinates:</p>
13591 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13593 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13594 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13595 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13596 being aligned with the lens plane.<wbr/></p>
13597 <p>These are typically used within a transformation matrix K:</p>
13598 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
13599 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13602 <p>which can then be combined with the camera pose rotation
13603 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13604 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13605 complete transform from world coordinates to pixel
13607 <pre><code>P = [ K 0 * [ R t
13610 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13611 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13612 coordinate system,<wbr/> and with the mapping including the
13613 homogeneous division by z:</p>
13614 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13615 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13617 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13618 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13619 (depth) in pixel coordinates.<wbr/></p>
13620 <p>Note that the coordinate system for this transform is the
13621 <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/>
13622 where <code>(0,<wbr/>0)</code> is the top-left of the
13623 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13624 intrinsic calibration transforms have been applied to a
13625 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13626 transform needs to be applied,<wbr/> and the result adjusted to
13627 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13628 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13629 activeArraySize rectangle),<wbr/> to determine the final pixel
13630 coordinate of the world point for processed (non-RAW)
13631 output buffers.<wbr/></p>
13636 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13637 <!-- end of entry -->
13640 <tr class="entry" id="static_android.lens.radialDistortion">
13641 <td class="entry_name
13643 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13645 <td class="entry_type">
13646 <span class="entry_type_name">float</span>
13647 <span class="entry_type_container">x</span>
13649 <span class="entry_type_array">
13652 <span class="entry_type_visibility"> [public]</span>
13659 </td> <!-- entry_type -->
13661 <td class="entry_description">
13662 <p>The correction coefficients to correct for this camera device's
13663 radial and tangential lens distortion.<wbr/></p>
13666 <td class="entry_units">
13668 Unitless coefficients.<wbr/>
13672 <td class="entry_range">
13675 <td class="entry_hal_version">
13679 <td class="entry_tags">
13680 <ul class="entry_tags">
13681 <li><a href="#tag_DEPTH">DEPTH</a></li>
13686 <tr class="entries_header">
13687 <th class="th_details" colspan="6">Details</th>
13689 <tr class="entry_cont">
13690 <td class="entry_details" colspan="6">
13691 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13692 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13693 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13694 lens's geometric distortion with the mapping equations:</p>
13695 <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 ) +
13696 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13697 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13698 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13700 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13701 input image that correspond to the pixel values in the
13702 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13703 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13705 <p>The pixel coordinates are defined in a normalized
13706 coordinate system related to the
13707 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13708 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
13709 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13710 of both x and y coordinates are normalized to be 1 at the
13711 edge further from the optical center,<wbr/> so the range
13712 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
13713 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13714 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13715 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
13716 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13721 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13722 <!-- end of entry -->
13725 <tr class="entry" id="static_android.lens.poseReference">
13726 <td class="entry_name
13728 android.<wbr/>lens.<wbr/>pose<wbr/>Reference
13730 <td class="entry_type">
13731 <span class="entry_type_name entry_type_name_enum">byte</span>
13733 <span class="entry_type_visibility"> [public]</span>
13739 <ul class="entry_type_enum">
13741 <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
13742 <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the optical center of
13743 the largest camera device facing the same direction as this camera.<wbr/></p>
13744 <p>This default value for API levels before Android P.<wbr/></p></span>
13747 <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
13748 <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the position of the
13749 primary gyroscope of this Android device.<wbr/></p>
13750 <p>This is the value reported by all devices that support the MOTION_<wbr/>TRACKING capability.<wbr/></p></span>
13754 </td> <!-- entry_type -->
13756 <td class="entry_description">
13757 <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p>
13760 <td class="entry_units">
13763 <td class="entry_range">
13766 <td class="entry_hal_version">
13770 <td class="entry_tags">
13774 <tr class="entries_header">
13775 <th class="th_details" colspan="6">Details</th>
13777 <tr class="entry_cont">
13778 <td class="entry_details" colspan="6">
13779 <p>Different calibration methods and use cases can produce better or worse results
13780 depending on the selected coordinate origin.<wbr/></p>
13781 <p>For devices designed to support the MOTION_<wbr/>TRACKING capability,<wbr/> the GYROSCOPE origin
13782 makes device calibration and later usage by applications combining camera and gyroscope
13783 information together simpler.<wbr/></p>
13788 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13789 <!-- end of entry -->
13793 <!-- end of kind -->
13795 <tr><td colspan="7" class="kind">dynamic</td></tr>
13797 <thead class="entries_header">
13799 <th class="th_name">Property Name</th>
13800 <th class="th_type">Type</th>
13801 <th class="th_description">Description</th>
13802 <th class="th_units">Units</th>
13803 <th class="th_range">Range</th>
13804 <th class="th_hal_version">Initial HIDL HAL version</th>
13805 <th class="th_tags">Tags</th>
13820 <tr class="entry" id="dynamic_android.lens.aperture">
13821 <td class="entry_name
13823 android.<wbr/>lens.<wbr/>aperture
13825 <td class="entry_type">
13826 <span class="entry_type_name">float</span>
13828 <span class="entry_type_visibility"> [public]</span>
13831 <span class="entry_type_hwlevel">[full] </span>
13836 </td> <!-- entry_type -->
13838 <td class="entry_description">
13839 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13840 effective aperture diameter.<wbr/></p>
13843 <td class="entry_units">
13844 The f-number (f/<wbr/>N)
13847 <td class="entry_range">
13848 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13851 <td class="entry_hal_version">
13855 <td class="entry_tags">
13856 <ul class="entry_tags">
13857 <li><a href="#tag_V1">V1</a></li>
13862 <tr class="entries_header">
13863 <th class="th_details" colspan="6">Details</th>
13865 <tr class="entry_cont">
13866 <td class="entry_details" colspan="6">
13867 <p>Setting this value is only supported on the camera devices that have a variable
13868 aperture lens.<wbr/></p>
13869 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
13870 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
13871 <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>
13872 to achieve manual exposure control.<wbr/></p>
13873 <p>The requested aperture value may take several frames to reach the
13874 requested value; the camera device will report the current (intermediate)
13875 aperture size in capture result metadata while the aperture is changing.<wbr/>
13876 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>
13877 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
13878 the ON modes,<wbr/> this will be overridden by the camera device
13879 auto-exposure algorithm,<wbr/> the overridden values are then provided
13880 back to the user in the corresponding result.<wbr/></p>
13885 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13886 <!-- end of entry -->
13889 <tr class="entry" id="dynamic_android.lens.filterDensity">
13890 <td class="entry_name
13892 android.<wbr/>lens.<wbr/>filter<wbr/>Density
13894 <td class="entry_type">
13895 <span class="entry_type_name">float</span>
13897 <span class="entry_type_visibility"> [public]</span>
13900 <span class="entry_type_hwlevel">[full] </span>
13905 </td> <!-- entry_type -->
13907 <td class="entry_description">
13908 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
13911 <td class="entry_units">
13912 Exposure Value (EV)
13915 <td class="entry_range">
13916 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
13919 <td class="entry_hal_version">
13923 <td class="entry_tags">
13924 <ul class="entry_tags">
13925 <li><a href="#tag_V1">V1</a></li>
13930 <tr class="entries_header">
13931 <th class="th_details" colspan="6">Details</th>
13933 <tr class="entry_cont">
13934 <td class="entry_details" colspan="6">
13935 <p>This control will not be supported on most camera devices.<wbr/></p>
13936 <p>Lens filters are typically used to lower the amount of light the
13937 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
13938 step is the standard logarithmic representation,<wbr/> which are
13939 non-negative,<wbr/> and inversely proportional to the amount of light
13940 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
13941 in no reduction of the incoming light,<wbr/> and setting this to 2 would
13942 mean that the filter is set to reduce incoming light by two stops
13943 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
13944 <p>It may take several frames before the lens filter density changes
13945 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
13946 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
13951 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13952 <!-- end of entry -->
13955 <tr class="entry" id="dynamic_android.lens.focalLength">
13956 <td class="entry_name
13958 android.<wbr/>lens.<wbr/>focal<wbr/>Length
13960 <td class="entry_type">
13961 <span class="entry_type_name">float</span>
13963 <span class="entry_type_visibility"> [public]</span>
13966 <span class="entry_type_hwlevel">[legacy] </span>
13971 </td> <!-- entry_type -->
13973 <td class="entry_description">
13974 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
13977 <td class="entry_units">
13981 <td class="entry_range">
13982 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
13985 <td class="entry_hal_version">
13989 <td class="entry_tags">
13990 <ul class="entry_tags">
13991 <li><a href="#tag_BC">BC</a></li>
13996 <tr class="entries_header">
13997 <th class="th_details" colspan="6">Details</th>
13999 <tr class="entry_cont">
14000 <td class="entry_details" colspan="6">
14001 <p>This setting controls the physical focal length of the camera
14002 device's lens.<wbr/> Changing the focal length changes the field of
14003 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
14004 <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
14005 setting won't be applied instantaneously,<wbr/> and it may take several
14006 frames before the lens can change to the requested focal length.<wbr/>
14007 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
14008 be set to MOVING.<wbr/></p>
14009 <p>Optical zoom will not be supported on most devices.<wbr/></p>
14014 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14015 <!-- end of entry -->
14018 <tr class="entry" id="dynamic_android.lens.focusDistance">
14019 <td class="entry_name
14021 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
14023 <td class="entry_type">
14024 <span class="entry_type_name">float</span>
14026 <span class="entry_type_visibility"> [public]</span>
14029 <span class="entry_type_hwlevel">[full] </span>
14034 </td> <!-- entry_type -->
14036 <td class="entry_description">
14037 <p>Desired distance to plane of sharpest focus,<wbr/>
14038 measured from frontmost surface of the lens.<wbr/></p>
14041 <td class="entry_units">
14042 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
14045 <td class="entry_range">
14049 <td class="entry_hal_version">
14053 <td class="entry_tags">
14054 <ul class="entry_tags">
14055 <li><a href="#tag_BC">BC</a></li>
14060 <tr class="entries_header">
14061 <th class="th_details" colspan="6">Details</th>
14063 <tr class="entry_cont">
14064 <td class="entry_details" colspan="6">
14065 <p>Should be zero for fixed-focus cameras</p>
14070 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14071 <!-- end of entry -->
14074 <tr class="entry" id="dynamic_android.lens.focusRange">
14075 <td class="entry_name
14077 android.<wbr/>lens.<wbr/>focus<wbr/>Range
14079 <td class="entry_type">
14080 <span class="entry_type_name">float</span>
14081 <span class="entry_type_container">x</span>
14083 <span class="entry_type_array">
14086 <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
14089 <span class="entry_type_hwlevel">[limited] </span>
14092 <div class="entry_type_notes">Range of scene distances that are in focus</div>
14095 </td> <!-- entry_type -->
14097 <td class="entry_description">
14098 <p>The range of scene distances that are in
14099 sharp focus (depth of field).<wbr/></p>
14102 <td class="entry_units">
14103 A pair of focus distances in diopters: (near,<wbr/>
14104 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
14107 <td class="entry_range">
14111 <td class="entry_hal_version">
14115 <td class="entry_tags">
14116 <ul class="entry_tags">
14117 <li><a href="#tag_BC">BC</a></li>
14122 <tr class="entries_header">
14123 <th class="th_details" colspan="6">Details</th>
14125 <tr class="entry_cont">
14126 <td class="entry_details" colspan="6">
14127 <p>If variable focus not supported,<wbr/> can still report
14128 fixed depth of field range</p>
14133 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14134 <!-- end of entry -->
14137 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14138 <td class="entry_name
14140 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14142 <td class="entry_type">
14143 <span class="entry_type_name entry_type_name_enum">byte</span>
14145 <span class="entry_type_visibility"> [public]</span>
14148 <span class="entry_type_hwlevel">[limited] </span>
14152 <ul class="entry_type_enum">
14154 <span class="entry_type_enum_name">OFF (v3.2)</span>
14155 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14158 <span class="entry_type_enum_name">ON (v3.2)</span>
14159 <span class="entry_type_enum_optional">[optional]</span>
14160 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14164 </td> <!-- entry_type -->
14166 <td class="entry_description">
14167 <p>Sets whether the camera device uses optical image stabilization (OIS)
14168 when capturing images.<wbr/></p>
14171 <td class="entry_units">
14174 <td class="entry_range">
14175 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14178 <td class="entry_hal_version">
14182 <td class="entry_tags">
14183 <ul class="entry_tags">
14184 <li><a href="#tag_V1">V1</a></li>
14189 <tr class="entries_header">
14190 <th class="th_details" colspan="6">Details</th>
14192 <tr class="entry_cont">
14193 <td class="entry_details" colspan="6">
14194 <p>OIS is used to compensate for motion blur due to small
14195 movements of the camera during capture.<wbr/> Unlike digital image
14196 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14197 makes use of mechanical elements to stabilize the camera
14198 sensor,<wbr/> and thus allows for longer exposure times before
14199 camera shake becomes apparent.<wbr/></p>
14200 <p>Switching between different optical stabilization modes may take several
14201 frames to initialize,<wbr/> the camera device will report the current mode in
14202 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14203 optical stabilization modes in the first several capture results may still
14204 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14205 <p>If a camera device supports both OIS and digital image stabilization
14206 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14207 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14208 <p>Not all devices will support OIS; see
14209 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14210 available controls.<wbr/></p>
14215 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14216 <!-- end of entry -->
14219 <tr class="entry" id="dynamic_android.lens.state">
14220 <td class="entry_name
14222 android.<wbr/>lens.<wbr/>state
14224 <td class="entry_type">
14225 <span class="entry_type_name entry_type_name_enum">byte</span>
14227 <span class="entry_type_visibility"> [public]</span>
14230 <span class="entry_type_hwlevel">[limited] </span>
14234 <ul class="entry_type_enum">
14236 <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
14237 <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/>
14238 <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>
14241 <span class="entry_type_enum_name">MOVING (v3.2)</span>
14242 <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14243 (<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/>
14244 <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
14245 currently changing.<wbr/></p></span>
14249 </td> <!-- entry_type -->
14251 <td class="entry_description">
14252 <p>Current lens status.<wbr/></p>
14255 <td class="entry_units">
14258 <td class="entry_range">
14261 <td class="entry_hal_version">
14265 <td class="entry_tags">
14266 <ul class="entry_tags">
14267 <li><a href="#tag_V1">V1</a></li>
14272 <tr class="entries_header">
14273 <th class="th_details" colspan="6">Details</th>
14275 <tr class="entry_cont">
14276 <td class="entry_details" colspan="6">
14277 <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/>
14278 <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/>
14279 they may take several frames to reach the requested values.<wbr/> This state indicates
14280 the current status of the lens parameters.<wbr/></p>
14281 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14282 either because the parameters are all fixed,<wbr/> or because the lens has had enough
14283 time to reach the most recently-requested values.<wbr/>
14284 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14286 <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
14287 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14288 <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/>
14289 which means the optical zoom is not supported.<wbr/></li>
14290 <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>
14291 <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>
14293 <p>Then this state will always be STATIONARY.<wbr/></p>
14294 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14295 is changing.<wbr/></p>
14300 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14301 <!-- end of entry -->
14304 <tr class="entry" id="dynamic_android.lens.poseRotation">
14305 <td class="entry_name
14307 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14309 <td class="entry_type">
14310 <span class="entry_type_name">float</span>
14311 <span class="entry_type_container">x</span>
14313 <span class="entry_type_array">
14316 <span class="entry_type_visibility"> [public]</span>
14323 </td> <!-- entry_type -->
14325 <td class="entry_description">
14326 <p>The orientation of the camera relative to the sensor
14327 coordinate system.<wbr/></p>
14330 <td class="entry_units">
14332 Quaternion coefficients
14336 <td class="entry_range">
14339 <td class="entry_hal_version">
14343 <td class="entry_tags">
14344 <ul class="entry_tags">
14345 <li><a href="#tag_DEPTH">DEPTH</a></li>
14350 <tr class="entries_header">
14351 <th class="th_details" colspan="6">Details</th>
14353 <tr class="entry_cont">
14354 <td class="entry_details" colspan="6">
14355 <p>The four coefficients that describe the quaternion
14356 rotation from the Android sensor coordinate system to a
14357 camera-aligned coordinate system where the X-axis is
14358 aligned with the long side of the image sensor,<wbr/> the Y-axis
14359 is aligned with the short side of the image sensor,<wbr/> and
14360 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14361 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14362 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14363 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14364 <pre><code> theta = 2 * acos(w)
14365 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14366 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14367 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14369 <p>To create a 3x3 rotation matrix that applies the rotation
14370 defined by this quaternion,<wbr/> the following matrix can be
14372 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
14373 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
14374 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14376 <p>This matrix can then be used to apply the rotation to a
14377 column vector point with</p>
14378 <p><code>p' = Rp</code></p>
14379 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14380 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14385 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14386 <!-- end of entry -->
14389 <tr class="entry" id="dynamic_android.lens.poseTranslation">
14390 <td class="entry_name
14392 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14394 <td class="entry_type">
14395 <span class="entry_type_name">float</span>
14396 <span class="entry_type_container">x</span>
14398 <span class="entry_type_array">
14401 <span class="entry_type_visibility"> [public]</span>
14408 </td> <!-- entry_type -->
14410 <td class="entry_description">
14411 <p>Position of the camera optical center.<wbr/></p>
14414 <td class="entry_units">
14418 <td class="entry_range">
14421 <td class="entry_hal_version">
14425 <td class="entry_tags">
14426 <ul class="entry_tags">
14427 <li><a href="#tag_DEPTH">DEPTH</a></li>
14432 <tr class="entries_header">
14433 <th class="th_details" colspan="6">Details</th>
14435 <tr class="entry_cont">
14436 <td class="entry_details" colspan="6">
14437 <p>The position of the camera device's lens optical center,<wbr/>
14438 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
14439 <p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
14440 is relative to the optical center of the largest camera device facing in the same
14441 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
14442 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
14443 coordinate system,<wbr/> but not the origin.<wbr/></p>
14444 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
14445 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
14446 from the main sensor along the +X axis (to the right from the user's perspective) will
14447 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
14448 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
14449 the source camera <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then the source
14450 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
14451 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
14452 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
14453 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
14454 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
14455 coordinates.<wbr/></p>
14456 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
14457 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
14458 <p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
14459 the center of the primary gyroscope on the device.<wbr/></p>
14464 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14465 <!-- end of entry -->
14468 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14469 <td class="entry_name
14471 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14473 <td class="entry_type">
14474 <span class="entry_type_name">float</span>
14475 <span class="entry_type_container">x</span>
14477 <span class="entry_type_array">
14480 <span class="entry_type_visibility"> [public]</span>
14487 </td> <!-- entry_type -->
14489 <td class="entry_description">
14490 <p>The parameters for this camera device's intrinsic
14491 calibration.<wbr/></p>
14494 <td class="entry_units">
14497 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14498 coordinate system.<wbr/>
14502 <td class="entry_range">
14505 <td class="entry_hal_version">
14509 <td class="entry_tags">
14510 <ul class="entry_tags">
14511 <li><a href="#tag_DEPTH">DEPTH</a></li>
14516 <tr class="entries_header">
14517 <th class="th_details" colspan="6">Details</th>
14519 <tr class="entry_cont">
14520 <td class="entry_details" colspan="6">
14521 <p>The five calibration parameters that describe the
14522 transform from camera-centric 3D coordinates to sensor
14523 pixel coordinates:</p>
14524 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14526 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14527 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14528 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14529 being aligned with the lens plane.<wbr/></p>
14530 <p>These are typically used within a transformation matrix K:</p>
14531 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
14532 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14535 <p>which can then be combined with the camera pose rotation
14536 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14537 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
14538 complete transform from world coordinates to pixel
14540 <pre><code>P = [ K 0 * [ R t
14543 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
14544 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14545 coordinate system,<wbr/> and with the mapping including the
14546 homogeneous division by z:</p>
14547 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14548 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14550 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14551 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14552 (depth) in pixel coordinates.<wbr/></p>
14553 <p>Note that the coordinate system for this transform is the
14554 <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/>
14555 where <code>(0,<wbr/>0)</code> is the top-left of the
14556 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14557 intrinsic calibration transforms have been applied to a
14558 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
14559 transform needs to be applied,<wbr/> and the result adjusted to
14560 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14561 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14562 activeArraySize rectangle),<wbr/> to determine the final pixel
14563 coordinate of the world point for processed (non-RAW)
14564 output buffers.<wbr/></p>
14569 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14570 <!-- end of entry -->
14573 <tr class="entry" id="dynamic_android.lens.radialDistortion">
14574 <td class="entry_name
14576 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
14578 <td class="entry_type">
14579 <span class="entry_type_name">float</span>
14580 <span class="entry_type_container">x</span>
14582 <span class="entry_type_array">
14585 <span class="entry_type_visibility"> [public]</span>
14592 </td> <!-- entry_type -->
14594 <td class="entry_description">
14595 <p>The correction coefficients to correct for this camera device's
14596 radial and tangential lens distortion.<wbr/></p>
14599 <td class="entry_units">
14601 Unitless coefficients.<wbr/>
14605 <td class="entry_range">
14608 <td class="entry_hal_version">
14612 <td class="entry_tags">
14613 <ul class="entry_tags">
14614 <li><a href="#tag_DEPTH">DEPTH</a></li>
14619 <tr class="entries_header">
14620 <th class="th_details" colspan="6">Details</th>
14622 <tr class="entry_cont">
14623 <td class="entry_details" colspan="6">
14624 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14625 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14626 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14627 lens's geometric distortion with the mapping equations:</p>
14628 <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 ) +
14629 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14630 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14631 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14633 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14634 input image that correspond to the pixel values in the
14635 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14636 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14638 <p>The pixel coordinates are defined in a normalized
14639 coordinate system related to the
14640 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14641 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
14642 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14643 of both x and y coordinates are normalized to be 1 at the
14644 edge further from the optical center,<wbr/> so the range
14645 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
14646 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14647 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14648 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
14649 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14654 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14655 <!-- end of entry -->
14659 <!-- end of kind -->
14662 <!-- end of section -->
14663 <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
14666 <tr><td colspan="7" class="kind">controls</td></tr>
14668 <thead class="entries_header">
14670 <th class="th_name">Property Name</th>
14671 <th class="th_type">Type</th>
14672 <th class="th_description">Description</th>
14673 <th class="th_units">Units</th>
14674 <th class="th_range">Range</th>
14675 <th class="th_hal_version">Initial HIDL HAL version</th>
14676 <th class="th_tags">Tags</th>
14691 <tr class="entry" id="controls_android.noiseReduction.mode">
14692 <td class="entry_name
14694 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14696 <td class="entry_type">
14697 <span class="entry_type_name entry_type_name_enum">byte</span>
14699 <span class="entry_type_visibility"> [public]</span>
14702 <span class="entry_type_hwlevel">[full] </span>
14706 <ul class="entry_type_enum">
14708 <span class="entry_type_enum_name">OFF (v3.2)</span>
14709 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14712 <span class="entry_type_enum_name">FAST (v3.2)</span>
14713 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14714 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14715 relative to sensor.<wbr/></p></span>
14718 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
14719 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14720 rate relative to sensor output.<wbr/></p></span>
14723 <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
14724 <span class="entry_type_enum_optional">[optional]</span>
14725 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14726 sensor output.<wbr/> </p></span>
14729 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
14730 <span class="entry_type_enum_optional">[optional]</span>
14731 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14732 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>)
14733 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14734 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14735 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14736 and the quality is equal to or better than FAST (since it is only applied to
14737 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14738 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14739 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14740 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14741 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
14742 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14743 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14744 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14745 applied for reasonable preview quality.<wbr/></p>
14746 <p>This mode is guaranteed to be supported by devices that support either the
14747 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14748 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14749 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14753 </td> <!-- entry_type -->
14755 <td class="entry_description">
14756 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14759 <td class="entry_units">
14762 <td class="entry_range">
14763 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14766 <td class="entry_hal_version">
14770 <td class="entry_tags">
14771 <ul class="entry_tags">
14772 <li><a href="#tag_V1">V1</a></li>
14773 <li><a href="#tag_REPROC">REPROC</a></li>
14778 <tr class="entries_header">
14779 <th class="th_details" colspan="6">Details</th>
14781 <tr class="entry_cont">
14782 <td class="entry_details" colspan="6">
14783 <p>The noise reduction algorithm attempts to improve image quality by removing
14784 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14785 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14786 YUV domain.<wbr/></p>
14787 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14788 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14789 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14790 <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>
14791 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14792 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14793 will use the highest-quality noise filtering algorithms,<wbr/>
14794 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14795 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14796 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14797 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14798 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14799 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14800 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14801 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14802 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14803 those will be reprocessed later if necessary.<wbr/></p>
14804 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14805 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14806 may adjust the noise reduction parameters for best image quality based on the
14807 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14811 <tr class="entries_header">
14812 <th class="th_details" colspan="6">HAL Implementation Details</th>
14814 <tr class="entry_cont">
14815 <td class="entry_details" colspan="6">
14816 <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
14817 adjust the internal noise reduction parameters appropriately to get the best quality
14822 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14823 <!-- end of entry -->
14826 <tr class="entry" id="controls_android.noiseReduction.strength">
14827 <td class="entry_name
14829 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
14831 <td class="entry_type">
14832 <span class="entry_type_name">byte</span>
14834 <span class="entry_type_visibility"> [system]</span>
14841 </td> <!-- entry_type -->
14843 <td class="entry_description">
14844 <p>Control the amount of noise reduction
14845 applied to the images</p>
14848 <td class="entry_units">
14849 1-10; 10 is max noise reduction
14852 <td class="entry_range">
14856 <td class="entry_hal_version">
14860 <td class="entry_tags">
14861 <ul class="entry_tags">
14862 <li><a href="#tag_FUTURE">FUTURE</a></li>
14869 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14870 <!-- end of entry -->
14874 <!-- end of kind -->
14876 <tr><td colspan="7" class="kind">static</td></tr>
14878 <thead class="entries_header">
14880 <th class="th_name">Property Name</th>
14881 <th class="th_type">Type</th>
14882 <th class="th_description">Description</th>
14883 <th class="th_units">Units</th>
14884 <th class="th_range">Range</th>
14885 <th class="th_hal_version">Initial HIDL HAL version</th>
14886 <th class="th_tags">Tags</th>
14901 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
14902 <td class="entry_name
14904 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
14906 <td class="entry_type">
14907 <span class="entry_type_name">byte</span>
14908 <span class="entry_type_container">x</span>
14910 <span class="entry_type_array">
14913 <span class="entry_type_visibility"> [public as enumList]</span>
14916 <span class="entry_type_hwlevel">[limited] </span>
14919 <div class="entry_type_notes">list of enums</div>
14922 </td> <!-- entry_type -->
14924 <td class="entry_description">
14925 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
14926 by this camera device.<wbr/></p>
14929 <td class="entry_units">
14932 <td class="entry_range">
14933 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
14936 <td class="entry_hal_version">
14940 <td class="entry_tags">
14941 <ul class="entry_tags">
14942 <li><a href="#tag_V1">V1</a></li>
14943 <li><a href="#tag_REPROC">REPROC</a></li>
14948 <tr class="entries_header">
14949 <th class="th_details" colspan="6">Details</th>
14951 <tr class="entry_cont">
14952 <td class="entry_details" colspan="6">
14953 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
14954 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
14955 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
14956 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
14960 <tr class="entries_header">
14961 <th class="th_details" colspan="6">HAL Implementation Details</th>
14963 <tr class="entry_cont">
14964 <td class="entry_details" colspan="6">
14965 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
14966 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
14967 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
14968 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
14972 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14973 <!-- end of entry -->
14977 <!-- end of kind -->
14979 <tr><td colspan="7" class="kind">dynamic</td></tr>
14981 <thead class="entries_header">
14983 <th class="th_name">Property Name</th>
14984 <th class="th_type">Type</th>
14985 <th class="th_description">Description</th>
14986 <th class="th_units">Units</th>
14987 <th class="th_range">Range</th>
14988 <th class="th_hal_version">Initial HIDL HAL version</th>
14989 <th class="th_tags">Tags</th>
15004 <tr class="entry" id="dynamic_android.noiseReduction.mode">
15005 <td class="entry_name
15007 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
15009 <td class="entry_type">
15010 <span class="entry_type_name entry_type_name_enum">byte</span>
15012 <span class="entry_type_visibility"> [public]</span>
15015 <span class="entry_type_hwlevel">[full] </span>
15019 <ul class="entry_type_enum">
15021 <span class="entry_type_enum_name">OFF (v3.2)</span>
15022 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
15025 <span class="entry_type_enum_name">FAST (v3.2)</span>
15026 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
15027 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
15028 relative to sensor.<wbr/></p></span>
15031 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
15032 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
15033 rate relative to sensor output.<wbr/></p></span>
15036 <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
15037 <span class="entry_type_enum_optional">[optional]</span>
15038 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
15039 sensor output.<wbr/> </p></span>
15042 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
15043 <span class="entry_type_enum_optional">[optional]</span>
15044 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
15045 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>)
15046 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
15047 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
15048 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
15049 and the quality is equal to or better than FAST (since it is only applied to
15050 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
15051 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
15052 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
15053 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
15054 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
15055 high-resolution buffers must not have noise reduction applied to maximize efficiency of
15056 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
15057 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
15058 applied for reasonable preview quality.<wbr/></p>
15059 <p>This mode is guaranteed to be supported by devices that support either the
15060 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
15061 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
15062 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
15066 </td> <!-- entry_type -->
15068 <td class="entry_description">
15069 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
15072 <td class="entry_units">
15075 <td class="entry_range">
15076 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
15079 <td class="entry_hal_version">
15083 <td class="entry_tags">
15084 <ul class="entry_tags">
15085 <li><a href="#tag_V1">V1</a></li>
15086 <li><a href="#tag_REPROC">REPROC</a></li>
15091 <tr class="entries_header">
15092 <th class="th_details" colspan="6">Details</th>
15094 <tr class="entry_cont">
15095 <td class="entry_details" colspan="6">
15096 <p>The noise reduction algorithm attempts to improve image quality by removing
15097 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15098 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15099 YUV domain.<wbr/></p>
15100 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15101 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15102 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15103 <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>
15104 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15105 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15106 will use the highest-quality noise filtering algorithms,<wbr/>
15107 even if it slows down capture rate.<wbr/> FAST means the camera device will not
15108 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15109 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15110 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15111 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15112 buffer of high-resolution images during preview and reprocess image(s) from that buffer
15113 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15114 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15115 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15116 those will be reprocessed later if necessary.<wbr/></p>
15117 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15118 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15119 may adjust the noise reduction parameters for best image quality based on the
15120 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15124 <tr class="entries_header">
15125 <th class="th_details" colspan="6">HAL Implementation Details</th>
15127 <tr class="entry_cont">
15128 <td class="entry_details" colspan="6">
15129 <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
15130 adjust the internal noise reduction parameters appropriately to get the best quality
15135 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15136 <!-- end of entry -->
15140 <!-- end of kind -->
15143 <!-- end of section -->
15144 <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15147 <tr><td colspan="7" class="kind">static</td></tr>
15149 <thead class="entries_header">
15151 <th class="th_name">Property Name</th>
15152 <th class="th_type">Type</th>
15153 <th class="th_description">Description</th>
15154 <th class="th_units">Units</th>
15155 <th class="th_range">Range</th>
15156 <th class="th_hal_version">Initial HIDL HAL version</th>
15157 <th class="th_tags">Tags</th>
15172 <tr class="entry" id="static_android.quirks.meteringCropRegion">
15173 <td class="entry_name
15174 entry_name_deprecated
15176 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15178 <td class="entry_type">
15179 <span class="entry_type_name">byte</span>
15181 <span class="entry_type_visibility"> [system]</span>
15185 <span class="entry_type_deprecated">[deprecated] </span>
15189 </td> <!-- entry_type -->
15191 <td class="entry_description">
15192 <p>If set to 1,<wbr/> the camera service does not
15193 scale 'normalized' coordinates with respect to the crop
15194 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15195 and output (face rectangles).<wbr/></p>
15198 <td class="entry_units">
15201 <td class="entry_range">
15202 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15205 <td class="entry_hal_version">
15209 <td class="entry_tags">
15213 <tr class="entries_header">
15214 <th class="th_details" colspan="6">Details</th>
15216 <tr class="entry_cont">
15217 <td class="entry_details" colspan="6">
15218 <p>Normalized coordinates refer to those in the
15219 (-1000,<wbr/>1000) range mentioned in the
15220 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15221 <p>HAL implementations should instead always use and emit
15222 sensor array-relative coordinates for all region data.<wbr/> Does
15223 not need to be listed in static metadata.<wbr/> Support will be
15224 removed in future versions of camera service.<wbr/></p>
15229 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15230 <!-- end of entry -->
15233 <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15234 <td class="entry_name
15235 entry_name_deprecated
15237 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15239 <td class="entry_type">
15240 <span class="entry_type_name">byte</span>
15242 <span class="entry_type_visibility"> [system]</span>
15246 <span class="entry_type_deprecated">[deprecated] </span>
15250 </td> <!-- entry_type -->
15252 <td class="entry_description">
15253 <p>If set to 1,<wbr/> then the camera service always
15254 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15258 <td class="entry_units">
15261 <td class="entry_range">
15262 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15265 <td class="entry_hal_version">
15269 <td class="entry_tags">
15273 <tr class="entries_header">
15274 <th class="th_details" colspan="6">Details</th>
15276 <tr class="entry_cont">
15277 <td class="entry_details" colspan="6">
15278 <p>HAL implementations should implement AF trigger
15279 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15280 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15281 not need to be listed in static metadata.<wbr/> Support will be
15282 removed in future versions of camera service</p>
15287 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15288 <!-- end of entry -->
15291 <tr class="entry" id="static_android.quirks.useZslFormat">
15292 <td class="entry_name
15293 entry_name_deprecated
15295 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15297 <td class="entry_type">
15298 <span class="entry_type_name">byte</span>
15300 <span class="entry_type_visibility"> [system]</span>
15304 <span class="entry_type_deprecated">[deprecated] </span>
15308 </td> <!-- entry_type -->
15310 <td class="entry_description">
15311 <p>If set to 1,<wbr/> the camera service uses
15312 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15313 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15314 shutter lag stream</p>
15317 <td class="entry_units">
15320 <td class="entry_range">
15321 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15324 <td class="entry_hal_version">
15328 <td class="entry_tags">
15332 <tr class="entries_header">
15333 <th class="th_details" colspan="6">Details</th>
15335 <tr class="entry_cont">
15336 <td class="entry_details" colspan="6">
15337 <p>HAL implementations should use gralloc usage flags
15338 to determine that a stream will be used for
15339 zero-shutter-lag,<wbr/> instead of relying on an explicit
15340 format setting.<wbr/> Does not need to be listed in static
15341 metadata.<wbr/> Support will be removed in future versions of
15342 camera service.<wbr/></p>
15347 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15348 <!-- end of entry -->
15351 <tr class="entry" id="static_android.quirks.usePartialResult">
15352 <td class="entry_name
15353 entry_name_deprecated
15355 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15357 <td class="entry_type">
15358 <span class="entry_type_name">byte</span>
15360 <span class="entry_type_visibility"> [hidden]</span>
15364 <span class="entry_type_deprecated">[deprecated] </span>
15368 </td> <!-- entry_type -->
15370 <td class="entry_description">
15371 <p>If set to 1,<wbr/> the HAL will always split result
15372 metadata for a single capture into multiple buffers,<wbr/>
15373 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15376 <td class="entry_units">
15379 <td class="entry_range">
15380 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15383 <td class="entry_hal_version">
15387 <td class="entry_tags">
15391 <tr class="entries_header">
15392 <th class="th_details" colspan="6">Details</th>
15394 <tr class="entry_cont">
15395 <td class="entry_details" colspan="6">
15396 <p>Does not need to be listed in static
15397 metadata.<wbr/> Support for partial results will be reworked in
15398 future versions of camera service.<wbr/> This quirk will stop
15399 working at that point; DO NOT USE without careful
15400 consideration of future support.<wbr/></p>
15404 <tr class="entries_header">
15405 <th class="th_details" colspan="6">HAL Implementation Details</th>
15407 <tr class="entry_cont">
15408 <td class="entry_details" colspan="6">
15409 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15410 for information on how to implement partial results.<wbr/></p>
15414 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15415 <!-- end of entry -->
15419 <!-- end of kind -->
15421 <tr><td colspan="7" class="kind">dynamic</td></tr>
15423 <thead class="entries_header">
15425 <th class="th_name">Property Name</th>
15426 <th class="th_type">Type</th>
15427 <th class="th_description">Description</th>
15428 <th class="th_units">Units</th>
15429 <th class="th_range">Range</th>
15430 <th class="th_hal_version">Initial HIDL HAL version</th>
15431 <th class="th_tags">Tags</th>
15446 <tr class="entry" id="dynamic_android.quirks.partialResult">
15447 <td class="entry_name
15448 entry_name_deprecated
15450 android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15452 <td class="entry_type">
15453 <span class="entry_type_name entry_type_name_enum">byte</span>
15455 <span class="entry_type_visibility"> [hidden as boolean]</span>
15459 <span class="entry_type_deprecated">[deprecated] </span>
15462 <ul class="entry_type_enum">
15464 <span class="entry_type_enum_name">FINAL (v3.2)</span>
15465 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15466 for this capture.<wbr/></p></span>
15469 <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
15470 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15471 capture.<wbr/> More result buffers for this capture will be sent
15472 by the camera device,<wbr/> the last of which will be marked
15473 FINAL.<wbr/></p></span>
15477 </td> <!-- entry_type -->
15479 <td class="entry_description">
15480 <p>Whether a result given to the framework is the
15481 final one for the capture,<wbr/> or only a partial that contains a
15482 subset of the full set of dynamic metadata
15486 <td class="entry_units">
15489 <td class="entry_range">
15490 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15491 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
15494 <td class="entry_hal_version">
15498 <td class="entry_tags">
15502 <tr class="entries_header">
15503 <th class="th_details" colspan="6">Details</th>
15505 <tr class="entry_cont">
15506 <td class="entry_details" colspan="6">
15507 <p>The entries in the result metadata buffers for a
15508 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
15509 FINAL buffers must retain FIFO ordering relative to the
15510 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
15511 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
15512 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
15513 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
15514 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
15515 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
15519 <tr class="entries_header">
15520 <th class="th_details" colspan="6">HAL Implementation Details</th>
15522 <tr class="entry_cont">
15523 <td class="entry_details" colspan="6">
15524 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15525 for information on how to implement partial results.<wbr/></p>
15529 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15530 <!-- end of entry -->
15534 <!-- end of kind -->
15537 <!-- end of section -->
15538 <tr><td colspan="7" id="section_request" class="section">request</td></tr>
15541 <tr><td colspan="7" class="kind">controls</td></tr>
15543 <thead class="entries_header">
15545 <th class="th_name">Property Name</th>
15546 <th class="th_type">Type</th>
15547 <th class="th_description">Description</th>
15548 <th class="th_units">Units</th>
15549 <th class="th_range">Range</th>
15550 <th class="th_hal_version">Initial HIDL HAL version</th>
15551 <th class="th_tags">Tags</th>
15566 <tr class="entry" id="controls_android.request.frameCount">
15567 <td class="entry_name
15568 entry_name_deprecated
15570 android.<wbr/>request.<wbr/>frame<wbr/>Count
15572 <td class="entry_type">
15573 <span class="entry_type_name">int32</span>
15575 <span class="entry_type_visibility"> [system]</span>
15579 <span class="entry_type_deprecated">[deprecated] </span>
15583 </td> <!-- entry_type -->
15585 <td class="entry_description">
15586 <p>A frame counter set by the framework.<wbr/> Must
15587 be maintained unchanged in output frame.<wbr/> This value monotonically
15588 increases with every new result (that is,<wbr/> each new result has a unique
15589 frameCount value).<wbr/></p>
15592 <td class="entry_units">
15593 incrementing integer
15596 <td class="entry_range">
15597 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15598 <p>Any int.<wbr/></p>
15601 <td class="entry_hal_version">
15605 <td class="entry_tags">
15611 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15612 <!-- end of entry -->
15615 <tr class="entry" id="controls_android.request.id">
15616 <td class="entry_name
15618 android.<wbr/>request.<wbr/>id
15620 <td class="entry_type">
15621 <span class="entry_type_name">int32</span>
15623 <span class="entry_type_visibility"> [hidden]</span>
15630 </td> <!-- entry_type -->
15632 <td class="entry_description">
15633 <p>An application-specified ID for the current
15634 request.<wbr/> Must be maintained unchanged in output
15638 <td class="entry_units">
15639 arbitrary integer assigned by application
15642 <td class="entry_range">
15646 <td class="entry_hal_version">
15650 <td class="entry_tags">
15651 <ul class="entry_tags">
15652 <li><a href="#tag_V1">V1</a></li>
15659 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15660 <!-- end of entry -->
15663 <tr class="entry" id="controls_android.request.inputStreams">
15664 <td class="entry_name
15665 entry_name_deprecated
15667 android.<wbr/>request.<wbr/>input<wbr/>Streams
15669 <td class="entry_type">
15670 <span class="entry_type_name">int32</span>
15671 <span class="entry_type_container">x</span>
15673 <span class="entry_type_array">
15676 <span class="entry_type_visibility"> [system]</span>
15680 <span class="entry_type_deprecated">[deprecated] </span>
15684 </td> <!-- entry_type -->
15686 <td class="entry_description">
15687 <p>List which camera reprocess stream is used
15688 for the source of reprocessing data.<wbr/></p>
15691 <td class="entry_units">
15692 List of camera reprocess stream IDs
15695 <td class="entry_range">
15696 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15697 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
15700 <td class="entry_hal_version">
15704 <td class="entry_tags">
15705 <ul class="entry_tags">
15706 <li><a href="#tag_HAL2">HAL2</a></li>
15711 <tr class="entries_header">
15712 <th class="th_details" colspan="6">Details</th>
15714 <tr class="entry_cont">
15715 <td class="entry_details" colspan="6">
15716 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
15717 REPROCESS.<wbr/> Ignored otherwise</p>
15722 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15723 <!-- end of entry -->
15726 <tr class="entry" id="controls_android.request.metadataMode">
15727 <td class="entry_name
15729 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15731 <td class="entry_type">
15732 <span class="entry_type_name entry_type_name_enum">byte</span>
15734 <span class="entry_type_visibility"> [system]</span>
15740 <ul class="entry_type_enum">
15742 <span class="entry_type_enum_name">NONE (v3.2)</span>
15743 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15744 for application-bound buffer data.<wbr/> If no
15745 application-bound streams exist,<wbr/> no frame should be
15746 placed in the output frame queue.<wbr/> If such streams
15747 exist,<wbr/> a frame should be placed on the output queue
15748 with null metadata but with the necessary output buffer
15749 information.<wbr/> Timestamp information should still be
15750 included with any output stream buffers</p></span>
15753 <span class="entry_type_enum_name">FULL (v3.2)</span>
15754 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15755 only be produced if they are separately
15760 </td> <!-- entry_type -->
15762 <td class="entry_description">
15763 <p>How much metadata to produce on
15767 <td class="entry_units">
15770 <td class="entry_range">
15773 <td class="entry_hal_version">
15777 <td class="entry_tags">
15778 <ul class="entry_tags">
15779 <li><a href="#tag_FUTURE">FUTURE</a></li>
15786 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15787 <!-- end of entry -->
15790 <tr class="entry" id="controls_android.request.outputStreams">
15791 <td class="entry_name
15792 entry_name_deprecated
15794 android.<wbr/>request.<wbr/>output<wbr/>Streams
15796 <td class="entry_type">
15797 <span class="entry_type_name">int32</span>
15798 <span class="entry_type_container">x</span>
15800 <span class="entry_type_array">
15803 <span class="entry_type_visibility"> [system]</span>
15807 <span class="entry_type_deprecated">[deprecated] </span>
15811 </td> <!-- entry_type -->
15813 <td class="entry_description">
15814 <p>Lists which camera output streams image data
15815 from this capture must be sent to</p>
15818 <td class="entry_units">
15819 List of camera stream IDs
15822 <td class="entry_range">
15823 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15824 <p>List must only include streams that have been
15828 <td class="entry_hal_version">
15832 <td class="entry_tags">
15833 <ul class="entry_tags">
15834 <li><a href="#tag_HAL2">HAL2</a></li>
15839 <tr class="entries_header">
15840 <th class="th_details" colspan="6">Details</th>
15842 <tr class="entry_cont">
15843 <td class="entry_details" colspan="6">
15844 <p>If no output streams are listed,<wbr/> then the image
15845 data should simply be discarded.<wbr/> The image data must
15846 still be captured for metadata and statistics production,<wbr/>
15847 and the lens and flash must operate as requested.<wbr/></p>
15852 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15853 <!-- end of entry -->
15856 <tr class="entry" id="controls_android.request.type">
15857 <td class="entry_name
15858 entry_name_deprecated
15860 android.<wbr/>request.<wbr/>type
15862 <td class="entry_type">
15863 <span class="entry_type_name entry_type_name_enum">byte</span>
15865 <span class="entry_type_visibility"> [system]</span>
15869 <span class="entry_type_deprecated">[deprecated] </span>
15872 <ul class="entry_type_enum">
15874 <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
15875 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
15876 and process it according to the
15877 settings</p></span>
15880 <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
15881 <span class="entry_type_enum_notes"><p>Process previously captured data; the
15882 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
15883 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
15884 needed for reprocessing with [RP]</p></span>
15888 </td> <!-- entry_type -->
15890 <td class="entry_description">
15891 <p>The type of the request; either CAPTURE or
15892 REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
15895 <td class="entry_units">
15898 <td class="entry_range">
15899 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15902 <td class="entry_hal_version">
15906 <td class="entry_tags">
15907 <ul class="entry_tags">
15908 <li><a href="#tag_HAL2">HAL2</a></li>
15915 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15916 <!-- end of entry -->
15920 <!-- end of kind -->
15922 <tr><td colspan="7" class="kind">static</td></tr>
15924 <thead class="entries_header">
15926 <th class="th_name">Property Name</th>
15927 <th class="th_type">Type</th>
15928 <th class="th_description">Description</th>
15929 <th class="th_units">Units</th>
15930 <th class="th_range">Range</th>
15931 <th class="th_hal_version">Initial HIDL HAL version</th>
15932 <th class="th_tags">Tags</th>
15947 <tr class="entry" id="static_android.request.maxNumOutputStreams">
15948 <td class="entry_name
15950 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
15952 <td class="entry_type">
15953 <span class="entry_type_name">int32</span>
15954 <span class="entry_type_container">x</span>
15956 <span class="entry_type_array">
15959 <span class="entry_type_visibility"> [ndk_public]</span>
15962 <span class="entry_type_hwlevel">[legacy] </span>
15967 </td> <!-- entry_type -->
15969 <td class="entry_description">
15970 <p>The maximum numbers of different types of output streams
15971 that can be configured and used simultaneously by a camera device.<wbr/></p>
15974 <td class="entry_units">
15977 <td class="entry_range">
15978 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p>
15979 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p>
15980 <p>For processed (but not stalling) format streams,<wbr/> >= 3
15981 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15982 >= 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>
15985 <td class="entry_hal_version">
15989 <td class="entry_tags">
15990 <ul class="entry_tags">
15991 <li><a href="#tag_BC">BC</a></li>
15996 <tr class="entries_header">
15997 <th class="th_details" colspan="6">Details</th>
15999 <tr class="entry_cont">
16000 <td class="entry_details" colspan="6">
16001 <p>This is a 3 element tuple that contains the max number of output simultaneous
16002 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
16003 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
16004 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
16005 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>
16006 <p>This lists the upper bound of the number of output streams supported by
16007 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16008 CPU resources that will consume more power.<wbr/> The image format for an output stream can
16009 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
16010 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
16011 into the 3 stream types as below:</p>
16013 <li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/>
16014 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
16015 <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
16016 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
16017 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> Typically
16018 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
16019 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
16025 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16026 <!-- end of entry -->
16029 <tr class="entry" id="static_android.request.maxNumOutputRaw">
16030 <td class="entry_name
16032 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
16034 <td class="entry_type">
16035 <span class="entry_type_name">int32</span>
16037 <span class="entry_type_visibility"> [java_public]</span>
16039 <span class="entry_type_synthetic">[synthetic] </span>
16041 <span class="entry_type_hwlevel">[legacy] </span>
16046 </td> <!-- entry_type -->
16048 <td class="entry_description">
16049 <p>The maximum numbers of different types of output streams
16050 that can be configured and used simultaneously by a camera device
16051 for any <code>RAW</code> formats.<wbr/></p>
16054 <td class="entry_units">
16057 <td class="entry_range">
16061 <td class="entry_hal_version">
16065 <td class="entry_tags">
16069 <tr class="entries_header">
16070 <th class="th_details" colspan="6">Details</th>
16072 <tr class="entry_cont">
16073 <td class="entry_details" colspan="6">
16074 <p>This value contains the max number of output simultaneous
16075 streams from the raw sensor.<wbr/></p>
16076 <p>This lists the upper bound of the number of output streams supported by
16077 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16078 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16079 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>
16080 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
16082 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
16083 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
16084 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
16086 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
16087 never support raw streams.<wbr/></p>
16092 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16093 <!-- end of entry -->
16096 <tr class="entry" id="static_android.request.maxNumOutputProc">
16097 <td class="entry_name
16099 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
16101 <td class="entry_type">
16102 <span class="entry_type_name">int32</span>
16104 <span class="entry_type_visibility"> [java_public]</span>
16106 <span class="entry_type_synthetic">[synthetic] </span>
16108 <span class="entry_type_hwlevel">[legacy] </span>
16113 </td> <!-- entry_type -->
16115 <td class="entry_description">
16116 <p>The maximum numbers of different types of output streams
16117 that can be configured and used simultaneously by a camera device
16118 for any processed (but not-stalling) formats.<wbr/></p>
16121 <td class="entry_units">
16124 <td class="entry_range">
16126 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16127 >= 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>
16130 <td class="entry_hal_version">
16134 <td class="entry_tags">
16138 <tr class="entries_header">
16139 <th class="th_details" colspan="6">Details</th>
16141 <tr class="entry_cont">
16142 <td class="entry_details" colspan="6">
16143 <p>This value contains the max number of output simultaneous
16144 streams for any processed (but not-stalling) formats.<wbr/></p>
16145 <p>This lists the upper bound of the number of output streams supported by
16146 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16147 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16148 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>
16149 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16152 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16153 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16154 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16155 <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>
16157 <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
16158 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16159 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16164 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16165 <!-- end of entry -->
16168 <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16169 <td class="entry_name
16171 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16173 <td class="entry_type">
16174 <span class="entry_type_name">int32</span>
16176 <span class="entry_type_visibility"> [java_public]</span>
16178 <span class="entry_type_synthetic">[synthetic] </span>
16180 <span class="entry_type_hwlevel">[legacy] </span>
16185 </td> <!-- entry_type -->
16187 <td class="entry_description">
16188 <p>The maximum numbers of different types of output streams
16189 that can be configured and used simultaneously by a camera device
16190 for any processed (and stalling) formats.<wbr/></p>
16193 <td class="entry_units">
16196 <td class="entry_range">
16200 <td class="entry_hal_version">
16204 <td class="entry_tags">
16208 <tr class="entries_header">
16209 <th class="th_details" colspan="6">Details</th>
16211 <tr class="entry_cont">
16212 <td class="entry_details" colspan="6">
16213 <p>This value contains the max number of output simultaneous
16214 streams for any processed (but not-stalling) formats.<wbr/></p>
16215 <p>This lists the upper bound of the number of output streams supported by
16216 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16217 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16218 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>
16219 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16220 > 0.<wbr/> Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a stalling format.<wbr/></p>
16221 <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
16222 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16223 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16228 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16229 <!-- end of entry -->
16232 <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16233 <td class="entry_name
16234 entry_name_deprecated
16236 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16238 <td class="entry_type">
16239 <span class="entry_type_name">int32</span>
16240 <span class="entry_type_container">x</span>
16242 <span class="entry_type_array">
16245 <span class="entry_type_visibility"> [system]</span>
16249 <span class="entry_type_deprecated">[deprecated] </span>
16253 </td> <!-- entry_type -->
16255 <td class="entry_description">
16256 <p>How many reprocessing streams of any type
16257 can be allocated at the same time.<wbr/></p>
16260 <td class="entry_units">
16263 <td class="entry_range">
16264 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16268 <td class="entry_hal_version">
16272 <td class="entry_tags">
16273 <ul class="entry_tags">
16274 <li><a href="#tag_HAL2">HAL2</a></li>
16279 <tr class="entries_header">
16280 <th class="th_details" colspan="6">Details</th>
16282 <tr class="entry_cont">
16283 <td class="entry_details" colspan="6">
16284 <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16285 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16290 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16291 <!-- end of entry -->
16294 <tr class="entry" id="static_android.request.maxNumInputStreams">
16295 <td class="entry_name
16297 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16299 <td class="entry_type">
16300 <span class="entry_type_name">int32</span>
16302 <span class="entry_type_visibility"> [java_public]</span>
16305 <span class="entry_type_hwlevel">[full] </span>
16310 </td> <!-- entry_type -->
16312 <td class="entry_description">
16313 <p>The maximum numbers of any type of input streams
16314 that can be configured and used simultaneously by a camera device.<wbr/></p>
16317 <td class="entry_units">
16320 <td class="entry_range">
16321 <p>0 or 1.<wbr/></p>
16324 <td class="entry_hal_version">
16328 <td class="entry_tags">
16329 <ul class="entry_tags">
16330 <li><a href="#tag_REPROC">REPROC</a></li>
16335 <tr class="entries_header">
16336 <th class="th_details" colspan="6">Details</th>
16338 <tr class="entry_cont">
16339 <td class="entry_details" colspan="6">
16340 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16341 <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
16342 input stream,<wbr/> there must be at least one output stream configured to to receive the
16343 reprocessed images.<wbr/></p>
16344 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16345 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16346 new sensor image will not be captured.<wbr/></p>
16347 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16348 stream image format will be PRIVATE,<wbr/> the associated output stream image format
16349 should be JPEG.<wbr/></p>
16353 <tr class="entries_header">
16354 <th class="th_details" colspan="6">HAL Implementation Details</th>
16356 <tr class="entry_cont">
16357 <td class="entry_details" colspan="6">
16358 <p>For the reprocessing flow and controls,<wbr/> see
16359 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16363 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16364 <!-- end of entry -->
16367 <tr class="entry" id="static_android.request.pipelineMaxDepth">
16368 <td class="entry_name
16370 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16372 <td class="entry_type">
16373 <span class="entry_type_name">byte</span>
16375 <span class="entry_type_visibility"> [public]</span>
16378 <span class="entry_type_hwlevel">[legacy] </span>
16383 </td> <!-- entry_type -->
16385 <td class="entry_description">
16386 <p>Specifies the number of maximum pipeline stages a frame
16387 has to go through from when it's exposed to when it's available
16388 to the framework.<wbr/></p>
16391 <td class="entry_units">
16394 <td class="entry_range">
16397 <td class="entry_hal_version">
16401 <td class="entry_tags">
16405 <tr class="entries_header">
16406 <th class="th_details" colspan="6">Details</th>
16408 <tr class="entry_cont">
16409 <td class="entry_details" colspan="6">
16410 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16411 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16412 its own stages to do custom HW processing.<wbr/> Further stages may be
16413 added by SW processing.<wbr/></p>
16414 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16415 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16416 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16417 the max pipeline depth.<wbr/></p>
16418 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
16419 X frame intervals.<wbr/></p>
16420 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16421 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16425 <tr class="entries_header">
16426 <th class="th_details" colspan="6">HAL Implementation Details</th>
16428 <tr class="entry_cont">
16429 <td class="entry_details" colspan="6">
16430 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16431 max batch sizes may be larger than 1.<wbr/></p>
16435 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16436 <!-- end of entry -->
16439 <tr class="entry" id="static_android.request.partialResultCount">
16440 <td class="entry_name
16442 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16444 <td class="entry_type">
16445 <span class="entry_type_name">int32</span>
16447 <span class="entry_type_visibility"> [public]</span>
16454 </td> <!-- entry_type -->
16456 <td class="entry_description">
16457 <p>Defines how many sub-components
16458 a result will be composed of.<wbr/></p>
16461 <td class="entry_units">
16464 <td class="entry_range">
16468 <td class="entry_hal_version">
16472 <td class="entry_tags">
16476 <tr class="entries_header">
16477 <th class="th_details" colspan="6">Details</th>
16479 <tr class="entry_cont">
16480 <td class="entry_details" colspan="6">
16481 <p>In order to combat the pipeline latency,<wbr/> partial results
16482 may be delivered to the application layer from the camera device as
16483 soon as they are available.<wbr/></p>
16484 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
16485 results are not supported,<wbr/> and only the final TotalCaptureResult will
16486 be produced by the camera device.<wbr/></p>
16487 <p>A typical use case for this might be: after requesting an
16488 auto-focus (AF) lock the new AF state might be available 50%
16489 of the way through the pipeline.<wbr/> The camera device could
16490 then immediately dispatch this state via a partial result to
16491 the application,<wbr/> and the rest of the metadata via later
16492 partial results.<wbr/></p>
16497 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16498 <!-- end of entry -->
16501 <tr class="entry" id="static_android.request.availableCapabilities">
16502 <td class="entry_name
16504 android.<wbr/>request.<wbr/>available<wbr/>Capabilities
16506 <td class="entry_type">
16507 <span class="entry_type_name entry_type_name_enum">byte</span>
16508 <span class="entry_type_container">x</span>
16510 <span class="entry_type_array">
16513 <span class="entry_type_visibility"> [public]</span>
16516 <span class="entry_type_hwlevel">[legacy] </span>
16520 <ul class="entry_type_enum">
16522 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
16523 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
16524 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
16525 supports.<wbr/></p>
16526 <p>This capability is listed by all normal devices,<wbr/> and
16527 indicates that the camera device has a feature set
16528 that's comparable to the baseline requirements for the
16529 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
16530 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
16531 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
16532 not standard color output.<wbr/></p></span>
16535 <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
16536 <span class="entry_type_enum_optional">[optional]</span>
16537 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
16538 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
16539 The camera device supports basic manual control of the sensor image
16540 acquisition related stages.<wbr/> This means the following controls are
16541 guaranteed to be supported:</p>
16543 <li>Manual frame duration control<ul>
16544 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
16545 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
16548 <li>Manual exposure control<ul>
16549 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16550 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
16553 <li>Manual sensitivity control<ul>
16554 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16555 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
16558 <li>Manual lens control (if the lens is adjustable)<ul>
16559 <li>android.<wbr/>lens.<wbr/>*</li>
16562 <li>Manual flash control (if a flash unit is present)<ul>
16563 <li>android.<wbr/>flash.<wbr/>*</li>
16566 <li>Manual black level locking<ul>
16567 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
16570 <li>Auto exposure lock<ul>
16571 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16575 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
16576 device will accurately report the values applied by 3A in the
16578 <p>A given camera device may also support additional manual sensor controls,<wbr/>
16579 but this capability only covers the above list of controls.<wbr/></p>
16580 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
16581 additionally return a min frame duration that is greater than
16582 zero for each supported size-format combination.<wbr/></p></span>
16585 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
16586 <span class="entry_type_enum_optional">[optional]</span>
16587 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
16588 The camera device supports basic manual control of the image post-processing
16589 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
16592 <p>Manual tonemap control</p>
16594 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
16595 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
16596 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
16597 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
16598 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
16602 <p>Manual white balance control</p>
16604 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
16605 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
16608 <li>Manual lens shading map control<ul>
16609 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
16610 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
16611 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
16612 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
16615 <li>Manual aberration correction control (if aberration correction is supported)<ul>
16616 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
16617 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
16620 <li>Auto white balance lock<ul>
16621 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16625 <p>If auto white balance is enabled,<wbr/> then the camera device
16626 will accurately report the values applied by AWB in the result.<wbr/></p>
16627 <p>A given camera device may also support additional post-processing
16628 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
16631 <span class="entry_type_enum_name">RAW (v3.2)</span>
16632 <span class="entry_type_enum_optional">[optional]</span>
16633 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
16634 metadata for interpreting them.<wbr/></p>
16635 <p>Devices supporting the RAW capability allow both for
16636 saving DNG files,<wbr/> and for direct application processing of
16637 raw sensor images.<wbr/></p>
16639 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
16640 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
16641 will match either the value in
16642 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16643 <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>
16644 <li>All DNG-related optional metadata entries are provided
16645 by the camera device.<wbr/></li>
16649 <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
16650 <span class="entry_type_enum_optional">[optional]</span>
16651 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
16653 <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>
16654 <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/>
16655 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
16656 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>
16657 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16658 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>
16659 <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>
16660 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
16661 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16662 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
16663 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
16664 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16665 <li>The maximum available resolution for PRIVATE streams
16666 (both input/<wbr/>output) will match the maximum available
16667 resolution of JPEG streams.<wbr/></li>
16668 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16669 <li>Only below controls are effective for reprocessing requests and
16670 will be present in capture results,<wbr/> other controls in reprocess
16671 requests will be ignored by the camera device.<wbr/><ul>
16672 <li>android.<wbr/>jpeg.<wbr/>*</li>
16673 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16674 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16677 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16678 <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>
16682 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
16683 <span class="entry_type_enum_optional">[optional]</span>
16684 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
16685 the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows
16686 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
16687 <p>The values reported for the following controls are guaranteed to be available
16688 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
16690 <li>Exposure control<ul>
16691 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16694 <li>Sensitivity control<ul>
16695 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16698 <li>Lens controls (if the lens is adjustable)<ul>
16699 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
16700 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
16704 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
16705 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
16708 <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
16709 <span class="entry_type_enum_optional">[optional]</span>
16710 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per
16711 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
16712 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames
16713 per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
16714 resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
16717 <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
16718 <span class="entry_type_enum_optional">[optional]</span>
16719 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
16720 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
16723 <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>
16724 <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
16725 format,<wbr/> that is,<wbr/> YUV_<wbr/>420_<wbr/>888 is included in the lists of 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>
16726 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16727 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>
16728 <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>
16729 <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
16730 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16731 <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
16732 <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>
16733 <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
16734 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
16735 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16736 <li>Only the below controls are effective for reprocessing requests and will be present
16737 in capture results.<wbr/> The reprocess requests are from the original capture results
16738 that 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> output buffers.<wbr/> All other controls in the
16739 reprocess requests will be ignored by the camera device.<wbr/><ul>
16740 <li>android.<wbr/>jpeg.<wbr/>*</li>
16741 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16742 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16743 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
16746 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16747 <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>
16751 <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
16752 <span class="entry_type_enum_optional">[optional]</span>
16753 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
16754 <p>This capability requires the camera device to support the following:</p>
16756 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
16757 an output format.<wbr/></li>
16758 <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
16759 optionally supported as an output format.<wbr/></li>
16760 <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/> will
16761 list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
16762 and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
16763 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16764 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16765 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16766 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
16769 <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>
16770 <li>As of Android P,<wbr/> the <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> entry is listed by this device.<wbr/></li>
16771 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
16772 normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
16775 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
16776 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
16777 should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
16778 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
16779 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
16780 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
16781 rate,<wbr/> including depth stall time.<wbr/></p></span>
16784 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
16785 <span class="entry_type_enum_optional">[optional]</span>
16786 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) use
16787 case.<wbr/> The camera device will support high speed capture session created by <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
16788 only accepts high speed request lists created by <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
16789 <p>A camera device can still support high speed video streaming by advertising the high
16790 speed 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
16791 normal capture request per frame control and synchronization requirements will apply
16792 to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
16793 describes the capability of a specialized operating mode with many limitations (see
16794 below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
16795 <p>The supported high speed video sizes and fps ranges are specified in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
16796 To get desired output frame rates,<wbr/> the application is only allowed to select video
16797 size and FPS range combinations provided by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/> The
16798 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>
16799 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
16800 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
16801 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
16802 and post-processing parameters is possible.<wbr/> All other controls operate the
16803 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
16804 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
16806 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
16807 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
16808 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16809 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16810 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
16811 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
16812 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
16813 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
16814 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
16815 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
16817 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
16819 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
16820 work since aeMode is ON)</li>
16821 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
16822 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
16823 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
16825 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
16826 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
16827 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
16828 the application need check if the video encoder is capable of supporting the
16829 high frame rate for a given video size,<wbr/> or it will end up with lower recording
16830 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
16831 rate will be bounded by the screen refresh rate.<wbr/></p>
16832 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
16833 (preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
16834 if all of below conditions are true:</p>
16836 <li>The application creates a camera capture session with no more than 2 surfaces via
16837 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
16838 targeted surfaces must be preview surface (either from <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 recording
16839 surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or <a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
16840 <li>The stream sizes are selected from the sizes reported by
16841 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
16842 <li>The FPS ranges are selected from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
16844 <p>When above conditions are NOT satistied,<wbr/>
16845 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
16846 will fail.<wbr/></p>
16847 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
16848 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
16849 the application avoids unnecessary maximum target FPS changes as much as possible
16850 during high speed streaming.<wbr/></p></span>
16853 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
16854 <span class="entry_type_enum_optional">[optional]</span>
16855 <span class="entry_type_enum_notes"><p>The device supports controls and metadata required for accurate motion tracking for
16856 use cases such as augmented reality,<wbr/> electronic image stabilization,<wbr/> and so on.<wbr/></p>
16857 <p>This means this camera device has accurate optical calibration and timestamps relative
16858 to the inertial sensors.<wbr/></p>
16859 <p>This capability requires the camera device to support the following:</p>
16861 <li>Capture request templates <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#TEMPLATE_MOTION_TRACKING_PREVIEW">Camera<wbr/>Device#TEMPLATE_<wbr/>MOTION_<wbr/>TRACKING_<wbr/>PREVIEW</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#TEMPLATE_MOTION_TRACKING_BEST">Camera<wbr/>Device#TEMPLATE_<wbr/>MOTION_<wbr/>TRACKING_<wbr/>BEST</a> are defined.<wbr/></li>
16862 <li>The stream configurations listed in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for MOTION_<wbr/>TRACKING are
16863 supported,<wbr/> either at 30 or 60fps maximum frame rate.<wbr/></li>
16864 <li>The following camera characteristics and capture result metadata are provided:<ul>
16865 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16866 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
16867 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16868 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16869 <li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> with value GYROSCOPE</li>
16872 <li>The <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> field has value <code>REALTIME</code>.<wbr/> When compared to
16873 timestamps from the device's gyroscopes,<wbr/> the clock difference for events occuring at
16874 the same actual time instant will be less than 1 ms.<wbr/></li>
16875 <li>The value of the <a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a> field is accurate to within 1 ms.<wbr/></li>
16876 <li>The value of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> is guaranteed to be available in the
16877 capture result.<wbr/></li>
16878 <li>The <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> control supports MOTION_<wbr/>TRACKING to limit maximum
16879 exposure to 20 milliseconds.<wbr/></li>
16880 <li>The stream configurations required for MOTION_<wbr/>TRACKING (listed at <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) can operate at least at
16881 30fps; optionally,<wbr/> they can operate at 60fps,<wbr/> and '[60,<wbr/> 60]' is listed in
16882 <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a>.<wbr/></li>
16887 </td> <!-- entry_type -->
16889 <td class="entry_description">
16890 <p>List of capabilities that this camera device
16891 advertises as fully supporting.<wbr/></p>
16894 <td class="entry_units">
16897 <td class="entry_range">
16900 <td class="entry_hal_version">
16904 <td class="entry_tags">
16908 <tr class="entries_header">
16909 <th class="th_details" colspan="6">Details</th>
16911 <tr class="entry_cont">
16912 <td class="entry_details" colspan="6">
16913 <p>A capability is a contract that the camera device makes in order
16914 to be able to satisfy one or more use cases.<wbr/></p>
16915 <p>Listing a capability guarantees that the whole set of features
16916 required to support a common use will all be available.<wbr/></p>
16917 <p>Using a subset of the functionality provided by an unsupported
16918 capability may be possible on a specific camera device implementation;
16919 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
16920 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
16921 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
16922 <p>The following capabilities are guaranteed to be available on
16923 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
16925 <li>MANUAL_<wbr/>SENSOR</li>
16926 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
16928 <p>Other capabilities may be available on either FULL or LIMITED
16929 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
16933 <tr class="entries_header">
16934 <th class="th_details" colspan="6">HAL Implementation Details</th>
16936 <tr class="entry_cont">
16937 <td class="entry_details" colspan="6">
16938 <p>Additional constraint details per-capability will be available
16939 in the Compatibility Test Suite.<wbr/></p>
16940 <p>Minimum baseline requirements required for the
16941 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
16942 Instead refer to "BC" tags and the camera CTS tests in the
16943 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
16944 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
16945 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
16946 request and the result in order to be considered to be
16947 capability-compliant.<wbr/></p>
16948 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
16949 then exposure time must be configurable via the request <em>and</em>
16950 the actual exposure applied must be available via
16951 the result.<wbr/></p>
16952 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
16953 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
16954 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
16955 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
16956 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
16957 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
16958 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
16959 YUV_<wbr/>REPROCESSING capability must support the
16960 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
16961 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
16962 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
16963 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
16964 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
16965 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
16966 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
16967 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
16972 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16973 <!-- end of entry -->
16976 <tr class="entry" id="static_android.request.availableRequestKeys">
16977 <td class="entry_name
16979 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
16981 <td class="entry_type">
16982 <span class="entry_type_name">int32</span>
16983 <span class="entry_type_container">x</span>
16985 <span class="entry_type_array">
16988 <span class="entry_type_visibility"> [ndk_public]</span>
16991 <span class="entry_type_hwlevel">[legacy] </span>
16996 </td> <!-- entry_type -->
16998 <td class="entry_description">
16999 <p>A list of all keys that the camera device has available
17000 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
17003 <td class="entry_units">
17006 <td class="entry_range">
17009 <td class="entry_hal_version">
17013 <td class="entry_tags">
17017 <tr class="entries_header">
17018 <th class="th_details" colspan="6">Details</th>
17020 <tr class="entry_cont">
17021 <td class="entry_details" colspan="6">
17022 <p>Attempting to set a key into a CaptureRequest that is not
17023 listed here will result in an invalid request and will be rejected
17024 by the camera device.<wbr/></p>
17025 <p>This field can be used to query the feature set of a camera device
17026 at a more granular level than capabilities.<wbr/> This is especially
17027 important for optional keys that are not listed under any capability
17028 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17032 <tr class="entries_header">
17033 <th class="th_details" colspan="6">HAL Implementation Details</th>
17035 <tr class="entry_cont">
17036 <td class="entry_details" colspan="6">
17037 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17038 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17039 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17040 vendor extensions API and not against this field.<wbr/></p>
17041 <p>The HAL must not consume any request tags that are not listed either
17042 here or in the vendor tag list.<wbr/></p>
17043 <p>The public camera2 API will always make the vendor tags visible
17045 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
17049 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17050 <!-- end of entry -->
17053 <tr class="entry" id="static_android.request.availableResultKeys">
17054 <td class="entry_name
17056 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
17058 <td class="entry_type">
17059 <span class="entry_type_name">int32</span>
17060 <span class="entry_type_container">x</span>
17062 <span class="entry_type_array">
17065 <span class="entry_type_visibility"> [ndk_public]</span>
17068 <span class="entry_type_hwlevel">[legacy] </span>
17073 </td> <!-- entry_type -->
17075 <td class="entry_description">
17076 <p>A list of all keys that the camera device has available to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
17079 <td class="entry_units">
17082 <td class="entry_range">
17085 <td class="entry_hal_version">
17089 <td class="entry_tags">
17093 <tr class="entries_header">
17094 <th class="th_details" colspan="6">Details</th>
17096 <tr class="entry_cont">
17097 <td class="entry_details" colspan="6">
17098 <p>Attempting to get a key from a CaptureResult that is not
17099 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
17100 a CaptureResult that is listed here will generally never return a <code>null</code>
17102 <p>The following keys may return <code>null</code> unless they are enabled:</p>
17104 <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>
17106 <p>(Those sometimes-null keys will nevertheless be listed here
17107 if they are available.<wbr/>)</p>
17108 <p>This field can be used to query the feature set of a camera device
17109 at a more granular level than capabilities.<wbr/> This is especially
17110 important for optional keys that are not listed under any capability
17111 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17115 <tr class="entries_header">
17116 <th class="th_details" colspan="6">HAL Implementation Details</th>
17118 <tr class="entry_cont">
17119 <td class="entry_details" colspan="6">
17120 <p>Tags listed here must always have an entry in the result metadata,<wbr/>
17121 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17122 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17123 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17124 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17125 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17126 vendor extensions API and not against this field.<wbr/></p>
17127 <p>The HAL must not produce any result tags that are not listed either
17128 here or in the vendor tag list.<wbr/></p>
17129 <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>
17133 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17134 <!-- end of entry -->
17137 <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
17138 <td class="entry_name
17140 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
17142 <td class="entry_type">
17143 <span class="entry_type_name">int32</span>
17144 <span class="entry_type_container">x</span>
17146 <span class="entry_type_array">
17149 <span class="entry_type_visibility"> [ndk_public]</span>
17152 <span class="entry_type_hwlevel">[legacy] </span>
17157 </td> <!-- entry_type -->
17159 <td class="entry_description">
17160 <p>A list of all keys that the camera device has available to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
17163 <td class="entry_units">
17166 <td class="entry_range">
17169 <td class="entry_hal_version">
17173 <td class="entry_tags">
17177 <tr class="entries_header">
17178 <th class="th_details" colspan="6">Details</th>
17180 <tr class="entry_cont">
17181 <td class="entry_details" colspan="6">
17182 <p>This entry follows the same rules as
17183 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17184 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17189 <tr class="entries_header">
17190 <th class="th_details" colspan="6">HAL Implementation Details</th>
17192 <tr class="entry_cont">
17193 <td class="entry_details" colspan="6">
17194 <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17195 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17196 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17197 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17198 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17199 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17200 vendor extensions API and not against this field.<wbr/></p>
17201 <p>The HAL must not have any tags in its static info that are not listed
17202 either here or in the vendor tag list.<wbr/></p>
17203 <p>The public camera2 API will always make the vendor tags visible
17204 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17208 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17209 <!-- end of entry -->
17212 <tr class="entry" id="static_android.request.availableSessionKeys">
17213 <td class="entry_name
17215 android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17217 <td class="entry_type">
17218 <span class="entry_type_name">int32</span>
17219 <span class="entry_type_container">x</span>
17221 <span class="entry_type_array">
17224 <span class="entry_type_visibility"> [ndk_public]</span>
17227 <span class="entry_type_hwlevel">[legacy] </span>
17232 </td> <!-- entry_type -->
17234 <td class="entry_description">
17235 <p>A subset of the available request keys that the camera device
17236 can pass as part of the capture session initialization.<wbr/></p>
17239 <td class="entry_units">
17242 <td class="entry_range">
17245 <td class="entry_hal_version">
17249 <td class="entry_tags">
17253 <tr class="entries_header">
17254 <th class="th_details" colspan="6">Details</th>
17256 <tr class="entry_cont">
17257 <td class="entry_details" colspan="6">
17258 <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17259 contains a list of keys that are difficult to apply per-frame and
17260 can result in unexpected delays when modified during the capture session
17261 lifetime.<wbr/> Typical examples include parameters that require a
17262 time-consuming hardware re-configuration or internal camera pipeline
17263 change.<wbr/> For performance reasons we advise clients to pass their initial
17265 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17266 Once the camera capture session is enabled it is also recommended to avoid
17267 changing them from their initial values set in
17268 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17269 Control over session parameters can still be exerted in capture requests
17270 but clients should be aware and expect delays during their application.<wbr/>
17271 An example usage scenario could look like this:</p>
17273 <li>The camera client starts by quering the session parameter key list via
17274 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17275 <li>Before triggering the capture session create sequence,<wbr/> a capture request
17277 <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17278 using an appropriate template matching the particular use case.<wbr/></li>
17279 <li>The client should go over the list of session parameters and check
17280 whether some of the keys listed matches with the parameters that
17281 they intend to modify as part of the first capture request.<wbr/></li>
17282 <li>If there is no such match,<wbr/> the capture request can be passed
17284 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17285 <li>If matches do exist,<wbr/> the client should update the respective values
17286 and pass the request to
17287 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17288 <li>After the capture session initialization completes the session parameter
17289 key list can continue to serve as reference when posting or updating
17290 further requests.<wbr/> As mentioned above further changes to session
17291 parameters should ideally be avoided,<wbr/> if updates are necessary
17292 however clients could expect a delay/<wbr/>glitch during the
17293 parameter switch.<wbr/></li>
17298 <tr class="entries_header">
17299 <th class="th_details" colspan="6">HAL Implementation Details</th>
17301 <tr class="entry_cont">
17302 <td class="entry_details" colspan="6">
17303 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17304 use the extensions C api (refer to
17305 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
17306 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17307 vendor extensions API and not against this field.<wbr/></p>
17308 <p>The HAL must not consume any request tags in the session parameters that
17309 are not listed either here or in the vendor tag list.<wbr/></p>
17310 <p>The public camera2 API will always make the vendor tags visible
17312 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
17316 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17317 <!-- end of entry -->
17321 <!-- end of kind -->
17323 <tr><td colspan="7" class="kind">dynamic</td></tr>
17325 <thead class="entries_header">
17327 <th class="th_name">Property Name</th>
17328 <th class="th_type">Type</th>
17329 <th class="th_description">Description</th>
17330 <th class="th_units">Units</th>
17331 <th class="th_range">Range</th>
17332 <th class="th_hal_version">Initial HIDL HAL version</th>
17333 <th class="th_tags">Tags</th>
17348 <tr class="entry" id="dynamic_android.request.frameCount">
17349 <td class="entry_name
17350 entry_name_deprecated
17352 android.<wbr/>request.<wbr/>frame<wbr/>Count
17354 <td class="entry_type">
17355 <span class="entry_type_name">int32</span>
17357 <span class="entry_type_visibility"> [hidden]</span>
17361 <span class="entry_type_deprecated">[deprecated] </span>
17365 </td> <!-- entry_type -->
17367 <td class="entry_description">
17368 <p>A frame counter set by the framework.<wbr/> This value monotonically
17369 increases with every new result (that is,<wbr/> each new result has a unique
17370 frameCount value).<wbr/></p>
17373 <td class="entry_units">
17377 <td class="entry_range">
17378 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17382 <td class="entry_hal_version">
17386 <td class="entry_tags">
17390 <tr class="entries_header">
17391 <th class="th_details" colspan="6">Details</th>
17393 <tr class="entry_cont">
17394 <td class="entry_details" colspan="6">
17395 <p>Reset on release()</p>
17400 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17401 <!-- end of entry -->
17404 <tr class="entry" id="dynamic_android.request.id">
17405 <td class="entry_name
17407 android.<wbr/>request.<wbr/>id
17409 <td class="entry_type">
17410 <span class="entry_type_name">int32</span>
17412 <span class="entry_type_visibility"> [hidden]</span>
17419 </td> <!-- entry_type -->
17421 <td class="entry_description">
17422 <p>An application-specified ID for the current
17423 request.<wbr/> Must be maintained unchanged in output
17427 <td class="entry_units">
17428 arbitrary integer assigned by application
17431 <td class="entry_range">
17435 <td class="entry_hal_version">
17439 <td class="entry_tags">
17440 <ul class="entry_tags">
17441 <li><a href="#tag_V1">V1</a></li>
17448 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17449 <!-- end of entry -->
17452 <tr class="entry" id="dynamic_android.request.metadataMode">
17453 <td class="entry_name
17455 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17457 <td class="entry_type">
17458 <span class="entry_type_name entry_type_name_enum">byte</span>
17460 <span class="entry_type_visibility"> [system]</span>
17466 <ul class="entry_type_enum">
17468 <span class="entry_type_enum_name">NONE (v3.2)</span>
17469 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17470 for application-bound buffer data.<wbr/> If no
17471 application-bound streams exist,<wbr/> no frame should be
17472 placed in the output frame queue.<wbr/> If such streams
17473 exist,<wbr/> a frame should be placed on the output queue
17474 with null metadata but with the necessary output buffer
17475 information.<wbr/> Timestamp information should still be
17476 included with any output stream buffers</p></span>
17479 <span class="entry_type_enum_name">FULL (v3.2)</span>
17480 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17481 only be produced if they are separately
17486 </td> <!-- entry_type -->
17488 <td class="entry_description">
17489 <p>How much metadata to produce on
17493 <td class="entry_units">
17496 <td class="entry_range">
17499 <td class="entry_hal_version">
17503 <td class="entry_tags">
17504 <ul class="entry_tags">
17505 <li><a href="#tag_FUTURE">FUTURE</a></li>
17512 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17513 <!-- end of entry -->
17516 <tr class="entry" id="dynamic_android.request.outputStreams">
17517 <td class="entry_name
17518 entry_name_deprecated
17520 android.<wbr/>request.<wbr/>output<wbr/>Streams
17522 <td class="entry_type">
17523 <span class="entry_type_name">int32</span>
17524 <span class="entry_type_container">x</span>
17526 <span class="entry_type_array">
17529 <span class="entry_type_visibility"> [system]</span>
17533 <span class="entry_type_deprecated">[deprecated] </span>
17537 </td> <!-- entry_type -->
17539 <td class="entry_description">
17540 <p>Lists which camera output streams image data
17541 from this capture must be sent to</p>
17544 <td class="entry_units">
17545 List of camera stream IDs
17548 <td class="entry_range">
17549 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17550 <p>List must only include streams that have been
17554 <td class="entry_hal_version">
17558 <td class="entry_tags">
17559 <ul class="entry_tags">
17560 <li><a href="#tag_HAL2">HAL2</a></li>
17565 <tr class="entries_header">
17566 <th class="th_details" colspan="6">Details</th>
17568 <tr class="entry_cont">
17569 <td class="entry_details" colspan="6">
17570 <p>If no output streams are listed,<wbr/> then the image
17571 data should simply be discarded.<wbr/> The image data must
17572 still be captured for metadata and statistics production,<wbr/>
17573 and the lens and flash must operate as requested.<wbr/></p>
17578 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17579 <!-- end of entry -->
17582 <tr class="entry" id="dynamic_android.request.pipelineDepth">
17583 <td class="entry_name
17585 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17587 <td class="entry_type">
17588 <span class="entry_type_name">byte</span>
17590 <span class="entry_type_visibility"> [public]</span>
17593 <span class="entry_type_hwlevel">[legacy] </span>
17598 </td> <!-- entry_type -->
17600 <td class="entry_description">
17601 <p>Specifies the number of pipeline stages the frame went
17602 through from when it was exposed to when the final completed result
17603 was available to the framework.<wbr/></p>
17606 <td class="entry_units">
17609 <td class="entry_range">
17610 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17613 <td class="entry_hal_version">
17617 <td class="entry_tags">
17621 <tr class="entries_header">
17622 <th class="th_details" colspan="6">Details</th>
17624 <tr class="entry_cont">
17625 <td class="entry_details" colspan="6">
17626 <p>Depending on what settings are used in the request,<wbr/> and
17627 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17628 and some pipeline stages skipped.<wbr/></p>
17629 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17633 <tr class="entries_header">
17634 <th class="th_details" colspan="6">HAL Implementation Details</th>
17636 <tr class="entry_cont">
17637 <td class="entry_details" colspan="6">
17638 <p>This value must always represent the accurate count of how many
17639 pipeline stages were actually used.<wbr/></p>
17643 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17644 <!-- end of entry -->
17648 <!-- end of kind -->
17651 <!-- end of section -->
17652 <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
17655 <tr><td colspan="7" class="kind">controls</td></tr>
17657 <thead class="entries_header">
17659 <th class="th_name">Property Name</th>
17660 <th class="th_type">Type</th>
17661 <th class="th_description">Description</th>
17662 <th class="th_units">Units</th>
17663 <th class="th_range">Range</th>
17664 <th class="th_hal_version">Initial HIDL HAL version</th>
17665 <th class="th_tags">Tags</th>
17680 <tr class="entry" id="controls_android.scaler.cropRegion">
17681 <td class="entry_name
17683 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17685 <td class="entry_type">
17686 <span class="entry_type_name">int32</span>
17687 <span class="entry_type_container">x</span>
17689 <span class="entry_type_array">
17692 <span class="entry_type_visibility"> [public as rectangle]</span>
17695 <span class="entry_type_hwlevel">[legacy] </span>
17700 </td> <!-- entry_type -->
17702 <td class="entry_description">
17703 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17706 <td class="entry_units">
17707 Pixel coordinates relative to
17708 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17711 <td class="entry_range">
17714 <td class="entry_hal_version">
17718 <td class="entry_tags">
17719 <ul class="entry_tags">
17720 <li><a href="#tag_BC">BC</a></li>
17725 <tr class="entries_header">
17726 <th class="th_details" colspan="6">Details</th>
17728 <tr class="entry_cont">
17729 <td class="entry_details" colspan="6">
17730 <p>This control can be used to implement digital zoom.<wbr/></p>
17731 <p>The crop region coordinate system is based off
17732 <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
17733 top-left corner of the sensor active array.<wbr/></p>
17734 <p>Output streams use this rectangle to produce their output,<wbr/>
17735 cropping to a smaller region if necessary to maintain the
17736 stream's aspect ratio,<wbr/> then scaling the sensor input to
17737 match the output's configured resolution.<wbr/></p>
17738 <p>The crop region is applied after the RAW to other color
17739 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17740 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17741 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17742 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
17743 be done to maximize the final pixel area of the stream.<wbr/></p>
17744 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17745 ratio,<wbr/> then 4:3 streams will use the exact crop
17746 region.<wbr/> 16:9 streams will further crop vertically
17747 (letterbox).<wbr/></p>
17748 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17749 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17750 streams will match exactly.<wbr/> These additional crops will
17751 be centered within the crop region.<wbr/></p>
17752 <p>The width and height of the crop region cannot
17753 be set to be smaller than
17754 <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
17755 <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>
17756 <p>The camera device may adjust the crop region to account
17757 for rounding and other hardware requirements; the final
17758 crop region used will be included in the output capture
17763 <tr class="entries_header">
17764 <th class="th_details" colspan="6">HAL Implementation Details</th>
17766 <tr class="entry_cont">
17767 <td class="entry_details" colspan="6">
17768 <p>The output streams must maintain square pixels at all
17769 times,<wbr/> no matter what the relative aspect ratios of the
17770 crop region and the stream are.<wbr/> Negative values for
17771 corner are allowed for raw output if full pixel array is
17772 larger than active pixel array.<wbr/> Width and height may be
17773 rounded to nearest larger supportable width,<wbr/> especially
17774 for raw output,<wbr/> where only a few fixed scales may be
17775 possible.<wbr/></p>
17776 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
17777 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
17780 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
17781 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
17782 <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>
17784 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
17785 cropped pixel area by (tx,<wbr/> ty),<wbr/>
17786 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
17787 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
17788 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
17789 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
17790 <li>Scale the width and height of requested cropRegion with scaling factor of
17791 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
17792 respectively.<wbr/>
17793 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
17794 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
17795 follow the general cropping rule for this new cropRegion and effective active
17796 array size.<wbr/></li>
17800 <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/>
17801 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
17802 The reported cropRegion may be slightly different with the requested cropRegion since
17803 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
17804 hardware limitations.<wbr/></p>
17807 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17811 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17812 <!-- end of entry -->
17816 <!-- end of kind -->
17818 <tr><td colspan="7" class="kind">static</td></tr>
17820 <thead class="entries_header">
17822 <th class="th_name">Property Name</th>
17823 <th class="th_type">Type</th>
17824 <th class="th_description">Description</th>
17825 <th class="th_units">Units</th>
17826 <th class="th_range">Range</th>
17827 <th class="th_hal_version">Initial HIDL HAL version</th>
17828 <th class="th_tags">Tags</th>
17843 <tr class="entry" id="static_android.scaler.availableFormats">
17844 <td class="entry_name
17845 entry_name_deprecated
17847 android.<wbr/>scaler.<wbr/>available<wbr/>Formats
17849 <td class="entry_type">
17850 <span class="entry_type_name entry_type_name_enum">int32</span>
17851 <span class="entry_type_container">x</span>
17853 <span class="entry_type_array">
17856 <span class="entry_type_visibility"> [hidden as imageFormat]</span>
17860 <span class="entry_type_deprecated">[deprecated] </span>
17863 <ul class="entry_type_enum">
17865 <span class="entry_type_enum_name">RAW16 (v3.2)</span>
17866 <span class="entry_type_enum_optional">[optional]</span>
17867 <span class="entry_type_enum_value">0x20</span>
17868 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
17869 buffers with 16-bit pixels.<wbr/></p>
17870 <p>Buffers of this format are typically expected to have a
17871 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
17872 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
17873 CFAs that are not representable by a format in
17874 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
17875 use this format.<wbr/></p>
17876 <p>Buffers of this format will also follow the constraints given for
17877 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
17878 <p>This format is intended to give users access to the full contents
17879 of the buffers coming directly from the image sensor prior to any
17880 cropping or scaling operations,<wbr/> and all coordinate systems for
17881 metadata used for this format are relative to the size of the
17882 active region of the image sensor before any geometric distortion
17883 correction has been applied (i.<wbr/>e.<wbr/>
17884 <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
17885 dimensions for this format are limited to the full dimensions of
17886 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
17887 <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
17888 only supported output size).<wbr/></p>
17889 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
17890 the full set of performance guarantees.<wbr/></p></span>
17893 <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
17894 <span class="entry_type_enum_optional">[optional]</span>
17895 <span class="entry_type_enum_value">0x24</span>
17896 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
17897 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
17898 as referred in public API) is a format for raw image buffers
17899 coming from an image sensor.<wbr/></p>
17900 <p>The actual structure of buffers of this format is
17901 platform-specific,<wbr/> but must follow several constraints:</p>
17903 <li>No image post-processing operations may have been applied to
17904 buffers of this type.<wbr/> These buffers contain raw image data coming
17905 directly from the image sensor.<wbr/></li>
17906 <li>If a buffer of this format is passed to the camera device for
17907 reprocessing,<wbr/> the resulting images will be identical to the images
17908 produced if the buffer had come directly from the sensor and was
17909 processed with the same settings.<wbr/></li>
17911 <p>The intended use for this format is to allow access to the native
17912 raw format buffers coming directly from the camera sensor without
17913 any additional conversions or decrease in framerate.<wbr/></p>
17914 <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
17915 performance guarantees.<wbr/></p></span>
17918 <span class="entry_type_enum_name">YV12 (v3.2)</span>
17919 <span class="entry_type_enum_optional">[optional]</span>
17920 <span class="entry_type_enum_value">0x32315659</span>
17921 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
17924 <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
17925 <span class="entry_type_enum_optional">[optional]</span>
17926 <span class="entry_type_enum_value">0x11</span>
17927 <span class="entry_type_enum_notes"><p>NV21</p></span>
17930 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
17931 <span class="entry_type_enum_value">0x22</span>
17932 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
17935 <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
17936 <span class="entry_type_enum_value">0x23</span>
17937 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
17940 <span class="entry_type_enum_name">BLOB (v3.2)</span>
17941 <span class="entry_type_enum_value">0x21</span>
17942 <span class="entry_type_enum_notes"><p>JPEG format</p></span>
17946 </td> <!-- entry_type -->
17948 <td class="entry_description">
17949 <p>The list of image formats that are supported by this
17950 camera device for output streams.<wbr/></p>
17953 <td class="entry_units">
17956 <td class="entry_range">
17957 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17960 <td class="entry_hal_version">
17964 <td class="entry_tags">
17965 <ul class="entry_tags">
17966 <li><a href="#tag_BC">BC</a></li>
17971 <tr class="entries_header">
17972 <th class="th_details" colspan="6">Details</th>
17974 <tr class="entry_cont">
17975 <td class="entry_details" colspan="6">
17976 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
17977 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
17981 <tr class="entries_header">
17982 <th class="th_details" colspan="6">HAL Implementation Details</th>
17984 <tr class="entry_cont">
17985 <td class="entry_details" colspan="6">
17986 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
17987 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
17988 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
17989 gralloc module will select a format based on the usage flags provided
17990 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
17991 usually used by preview and recording streams,<wbr/> where the application doesn't
17992 need access the image data.<wbr/></p>
17993 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
17994 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
17995 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
17996 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
17997 recommended that any information used by the camera device when
17998 processing images is fully expressed by the result metadata
17999 for that image buffer.<wbr/></p>
18003 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18004 <!-- end of entry -->
18007 <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
18008 <td class="entry_name
18009 entry_name_deprecated
18011 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
18013 <td class="entry_type">
18014 <span class="entry_type_name">int64</span>
18015 <span class="entry_type_container">x</span>
18017 <span class="entry_type_array">
18020 <span class="entry_type_visibility"> [hidden]</span>
18024 <span class="entry_type_deprecated">[deprecated] </span>
18028 </td> <!-- entry_type -->
18030 <td class="entry_description">
18031 <p>The minimum frame duration that is supported
18032 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
18035 <td class="entry_units">
18039 <td class="entry_range">
18040 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18041 <p>TODO: Remove property.<wbr/></p>
18044 <td class="entry_hal_version">
18048 <td class="entry_tags">
18049 <ul class="entry_tags">
18050 <li><a href="#tag_BC">BC</a></li>
18055 <tr class="entries_header">
18056 <th class="th_details" colspan="6">Details</th>
18058 <tr class="entry_cont">
18059 <td class="entry_details" colspan="6">
18060 <p>This corresponds to the minimum steady-state frame duration when only
18061 that JPEG stream is active and captured in a burst,<wbr/> with all
18062 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
18063 <p>When multiple streams are configured,<wbr/> the minimum
18064 frame duration will be >= max(individual stream min
18070 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18071 <!-- end of entry -->
18074 <tr class="entry" id="static_android.scaler.availableJpegSizes">
18075 <td class="entry_name
18076 entry_name_deprecated
18078 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
18080 <td class="entry_type">
18081 <span class="entry_type_name">int32</span>
18082 <span class="entry_type_container">x</span>
18084 <span class="entry_type_array">
18087 <span class="entry_type_visibility"> [hidden as size]</span>
18091 <span class="entry_type_deprecated">[deprecated] </span>
18095 </td> <!-- entry_type -->
18097 <td class="entry_description">
18098 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
18101 <td class="entry_units">
18104 <td class="entry_range">
18105 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18106 <p>TODO: Remove property.<wbr/></p>
18109 <td class="entry_hal_version">
18113 <td class="entry_tags">
18114 <ul class="entry_tags">
18115 <li><a href="#tag_BC">BC</a></li>
18120 <tr class="entries_header">
18121 <th class="th_details" colspan="6">Details</th>
18123 <tr class="entry_cont">
18124 <td class="entry_details" colspan="6">
18125 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
18126 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>
18130 <tr class="entries_header">
18131 <th class="th_details" colspan="6">HAL Implementation Details</th>
18133 <tr class="entry_cont">
18134 <td class="entry_details" colspan="6">
18135 <p>The HAL must include sensor maximum resolution
18136 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
18137 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
18141 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18142 <!-- end of entry -->
18145 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
18146 <td class="entry_name
18148 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
18150 <td class="entry_type">
18151 <span class="entry_type_name">float</span>
18153 <span class="entry_type_visibility"> [public]</span>
18156 <span class="entry_type_hwlevel">[legacy] </span>
18161 </td> <!-- entry_type -->
18163 <td class="entry_description">
18164 <p>The maximum ratio between both active area width
18165 and crop region width,<wbr/> and active area height and
18166 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18169 <td class="entry_units">
18173 <td class="entry_range">
18177 <td class="entry_hal_version">
18181 <td class="entry_tags">
18182 <ul class="entry_tags">
18183 <li><a href="#tag_BC">BC</a></li>
18188 <tr class="entries_header">
18189 <th class="th_details" colspan="6">Details</th>
18191 <tr class="entry_cont">
18192 <td class="entry_details" colspan="6">
18193 <p>This represents the maximum amount of zooming possible by
18194 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
18195 window size.<wbr/></p>
18196 <p>Crop regions that have a width or height that is smaller
18197 than this ratio allows will be rounded up to the minimum
18198 allowed size by the camera device.<wbr/></p>
18203 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18204 <!-- end of entry -->
18207 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
18208 <td class="entry_name
18209 entry_name_deprecated
18211 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
18213 <td class="entry_type">
18214 <span class="entry_type_name">int64</span>
18215 <span class="entry_type_container">x</span>
18217 <span class="entry_type_array">
18220 <span class="entry_type_visibility"> [hidden]</span>
18224 <span class="entry_type_deprecated">[deprecated] </span>
18228 </td> <!-- entry_type -->
18230 <td class="entry_description">
18231 <p>For each available processed output size (defined in
18232 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
18233 minimum supportable frame duration for that size.<wbr/></p>
18236 <td class="entry_units">
18240 <td class="entry_range">
18241 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18244 <td class="entry_hal_version">
18248 <td class="entry_tags">
18249 <ul class="entry_tags">
18250 <li><a href="#tag_BC">BC</a></li>
18255 <tr class="entries_header">
18256 <th class="th_details" colspan="6">Details</th>
18258 <tr class="entry_cont">
18259 <td class="entry_details" colspan="6">
18260 <p>This should correspond to the frame duration when only that processed
18261 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18262 set to FAST.<wbr/></p>
18263 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
18264 be >= max(individual stream min durations).<wbr/></p>
18269 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18270 <!-- end of entry -->
18273 <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18274 <td class="entry_name
18275 entry_name_deprecated
18277 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18279 <td class="entry_type">
18280 <span class="entry_type_name">int32</span>
18281 <span class="entry_type_container">x</span>
18283 <span class="entry_type_array">
18286 <span class="entry_type_visibility"> [hidden as size]</span>
18290 <span class="entry_type_deprecated">[deprecated] </span>
18294 </td> <!-- entry_type -->
18296 <td class="entry_description">
18297 <p>The resolutions available for use with
18298 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18299 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18300 encoders.<wbr/></p>
18303 <td class="entry_units">
18306 <td class="entry_range">
18307 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18310 <td class="entry_hal_version">
18314 <td class="entry_tags">
18315 <ul class="entry_tags">
18316 <li><a href="#tag_BC">BC</a></li>
18321 <tr class="entries_header">
18322 <th class="th_details" colspan="6">Details</th>
18324 <tr class="entry_cont">
18325 <td class="entry_details" colspan="6">
18326 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18327 <p>For a given use case,<wbr/> the actual maximum supported resolution
18328 may be lower than what is listed here,<wbr/> depending on the destination
18329 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18330 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18331 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18332 can provide.<wbr/></p>
18333 <p>Please reference the documentation for the image data destination to
18334 check if it limits the maximum size for image data.<wbr/></p>
18338 <tr class="entries_header">
18339 <th class="th_details" colspan="6">HAL Implementation Details</th>
18341 <tr class="entry_cont">
18342 <td class="entry_details" colspan="6">
18343 <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/>
18344 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>
18345 and each below resolution if it is smaller than or equal to the sensor
18346 maximum resolution (if they are not listed in JPEG sizes already):</p>
18348 <li>240p (320 x 240)</li>
18349 <li>480p (640 x 480)</li>
18350 <li>720p (1280 x 720)</li>
18351 <li>1080p (1920 x 1080)</li>
18353 <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/>
18354 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18358 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18359 <!-- end of entry -->
18362 <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18363 <td class="entry_name
18364 entry_name_deprecated
18366 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18368 <td class="entry_type">
18369 <span class="entry_type_name">int64</span>
18370 <span class="entry_type_container">x</span>
18372 <span class="entry_type_array">
18375 <span class="entry_type_visibility"> [system]</span>
18379 <span class="entry_type_deprecated">[deprecated] </span>
18383 </td> <!-- entry_type -->
18385 <td class="entry_description">
18386 <p>For each available raw output size (defined in
18387 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18388 supportable frame duration for that size.<wbr/></p>
18391 <td class="entry_units">
18395 <td class="entry_range">
18396 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18399 <td class="entry_hal_version">
18403 <td class="entry_tags">
18404 <ul class="entry_tags">
18405 <li><a href="#tag_BC">BC</a></li>
18410 <tr class="entries_header">
18411 <th class="th_details" colspan="6">Details</th>
18413 <tr class="entry_cont">
18414 <td class="entry_details" colspan="6">
18415 <p>Should correspond to the frame duration when only the raw stream is
18417 <p>When multiple streams are configured,<wbr/> the minimum
18418 frame duration will be >= max(individual stream min
18424 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18425 <!-- end of entry -->
18428 <tr class="entry" id="static_android.scaler.availableRawSizes">
18429 <td class="entry_name
18430 entry_name_deprecated
18432 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18434 <td class="entry_type">
18435 <span class="entry_type_name">int32</span>
18436 <span class="entry_type_container">x</span>
18438 <span class="entry_type_array">
18441 <span class="entry_type_visibility"> [system as size]</span>
18445 <span class="entry_type_deprecated">[deprecated] </span>
18449 </td> <!-- entry_type -->
18451 <td class="entry_description">
18452 <p>The resolutions available for use with raw
18453 sensor output streams,<wbr/> listed as width,<wbr/>
18457 <td class="entry_units">
18460 <td class="entry_range">
18461 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18464 <td class="entry_hal_version">
18468 <td class="entry_tags">
18474 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18475 <!-- end of entry -->
18478 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18479 <td class="entry_name
18481 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18483 <td class="entry_type">
18484 <span class="entry_type_name">int32</span>
18486 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18493 </td> <!-- entry_type -->
18495 <td class="entry_description">
18496 <p>The mapping of image formats that are supported by this
18497 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18500 <td class="entry_units">
18503 <td class="entry_range">
18506 <td class="entry_hal_version">
18510 <td class="entry_tags">
18511 <ul class="entry_tags">
18512 <li><a href="#tag_REPROC">REPROC</a></li>
18517 <tr class="entries_header">
18518 <th class="th_details" colspan="6">Details</th>
18520 <tr class="entry_cont">
18521 <td class="entry_details" colspan="6">
18522 <p>All camera devices with at least 1
18523 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18524 available input format.<wbr/></p>
18525 <p>The camera device will support the following map of formats,<wbr/>
18526 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18530 <th align="left">Input Format</th>
18531 <th align="left">Output Format</th>
18532 <th align="left">Capability</th>
18537 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18538 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18539 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18542 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18543 <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>
18544 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18547 <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>
18548 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18549 <td align="left">YUV_<wbr/>REPROCESSING</td>
18552 <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>
18553 <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>
18554 <td align="left">YUV_<wbr/>REPROCESSING</td>
18558 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A
18559 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18560 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18561 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18562 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>
18563 <p>Attempting to configure an input stream with output streams not
18564 listed as available in this map is not valid.<wbr/></p>
18568 <tr class="entries_header">
18569 <th class="th_details" colspan="6">HAL Implementation Details</th>
18571 <tr class="entry_cont">
18572 <td class="entry_details" colspan="6">
18573 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18574 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18575 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18576 the actual format by using the gralloc usage flags.<wbr/>
18577 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18578 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18579 See camera3.<wbr/>h for more details.<wbr/></p>
18580 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18581 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18582 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18583 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18584 <p>A code sample to read/<wbr/>write this encoding (with a device that
18585 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18586 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18587 <pre><code>//<wbr/> reading
18588 int32_<wbr/>t* contents = &entry.<wbr/>i32[0];
18589 for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) {
18590 int32_<wbr/>t format = contents[i++];
18591 int32_<wbr/>t length = contents[i++];
18592 int32_<wbr/>t output_<wbr/>formats[length];
18593 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/>
18594 length * sizeof(int32_<wbr/>t));
18598 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18599 int32_<wbr/>t[] contents = {
18600 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18601 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18603 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/>
18604 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry);
18606 <p>If the HAL claims to support any of the capabilities listed in the
18607 above details,<wbr/> then it must also support all the input-output
18608 combinations listed for that capability.<wbr/> It can optionally support
18609 additional formats if it so chooses.<wbr/></p>
18613 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18614 <!-- end of entry -->
18617 <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18618 <td class="entry_name
18620 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18622 <td class="entry_type">
18623 <span class="entry_type_name entry_type_name_enum">int32</span>
18624 <span class="entry_type_container">x</span>
18626 <span class="entry_type_array">
18629 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18632 <span class="entry_type_hwlevel">[legacy] </span>
18636 <ul class="entry_type_enum">
18638 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
18641 <span class="entry_type_enum_name">INPUT (v3.2)</span>
18645 </td> <!-- entry_type -->
18647 <td class="entry_description">
18648 <p>The available stream configurations that this
18649 camera device supports
18650 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
18653 <td class="entry_units">
18656 <td class="entry_range">
18659 <td class="entry_hal_version">
18663 <td class="entry_tags">
18667 <tr class="entries_header">
18668 <th class="th_details" colspan="6">Details</th>
18670 <tr class="entry_cont">
18671 <td class="entry_details" colspan="6">
18672 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
18674 <p>For a given use case,<wbr/> the actual maximum supported resolution
18675 may be lower than what is listed here,<wbr/> depending on the destination
18676 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18677 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18678 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18679 can provide.<wbr/></p>
18680 <p>Please reference the documentation for the image data destination to
18681 check if it limits the maximum size for image data.<wbr/></p>
18682 <p>Not all output formats may be supported in a configuration with
18683 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18684 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18685 <p>The following table describes the minimum required output stream
18686 configurations based on the hardware level
18687 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
18691 <th align="center">Format</th>
18692 <th align="center">Size</th>
18693 <th align="center">Hardware Level</th>
18694 <th align="center">Notes</th>
18699 <td align="center">JPEG</td>
18700 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
18701 <td align="center">Any</td>
18702 <td align="center"></td>
18705 <td align="center">JPEG</td>
18706 <td align="center">1920x1080 (1080p)</td>
18707 <td align="center">Any</td>
18708 <td align="center">if 1080p <= activeArraySize</td>
18711 <td align="center">JPEG</td>
18712 <td align="center">1280x720 (720)</td>
18713 <td align="center">Any</td>
18714 <td align="center">if 720p <= activeArraySize</td>
18717 <td align="center">JPEG</td>
18718 <td align="center">640x480 (480p)</td>
18719 <td align="center">Any</td>
18720 <td align="center">if 480p <= activeArraySize</td>
18723 <td align="center">JPEG</td>
18724 <td align="center">320x240 (240p)</td>
18725 <td align="center">Any</td>
18726 <td align="center">if 240p <= activeArraySize</td>
18729 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18730 <td align="center">all output sizes available for JPEG</td>
18731 <td align="center">FULL</td>
18732 <td align="center"></td>
18735 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18736 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18737 <td align="center">LIMITED</td>
18738 <td align="center"></td>
18741 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
18742 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18743 <td align="center">Any</td>
18744 <td align="center"></td>
18748 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
18749 mandatory stream configurations on a per-capability basis.<wbr/></p>
18753 <tr class="entries_header">
18754 <th class="th_details" colspan="6">HAL Implementation Details</th>
18756 <tr class="entry_cont">
18757 <td class="entry_details" colspan="6">
18758 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18759 of sensor maximum resolution for JPEG formats (regardless of hardware
18761 <p>(The following is a rewording of the above required table):</p>
18762 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18764 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18765 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18766 (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/>
18767 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18768 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18769 the dimensions being a multiple of 16.<wbr/></li>
18771 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18772 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
18773 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18774 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18775 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18776 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18777 3264x2448.<wbr/></p>
18778 <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/>
18779 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18780 here as output streams.<wbr/></p>
18781 <p>It must also include each below resolution if it is smaller than or
18782 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18783 formats),<wbr/> as output streams:</p>
18785 <li>240p (320 x 240)</li>
18786 <li>480p (640 x 480)</li>
18787 <li>720p (1280 x 720)</li>
18788 <li>1080p (1920 x 1080)</li>
18790 <p>For LIMITED capability devices
18791 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18792 the HAL only has to list up to the maximum video size
18793 supported by the device.<wbr/></p>
18794 <p>Regardless of hardware level,<wbr/> every output resolution available for
18795 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18796 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18798 <li>availableFormats</li>
18799 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18804 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18805 <!-- end of entry -->
18808 <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
18809 <td class="entry_name
18811 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
18813 <td class="entry_type">
18814 <span class="entry_type_name">int64</span>
18815 <span class="entry_type_container">x</span>
18817 <span class="entry_type_array">
18820 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18823 <span class="entry_type_hwlevel">[legacy] </span>
18828 </td> <!-- entry_type -->
18830 <td class="entry_description">
18831 <p>This lists the minimum frame duration for each
18832 format/<wbr/>size combination.<wbr/></p>
18835 <td class="entry_units">
18836 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18839 <td class="entry_range">
18842 <td class="entry_hal_version">
18846 <td class="entry_tags">
18847 <ul class="entry_tags">
18848 <li><a href="#tag_V1">V1</a></li>
18853 <tr class="entries_header">
18854 <th class="th_details" colspan="6">Details</th>
18856 <tr class="entry_cont">
18857 <td class="entry_details" colspan="6">
18858 <p>This should correspond to the frame duration when only that
18859 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18860 set to either OFF or FAST.<wbr/></p>
18861 <p>When multiple streams are used in a request,<wbr/> the minimum frame
18862 duration will be max(individual stream min durations).<wbr/></p>
18863 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
18864 is the same regardless of whether the stream is input or output.<wbr/></p>
18865 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
18866 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
18867 calculating the max frame rate.<wbr/></p>
18872 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18873 <!-- end of entry -->
18876 <tr class="entry" id="static_android.scaler.availableStallDurations">
18877 <td class="entry_name
18879 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
18881 <td class="entry_type">
18882 <span class="entry_type_name">int64</span>
18883 <span class="entry_type_container">x</span>
18885 <span class="entry_type_array">
18888 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18891 <span class="entry_type_hwlevel">[legacy] </span>
18896 </td> <!-- entry_type -->
18898 <td class="entry_description">
18899 <p>This lists the maximum stall duration for each
18900 output format/<wbr/>size combination.<wbr/></p>
18903 <td class="entry_units">
18904 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18907 <td class="entry_range">
18910 <td class="entry_hal_version">
18914 <td class="entry_tags">
18915 <ul class="entry_tags">
18916 <li><a href="#tag_V1">V1</a></li>
18921 <tr class="entries_header">
18922 <th class="th_details" colspan="6">Details</th>
18924 <tr class="entry_cont">
18925 <td class="entry_details" colspan="6">
18926 <p>A stall duration is how much extra time would get added
18927 to the normal minimum frame duration for a repeating request
18928 that has streams with non-zero stall.<wbr/></p>
18929 <p>For example,<wbr/> consider JPEG captures which have the following
18930 characteristics:</p>
18932 <li>JPEG streams act like processed YUV streams in requests for which
18933 they are not included; in requests in which they are directly
18934 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
18935 JPEG stream requires the underlying YUV data to always be ready for
18936 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
18937 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
18938 <li>The JPEG processor can run concurrently to the rest of the camera
18939 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
18941 <p>In other words,<wbr/> using a repeating YUV request would result
18942 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
18943 JPEG request is submitted periodically,<wbr/> the frame rate will stay
18944 at 30 FPS (as long as we wait for the previous JPEG to return each
18945 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
18946 the frame rate will drop from 30 FPS.<wbr/></p>
18947 <p>In general,<wbr/> submitting a new request with a non-0 stall time
18948 stream will <em>not</em> cause a frame rate drop unless there are still
18949 outstanding buffers for that stream from previous requests.<wbr/></p>
18950 <p>Submitting a repeating request with streams (call this <code>S</code>)
18951 is the same as setting the minimum frame duration from
18952 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
18953 the maximum stall duration for <code>S</code>.<wbr/></p>
18954 <p>If interleaving requests with and without a stall duration,<wbr/>
18955 a request will stall by the maximum of the remaining times
18956 for each can-stall stream with outstanding buffers.<wbr/></p>
18957 <p>This means that a stalling request will not have an exposure start
18958 until the stall has completed.<wbr/></p>
18959 <p>This should correspond to the stall duration when only that stream is
18960 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
18961 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
18962 effectively results in an indeterminate stall duration for all
18963 streams in a request (the regular stall calculation rules are
18964 ignored).<wbr/></p>
18965 <p>The following formats may always have a stall duration:</p>
18967 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
18968 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
18970 <p>The following formats will never have a stall duration:</p>
18972 <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>
18973 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
18974 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
18976 <p>All other formats may or may not have an allowed stall duration on
18977 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
18978 for more details.<wbr/></p>
18979 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
18980 calculating the max frame rate (absent stalls).<wbr/></p>
18984 <tr class="entries_header">
18985 <th class="th_details" colspan="6">HAL Implementation Details</th>
18987 <tr class="entry_cont">
18988 <td class="entry_details" colspan="6">
18989 <p>If possible,<wbr/> it is recommended that all non-JPEG formats
18990 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
18991 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
18995 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18996 <!-- end of entry -->
18999 <tr class="entry" id="static_android.scaler.streamConfigurationMap">
19000 <td class="entry_name
19002 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
19004 <td class="entry_type">
19005 <span class="entry_type_name">int32</span>
19007 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
19009 <span class="entry_type_synthetic">[synthetic] </span>
19011 <span class="entry_type_hwlevel">[legacy] </span>
19016 </td> <!-- entry_type -->
19018 <td class="entry_description">
19019 <p>The available stream configurations that this
19020 camera device supports; also includes the minimum frame durations
19021 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
19024 <td class="entry_units">
19027 <td class="entry_range">
19030 <td class="entry_hal_version">
19034 <td class="entry_tags">
19038 <tr class="entries_header">
19039 <th class="th_details" colspan="6">Details</th>
19041 <tr class="entry_cont">
19042 <td class="entry_details" colspan="6">
19043 <p>All camera devices will support sensor maximum resolution (defined by
19044 <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>
19045 <p>For a given use case,<wbr/> the actual maximum supported resolution
19046 may be lower than what is listed here,<wbr/> depending on the destination
19047 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19048 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19049 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19050 can provide.<wbr/></p>
19051 <p>Please reference the documentation for the image data destination to
19052 check if it limits the maximum size for image data.<wbr/></p>
19053 <p>The following table describes the minimum required output stream
19054 configurations based on the hardware level
19055 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19059 <th align="center">Format</th>
19060 <th align="center">Size</th>
19061 <th align="center">Hardware Level</th>
19062 <th align="center">Notes</th>
19067 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19068 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
19069 <td align="center">Any</td>
19070 <td align="center"></td>
19073 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19074 <td align="center">1920x1080 (1080p)</td>
19075 <td align="center">Any</td>
19076 <td align="center">if 1080p <= activeArraySize</td>
19079 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19080 <td align="center">1280x720 (720p)</td>
19081 <td align="center">Any</td>
19082 <td align="center">if 720p <= activeArraySize</td>
19085 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19086 <td align="center">640x480 (480p)</td>
19087 <td align="center">Any</td>
19088 <td align="center">if 480p <= activeArraySize</td>
19091 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19092 <td align="center">320x240 (240p)</td>
19093 <td align="center">Any</td>
19094 <td align="center">if 240p <= activeArraySize</td>
19097 <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>
19098 <td align="center">all output sizes available for JPEG</td>
19099 <td align="center">FULL</td>
19100 <td align="center"></td>
19103 <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>
19104 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19105 <td align="center">LIMITED</td>
19106 <td align="center"></td>
19109 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19110 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19111 <td align="center">Any</td>
19112 <td align="center"></td>
19116 <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
19117 stream configurations on a per-capability basis.<wbr/></p>
19118 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19120 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19121 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19122 (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/>
19123 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19124 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19125 the dimensions being a multiple of 16.<wbr/>
19126 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19127 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
19128 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19129 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19130 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19131 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19132 3264x2448.<wbr/></li>
19137 <tr class="entries_header">
19138 <th class="th_details" colspan="6">HAL Implementation Details</th>
19140 <tr class="entry_cont">
19141 <td class="entry_details" colspan="6">
19142 <p>Do not set this property directly
19143 (it is synthetic and will not be available at the HAL layer);
19144 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
19145 <p>Not all output formats may be supported in a configuration with
19146 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19147 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19148 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19149 of sensor maximum resolution for JPEG formats (regardless of hardware
19151 <p>(The following is a rewording of the above required table):</p>
19152 <p>The HAL must include sensor maximum resolution (defined by
19153 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
19154 <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/>
19155 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19156 here as output streams.<wbr/></p>
19157 <p>It must also include each below resolution if it is smaller than or
19158 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19159 formats),<wbr/> as output streams:</p>
19161 <li>240p (320 x 240)</li>
19162 <li>480p (640 x 480)</li>
19163 <li>720p (1280 x 720)</li>
19164 <li>1080p (1920 x 1080)</li>
19166 <p>For LIMITED capability devices
19167 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19168 the HAL only has to list up to the maximum video size
19169 supported by the device.<wbr/></p>
19170 <p>Regardless of hardware level,<wbr/> every output resolution available for
19171 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19172 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19174 <li>availableFormats</li>
19175 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19180 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19181 <!-- end of entry -->
19184 <tr class="entry" id="static_android.scaler.croppingType">
19185 <td class="entry_name
19187 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
19189 <td class="entry_type">
19190 <span class="entry_type_name entry_type_name_enum">byte</span>
19192 <span class="entry_type_visibility"> [public]</span>
19195 <span class="entry_type_hwlevel">[legacy] </span>
19199 <ul class="entry_type_enum">
19201 <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
19202 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
19205 <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
19206 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
19210 </td> <!-- entry_type -->
19212 <td class="entry_description">
19213 <p>The crop type that this camera device supports.<wbr/></p>
19216 <td class="entry_units">
19219 <td class="entry_range">
19222 <td class="entry_hal_version">
19226 <td class="entry_tags">
19230 <tr class="entries_header">
19231 <th class="th_details" colspan="6">Details</th>
19233 <tr class="entry_cont">
19234 <td class="entry_details" colspan="6">
19235 <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
19236 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
19237 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>)
19238 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
19239 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19240 <p>Camera devices that support FREEFORM cropping will support any crop region that
19241 is inside of the active array.<wbr/> The camera device will apply the same crop region and
19242 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>
19243 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
19248 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19249 <!-- end of entry -->
19253 <!-- end of kind -->
19255 <tr><td colspan="7" class="kind">dynamic</td></tr>
19257 <thead class="entries_header">
19259 <th class="th_name">Property Name</th>
19260 <th class="th_type">Type</th>
19261 <th class="th_description">Description</th>
19262 <th class="th_units">Units</th>
19263 <th class="th_range">Range</th>
19264 <th class="th_hal_version">Initial HIDL HAL version</th>
19265 <th class="th_tags">Tags</th>
19280 <tr class="entry" id="dynamic_android.scaler.cropRegion">
19281 <td class="entry_name
19283 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19285 <td class="entry_type">
19286 <span class="entry_type_name">int32</span>
19287 <span class="entry_type_container">x</span>
19289 <span class="entry_type_array">
19292 <span class="entry_type_visibility"> [public as rectangle]</span>
19295 <span class="entry_type_hwlevel">[legacy] </span>
19300 </td> <!-- entry_type -->
19302 <td class="entry_description">
19303 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19306 <td class="entry_units">
19307 Pixel coordinates relative to
19308 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19311 <td class="entry_range">
19314 <td class="entry_hal_version">
19318 <td class="entry_tags">
19319 <ul class="entry_tags">
19320 <li><a href="#tag_BC">BC</a></li>
19325 <tr class="entries_header">
19326 <th class="th_details" colspan="6">Details</th>
19328 <tr class="entry_cont">
19329 <td class="entry_details" colspan="6">
19330 <p>This control can be used to implement digital zoom.<wbr/></p>
19331 <p>The crop region coordinate system is based off
19332 <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
19333 top-left corner of the sensor active array.<wbr/></p>
19334 <p>Output streams use this rectangle to produce their output,<wbr/>
19335 cropping to a smaller region if necessary to maintain the
19336 stream's aspect ratio,<wbr/> then scaling the sensor input to
19337 match the output's configured resolution.<wbr/></p>
19338 <p>The crop region is applied after the RAW to other color
19339 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19340 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19341 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19342 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19343 be done to maximize the final pixel area of the stream.<wbr/></p>
19344 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19345 ratio,<wbr/> then 4:3 streams will use the exact crop
19346 region.<wbr/> 16:9 streams will further crop vertically
19347 (letterbox).<wbr/></p>
19348 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19349 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19350 streams will match exactly.<wbr/> These additional crops will
19351 be centered within the crop region.<wbr/></p>
19352 <p>The width and height of the crop region cannot
19353 be set to be smaller than
19354 <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
19355 <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>
19356 <p>The camera device may adjust the crop region to account
19357 for rounding and other hardware requirements; the final
19358 crop region used will be included in the output capture
19363 <tr class="entries_header">
19364 <th class="th_details" colspan="6">HAL Implementation Details</th>
19366 <tr class="entry_cont">
19367 <td class="entry_details" colspan="6">
19368 <p>The output streams must maintain square pixels at all
19369 times,<wbr/> no matter what the relative aspect ratios of the
19370 crop region and the stream are.<wbr/> Negative values for
19371 corner are allowed for raw output if full pixel array is
19372 larger than active pixel array.<wbr/> Width and height may be
19373 rounded to nearest larger supportable width,<wbr/> especially
19374 for raw output,<wbr/> where only a few fixed scales may be
19375 possible.<wbr/></p>
19376 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19377 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19380 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19381 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19382 <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>
19384 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19385 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19386 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19387 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19388 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19389 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19390 <li>Scale the width and height of requested cropRegion with scaling factor of
19391 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
19392 respectively.<wbr/>
19393 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19394 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19395 follow the general cropping rule for this new cropRegion and effective active
19396 array size.<wbr/></li>
19400 <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/>
19401 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19402 The reported cropRegion may be slightly different with the requested cropRegion since
19403 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19404 hardware limitations.<wbr/></p>
19407 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19411 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19412 <!-- end of entry -->
19416 <!-- end of kind -->
19419 <!-- end of section -->
19420 <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19423 <tr><td colspan="7" class="kind">controls</td></tr>
19425 <thead class="entries_header">
19427 <th class="th_name">Property Name</th>
19428 <th class="th_type">Type</th>
19429 <th class="th_description">Description</th>
19430 <th class="th_units">Units</th>
19431 <th class="th_range">Range</th>
19432 <th class="th_hal_version">Initial HIDL HAL version</th>
19433 <th class="th_tags">Tags</th>
19448 <tr class="entry" id="controls_android.sensor.exposureTime">
19449 <td class="entry_name
19451 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19453 <td class="entry_type">
19454 <span class="entry_type_name">int64</span>
19456 <span class="entry_type_visibility"> [public]</span>
19459 <span class="entry_type_hwlevel">[full] </span>
19464 </td> <!-- entry_type -->
19466 <td class="entry_description">
19467 <p>Duration each pixel is exposed to
19471 <td class="entry_units">
19475 <td class="entry_range">
19476 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19479 <td class="entry_hal_version">
19483 <td class="entry_tags">
19484 <ul class="entry_tags">
19485 <li><a href="#tag_V1">V1</a></li>
19490 <tr class="entries_header">
19491 <th class="th_details" colspan="6">Details</th>
19493 <tr class="entry_cont">
19494 <td class="entry_details" colspan="6">
19495 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19496 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19497 The final exposure time used will be available in the output capture result.<wbr/></p>
19498 <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
19499 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19504 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19505 <!-- end of entry -->
19508 <tr class="entry" id="controls_android.sensor.frameDuration">
19509 <td class="entry_name
19511 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19513 <td class="entry_type">
19514 <span class="entry_type_name">int64</span>
19516 <span class="entry_type_visibility"> [public]</span>
19519 <span class="entry_type_hwlevel">[full] </span>
19524 </td> <!-- entry_type -->
19526 <td class="entry_description">
19527 <p>Duration from start of frame exposure to
19528 start of next frame exposure.<wbr/></p>
19531 <td class="entry_units">
19535 <td class="entry_range">
19536 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>.<wbr/>
19537 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19540 <td class="entry_hal_version">
19544 <td class="entry_tags">
19545 <ul class="entry_tags">
19546 <li><a href="#tag_V1">V1</a></li>
19551 <tr class="entries_header">
19552 <th class="th_details" colspan="6">Details</th>
19554 <tr class="entry_cont">
19555 <td class="entry_details" colspan="6">
19556 <p>The maximum frame rate that can be supported by a camera subsystem is
19557 a function of many factors:</p>
19559 <li>Requested resolutions of output image streams</li>
19560 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19561 <li>The bandwidth of the imager interface</li>
19562 <li>The bandwidth of the various ISP processing blocks</li>
19564 <p>Since these factors can vary greatly between different ISPs and
19565 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19566 restrictions with as simple a model as possible.<wbr/></p>
19567 <p>The model presented has the following characteristics:</p>
19569 <li>The image sensor is always configured to output the smallest
19570 resolution possible given the application's requested output stream
19571 sizes.<wbr/> The smallest resolution is defined as being at least as large
19572 as the largest requested output stream size; the camera pipeline must
19573 never digitally upsample sensor data when the crop region covers the
19574 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19575 resolutions are configured,<wbr/> the sensor can provide a higher frame
19577 <li>Since any request may use any or all the currently configured
19578 output streams,<wbr/> the sensor and ISP must be configured to support
19579 scaling a single capture to all the streams at the same time.<wbr/> This
19580 means the camera pipeline must be ready to produce the largest
19581 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
19582 frame rate of a given configured stream set is governed only by the
19583 largest requested stream resolution.<wbr/></li>
19584 <li>Using more than one output stream in a request does not affect the
19585 frame duration.<wbr/></li>
19586 <li>Certain format-streams may need to do additional background processing
19587 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19588 can run concurrently to the rest of the camera pipeline,<wbr/> but
19589 cannot process more than 1 capture at a time.<wbr/></li>
19591 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19592 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19593 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19594 possible for a given stream configuration.<wbr/></p>
19595 <p>Specifically,<wbr/> the application can use the following rules to
19596 determine the minimum frame duration it can request from the camera
19599 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19600 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking it up in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
19601 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19602 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19603 out of all values in <code>F</code>.<wbr/> Let the streams used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
19605 <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>
19606 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19607 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19608 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19609 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19610 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19611 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19612 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19613 <p>For more details about stalling,<wbr/> see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
19614 <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
19615 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19619 <tr class="entries_header">
19620 <th class="th_details" colspan="6">HAL Implementation Details</th>
19622 <tr class="entry_cont">
19623 <td class="entry_details" colspan="6">
19624 <p>For more details about stalling,<wbr/> see
19625 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19629 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19630 <!-- end of entry -->
19633 <tr class="entry" id="controls_android.sensor.sensitivity">
19634 <td class="entry_name
19636 android.<wbr/>sensor.<wbr/>sensitivity
19638 <td class="entry_type">
19639 <span class="entry_type_name">int32</span>
19641 <span class="entry_type_visibility"> [public]</span>
19644 <span class="entry_type_hwlevel">[full] </span>
19649 </td> <!-- entry_type -->
19651 <td class="entry_description">
19652 <p>The amount of gain applied to sensor data
19653 before processing.<wbr/></p>
19656 <td class="entry_units">
19657 ISO arithmetic units
19660 <td class="entry_range">
19661 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
19664 <td class="entry_hal_version">
19668 <td class="entry_tags">
19669 <ul class="entry_tags">
19670 <li><a href="#tag_V1">V1</a></li>
19675 <tr class="entries_header">
19676 <th class="th_details" colspan="6">Details</th>
19678 <tr class="entry_cont">
19679 <td class="entry_details" colspan="6">
19680 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
19681 as defined in ISO 12232:2006.<wbr/></p>
19682 <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
19683 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
19684 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
19685 <p>If the camera device cannot apply the exact sensitivity
19686 requested,<wbr/> it will reduce the gain to the nearest supported
19687 value.<wbr/> The final sensitivity used will be available in the
19688 output capture result.<wbr/></p>
19689 <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
19690 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19694 <tr class="entries_header">
19695 <th class="th_details" colspan="6">HAL Implementation Details</th>
19697 <tr class="entry_cont">
19698 <td class="entry_details" colspan="6">
19699 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
19703 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19704 <!-- end of entry -->
19707 <tr class="entry" id="controls_android.sensor.testPatternData">
19708 <td class="entry_name
19710 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
19712 <td class="entry_type">
19713 <span class="entry_type_name">int32</span>
19714 <span class="entry_type_container">x</span>
19716 <span class="entry_type_array">
19719 <span class="entry_type_visibility"> [public]</span>
19726 </td> <!-- entry_type -->
19728 <td class="entry_description">
19729 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
19730 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
19733 <td class="entry_units">
19736 <td class="entry_range">
19739 <td class="entry_hal_version">
19743 <td class="entry_tags">
19747 <tr class="entries_header">
19748 <th class="th_details" colspan="6">Details</th>
19750 <tr class="entry_cont">
19751 <td class="entry_details" colspan="6">
19752 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
19753 The camera device then uses the most significant X bits
19754 that correspond to how many bits are in its Bayer raw sensor
19756 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
19757 10 most significant bits from each color channel.<wbr/></p>
19761 <tr class="entries_header">
19762 <th class="th_details" colspan="6">HAL Implementation Details</th>
19764 <tr class="entry_cont">
19765 <td class="entry_details" colspan="6">
19770 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19771 <!-- end of entry -->
19774 <tr class="entry" id="controls_android.sensor.testPatternMode">
19775 <td class="entry_name
19777 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
19779 <td class="entry_type">
19780 <span class="entry_type_name entry_type_name_enum">int32</span>
19782 <span class="entry_type_visibility"> [public]</span>
19788 <ul class="entry_type_enum">
19790 <span class="entry_type_enum_name">OFF (v3.2)</span>
19791 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
19792 device returns captures from the image sensor.<wbr/></p>
19793 <p>This is the default if the key is not set.<wbr/></p></span>
19796 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
19797 <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
19798 respective color channel provided in
19799 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
19800 <p>For example:</p>
19801 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19803 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
19804 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19806 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
19807 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
19810 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
19811 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
19812 <p>The vertical bars (left-to-right) are as follows:</p>
19814 <li>100% white</li>
19823 <p>In general the image would look like the following:</p>
19824 <pre><code>W Y C G M R B K
19829 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19830 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19831 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19833 (B = Blue,<wbr/> K = Black)
19835 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
19836 When this is not possible,<wbr/> the bar size should be rounded
19837 down to the nearest integer and the pattern can repeat
19838 on the right side.<wbr/></p>
19839 <p>Each bar's height must always take up the full sensor
19840 pixel array height.<wbr/></p>
19841 <p>Each pixel in this test pattern must be set to either
19842 0% intensity or 100% intensity.<wbr/></p></span>
19845 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
19846 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
19847 each bar should start at its specified color at the top,<wbr/>
19848 and fade to gray at the bottom.<wbr/></p>
19849 <p>Furthermore each bar is further subdivided into a left and
19850 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
19851 and the right half should have a quantized gradient.<wbr/></p>
19852 <p>In particular,<wbr/> the right half's should consist of blocks of the
19853 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
19854 <p>The least significant bits in the quantized gradient should
19855 be copied from the most significant bits of the smooth gradient.<wbr/></p>
19856 <p>The height of each bar should always be a multiple of 128.<wbr/>
19857 When this is not the case,<wbr/> the pattern should repeat at the bottom
19858 of the image.<wbr/></p></span>
19861 <span class="entry_type_enum_name">PN9 (v3.2)</span>
19862 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
19863 generated from a PN9 512-bit sequence (typically implemented
19864 in hardware with a linear feedback shift register).<wbr/></p>
19865 <p>The generator should be reset at the beginning of each frame,<wbr/>
19866 and thus each subsequent raw frame with this test pattern should
19867 be exactly the same as the last.<wbr/></p></span>
19870 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
19871 <span class="entry_type_enum_value">256</span>
19872 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
19873 available only on this camera device are at least this numeric
19875 <p>All of the custom test patterns will be static
19876 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
19880 </td> <!-- entry_type -->
19882 <td class="entry_description">
19883 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
19884 doing a real exposure from the camera.<wbr/></p>
19887 <td class="entry_units">
19890 <td class="entry_range">
19891 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
19894 <td class="entry_hal_version">
19898 <td class="entry_tags">
19902 <tr class="entries_header">
19903 <th class="th_details" colspan="6">Details</th>
19905 <tr class="entry_cont">
19906 <td class="entry_details" colspan="6">
19907 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
19908 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
19909 work as normal.<wbr/></p>
19910 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
19911 occur (and that the test pattern remain unmodified,<wbr/> since the flash
19912 would not actually affect it).<wbr/></p>
19913 <p>Defaults to OFF.<wbr/></p>
19917 <tr class="entries_header">
19918 <th class="th_details" colspan="6">HAL Implementation Details</th>
19920 <tr class="entry_cont">
19921 <td class="entry_details" colspan="6">
19922 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
19923 <p>The HAL may choose to substitute test patterns from the sensor
19924 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
19925 indistinguishable to the ISP whether the data came from the
19926 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
19930 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19931 <!-- end of entry -->
19935 <!-- end of kind -->
19937 <tr><td colspan="7" class="kind">static</td></tr>
19939 <thead class="entries_header">
19941 <th class="th_name">Property Name</th>
19942 <th class="th_type">Type</th>
19943 <th class="th_description">Description</th>
19944 <th class="th_units">Units</th>
19945 <th class="th_range">Range</th>
19946 <th class="th_hal_version">Initial HIDL HAL version</th>
19947 <th class="th_tags">Tags</th>
19964 <tr class="entry" id="static_android.sensor.info.activeArraySize">
19965 <td class="entry_name
19967 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19969 <td class="entry_type">
19970 <span class="entry_type_name">int32</span>
19971 <span class="entry_type_container">x</span>
19973 <span class="entry_type_array">
19976 <span class="entry_type_visibility"> [public as rectangle]</span>
19979 <span class="entry_type_hwlevel">[legacy] </span>
19982 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19985 </td> <!-- entry_type -->
19987 <td class="entry_description">
19988 <p>The area of the image sensor which corresponds to active pixels after any geometric
19989 distortion correction has been applied.<wbr/></p>
19992 <td class="entry_units">
19993 Pixel coordinates on the image sensor
19996 <td class="entry_range">
19999 <td class="entry_hal_version">
20003 <td class="entry_tags">
20004 <ul class="entry_tags">
20005 <li><a href="#tag_RAW">RAW</a></li>
20010 <tr class="entries_header">
20011 <th class="th_details" colspan="6">Details</th>
20013 <tr class="entry_cont">
20014 <td class="entry_details" colspan="6">
20015 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20016 the region that actually receives light from the scene) after any geometric correction
20017 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
20018 image output formats aside from the raw formats.<wbr/></p>
20019 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20020 the full pixel array,<wbr/> and the size of the full pixel array is given by
20021 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20022 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
20023 <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
20024 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
20025 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
20026 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
20027 resulting in scaling or cropping may have been applied.<wbr/></p>
20031 <tr class="entries_header">
20032 <th class="th_details" colspan="6">HAL Implementation Details</th>
20034 <tr class="entry_cont">
20035 <td class="entry_details" colspan="6">
20036 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20037 >= <code>(0,<wbr/>0)</code>.<wbr/>
20038 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>
20042 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20043 <!-- end of entry -->
20046 <tr class="entry" id="static_android.sensor.info.sensitivityRange">
20047 <td class="entry_name
20049 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
20051 <td class="entry_type">
20052 <span class="entry_type_name">int32</span>
20053 <span class="entry_type_container">x</span>
20055 <span class="entry_type_array">
20058 <span class="entry_type_visibility"> [public as rangeInt]</span>
20061 <span class="entry_type_hwlevel">[full] </span>
20064 <div class="entry_type_notes">Range of supported sensitivities</div>
20067 </td> <!-- entry_type -->
20069 <td class="entry_description">
20070 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
20071 camera device.<wbr/></p>
20074 <td class="entry_units">
20077 <td class="entry_range">
20078 <p>Min <= 100,<wbr/> Max >= 800</p>
20081 <td class="entry_hal_version">
20085 <td class="entry_tags">
20086 <ul class="entry_tags">
20087 <li><a href="#tag_BC">BC</a></li>
20088 <li><a href="#tag_V1">V1</a></li>
20093 <tr class="entries_header">
20094 <th class="th_details" colspan="6">Details</th>
20096 <tr class="entry_cont">
20097 <td class="entry_details" colspan="6">
20098 <p>The values are the standard ISO sensitivity values,<wbr/>
20099 as defined in ISO 12232:2006.<wbr/></p>
20104 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20105 <!-- end of entry -->
20108 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
20109 <td class="entry_name
20111 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
20113 <td class="entry_type">
20114 <span class="entry_type_name entry_type_name_enum">byte</span>
20116 <span class="entry_type_visibility"> [public]</span>
20119 <span class="entry_type_hwlevel">[full] </span>
20123 <ul class="entry_type_enum">
20125 <span class="entry_type_enum_name">RGGB (v3.2)</span>
20128 <span class="entry_type_enum_name">GRBG (v3.2)</span>
20131 <span class="entry_type_enum_name">GBRG (v3.2)</span>
20134 <span class="entry_type_enum_name">BGGR (v3.2)</span>
20137 <span class="entry_type_enum_name">RGB (v3.2)</span>
20138 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
20139 values for each pixel,<wbr/> instead of just 1 16-bit value
20140 per pixel.<wbr/></p></span>
20144 </td> <!-- entry_type -->
20146 <td class="entry_description">
20147 <p>The arrangement of color filters on sensor;
20148 represents the colors in the top-left 2x2 section of
20149 the sensor,<wbr/> in reading order.<wbr/></p>
20152 <td class="entry_units">
20155 <td class="entry_range">
20158 <td class="entry_hal_version">
20162 <td class="entry_tags">
20163 <ul class="entry_tags">
20164 <li><a href="#tag_RAW">RAW</a></li>
20171 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20172 <!-- end of entry -->
20175 <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
20176 <td class="entry_name
20178 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
20180 <td class="entry_type">
20181 <span class="entry_type_name">int64</span>
20182 <span class="entry_type_container">x</span>
20184 <span class="entry_type_array">
20187 <span class="entry_type_visibility"> [public as rangeLong]</span>
20190 <span class="entry_type_hwlevel">[full] </span>
20193 <div class="entry_type_notes">nanoseconds</div>
20196 </td> <!-- entry_type -->
20198 <td class="entry_description">
20199 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
20200 by this camera device.<wbr/></p>
20203 <td class="entry_units">
20207 <td class="entry_range">
20208 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
20209 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20210 the maximum exposure time will be greater than 100ms.<wbr/></p>
20213 <td class="entry_hal_version">
20217 <td class="entry_tags">
20218 <ul class="entry_tags">
20219 <li><a href="#tag_V1">V1</a></li>
20225 <tr class="entries_header">
20226 <th class="th_details" colspan="6">HAL Implementation Details</th>
20228 <tr class="entry_cont">
20229 <td class="entry_details" colspan="6">
20230 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20231 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
20236 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20237 <!-- end of entry -->
20240 <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
20241 <td class="entry_name
20243 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
20245 <td class="entry_type">
20246 <span class="entry_type_name">int64</span>
20248 <span class="entry_type_visibility"> [public]</span>
20251 <span class="entry_type_hwlevel">[full] </span>
20256 </td> <!-- entry_type -->
20258 <td class="entry_description">
20259 <p>The maximum possible frame duration (minimum frame rate) for
20260 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
20263 <td class="entry_units">
20267 <td class="entry_range">
20268 <p>For FULL capability devices
20269 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20272 <td class="entry_hal_version">
20276 <td class="entry_tags">
20277 <ul class="entry_tags">
20278 <li><a href="#tag_V1">V1</a></li>
20283 <tr class="entries_header">
20284 <th class="th_details" colspan="6">Details</th>
20286 <tr class="entry_cont">
20287 <td class="entry_details" colspan="6">
20288 <p>Attempting to use frame durations beyond the maximum will result in the frame
20289 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20290 durations.<wbr/></p>
20291 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20292 for the minimum frame duration values.<wbr/></p>
20296 <tr class="entries_header">
20297 <th class="th_details" colspan="6">HAL Implementation Details</th>
20299 <tr class="entry_cont">
20300 <td class="entry_details" colspan="6">
20301 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20302 The maximum of the range SHOULD be at least
20303 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20304 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20305 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20306 value (since exposure time overrides frame duration).<wbr/></p>
20307 <p>Available minimum frame durations for JPEG must be no greater
20308 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20309 minimum frame durations (for that respective size).<wbr/></p>
20310 <p>Since JPEG processing is considered offline and can take longer than
20311 a single uncompressed capture,<wbr/> refer to
20312 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20313 for details about encoding this scenario.<wbr/></p>
20317 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20318 <!-- end of entry -->
20321 <tr class="entry" id="static_android.sensor.info.physicalSize">
20322 <td class="entry_name
20324 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20326 <td class="entry_type">
20327 <span class="entry_type_name">float</span>
20328 <span class="entry_type_container">x</span>
20330 <span class="entry_type_array">
20333 <span class="entry_type_visibility"> [public as sizeF]</span>
20336 <span class="entry_type_hwlevel">[legacy] </span>
20339 <div class="entry_type_notes">width x height</div>
20342 </td> <!-- entry_type -->
20344 <td class="entry_description">
20345 <p>The physical dimensions of the full pixel
20349 <td class="entry_units">
20353 <td class="entry_range">
20356 <td class="entry_hal_version">
20360 <td class="entry_tags">
20361 <ul class="entry_tags">
20362 <li><a href="#tag_V1">V1</a></li>
20363 <li><a href="#tag_BC">BC</a></li>
20368 <tr class="entries_header">
20369 <th class="th_details" colspan="6">Details</th>
20371 <tr class="entry_cont">
20372 <td class="entry_details" colspan="6">
20373 <p>This is the physical size of the sensor pixel
20374 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20378 <tr class="entries_header">
20379 <th class="th_details" colspan="6">HAL Implementation Details</th>
20381 <tr class="entry_cont">
20382 <td class="entry_details" colspan="6">
20383 <p>Needed for FOV calculation for old API</p>
20387 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20388 <!-- end of entry -->
20391 <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20392 <td class="entry_name
20394 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20396 <td class="entry_type">
20397 <span class="entry_type_name">int32</span>
20398 <span class="entry_type_container">x</span>
20400 <span class="entry_type_array">
20403 <span class="entry_type_visibility"> [public as size]</span>
20406 <span class="entry_type_hwlevel">[legacy] </span>
20411 </td> <!-- entry_type -->
20413 <td class="entry_description">
20414 <p>Dimensions of the full pixel array,<wbr/> possibly
20415 including black calibration pixels.<wbr/></p>
20418 <td class="entry_units">
20422 <td class="entry_range">
20425 <td class="entry_hal_version">
20429 <td class="entry_tags">
20430 <ul class="entry_tags">
20431 <li><a href="#tag_RAW">RAW</a></li>
20432 <li><a href="#tag_BC">BC</a></li>
20437 <tr class="entries_header">
20438 <th class="th_details" colspan="6">Details</th>
20440 <tr class="entry_cont">
20441 <td class="entry_details" colspan="6">
20442 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20443 <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
20444 the raw buffers produced by this sensor.<wbr/></p>
20445 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20446 <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
20447 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20448 (this depends on whether or not the image sensor returns buffers containing pixels that
20449 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20450 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20451 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
20452 defines the rectangle of active pixels that will be included in processed image
20458 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20459 <!-- end of entry -->
20462 <tr class="entry" id="static_android.sensor.info.whiteLevel">
20463 <td class="entry_name
20465 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20467 <td class="entry_type">
20468 <span class="entry_type_name">int32</span>
20470 <span class="entry_type_visibility"> [public]</span>
20477 </td> <!-- entry_type -->
20479 <td class="entry_description">
20480 <p>Maximum raw value output by sensor.<wbr/></p>
20483 <td class="entry_units">
20486 <td class="entry_range">
20487 <p>> 255 (8-bit output)</p>
20490 <td class="entry_hal_version">
20494 <td class="entry_tags">
20495 <ul class="entry_tags">
20496 <li><a href="#tag_RAW">RAW</a></li>
20501 <tr class="entries_header">
20502 <th class="th_details" colspan="6">Details</th>
20504 <tr class="entry_cont">
20505 <td class="entry_details" colspan="6">
20506 <p>This specifies the fully-saturated encoding level for the raw
20507 sample values from the sensor.<wbr/> This is typically caused by the
20508 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20509 each channel is specified by the offset in the
20510 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20511 <p>The white level is typically determined either by sensor bit depth
20512 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20513 becomes too non-linear to be useful.<wbr/> The default value for this is
20514 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20515 <p>The white level values of captured images may vary for different
20516 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20517 represents a coarse approximation for such case.<wbr/> It is recommended
20518 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20519 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
20523 <tr class="entries_header">
20524 <th class="th_details" colspan="6">HAL Implementation Details</th>
20526 <tr class="entry_cont">
20527 <td class="entry_details" colspan="6">
20528 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
20529 so the value for linear sensors should not be significantly lower
20530 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20534 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20535 <!-- end of entry -->
20538 <tr class="entry" id="static_android.sensor.info.timestampSource">
20539 <td class="entry_name
20541 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20543 <td class="entry_type">
20544 <span class="entry_type_name entry_type_name_enum">byte</span>
20546 <span class="entry_type_visibility"> [public]</span>
20549 <span class="entry_type_hwlevel">[legacy] </span>
20553 <ul class="entry_type_enum">
20555 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
20556 <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/>
20557 but can not be compared to timestamps from other subsystems
20558 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20559 camera devices in the same system.<wbr/> Timestamps between streams and results for
20560 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20561 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20564 <span class="entry_type_enum_name">REALTIME (v3.2)</span>
20565 <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
20566 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20567 and they can be compared to other timestamps using that base.<wbr/></p></span>
20571 </td> <!-- entry_type -->
20573 <td class="entry_description">
20574 <p>The time base source for sensor capture start timestamps.<wbr/></p>
20577 <td class="entry_units">
20580 <td class="entry_range">
20583 <td class="entry_hal_version">
20587 <td class="entry_tags">
20588 <ul class="entry_tags">
20589 <li><a href="#tag_V1">V1</a></li>
20594 <tr class="entries_header">
20595 <th class="th_details" colspan="6">Details</th>
20597 <tr class="entry_cont">
20598 <td class="entry_details" colspan="6">
20599 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20600 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20601 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20602 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20606 <tr class="entries_header">
20607 <th class="th_details" colspan="6">HAL Implementation Details</th>
20609 <tr class="entry_cont">
20610 <td class="entry_details" colspan="6">
20611 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20612 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20613 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20614 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20615 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20616 recording might suffer unexpected behavior.<wbr/></p>
20617 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20618 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20622 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20623 <!-- end of entry -->
20626 <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20627 <td class="entry_name
20629 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20631 <td class="entry_type">
20632 <span class="entry_type_name entry_type_name_enum">byte</span>
20634 <span class="entry_type_visibility"> [public as boolean]</span>
20640 <ul class="entry_type_enum">
20642 <span class="entry_type_enum_name">FALSE (v3.2)</span>
20645 <span class="entry_type_enum_name">TRUE (v3.2)</span>
20649 </td> <!-- entry_type -->
20651 <td class="entry_description">
20652 <p>Whether the RAW images output from this camera device are subject to
20653 lens shading correction.<wbr/></p>
20656 <td class="entry_units">
20659 <td class="entry_range">
20662 <td class="entry_hal_version">
20666 <td class="entry_tags">
20670 <tr class="entries_header">
20671 <th class="th_details" colspan="6">Details</th>
20673 <tr class="entry_cont">
20674 <td class="entry_details" colspan="6">
20675 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
20676 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
20677 not be adjusted for lens shading correction.<wbr/>
20678 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>
20679 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
20680 Devices with RAW capability will always report this information in this key.<wbr/></p>
20685 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20686 <!-- end of entry -->
20689 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
20690 <td class="entry_name
20692 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
20694 <td class="entry_type">
20695 <span class="entry_type_name">int32</span>
20696 <span class="entry_type_container">x</span>
20698 <span class="entry_type_array">
20701 <span class="entry_type_visibility"> [public as rectangle]</span>
20704 <span class="entry_type_hwlevel">[legacy] </span>
20707 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20710 </td> <!-- entry_type -->
20712 <td class="entry_description">
20713 <p>The area of the image sensor which corresponds to active pixels prior to the
20714 application of any geometric distortion correction.<wbr/></p>
20717 <td class="entry_units">
20718 Pixel coordinates on the image sensor
20721 <td class="entry_range">
20724 <td class="entry_hal_version">
20728 <td class="entry_tags">
20729 <ul class="entry_tags">
20730 <li><a href="#tag_RAW">RAW</a></li>
20735 <tr class="entries_header">
20736 <th class="th_details" colspan="6">Details</th>
20738 <tr class="entry_cont">
20739 <td class="entry_details" colspan="6">
20740 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20741 the region that actually receives light from the scene) before any geometric correction
20742 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
20743 raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
20744 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
20745 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
20746 <p>The size of this region determines the maximum field of view and the maximum number of
20747 pixels that an image from this sensor can contain,<wbr/> prior to the application of
20748 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
20749 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>
20750 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
20751 can be calculated by applying the geometric distortion correction fields to this
20752 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>
20753 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
20754 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/>
20755 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
20756 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
20758 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
20759 <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
20760 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
20761 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
20762 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
20763 buffers is defined relative to the top,<wbr/> left of the
20764 <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>
20765 <li>If the resulting corrected pixel coordinate is within the region given in
20766 <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
20767 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
20768 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
20770 <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>
20771 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/>
20772 <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
20773 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
20774 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
20775 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)
20776 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
20777 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20778 <p>The currently supported fields that correct for geometric distortion are:</p>
20780 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
20782 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
20783 as the post-distortion-corrected rectangle given in
20784 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20785 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20786 the full pixel array,<wbr/> and the size of the full pixel array is given by
20787 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20788 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
20789 full array may include black calibration pixels or other inactive regions.<wbr/></p>
20793 <tr class="entries_header">
20794 <th class="th_details" colspan="6">HAL Implementation Details</th>
20796 <tr class="entry_cont">
20797 <td class="entry_details" colspan="6">
20798 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20799 >= <code>(0,<wbr/>0)</code>.<wbr/>
20800 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>
20801 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
20802 the same as the post-correction active array region given in
20803 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20807 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20808 <!-- end of entry -->
20814 <tr class="entry" id="static_android.sensor.referenceIlluminant1">
20815 <td class="entry_name
20817 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
20819 <td class="entry_type">
20820 <span class="entry_type_name entry_type_name_enum">byte</span>
20822 <span class="entry_type_visibility"> [public]</span>
20828 <ul class="entry_type_enum">
20830 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
20831 <span class="entry_type_enum_value">1</span>
20834 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
20835 <span class="entry_type_enum_value">2</span>
20838 <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
20839 <span class="entry_type_enum_value">3</span>
20840 <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
20843 <span class="entry_type_enum_name">FLASH (v3.2)</span>
20844 <span class="entry_type_enum_value">4</span>
20847 <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
20848 <span class="entry_type_enum_value">9</span>
20851 <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
20852 <span class="entry_type_enum_value">10</span>
20855 <span class="entry_type_enum_name">SHADE (v3.2)</span>
20856 <span class="entry_type_enum_value">11</span>
20859 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
20860 <span class="entry_type_enum_value">12</span>
20861 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
20864 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
20865 <span class="entry_type_enum_value">13</span>
20866 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
20869 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
20870 <span class="entry_type_enum_value">14</span>
20871 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
20874 <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
20875 <span class="entry_type_enum_value">15</span>
20876 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
20879 <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
20880 <span class="entry_type_enum_value">17</span>
20883 <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
20884 <span class="entry_type_enum_value">18</span>
20887 <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
20888 <span class="entry_type_enum_value">19</span>
20891 <span class="entry_type_enum_name">D55 (v3.2)</span>
20892 <span class="entry_type_enum_value">20</span>
20895 <span class="entry_type_enum_name">D65 (v3.2)</span>
20896 <span class="entry_type_enum_value">21</span>
20899 <span class="entry_type_enum_name">D75 (v3.2)</span>
20900 <span class="entry_type_enum_value">22</span>
20903 <span class="entry_type_enum_name">D50 (v3.2)</span>
20904 <span class="entry_type_enum_value">23</span>
20907 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
20908 <span class="entry_type_enum_value">24</span>
20912 </td> <!-- entry_type -->
20914 <td class="entry_description">
20915 <p>The standard reference illuminant used as the scene light source when
20916 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
20917 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
20918 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
20921 <td class="entry_units">
20924 <td class="entry_range">
20927 <td class="entry_hal_version">
20931 <td class="entry_tags">
20932 <ul class="entry_tags">
20933 <li><a href="#tag_RAW">RAW</a></li>
20938 <tr class="entries_header">
20939 <th class="th_details" colspan="6">Details</th>
20941 <tr class="entry_cont">
20942 <td class="entry_details" colspan="6">
20943 <p>The values in this key correspond to the values defined for the
20944 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
20945 that are often used calibrating camera devices.<wbr/></p>
20946 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
20947 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
20948 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
20949 <p>Some devices may choose to provide a second set of calibration
20950 information for improved quality,<wbr/> including
20951 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
20955 <tr class="entries_header">
20956 <th class="th_details" colspan="6">HAL Implementation Details</th>
20958 <tr class="entry_cont">
20959 <td class="entry_details" colspan="6">
20960 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
20961 and corresponding matrices must be present to support the RAW capability
20962 and DNG output.<wbr/></p>
20963 <p>When producing raw images with a color profile that has only been
20964 calibrated against a single light source,<wbr/> it is valid to omit
20965 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
20966 <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/>
20967 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
20968 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
20969 chosen so that it is representative of typical scene lighting.<wbr/> In
20970 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
20971 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
20972 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
20973 chosen to represent the typical range of scene lighting conditions.<wbr/>
20974 In general,<wbr/> low color temperature illuminant such as Standard-A will
20975 be chosen for the first reference illuminant and a higher color
20976 temperature illuminant such as D65 will be chosen for the second
20977 reference illuminant.<wbr/></p>
20981 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20982 <!-- end of entry -->
20985 <tr class="entry" id="static_android.sensor.referenceIlluminant2">
20986 <td class="entry_name
20988 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
20990 <td class="entry_type">
20991 <span class="entry_type_name">byte</span>
20993 <span class="entry_type_visibility"> [public]</span>
21000 </td> <!-- entry_type -->
21002 <td class="entry_description">
21003 <p>The standard reference illuminant used as the scene light source when
21004 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21005 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21006 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21009 <td class="entry_units">
21012 <td class="entry_range">
21013 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
21016 <td class="entry_hal_version">
21020 <td class="entry_tags">
21021 <ul class="entry_tags">
21022 <li><a href="#tag_RAW">RAW</a></li>
21027 <tr class="entries_header">
21028 <th class="th_details" colspan="6">Details</th>
21030 <tr class="entry_cont">
21031 <td class="entry_details" colspan="6">
21032 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
21033 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21034 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21035 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
21040 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21041 <!-- end of entry -->
21044 <tr class="entry" id="static_android.sensor.calibrationTransform1">
21045 <td class="entry_name
21047 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
21049 <td class="entry_type">
21050 <span class="entry_type_name">rational</span>
21051 <span class="entry_type_container">x</span>
21053 <span class="entry_type_array">
21056 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21061 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21064 </td> <!-- entry_type -->
21066 <td class="entry_description">
21067 <p>A per-device calibration transform matrix that maps from the
21068 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
21071 <td class="entry_units">
21074 <td class="entry_range">
21077 <td class="entry_hal_version">
21081 <td class="entry_tags">
21082 <ul class="entry_tags">
21083 <li><a href="#tag_RAW">RAW</a></li>
21088 <tr class="entries_header">
21089 <th class="th_details" colspan="6">Details</th>
21091 <tr class="entry_cont">
21092 <td class="entry_details" colspan="6">
21093 <p>This matrix is used to correct for per-device variations in the
21094 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21095 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21096 contains a per-device calibration transform that maps colors
21097 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21098 colorspace) into this camera device's native sensor color
21099 space under the first reference illuminant
21100 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21105 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21106 <!-- end of entry -->
21109 <tr class="entry" id="static_android.sensor.calibrationTransform2">
21110 <td class="entry_name
21112 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
21114 <td class="entry_type">
21115 <span class="entry_type_name">rational</span>
21116 <span class="entry_type_container">x</span>
21118 <span class="entry_type_array">
21121 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21126 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21129 </td> <!-- entry_type -->
21131 <td class="entry_description">
21132 <p>A per-device calibration transform matrix that maps from the
21133 reference sensor colorspace to the actual device sensor colorspace
21134 (this is the colorspace of the raw buffer data).<wbr/></p>
21137 <td class="entry_units">
21140 <td class="entry_range">
21143 <td class="entry_hal_version">
21147 <td class="entry_tags">
21148 <ul class="entry_tags">
21149 <li><a href="#tag_RAW">RAW</a></li>
21154 <tr class="entries_header">
21155 <th class="th_details" colspan="6">Details</th>
21157 <tr class="entry_cont">
21158 <td class="entry_details" colspan="6">
21159 <p>This matrix is used to correct for per-device variations in the
21160 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21161 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21162 contains a per-device calibration transform that maps colors
21163 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21164 colorspace) into this camera device's native sensor color
21165 space under the second reference illuminant
21166 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21167 <p>This matrix will only be present if the second reference
21168 illuminant is present.<wbr/></p>
21173 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21174 <!-- end of entry -->
21177 <tr class="entry" id="static_android.sensor.colorTransform1">
21178 <td class="entry_name
21180 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
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 as colorSpaceTransform]</span>
21194 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21197 </td> <!-- entry_type -->
21199 <td class="entry_description">
21200 <p>A matrix that transforms color values from CIE XYZ color space to
21201 reference sensor color space.<wbr/></p>
21204 <td class="entry_units">
21207 <td class="entry_range">
21210 <td class="entry_hal_version">
21214 <td class="entry_tags">
21215 <ul class="entry_tags">
21216 <li><a href="#tag_RAW">RAW</a></li>
21221 <tr class="entries_header">
21222 <th class="th_details" colspan="6">Details</th>
21224 <tr class="entry_cont">
21225 <td class="entry_details" colspan="6">
21226 <p>This matrix is used to convert from the standard CIE XYZ color
21227 space to the reference sensor colorspace,<wbr/> and is used when processing
21228 raw buffer data.<wbr/></p>
21229 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21230 contains a color transform matrix that maps colors from the CIE
21231 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21232 "golden module" colorspace) under the first reference illuminant
21233 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21234 <p>The white points chosen in both the reference sensor color space
21235 and the CIE XYZ colorspace when calculating this transform will
21236 match the standard white point for the first reference illuminant
21237 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21242 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21243 <!-- end of entry -->
21246 <tr class="entry" id="static_android.sensor.colorTransform2">
21247 <td class="entry_name
21249 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
21251 <td class="entry_type">
21252 <span class="entry_type_name">rational</span>
21253 <span class="entry_type_container">x</span>
21255 <span class="entry_type_array">
21258 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21263 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21266 </td> <!-- entry_type -->
21268 <td class="entry_description">
21269 <p>A matrix that transforms color values from CIE XYZ color space to
21270 reference sensor color space.<wbr/></p>
21273 <td class="entry_units">
21276 <td class="entry_range">
21279 <td class="entry_hal_version">
21283 <td class="entry_tags">
21284 <ul class="entry_tags">
21285 <li><a href="#tag_RAW">RAW</a></li>
21290 <tr class="entries_header">
21291 <th class="th_details" colspan="6">Details</th>
21293 <tr class="entry_cont">
21294 <td class="entry_details" colspan="6">
21295 <p>This matrix is used to convert from the standard CIE XYZ color
21296 space to the reference sensor colorspace,<wbr/> and is used when processing
21297 raw buffer data.<wbr/></p>
21298 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21299 contains a color transform matrix that maps colors from the CIE
21300 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21301 "golden module" colorspace) under the second reference illuminant
21302 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21303 <p>The white points chosen in both the reference sensor color space
21304 and the CIE XYZ colorspace when calculating this transform will
21305 match the standard white point for the second reference illuminant
21306 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21307 <p>This matrix will only be present if the second reference
21308 illuminant is present.<wbr/></p>
21313 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21314 <!-- end of entry -->
21317 <tr class="entry" id="static_android.sensor.forwardMatrix1">
21318 <td class="entry_name
21320 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21322 <td class="entry_type">
21323 <span class="entry_type_name">rational</span>
21324 <span class="entry_type_container">x</span>
21326 <span class="entry_type_array">
21329 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21334 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21337 </td> <!-- entry_type -->
21339 <td class="entry_description">
21340 <p>A matrix that transforms white balanced camera colors from the reference
21341 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21344 <td class="entry_units">
21347 <td class="entry_range">
21350 <td class="entry_hal_version">
21354 <td class="entry_tags">
21355 <ul class="entry_tags">
21356 <li><a href="#tag_RAW">RAW</a></li>
21361 <tr class="entries_header">
21362 <th class="th_details" colspan="6">Details</th>
21364 <tr class="entry_cont">
21365 <td class="entry_details" colspan="6">
21366 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21367 is used when processing raw buffer data.<wbr/></p>
21368 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21369 a color transform matrix that maps white balanced colors from the
21370 reference sensor color space to the CIE XYZ color space with a D50 white
21372 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21373 this matrix is chosen so that the standard white point for this reference
21374 illuminant in the reference sensor colorspace is mapped to D50 in the
21375 CIE XYZ colorspace.<wbr/></p>
21380 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21381 <!-- end of entry -->
21384 <tr class="entry" id="static_android.sensor.forwardMatrix2">
21385 <td class="entry_name
21387 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21389 <td class="entry_type">
21390 <span class="entry_type_name">rational</span>
21391 <span class="entry_type_container">x</span>
21393 <span class="entry_type_array">
21396 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21401 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21404 </td> <!-- entry_type -->
21406 <td class="entry_description">
21407 <p>A matrix that transforms white balanced camera colors from the reference
21408 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21411 <td class="entry_units">
21414 <td class="entry_range">
21417 <td class="entry_hal_version">
21421 <td class="entry_tags">
21422 <ul class="entry_tags">
21423 <li><a href="#tag_RAW">RAW</a></li>
21428 <tr class="entries_header">
21429 <th class="th_details" colspan="6">Details</th>
21431 <tr class="entry_cont">
21432 <td class="entry_details" colspan="6">
21433 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21434 is used when processing raw buffer data.<wbr/></p>
21435 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21436 a color transform matrix that maps white balanced colors from the
21437 reference sensor color space to the CIE XYZ color space with a D50 white
21439 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21440 this matrix is chosen so that the standard white point for this reference
21441 illuminant in the reference sensor colorspace is mapped to D50 in the
21442 CIE XYZ colorspace.<wbr/></p>
21443 <p>This matrix will only be present if the second reference
21444 illuminant is present.<wbr/></p>
21449 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21450 <!-- end of entry -->
21453 <tr class="entry" id="static_android.sensor.baseGainFactor">
21454 <td class="entry_name
21456 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21458 <td class="entry_type">
21459 <span class="entry_type_name">rational</span>
21461 <span class="entry_type_visibility"> [system]</span>
21468 </td> <!-- entry_type -->
21470 <td class="entry_description">
21471 <p>Gain factor from electrons to raw units when
21475 <td class="entry_units">
21478 <td class="entry_range">
21481 <td class="entry_hal_version">
21485 <td class="entry_tags">
21486 <ul class="entry_tags">
21487 <li><a href="#tag_FUTURE">FUTURE</a></li>
21494 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21495 <!-- end of entry -->
21498 <tr class="entry" id="static_android.sensor.blackLevelPattern">
21499 <td class="entry_name
21501 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21503 <td class="entry_type">
21504 <span class="entry_type_name">int32</span>
21505 <span class="entry_type_container">x</span>
21507 <span class="entry_type_array">
21510 <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21515 <div class="entry_type_notes">2x2 raw count block</div>
21518 </td> <!-- entry_type -->
21520 <td class="entry_description">
21521 <p>A fixed black level offset for each of the color filter arrangement
21522 (CFA) mosaic channels.<wbr/></p>
21525 <td class="entry_units">
21528 <td class="entry_range">
21529 <p>>= 0 for each.<wbr/></p>
21532 <td class="entry_hal_version">
21536 <td class="entry_tags">
21537 <ul class="entry_tags">
21538 <li><a href="#tag_RAW">RAW</a></li>
21543 <tr class="entries_header">
21544 <th class="th_details" colspan="6">Details</th>
21546 <tr class="entry_cont">
21547 <td class="entry_details" colspan="6">
21548 <p>This key specifies the zero light value for each of the CFA mosaic
21549 channels in the camera sensor.<wbr/> The maximal value output by the
21550 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>
21551 <p>The values are given in the same order as channels listed for the CFA
21552 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
21553 nth value given corresponds to the black level offset for the nth
21554 color channel listed in the CFA.<wbr/></p>
21555 <p>The black level values of captured images may vary for different
21556 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21557 represents a coarse approximation for such case.<wbr/> It is recommended to
21558 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21559 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21560 supported by the camera device,<wbr/> which provides more accurate black
21561 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21562 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21563 level values for each frame.<wbr/></p>
21567 <tr class="entries_header">
21568 <th class="th_details" colspan="6">HAL Implementation Details</th>
21570 <tr class="entry_cont">
21571 <td class="entry_details" colspan="6">
21572 <p>The values are given in row-column scan order,<wbr/> with the first value
21573 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21577 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21578 <!-- end of entry -->
21581 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21582 <td class="entry_name
21584 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21586 <td class="entry_type">
21587 <span class="entry_type_name">int32</span>
21589 <span class="entry_type_visibility"> [public]</span>
21592 <span class="entry_type_hwlevel">[full] </span>
21597 </td> <!-- entry_type -->
21599 <td class="entry_description">
21600 <p>Maximum sensitivity that is implemented
21601 purely through analog gain.<wbr/></p>
21604 <td class="entry_units">
21607 <td class="entry_range">
21610 <td class="entry_hal_version">
21614 <td class="entry_tags">
21615 <ul class="entry_tags">
21616 <li><a href="#tag_V1">V1</a></li>
21617 <li><a href="#tag_FULL">FULL</a></li>
21622 <tr class="entries_header">
21623 <th class="th_details" colspan="6">Details</th>
21625 <tr class="entry_cont">
21626 <td class="entry_details" colspan="6">
21627 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21628 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21629 values above this,<wbr/> the gain applied can be a mix of analog and
21635 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21636 <!-- end of entry -->
21639 <tr class="entry" id="static_android.sensor.orientation">
21640 <td class="entry_name
21642 android.<wbr/>sensor.<wbr/>orientation
21644 <td class="entry_type">
21645 <span class="entry_type_name">int32</span>
21647 <span class="entry_type_visibility"> [public]</span>
21650 <span class="entry_type_hwlevel">[legacy] </span>
21655 </td> <!-- entry_type -->
21657 <td class="entry_description">
21658 <p>Clockwise angle through which the output image needs to be rotated to be
21659 upright on the device screen in its native orientation.<wbr/></p>
21662 <td class="entry_units">
21663 Degrees of clockwise rotation; always a multiple of
21667 <td class="entry_range">
21668 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
21671 <td class="entry_hal_version">
21675 <td class="entry_tags">
21676 <ul class="entry_tags">
21677 <li><a href="#tag_BC">BC</a></li>
21682 <tr class="entries_header">
21683 <th class="th_details" colspan="6">Details</th>
21685 <tr class="entry_cont">
21686 <td class="entry_details" colspan="6">
21687 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
21688 the sensor's coordinate system.<wbr/></p>
21693 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21694 <!-- end of entry -->
21697 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
21698 <td class="entry_name
21700 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
21702 <td class="entry_type">
21703 <span class="entry_type_name">int32</span>
21704 <span class="entry_type_container">x</span>
21706 <span class="entry_type_array">
21709 <span class="entry_type_visibility"> [system]</span>
21714 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
21717 </td> <!-- entry_type -->
21719 <td class="entry_description">
21720 <p>The number of input samples for each dimension of
21721 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
21724 <td class="entry_units">
21727 <td class="entry_range">
21728 <p>Hue >= 1,<wbr/>
21729 Saturation >= 2,<wbr/>
21733 <td class="entry_hal_version">
21737 <td class="entry_tags">
21738 <ul class="entry_tags">
21739 <li><a href="#tag_RAW">RAW</a></li>
21744 <tr class="entries_header">
21745 <th class="th_details" colspan="6">Details</th>
21747 <tr class="entry_cont">
21748 <td class="entry_details" colspan="6">
21749 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
21750 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
21751 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
21757 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21758 <!-- end of entry -->
21761 <tr class="entry" id="static_android.sensor.availableTestPatternModes">
21762 <td class="entry_name
21764 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
21766 <td class="entry_type">
21767 <span class="entry_type_name">int32</span>
21768 <span class="entry_type_container">x</span>
21770 <span class="entry_type_array">
21773 <span class="entry_type_visibility"> [public]</span>
21778 <div class="entry_type_notes">list of enums</div>
21781 </td> <!-- entry_type -->
21783 <td class="entry_description">
21784 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
21785 supported by this camera device.<wbr/></p>
21788 <td class="entry_units">
21791 <td class="entry_range">
21792 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
21795 <td class="entry_hal_version">
21799 <td class="entry_tags">
21803 <tr class="entries_header">
21804 <th class="th_details" colspan="6">Details</th>
21806 <tr class="entry_cont">
21807 <td class="entry_details" colspan="6">
21808 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
21812 <tr class="entries_header">
21813 <th class="th_details" colspan="6">HAL Implementation Details</th>
21815 <tr class="entry_cont">
21816 <td class="entry_details" colspan="6">
21817 <p>All custom modes must be >= CUSTOM1.<wbr/></p>
21821 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21822 <!-- end of entry -->
21825 <tr class="entry" id="static_android.sensor.opticalBlackRegions">
21826 <td class="entry_name
21828 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
21830 <td class="entry_type">
21831 <span class="entry_type_name">int32</span>
21832 <span class="entry_type_container">x</span>
21834 <span class="entry_type_array">
21837 <span class="entry_type_visibility"> [public as rectangle]</span>
21844 </td> <!-- entry_type -->
21846 <td class="entry_description">
21847 <p>List of disjoint rectangles indicating the sensor
21848 optically shielded black pixel regions.<wbr/></p>
21851 <td class="entry_units">
21854 <td class="entry_range">
21857 <td class="entry_hal_version">
21861 <td class="entry_tags">
21865 <tr class="entries_header">
21866 <th class="th_details" colspan="6">Details</th>
21868 <tr class="entry_cont">
21869 <td class="entry_details" colspan="6">
21870 <p>In most camera sensors,<wbr/> the active array is surrounded by some
21871 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
21872 provides a reliable black reference for black level compensation
21873 in active array region.<wbr/></p>
21874 <p>This key provides a list of disjoint rectangles specifying the
21875 regions of optically shielded (with metal shield) black pixel
21876 regions if the camera device is capable of reading out these black
21877 pixels in the output raw images.<wbr/> In comparison to the fixed black
21878 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
21879 may provide a more accurate way for the application to calculate
21880 black level of each captured raw images.<wbr/></p>
21881 <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
21882 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
21886 <tr class="entries_header">
21887 <th class="th_details" colspan="6">HAL Implementation Details</th>
21889 <tr class="entry_cont">
21890 <td class="entry_details" colspan="6">
21891 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
21892 must be >= (0,<wbr/>0) and <=
21893 <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
21894 <= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be
21895 outside the region reported by
21896 <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>
21897 <p>The HAL must report minimal number of disjoint regions for the
21898 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
21899 be covered by one rectangle,<wbr/> the HAL must not split this region into
21900 multiple rectangles.<wbr/></p>
21904 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21905 <!-- end of entry -->
21908 <tr class="entry" id="static_android.sensor.opaqueRawSize">
21909 <td class="entry_name
21911 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
21913 <td class="entry_type">
21914 <span class="entry_type_name">int32</span>
21915 <span class="entry_type_container">x</span>
21917 <span class="entry_type_array">
21920 <span class="entry_type_visibility"> [system]</span>
21927 </td> <!-- entry_type -->
21929 <td class="entry_description">
21930 <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
21933 <td class="entry_units">
21936 <td class="entry_range">
21937 <p>Must be large enough to fit the opaque RAW of corresponding size produced by
21941 <td class="entry_hal_version">
21945 <td class="entry_tags">
21949 <tr class="entries_header">
21950 <th class="th_details" colspan="6">Details</th>
21952 <tr class="entry_cont">
21953 <td class="entry_details" colspan="6">
21954 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
21955 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
21956 All RAW_<wbr/>OPAQUE output stream configuration listed in
21957 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
21958 this key.<wbr/></p>
21962 <tr class="entries_header">
21963 <th class="th_details" colspan="6">HAL Implementation Details</th>
21965 <tr class="entry_cont">
21966 <td class="entry_details" colspan="6">
21967 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
21968 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
21969 key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
21970 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
21971 between rows.<wbr/></p>
21975 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21976 <!-- end of entry -->
21980 <!-- end of kind -->
21982 <tr><td colspan="7" class="kind">dynamic</td></tr>
21984 <thead class="entries_header">
21986 <th class="th_name">Property Name</th>
21987 <th class="th_type">Type</th>
21988 <th class="th_description">Description</th>
21989 <th class="th_units">Units</th>
21990 <th class="th_range">Range</th>
21991 <th class="th_hal_version">Initial HIDL HAL version</th>
21992 <th class="th_tags">Tags</th>
22007 <tr class="entry" id="dynamic_android.sensor.exposureTime">
22008 <td class="entry_name
22010 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
22012 <td class="entry_type">
22013 <span class="entry_type_name">int64</span>
22015 <span class="entry_type_visibility"> [public]</span>
22018 <span class="entry_type_hwlevel">[full] </span>
22023 </td> <!-- entry_type -->
22025 <td class="entry_description">
22026 <p>Duration each pixel is exposed to
22030 <td class="entry_units">
22034 <td class="entry_range">
22035 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
22038 <td class="entry_hal_version">
22042 <td class="entry_tags">
22043 <ul class="entry_tags">
22044 <li><a href="#tag_V1">V1</a></li>
22049 <tr class="entries_header">
22050 <th class="th_details" colspan="6">Details</th>
22052 <tr class="entry_cont">
22053 <td class="entry_details" colspan="6">
22054 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
22055 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
22056 The final exposure time used will be available in the output capture result.<wbr/></p>
22057 <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
22058 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22063 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22064 <!-- end of entry -->
22067 <tr class="entry" id="dynamic_android.sensor.frameDuration">
22068 <td class="entry_name
22070 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
22072 <td class="entry_type">
22073 <span class="entry_type_name">int64</span>
22075 <span class="entry_type_visibility"> [public]</span>
22078 <span class="entry_type_hwlevel">[full] </span>
22083 </td> <!-- entry_type -->
22085 <td class="entry_description">
22086 <p>Duration from start of frame exposure to
22087 start of next frame exposure.<wbr/></p>
22090 <td class="entry_units">
22094 <td class="entry_range">
22095 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>.<wbr/>
22096 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
22099 <td class="entry_hal_version">
22103 <td class="entry_tags">
22104 <ul class="entry_tags">
22105 <li><a href="#tag_V1">V1</a></li>
22110 <tr class="entries_header">
22111 <th class="th_details" colspan="6">Details</th>
22113 <tr class="entry_cont">
22114 <td class="entry_details" colspan="6">
22115 <p>The maximum frame rate that can be supported by a camera subsystem is
22116 a function of many factors:</p>
22118 <li>Requested resolutions of output image streams</li>
22119 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
22120 <li>The bandwidth of the imager interface</li>
22121 <li>The bandwidth of the various ISP processing blocks</li>
22123 <p>Since these factors can vary greatly between different ISPs and
22124 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
22125 restrictions with as simple a model as possible.<wbr/></p>
22126 <p>The model presented has the following characteristics:</p>
22128 <li>The image sensor is always configured to output the smallest
22129 resolution possible given the application's requested output stream
22130 sizes.<wbr/> The smallest resolution is defined as being at least as large
22131 as the largest requested output stream size; the camera pipeline must
22132 never digitally upsample sensor data when the crop region covers the
22133 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
22134 resolutions are configured,<wbr/> the sensor can provide a higher frame
22136 <li>Since any request may use any or all the currently configured
22137 output streams,<wbr/> the sensor and ISP must be configured to support
22138 scaling a single capture to all the streams at the same time.<wbr/> This
22139 means the camera pipeline must be ready to produce the largest
22140 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
22141 frame rate of a given configured stream set is governed only by the
22142 largest requested stream resolution.<wbr/></li>
22143 <li>Using more than one output stream in a request does not affect the
22144 frame duration.<wbr/></li>
22145 <li>Certain format-streams may need to do additional background processing
22146 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
22147 can run concurrently to the rest of the camera pipeline,<wbr/> but
22148 cannot process more than 1 capture at a time.<wbr/></li>
22150 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
22151 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
22152 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
22153 possible for a given stream configuration.<wbr/></p>
22154 <p>Specifically,<wbr/> the application can use the following rules to
22155 determine the minimum frame duration it can request from the camera
22158 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
22159 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking it up in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
22160 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
22161 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
22162 out of all values in <code>F</code>.<wbr/> Let the streams used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
22164 <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>
22165 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
22166 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
22167 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
22168 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
22169 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
22170 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
22171 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
22172 <p>For more details about stalling,<wbr/> see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
22173 <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
22174 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22178 <tr class="entries_header">
22179 <th class="th_details" colspan="6">HAL Implementation Details</th>
22181 <tr class="entry_cont">
22182 <td class="entry_details" colspan="6">
22183 <p>For more details about stalling,<wbr/> see
22184 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
22188 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22189 <!-- end of entry -->
22192 <tr class="entry" id="dynamic_android.sensor.sensitivity">
22193 <td class="entry_name
22195 android.<wbr/>sensor.<wbr/>sensitivity
22197 <td class="entry_type">
22198 <span class="entry_type_name">int32</span>
22200 <span class="entry_type_visibility"> [public]</span>
22203 <span class="entry_type_hwlevel">[full] </span>
22208 </td> <!-- entry_type -->
22210 <td class="entry_description">
22211 <p>The amount of gain applied to sensor data
22212 before processing.<wbr/></p>
22215 <td class="entry_units">
22216 ISO arithmetic units
22219 <td class="entry_range">
22220 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
22223 <td class="entry_hal_version">
22227 <td class="entry_tags">
22228 <ul class="entry_tags">
22229 <li><a href="#tag_V1">V1</a></li>
22234 <tr class="entries_header">
22235 <th class="th_details" colspan="6">Details</th>
22237 <tr class="entry_cont">
22238 <td class="entry_details" colspan="6">
22239 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
22240 as defined in ISO 12232:2006.<wbr/></p>
22241 <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
22242 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
22243 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
22244 <p>If the camera device cannot apply the exact sensitivity
22245 requested,<wbr/> it will reduce the gain to the nearest supported
22246 value.<wbr/> The final sensitivity used will be available in the
22247 output capture result.<wbr/></p>
22248 <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
22249 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22253 <tr class="entries_header">
22254 <th class="th_details" colspan="6">HAL Implementation Details</th>
22256 <tr class="entry_cont">
22257 <td class="entry_details" colspan="6">
22258 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
22262 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22263 <!-- end of entry -->
22266 <tr class="entry" id="dynamic_android.sensor.timestamp">
22267 <td class="entry_name
22269 android.<wbr/>sensor.<wbr/>timestamp
22271 <td class="entry_type">
22272 <span class="entry_type_name">int64</span>
22274 <span class="entry_type_visibility"> [public]</span>
22277 <span class="entry_type_hwlevel">[legacy] </span>
22282 </td> <!-- entry_type -->
22284 <td class="entry_description">
22285 <p>Time at start of exposure of first
22286 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22289 <td class="entry_units">
22293 <td class="entry_range">
22297 <td class="entry_hal_version">
22301 <td class="entry_tags">
22302 <ul class="entry_tags">
22303 <li><a href="#tag_BC">BC</a></li>
22308 <tr class="entries_header">
22309 <th class="th_details" colspan="6">Details</th>
22311 <tr class="entry_cont">
22312 <td class="entry_details" colspan="6">
22313 <p>The timestamps are also included in all image
22314 buffers produced for the same capture,<wbr/> and will be identical
22315 on all the outputs.<wbr/></p>
22316 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22317 the timestamps measure time since an unspecified starting point,<wbr/>
22318 and are monotonically increasing.<wbr/> They can be compared with the
22319 timestamps for other captures from the same camera device,<wbr/> but are
22320 not guaranteed to be comparable to any other time source.<wbr/></p>
22321 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22322 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
22323 be compared to other timestamps from other subsystems that
22324 are using that base.<wbr/></p>
22325 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22326 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22327 timestamp</a> in the TotalCaptureResult that was used to create the
22328 reprocess capture request.<wbr/></p>
22332 <tr class="entries_header">
22333 <th class="th_details" colspan="6">HAL Implementation Details</th>
22335 <tr class="entry_cont">
22336 <td class="entry_details" colspan="6">
22337 <p>All timestamps must be in reference to the kernel's
22338 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22339 time spent asleep.<wbr/> This allows for synchronization with
22340 sensors that continue to operate while the system is
22341 otherwise asleep.<wbr/></p>
22342 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22343 The timestamp must be synchronized with the timestamps from other
22344 sensor subsystems that are using the same timebase.<wbr/></p>
22345 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22346 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22347 capture request.<wbr/></p>
22351 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22352 <!-- end of entry -->
22355 <tr class="entry" id="dynamic_android.sensor.temperature">
22356 <td class="entry_name
22358 android.<wbr/>sensor.<wbr/>temperature
22360 <td class="entry_type">
22361 <span class="entry_type_name">float</span>
22363 <span class="entry_type_visibility"> [system]</span>
22370 </td> <!-- entry_type -->
22372 <td class="entry_description">
22373 <p>The temperature of the sensor,<wbr/> sampled at the time
22374 exposure began for this frame.<wbr/></p>
22375 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22376 somewhere close to it.<wbr/></p>
22379 <td class="entry_units">
22383 <td class="entry_range">
22384 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22387 <td class="entry_hal_version">
22391 <td class="entry_tags">
22392 <ul class="entry_tags">
22393 <li><a href="#tag_FUTURE">FUTURE</a></li>
22400 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22401 <!-- end of entry -->
22404 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22405 <td class="entry_name
22407 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22409 <td class="entry_type">
22410 <span class="entry_type_name">rational</span>
22411 <span class="entry_type_container">x</span>
22413 <span class="entry_type_array">
22416 <span class="entry_type_visibility"> [public]</span>
22423 </td> <!-- entry_type -->
22425 <td class="entry_description">
22426 <p>The estimated camera neutral color in the native sensor colorspace at
22427 the time of capture.<wbr/></p>
22430 <td class="entry_units">
22433 <td class="entry_range">
22436 <td class="entry_hal_version">
22440 <td class="entry_tags">
22441 <ul class="entry_tags">
22442 <li><a href="#tag_RAW">RAW</a></li>
22447 <tr class="entries_header">
22448 <th class="th_details" colspan="6">Details</th>
22450 <tr class="entry_cont">
22451 <td class="entry_details" colspan="6">
22452 <p>This value gives the neutral color point encoded as an RGB value in the
22453 native sensor color space.<wbr/> The neutral color point indicates the
22454 currently estimated white point of the scene illumination.<wbr/> It can be
22455 used to interpolate between the provided color transforms when
22456 processing raw sensor data.<wbr/></p>
22457 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22462 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22463 <!-- end of entry -->
22466 <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22467 <td class="entry_name
22469 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22471 <td class="entry_type">
22472 <span class="entry_type_name">double</span>
22473 <span class="entry_type_container">x</span>
22475 <span class="entry_type_array">
22478 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22483 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22486 </td> <!-- entry_type -->
22488 <td class="entry_description">
22489 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22492 <td class="entry_units">
22495 <td class="entry_range">
22498 <td class="entry_hal_version">
22502 <td class="entry_tags">
22503 <ul class="entry_tags">
22504 <li><a href="#tag_RAW">RAW</a></li>
22509 <tr class="entries_header">
22510 <th class="th_details" colspan="6">Details</th>
22512 <tr class="entry_cont">
22513 <td class="entry_details" colspan="6">
22514 <p>This key contains two noise model coefficients for each CFA channel
22515 corresponding to the sensor amplification (S) and sensor readout
22516 noise (O).<wbr/> These are given as pairs of coefficients for each channel
22517 in the same order as channels listed for the CFA layout key
22518 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is
22519 represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where
22520 the first member of the Pair at index n is the S coefficient and the
22521 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22522 <p>These coefficients are used in a two parameter noise model to describe
22523 the amount of noise present in the image for each CFA channel.<wbr/> The
22524 noise model used here is:</p>
22525 <p>N(x) = sqrt(Sx + O)</p>
22526 <p>Where x represents the recorded signal of a CFA channel normalized to
22527 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22528 that channel.<wbr/></p>
22529 <p>A more detailed description of the noise model can be found in the
22530 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22534 <tr class="entries_header">
22535 <th class="th_details" colspan="6">HAL Implementation Details</th>
22537 <tr class="entry_cont">
22538 <td class="entry_details" colspan="6">
22539 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22540 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22541 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22542 channel,<wbr/> etc.<wbr/></p>
22546 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22547 <!-- end of entry -->
22550 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22551 <td class="entry_name
22553 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22555 <td class="entry_type">
22556 <span class="entry_type_name">float</span>
22557 <span class="entry_type_container">x</span>
22559 <span class="entry_type_array">
22560 hue_samples x saturation_samples x value_samples x 3
22562 <span class="entry_type_visibility"> [system]</span>
22567 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22570 </td> <!-- entry_type -->
22572 <td class="entry_description">
22573 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22574 for each pixel.<wbr/></p>
22577 <td class="entry_units">
22579 The hue shift is given in degrees; saturation and value scale factors are
22580 unitless and are between 0 and 1 inclusive
22584 <td class="entry_range">
22587 <td class="entry_hal_version">
22591 <td class="entry_tags">
22592 <ul class="entry_tags">
22593 <li><a href="#tag_RAW">RAW</a></li>
22598 <tr class="entries_header">
22599 <th class="th_details" colspan="6">Details</th>
22601 <tr class="entry_cont">
22602 <td class="entry_details" colspan="6">
22603 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22604 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22605 <p>Each entry of this map contains three floats corresponding to the
22606 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22607 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22608 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22609 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22610 inner loop.<wbr/> All zero input saturation entries are required to have a
22611 value scale factor of 1.<wbr/>0.<wbr/></p>
22616 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22617 <!-- end of entry -->
22620 <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22621 <td class="entry_name
22623 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22625 <td class="entry_type">
22626 <span class="entry_type_name">float</span>
22627 <span class="entry_type_container">x</span>
22629 <span class="entry_type_array">
22632 <span class="entry_type_visibility"> [system]</span>
22637 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22640 </td> <!-- entry_type -->
22642 <td class="entry_description">
22643 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
22646 <td class="entry_units">
22649 <td class="entry_range">
22650 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
22651 <code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
22652 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
22655 <td class="entry_hal_version">
22659 <td class="entry_tags">
22660 <ul class="entry_tags">
22661 <li><a href="#tag_RAW">RAW</a></li>
22666 <tr class="entries_header">
22667 <th class="th_details" colspan="6">Details</th>
22669 <tr class="entry_cont">
22670 <td class="entry_details" colspan="6">
22671 <p>This key contains a default tone curve that can be applied while
22672 processing the image as a starting point for user adjustments.<wbr/>
22673 The curve is specified as a list of value pairs in linear gamma.<wbr/>
22674 The curve is interpolated using a cubic spline.<wbr/></p>
22679 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22680 <!-- end of entry -->
22683 <tr class="entry" id="dynamic_android.sensor.greenSplit">
22684 <td class="entry_name
22686 android.<wbr/>sensor.<wbr/>green<wbr/>Split
22688 <td class="entry_type">
22689 <span class="entry_type_name">float</span>
22691 <span class="entry_type_visibility"> [public]</span>
22698 </td> <!-- entry_type -->
22700 <td class="entry_description">
22701 <p>The worst-case divergence between Bayer green channels.<wbr/></p>
22704 <td class="entry_units">
22707 <td class="entry_range">
22711 <td class="entry_hal_version">
22715 <td class="entry_tags">
22716 <ul class="entry_tags">
22717 <li><a href="#tag_RAW">RAW</a></li>
22722 <tr class="entries_header">
22723 <th class="th_details" colspan="6">Details</th>
22725 <tr class="entry_cont">
22726 <td class="entry_details" colspan="6">
22727 <p>This value is an estimate of the worst case split between the
22728 Bayer green channels in the red and blue rows in the sensor color
22729 filter array.<wbr/></p>
22730 <p>The green split is calculated as follows:</p>
22732 <li>A 5x5 pixel (or larger) window W within the active sensor array is
22733 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
22734 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window
22735 chosen is implementation defined,<wbr/> and should be chosen to provide a
22736 green split estimate that is both representative of the entire image
22737 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
22738 <li>The arithmetic mean of the green channels from the red
22739 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
22740 <li>The arithmetic mean of the green channels from the blue
22741 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
22742 <li>The maximum ratio R of the two means is computed as follows:
22743 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
22745 <p>The ratio R is the green split divergence reported for this property,<wbr/>
22746 which represents how much the green channels differ in the mosaic
22747 pattern.<wbr/> This value is typically used to determine the treatment of
22748 the green mosaic channels when demosaicing.<wbr/></p>
22749 <p>The green split value can be roughly interpreted as follows:</p>
22751 <li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li>
22752 <li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software
22753 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
22754 <li>R > 1.<wbr/>20 will require strong software correction to produce
22755 a usuable image (>20% divergence).<wbr/></li>
22760 <tr class="entries_header">
22761 <th class="th_details" colspan="6">HAL Implementation Details</th>
22763 <tr class="entry_cont">
22764 <td class="entry_details" colspan="6">
22765 <p>The green split given may be a static value based on prior
22766 characterization of the camera sensor using the green split
22767 calculation method given here over a large,<wbr/> representative,<wbr/> sample
22768 set of images.<wbr/> Other methods of calculation that produce equivalent
22769 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
22773 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22774 <!-- end of entry -->
22777 <tr class="entry" id="dynamic_android.sensor.testPatternData">
22778 <td class="entry_name
22780 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
22782 <td class="entry_type">
22783 <span class="entry_type_name">int32</span>
22784 <span class="entry_type_container">x</span>
22786 <span class="entry_type_array">
22789 <span class="entry_type_visibility"> [public]</span>
22796 </td> <!-- entry_type -->
22798 <td class="entry_description">
22799 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
22800 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
22803 <td class="entry_units">
22806 <td class="entry_range">
22809 <td class="entry_hal_version">
22813 <td class="entry_tags">
22817 <tr class="entries_header">
22818 <th class="th_details" colspan="6">Details</th>
22820 <tr class="entry_cont">
22821 <td class="entry_details" colspan="6">
22822 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
22823 The camera device then uses the most significant X bits
22824 that correspond to how many bits are in its Bayer raw sensor
22826 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
22827 10 most significant bits from each color channel.<wbr/></p>
22831 <tr class="entries_header">
22832 <th class="th_details" colspan="6">HAL Implementation Details</th>
22834 <tr class="entry_cont">
22835 <td class="entry_details" colspan="6">
22840 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22841 <!-- end of entry -->
22844 <tr class="entry" id="dynamic_android.sensor.testPatternMode">
22845 <td class="entry_name
22847 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
22849 <td class="entry_type">
22850 <span class="entry_type_name entry_type_name_enum">int32</span>
22852 <span class="entry_type_visibility"> [public]</span>
22858 <ul class="entry_type_enum">
22860 <span class="entry_type_enum_name">OFF (v3.2)</span>
22861 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
22862 device returns captures from the image sensor.<wbr/></p>
22863 <p>This is the default if the key is not set.<wbr/></p></span>
22866 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
22867 <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
22868 respective color channel provided in
22869 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
22870 <p>For example:</p>
22871 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22873 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
22874 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22876 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
22877 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
22880 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
22881 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
22882 <p>The vertical bars (left-to-right) are as follows:</p>
22884 <li>100% white</li>
22893 <p>In general the image would look like the following:</p>
22894 <pre><code>W Y C G M R B K
22899 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22900 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22901 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22903 (B = Blue,<wbr/> K = Black)
22905 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
22906 When this is not possible,<wbr/> the bar size should be rounded
22907 down to the nearest integer and the pattern can repeat
22908 on the right side.<wbr/></p>
22909 <p>Each bar's height must always take up the full sensor
22910 pixel array height.<wbr/></p>
22911 <p>Each pixel in this test pattern must be set to either
22912 0% intensity or 100% intensity.<wbr/></p></span>
22915 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
22916 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
22917 each bar should start at its specified color at the top,<wbr/>
22918 and fade to gray at the bottom.<wbr/></p>
22919 <p>Furthermore each bar is further subdivided into a left and
22920 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
22921 and the right half should have a quantized gradient.<wbr/></p>
22922 <p>In particular,<wbr/> the right half's should consist of blocks of the
22923 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
22924 <p>The least significant bits in the quantized gradient should
22925 be copied from the most significant bits of the smooth gradient.<wbr/></p>
22926 <p>The height of each bar should always be a multiple of 128.<wbr/>
22927 When this is not the case,<wbr/> the pattern should repeat at the bottom
22928 of the image.<wbr/></p></span>
22931 <span class="entry_type_enum_name">PN9 (v3.2)</span>
22932 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
22933 generated from a PN9 512-bit sequence (typically implemented
22934 in hardware with a linear feedback shift register).<wbr/></p>
22935 <p>The generator should be reset at the beginning of each frame,<wbr/>
22936 and thus each subsequent raw frame with this test pattern should
22937 be exactly the same as the last.<wbr/></p></span>
22940 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
22941 <span class="entry_type_enum_value">256</span>
22942 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
22943 available only on this camera device are at least this numeric
22945 <p>All of the custom test patterns will be static
22946 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
22950 </td> <!-- entry_type -->
22952 <td class="entry_description">
22953 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
22954 doing a real exposure from the camera.<wbr/></p>
22957 <td class="entry_units">
22960 <td class="entry_range">
22961 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
22964 <td class="entry_hal_version">
22968 <td class="entry_tags">
22972 <tr class="entries_header">
22973 <th class="th_details" colspan="6">Details</th>
22975 <tr class="entry_cont">
22976 <td class="entry_details" colspan="6">
22977 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
22978 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
22979 work as normal.<wbr/></p>
22980 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
22981 occur (and that the test pattern remain unmodified,<wbr/> since the flash
22982 would not actually affect it).<wbr/></p>
22983 <p>Defaults to OFF.<wbr/></p>
22987 <tr class="entries_header">
22988 <th class="th_details" colspan="6">HAL Implementation Details</th>
22990 <tr class="entry_cont">
22991 <td class="entry_details" colspan="6">
22992 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
22993 <p>The HAL may choose to substitute test patterns from the sensor
22994 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
22995 indistinguishable to the ISP whether the data came from the
22996 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
23000 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23001 <!-- end of entry -->
23004 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
23005 <td class="entry_name
23007 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
23009 <td class="entry_type">
23010 <span class="entry_type_name">int64</span>
23012 <span class="entry_type_visibility"> [public]</span>
23015 <span class="entry_type_hwlevel">[limited] </span>
23020 </td> <!-- entry_type -->
23022 <td class="entry_description">
23023 <p>Duration between the start of first row exposure
23024 and the start of last row exposure.<wbr/></p>
23027 <td class="entry_units">
23031 <td class="entry_range">
23032 <p>>= 0 and <
23033 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
23036 <td class="entry_hal_version">
23040 <td class="entry_tags">
23041 <ul class="entry_tags">
23042 <li><a href="#tag_V1">V1</a></li>
23047 <tr class="entries_header">
23048 <th class="th_details" colspan="6">Details</th>
23050 <tr class="entry_cont">
23051 <td class="entry_details" colspan="6">
23052 <p>This is the exposure time skew between the first and last
23053 row exposure start times.<wbr/> The first row and the last row are
23054 the first and last rows inside of the
23055 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23056 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
23057 to the frame readout time.<wbr/></p>
23061 <tr class="entries_header">
23062 <th class="th_details" colspan="6">HAL Implementation Details</th>
23064 <tr class="entry_cont">
23065 <td class="entry_details" colspan="6">
23066 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
23067 exposure at the same time.<wbr/></p>
23071 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23072 <!-- end of entry -->
23075 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
23076 <td class="entry_name
23078 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
23080 <td class="entry_type">
23081 <span class="entry_type_name">float</span>
23082 <span class="entry_type_container">x</span>
23084 <span class="entry_type_array">
23087 <span class="entry_type_visibility"> [public]</span>
23092 <div class="entry_type_notes">2x2 raw count block</div>
23095 </td> <!-- entry_type -->
23097 <td class="entry_description">
23098 <p>A per-frame dynamic black level offset for each of the color filter
23099 arrangement (CFA) mosaic channels.<wbr/></p>
23102 <td class="entry_units">
23105 <td class="entry_range">
23106 <p>>= 0 for each.<wbr/></p>
23109 <td class="entry_hal_version">
23113 <td class="entry_tags">
23114 <ul class="entry_tags">
23115 <li><a href="#tag_RAW">RAW</a></li>
23120 <tr class="entries_header">
23121 <th class="th_details" colspan="6">Details</th>
23123 <tr class="entry_cont">
23124 <td class="entry_details" colspan="6">
23125 <p>Camera sensor black levels may vary dramatically for different
23126 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
23127 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
23128 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
23129 camera device internal pipeline relies on reliable black level values
23130 to process the raw images appropriately.<wbr/> To get the best image
23131 quality,<wbr/> the camera device may choose to estimate the per frame black
23132 level values either based on optically shielded black regions
23133 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
23134 <p>This key reports the camera device estimated per-frame zero light
23135 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
23136 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
23137 approximation of the actual black level values.<wbr/> This value is the
23138 black level used in camera device internal image processing pipeline
23139 and generally more accurate than the fixed black level values.<wbr/>
23140 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
23141 may not be as accurate as the black level values calculated from the
23142 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
23143 <p>The values are given in the same order as channels listed for the CFA
23144 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
23145 nth value given corresponds to the black level offset for the nth
23146 color channel listed in the CFA.<wbr/></p>
23147 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is available or the
23148 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
23152 <tr class="entries_header">
23153 <th class="th_details" colspan="6">HAL Implementation Details</th>
23155 <tr class="entry_cont">
23156 <td class="entry_details" colspan="6">
23157 <p>The values are given in row-column scan order,<wbr/> with the first value
23158 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
23162 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23163 <!-- end of entry -->
23166 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
23167 <td class="entry_name
23169 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
23171 <td class="entry_type">
23172 <span class="entry_type_name">int32</span>
23174 <span class="entry_type_visibility"> [public]</span>
23181 </td> <!-- entry_type -->
23183 <td class="entry_description">
23184 <p>Maximum raw value output by sensor for this frame.<wbr/></p>
23187 <td class="entry_units">
23190 <td class="entry_range">
23194 <td class="entry_hal_version">
23198 <td class="entry_tags">
23199 <ul class="entry_tags">
23200 <li><a href="#tag_RAW">RAW</a></li>
23205 <tr class="entries_header">
23206 <th class="th_details" colspan="6">Details</th>
23208 <tr class="entry_cont">
23209 <td class="entry_details" colspan="6">
23210 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
23211 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
23212 level will change accordingly.<wbr/> This key is similar to
23213 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
23214 estimated white level for each frame.<wbr/></p>
23215 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
23216 available or the camera device advertises this key via
23217 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
23221 <tr class="entries_header">
23222 <th class="th_details" colspan="6">HAL Implementation Details</th>
23224 <tr class="entry_cont">
23225 <td class="entry_details" colspan="6">
23226 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
23227 so the value for linear sensors should not be significantly lower
23228 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
23232 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23233 <!-- end of entry -->
23237 <!-- end of kind -->
23240 <!-- end of section -->
23241 <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
23244 <tr><td colspan="7" class="kind">controls</td></tr>
23246 <thead class="entries_header">
23248 <th class="th_name">Property Name</th>
23249 <th class="th_type">Type</th>
23250 <th class="th_description">Description</th>
23251 <th class="th_units">Units</th>
23252 <th class="th_range">Range</th>
23253 <th class="th_hal_version">Initial HIDL HAL version</th>
23254 <th class="th_tags">Tags</th>
23269 <tr class="entry" id="controls_android.shading.mode">
23270 <td class="entry_name
23272 android.<wbr/>shading.<wbr/>mode
23274 <td class="entry_type">
23275 <span class="entry_type_name entry_type_name_enum">byte</span>
23277 <span class="entry_type_visibility"> [public]</span>
23280 <span class="entry_type_hwlevel">[full] </span>
23284 <ul class="entry_type_enum">
23286 <span class="entry_type_enum_name">OFF (v3.2)</span>
23287 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23290 <span class="entry_type_enum_name">FAST (v3.2)</span>
23291 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23292 frame rate relative to sensor raw output</p></span>
23295 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23296 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23297 cost of possibly reduced frame rate.<wbr/></p></span>
23301 </td> <!-- entry_type -->
23303 <td class="entry_description">
23304 <p>Quality of lens shading correction applied
23305 to the image data.<wbr/></p>
23308 <td class="entry_units">
23311 <td class="entry_range">
23312 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23315 <td class="entry_hal_version">
23319 <td class="entry_tags">
23323 <tr class="entries_header">
23324 <th class="th_details" colspan="6">Details</th>
23326 <tr class="entry_cont">
23327 <td class="entry_details" colspan="6">
23328 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23329 camera device,<wbr/> and an identity lens shading map data will be provided
23330 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
23331 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23332 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
23333 map shown below:</p>
23334 <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/>
23335 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/>
23336 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/>
23337 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/>
23338 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/>
23339 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 ]
23341 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23342 device.<wbr/> Applications can request lens shading map data by setting
23343 <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
23344 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
23345 data will be the one applied by the camera device for this capture request.<wbr/></p>
23346 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23347 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23348 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>
23349 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23350 to be converged before using the returned shading map data.<wbr/></p>
23355 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23356 <!-- end of entry -->
23359 <tr class="entry" id="controls_android.shading.strength">
23360 <td class="entry_name
23362 android.<wbr/>shading.<wbr/>strength
23364 <td class="entry_type">
23365 <span class="entry_type_name">byte</span>
23367 <span class="entry_type_visibility"> [system]</span>
23374 </td> <!-- entry_type -->
23376 <td class="entry_description">
23377 <p>Control the amount of shading correction
23378 applied to the images</p>
23381 <td class="entry_units">
23382 unitless: 1-10; 10 is full shading
23386 <td class="entry_range">
23389 <td class="entry_hal_version">
23393 <td class="entry_tags">
23394 <ul class="entry_tags">
23395 <li><a href="#tag_FUTURE">FUTURE</a></li>
23402 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23403 <!-- end of entry -->
23407 <!-- end of kind -->
23409 <tr><td colspan="7" class="kind">dynamic</td></tr>
23411 <thead class="entries_header">
23413 <th class="th_name">Property Name</th>
23414 <th class="th_type">Type</th>
23415 <th class="th_description">Description</th>
23416 <th class="th_units">Units</th>
23417 <th class="th_range">Range</th>
23418 <th class="th_hal_version">Initial HIDL HAL version</th>
23419 <th class="th_tags">Tags</th>
23434 <tr class="entry" id="dynamic_android.shading.mode">
23435 <td class="entry_name
23437 android.<wbr/>shading.<wbr/>mode
23439 <td class="entry_type">
23440 <span class="entry_type_name entry_type_name_enum">byte</span>
23442 <span class="entry_type_visibility"> [public]</span>
23445 <span class="entry_type_hwlevel">[full] </span>
23449 <ul class="entry_type_enum">
23451 <span class="entry_type_enum_name">OFF (v3.2)</span>
23452 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23455 <span class="entry_type_enum_name">FAST (v3.2)</span>
23456 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23457 frame rate relative to sensor raw output</p></span>
23460 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23461 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23462 cost of possibly reduced frame rate.<wbr/></p></span>
23466 </td> <!-- entry_type -->
23468 <td class="entry_description">
23469 <p>Quality of lens shading correction applied
23470 to the image data.<wbr/></p>
23473 <td class="entry_units">
23476 <td class="entry_range">
23477 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23480 <td class="entry_hal_version">
23484 <td class="entry_tags">
23488 <tr class="entries_header">
23489 <th class="th_details" colspan="6">Details</th>
23491 <tr class="entry_cont">
23492 <td class="entry_details" colspan="6">
23493 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23494 camera device,<wbr/> and an identity lens shading map data will be provided
23495 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
23496 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23497 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
23498 map shown below:</p>
23499 <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/>
23500 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/>
23501 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/>
23502 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/>
23503 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/>
23504 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 ]
23506 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23507 device.<wbr/> Applications can request lens shading map data by setting
23508 <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
23509 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
23510 data will be the one applied by the camera device for this capture request.<wbr/></p>
23511 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23512 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23513 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>
23514 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23515 to be converged before using the returned shading map data.<wbr/></p>
23520 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23521 <!-- end of entry -->
23525 <!-- end of kind -->
23527 <tr><td colspan="7" class="kind">static</td></tr>
23529 <thead class="entries_header">
23531 <th class="th_name">Property Name</th>
23532 <th class="th_type">Type</th>
23533 <th class="th_description">Description</th>
23534 <th class="th_units">Units</th>
23535 <th class="th_range">Range</th>
23536 <th class="th_hal_version">Initial HIDL HAL version</th>
23537 <th class="th_tags">Tags</th>
23552 <tr class="entry" id="static_android.shading.availableModes">
23553 <td class="entry_name
23555 android.<wbr/>shading.<wbr/>available<wbr/>Modes
23557 <td class="entry_type">
23558 <span class="entry_type_name">byte</span>
23559 <span class="entry_type_container">x</span>
23561 <span class="entry_type_array">
23564 <span class="entry_type_visibility"> [public as enumList]</span>
23567 <span class="entry_type_hwlevel">[legacy] </span>
23570 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23573 </td> <!-- entry_type -->
23575 <td class="entry_description">
23576 <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>
23579 <td class="entry_units">
23582 <td class="entry_range">
23583 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23586 <td class="entry_hal_version">
23590 <td class="entry_tags">
23594 <tr class="entries_header">
23595 <th class="th_details" colspan="6">Details</th>
23597 <tr class="entry_cont">
23598 <td class="entry_details" colspan="6">
23599 <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23600 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23601 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23602 LEGACY devices will always only support FAST mode.<wbr/></p>
23606 <tr class="entries_header">
23607 <th class="th_details" colspan="6">HAL Implementation Details</th>
23609 <tr class="entry_cont">
23610 <td class="entry_details" colspan="6">
23611 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23612 available on the camera device,<wbr/> but the underlying implementation can be the same for
23613 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23614 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23618 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23619 <!-- end of entry -->
23623 <!-- end of kind -->
23626 <!-- end of section -->
23627 <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23630 <tr><td colspan="7" class="kind">controls</td></tr>
23632 <thead class="entries_header">
23634 <th class="th_name">Property Name</th>
23635 <th class="th_type">Type</th>
23636 <th class="th_description">Description</th>
23637 <th class="th_units">Units</th>
23638 <th class="th_range">Range</th>
23639 <th class="th_hal_version">Initial HIDL HAL version</th>
23640 <th class="th_tags">Tags</th>
23655 <tr class="entry" id="controls_android.statistics.faceDetectMode">
23656 <td class="entry_name
23658 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23660 <td class="entry_type">
23661 <span class="entry_type_name entry_type_name_enum">byte</span>
23663 <span class="entry_type_visibility"> [public]</span>
23666 <span class="entry_type_hwlevel">[legacy] </span>
23670 <ul class="entry_type_enum">
23672 <span class="entry_type_enum_name">OFF (v3.2)</span>
23673 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23674 results.<wbr/></p></span>
23677 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
23678 <span class="entry_type_enum_optional">[optional]</span>
23679 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
23682 <span class="entry_type_enum_name">FULL (v3.2)</span>
23683 <span class="entry_type_enum_optional">[optional]</span>
23684 <span class="entry_type_enum_notes"><p>Return all face
23685 metadata.<wbr/></p>
23686 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
23690 </td> <!-- entry_type -->
23692 <td class="entry_description">
23693 <p>Operating mode for the face detector
23697 <td class="entry_units">
23700 <td class="entry_range">
23701 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
23704 <td class="entry_hal_version">
23708 <td class="entry_tags">
23709 <ul class="entry_tags">
23710 <li><a href="#tag_BC">BC</a></li>
23715 <tr class="entries_header">
23716 <th class="th_details" colspan="6">Details</th>
23718 <tr class="entry_cont">
23719 <td class="entry_details" colspan="6">
23720 <p>Whether face detection is enabled,<wbr/> and whether it
23721 should output just the basic fields or the full set of
23726 <tr class="entries_header">
23727 <th class="th_details" colspan="6">HAL Implementation Details</th>
23729 <tr class="entry_cont">
23730 <td class="entry_details" colspan="6">
23731 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
23732 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
23733 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
23734 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
23738 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23739 <!-- end of entry -->
23742 <tr class="entry" id="controls_android.statistics.histogramMode">
23743 <td class="entry_name
23745 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23747 <td class="entry_type">
23748 <span class="entry_type_name entry_type_name_enum">byte</span>
23750 <span class="entry_type_visibility"> [system as boolean]</span>
23756 <ul class="entry_type_enum">
23758 <span class="entry_type_enum_name">OFF (v3.2)</span>
23761 <span class="entry_type_enum_name">ON (v3.2)</span>
23765 </td> <!-- entry_type -->
23767 <td class="entry_description">
23768 <p>Operating mode for histogram
23772 <td class="entry_units">
23775 <td class="entry_range">
23778 <td class="entry_hal_version">
23782 <td class="entry_tags">
23783 <ul class="entry_tags">
23784 <li><a href="#tag_FUTURE">FUTURE</a></li>
23791 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23792 <!-- end of entry -->
23795 <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
23796 <td class="entry_name
23798 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23800 <td class="entry_type">
23801 <span class="entry_type_name entry_type_name_enum">byte</span>
23803 <span class="entry_type_visibility"> [system as boolean]</span>
23809 <ul class="entry_type_enum">
23811 <span class="entry_type_enum_name">OFF (v3.2)</span>
23814 <span class="entry_type_enum_name">ON (v3.2)</span>
23818 </td> <!-- entry_type -->
23820 <td class="entry_description">
23821 <p>Operating mode for sharpness map
23825 <td class="entry_units">
23828 <td class="entry_range">
23831 <td class="entry_hal_version">
23835 <td class="entry_tags">
23836 <ul class="entry_tags">
23837 <li><a href="#tag_FUTURE">FUTURE</a></li>
23844 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23845 <!-- end of entry -->
23848 <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
23849 <td class="entry_name
23851 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23853 <td class="entry_type">
23854 <span class="entry_type_name entry_type_name_enum">byte</span>
23856 <span class="entry_type_visibility"> [public as boolean]</span>
23862 <ul class="entry_type_enum">
23864 <span class="entry_type_enum_name">OFF (v3.2)</span>
23865 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23868 <span class="entry_type_enum_name">ON (v3.2)</span>
23869 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23873 </td> <!-- entry_type -->
23875 <td class="entry_description">
23876 <p>Operating mode for hot pixel map generation.<wbr/></p>
23879 <td class="entry_units">
23882 <td class="entry_range">
23883 <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>
23886 <td class="entry_hal_version">
23890 <td class="entry_tags">
23891 <ul class="entry_tags">
23892 <li><a href="#tag_V1">V1</a></li>
23893 <li><a href="#tag_RAW">RAW</a></li>
23898 <tr class="entries_header">
23899 <th class="th_details" colspan="6">Details</th>
23901 <tr class="entry_cont">
23902 <td class="entry_details" colspan="6">
23903 <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/>
23904 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
23909 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23910 <!-- end of entry -->
23913 <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
23914 <td class="entry_name
23916 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
23918 <td class="entry_type">
23919 <span class="entry_type_name entry_type_name_enum">byte</span>
23921 <span class="entry_type_visibility"> [public]</span>
23924 <span class="entry_type_hwlevel">[full] </span>
23928 <ul class="entry_type_enum">
23930 <span class="entry_type_enum_name">OFF (v3.2)</span>
23931 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
23934 <span class="entry_type_enum_name">ON (v3.2)</span>
23935 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
23939 </td> <!-- entry_type -->
23941 <td class="entry_description">
23942 <p>Whether the camera device will output the lens
23943 shading map in output result metadata.<wbr/></p>
23946 <td class="entry_units">
23949 <td class="entry_range">
23950 <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>
23953 <td class="entry_hal_version">
23957 <td class="entry_tags">
23958 <ul class="entry_tags">
23959 <li><a href="#tag_RAW">RAW</a></li>
23964 <tr class="entries_header">
23965 <th class="th_details" colspan="6">Details</th>
23967 <tr class="entry_cont">
23968 <td class="entry_details" colspan="6">
23969 <p>When set to ON,<wbr/>
23970 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
23971 the output result metadata.<wbr/></p>
23972 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
23977 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23978 <!-- end of entry -->
23981 <tr class="entry" id="controls_android.statistics.oisDataMode">
23982 <td class="entry_name
23984 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
23986 <td class="entry_type">
23987 <span class="entry_type_name entry_type_name_enum">byte</span>
23989 <span class="entry_type_visibility"> [public]</span>
23995 <ul class="entry_type_enum">
23997 <span class="entry_type_enum_name">OFF (v3.3)</span>
23998 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
24001 <span class="entry_type_enum_name">ON (v3.3)</span>
24002 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
24006 </td> <!-- entry_type -->
24008 <td class="entry_description">
24009 <p>Whether the camera device will output the OIS data in output
24010 result metadata.<wbr/></p>
24013 <td class="entry_units">
24016 <td class="entry_range">
24017 <p>android.<wbr/>Statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</p>
24020 <td class="entry_hal_version">
24024 <td class="entry_tags">
24028 <tr class="entries_header">
24029 <th class="th_details" colspan="6">Details</th>
24031 <tr class="entry_cont">
24032 <td class="entry_details" colspan="6">
24033 <p>When set to ON,<wbr/>
24034 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>,<wbr/> android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>X,<wbr/>
24035 android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>Y will provide OIS data in the output result metadata.<wbr/></p>
24040 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24041 <!-- end of entry -->
24045 <!-- end of kind -->
24047 <tr><td colspan="7" class="kind">static</td></tr>
24049 <thead class="entries_header">
24051 <th class="th_name">Property Name</th>
24052 <th class="th_type">Type</th>
24053 <th class="th_description">Description</th>
24054 <th class="th_units">Units</th>
24055 <th class="th_range">Range</th>
24056 <th class="th_hal_version">Initial HIDL HAL version</th>
24057 <th class="th_tags">Tags</th>
24074 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
24075 <td class="entry_name
24077 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
24079 <td class="entry_type">
24080 <span class="entry_type_name">byte</span>
24081 <span class="entry_type_container">x</span>
24083 <span class="entry_type_array">
24086 <span class="entry_type_visibility"> [public as enumList]</span>
24089 <span class="entry_type_hwlevel">[legacy] </span>
24092 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
24095 </td> <!-- entry_type -->
24097 <td class="entry_description">
24098 <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
24099 supported by this camera device.<wbr/></p>
24102 <td class="entry_units">
24105 <td class="entry_range">
24106 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
24109 <td class="entry_hal_version">
24113 <td class="entry_tags">
24117 <tr class="entries_header">
24118 <th class="th_details" colspan="6">Details</th>
24120 <tr class="entry_cont">
24121 <td class="entry_details" colspan="6">
24122 <p>OFF is always supported.<wbr/></p>
24127 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24128 <!-- end of entry -->
24131 <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
24132 <td class="entry_name
24134 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
24136 <td class="entry_type">
24137 <span class="entry_type_name">int32</span>
24139 <span class="entry_type_visibility"> [system]</span>
24146 </td> <!-- entry_type -->
24148 <td class="entry_description">
24149 <p>Number of histogram buckets
24153 <td class="entry_units">
24156 <td class="entry_range">
24160 <td class="entry_hal_version">
24164 <td class="entry_tags">
24165 <ul class="entry_tags">
24166 <li><a href="#tag_FUTURE">FUTURE</a></li>
24173 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24174 <!-- end of entry -->
24177 <tr class="entry" id="static_android.statistics.info.maxFaceCount">
24178 <td class="entry_name
24180 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
24182 <td class="entry_type">
24183 <span class="entry_type_name">int32</span>
24185 <span class="entry_type_visibility"> [public]</span>
24188 <span class="entry_type_hwlevel">[legacy] </span>
24193 </td> <!-- entry_type -->
24195 <td class="entry_description">
24196 <p>The maximum number of simultaneously detectable
24200 <td class="entry_units">
24203 <td class="entry_range">
24204 <p>0 for cameras without available face detection; otherwise:
24205 <code>>=4</code> for LIMITED or FULL hwlevel devices or
24206 <code>>0</code> for LEGACY devices.<wbr/></p>
24209 <td class="entry_hal_version">
24213 <td class="entry_tags">
24214 <ul class="entry_tags">
24215 <li><a href="#tag_BC">BC</a></li>
24222 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24223 <!-- end of entry -->
24226 <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
24227 <td class="entry_name
24229 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
24231 <td class="entry_type">
24232 <span class="entry_type_name">int32</span>
24234 <span class="entry_type_visibility"> [system]</span>
24241 </td> <!-- entry_type -->
24243 <td class="entry_description">
24244 <p>Maximum value possible for a histogram
24248 <td class="entry_units">
24251 <td class="entry_range">
24254 <td class="entry_hal_version">
24258 <td class="entry_tags">
24259 <ul class="entry_tags">
24260 <li><a href="#tag_FUTURE">FUTURE</a></li>
24267 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24268 <!-- end of entry -->
24271 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
24272 <td class="entry_name
24274 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
24276 <td class="entry_type">
24277 <span class="entry_type_name">int32</span>
24279 <span class="entry_type_visibility"> [system]</span>
24286 </td> <!-- entry_type -->
24288 <td class="entry_description">
24289 <p>Maximum value possible for a sharpness map
24293 <td class="entry_units">
24296 <td class="entry_range">
24299 <td class="entry_hal_version">
24303 <td class="entry_tags">
24304 <ul class="entry_tags">
24305 <li><a href="#tag_FUTURE">FUTURE</a></li>
24312 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24313 <!-- end of entry -->
24316 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
24317 <td class="entry_name
24319 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
24321 <td class="entry_type">
24322 <span class="entry_type_name">int32</span>
24323 <span class="entry_type_container">x</span>
24325 <span class="entry_type_array">
24328 <span class="entry_type_visibility"> [system as size]</span>
24333 <div class="entry_type_notes">width x height</div>
24336 </td> <!-- entry_type -->
24338 <td class="entry_description">
24339 <p>Dimensions of the sharpness
24343 <td class="entry_units">
24346 <td class="entry_range">
24347 <p>Must be at least 32 x 32</p>
24350 <td class="entry_hal_version">
24354 <td class="entry_tags">
24355 <ul class="entry_tags">
24356 <li><a href="#tag_FUTURE">FUTURE</a></li>
24363 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24364 <!-- end of entry -->
24367 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24368 <td class="entry_name
24370 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24372 <td class="entry_type">
24373 <span class="entry_type_name">byte</span>
24374 <span class="entry_type_container">x</span>
24376 <span class="entry_type_array">
24379 <span class="entry_type_visibility"> [public as boolean]</span>
24384 <div class="entry_type_notes">list of enums</div>
24387 </td> <!-- entry_type -->
24389 <td class="entry_description">
24390 <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
24391 supported by this camera device.<wbr/></p>
24394 <td class="entry_units">
24397 <td class="entry_range">
24398 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24401 <td class="entry_hal_version">
24405 <td class="entry_tags">
24406 <ul class="entry_tags">
24407 <li><a href="#tag_V1">V1</a></li>
24408 <li><a href="#tag_RAW">RAW</a></li>
24413 <tr class="entries_header">
24414 <th class="th_details" colspan="6">Details</th>
24416 <tr class="entry_cont">
24417 <td class="entry_details" colspan="6">
24418 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24419 <code>false</code>.<wbr/></p>
24420 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24425 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24426 <!-- end of entry -->
24429 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24430 <td class="entry_name
24432 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24434 <td class="entry_type">
24435 <span class="entry_type_name">byte</span>
24436 <span class="entry_type_container">x</span>
24438 <span class="entry_type_array">
24441 <span class="entry_type_visibility"> [public as enumList]</span>
24446 <div class="entry_type_notes">list of enums</div>
24449 </td> <!-- entry_type -->
24451 <td class="entry_description">
24452 <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
24453 are supported by this camera device.<wbr/></p>
24456 <td class="entry_units">
24459 <td class="entry_range">
24460 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24463 <td class="entry_hal_version">
24467 <td class="entry_tags">
24471 <tr class="entries_header">
24472 <th class="th_details" colspan="6">Details</th>
24474 <tr class="entry_cont">
24475 <td class="entry_details" colspan="6">
24476 <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24477 contain only OFF.<wbr/></p>
24478 <p>ON is always supported on devices with the RAW capability.<wbr/>
24479 LEGACY mode devices will always only support OFF.<wbr/></p>
24484 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24485 <!-- end of entry -->
24488 <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
24489 <td class="entry_name
24491 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
24493 <td class="entry_type">
24494 <span class="entry_type_name">byte</span>
24495 <span class="entry_type_container">x</span>
24497 <span class="entry_type_array">
24500 <span class="entry_type_visibility"> [public as enumList]</span>
24505 <div class="entry_type_notes">list of enums</div>
24508 </td> <!-- entry_type -->
24510 <td class="entry_description">
24511 <p>List of OIS data output modes for <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a> that
24512 are supported by this camera device.<wbr/></p>
24515 <td class="entry_units">
24518 <td class="entry_range">
24519 <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
24522 <td class="entry_hal_version">
24526 <td class="entry_tags">
24530 <tr class="entries_header">
24531 <th class="th_details" colspan="6">Details</th>
24533 <tr class="entry_cont">
24534 <td class="entry_details" colspan="6">
24535 <p>If no OIS data output is available for this camera device,<wbr/> this key will
24536 contain only OFF.<wbr/></p>
24541 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24542 <!-- end of entry -->
24549 <!-- end of kind -->
24551 <tr><td colspan="7" class="kind">dynamic</td></tr>
24553 <thead class="entries_header">
24555 <th class="th_name">Property Name</th>
24556 <th class="th_type">Type</th>
24557 <th class="th_description">Description</th>
24558 <th class="th_units">Units</th>
24559 <th class="th_range">Range</th>
24560 <th class="th_hal_version">Initial HIDL HAL version</th>
24561 <th class="th_tags">Tags</th>
24576 <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24577 <td class="entry_name
24579 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24581 <td class="entry_type">
24582 <span class="entry_type_name entry_type_name_enum">byte</span>
24584 <span class="entry_type_visibility"> [public]</span>
24587 <span class="entry_type_hwlevel">[legacy] </span>
24591 <ul class="entry_type_enum">
24593 <span class="entry_type_enum_name">OFF (v3.2)</span>
24594 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24595 results.<wbr/></p></span>
24598 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24599 <span class="entry_type_enum_optional">[optional]</span>
24600 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24603 <span class="entry_type_enum_name">FULL (v3.2)</span>
24604 <span class="entry_type_enum_optional">[optional]</span>
24605 <span class="entry_type_enum_notes"><p>Return all face
24606 metadata.<wbr/></p>
24607 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24611 </td> <!-- entry_type -->
24613 <td class="entry_description">
24614 <p>Operating mode for the face detector
24618 <td class="entry_units">
24621 <td class="entry_range">
24622 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24625 <td class="entry_hal_version">
24629 <td class="entry_tags">
24630 <ul class="entry_tags">
24631 <li><a href="#tag_BC">BC</a></li>
24636 <tr class="entries_header">
24637 <th class="th_details" colspan="6">Details</th>
24639 <tr class="entry_cont">
24640 <td class="entry_details" colspan="6">
24641 <p>Whether face detection is enabled,<wbr/> and whether it
24642 should output just the basic fields or the full set of
24647 <tr class="entries_header">
24648 <th class="th_details" colspan="6">HAL Implementation Details</th>
24650 <tr class="entry_cont">
24651 <td class="entry_details" colspan="6">
24652 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24653 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24654 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24655 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24659 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24660 <!-- end of entry -->
24663 <tr class="entry" id="dynamic_android.statistics.faceIds">
24664 <td class="entry_name
24666 android.<wbr/>statistics.<wbr/>face<wbr/>Ids
24668 <td class="entry_type">
24669 <span class="entry_type_name">int32</span>
24670 <span class="entry_type_container">x</span>
24672 <span class="entry_type_array">
24675 <span class="entry_type_visibility"> [ndk_public]</span>
24678 <span class="entry_type_hwlevel">[legacy] </span>
24683 </td> <!-- entry_type -->
24685 <td class="entry_description">
24686 <p>List of unique IDs for detected faces.<wbr/></p>
24689 <td class="entry_units">
24692 <td class="entry_range">
24695 <td class="entry_hal_version">
24699 <td class="entry_tags">
24700 <ul class="entry_tags">
24701 <li><a href="#tag_BC">BC</a></li>
24706 <tr class="entries_header">
24707 <th class="th_details" colspan="6">Details</th>
24709 <tr class="entry_cont">
24710 <td class="entry_details" colspan="6">
24711 <p>Each detected face is given a unique ID that is valid for as long as the face is visible
24712 to the camera device.<wbr/> A face that leaves the field of view and later returns may be
24713 assigned a new ID.<wbr/></p>
24714 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24719 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24720 <!-- end of entry -->
24723 <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
24724 <td class="entry_name
24726 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
24728 <td class="entry_type">
24729 <span class="entry_type_name">int32</span>
24730 <span class="entry_type_container">x</span>
24732 <span class="entry_type_array">
24735 <span class="entry_type_visibility"> [ndk_public]</span>
24738 <span class="entry_type_hwlevel">[legacy] </span>
24741 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
24744 </td> <!-- entry_type -->
24746 <td class="entry_description">
24747 <p>List of landmarks for detected
24751 <td class="entry_units">
24754 <td class="entry_range">
24757 <td class="entry_hal_version">
24761 <td class="entry_tags">
24762 <ul class="entry_tags">
24763 <li><a href="#tag_BC">BC</a></li>
24768 <tr class="entries_header">
24769 <th class="th_details" colspan="6">Details</th>
24771 <tr class="entry_cont">
24772 <td class="entry_details" colspan="6">
24773 <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
24774 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24775 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24780 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24781 <!-- end of entry -->
24784 <tr class="entry" id="dynamic_android.statistics.faceRectangles">
24785 <td class="entry_name
24787 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
24789 <td class="entry_type">
24790 <span class="entry_type_name">int32</span>
24791 <span class="entry_type_container">x</span>
24793 <span class="entry_type_array">
24796 <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
24799 <span class="entry_type_hwlevel">[legacy] </span>
24802 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
24805 </td> <!-- entry_type -->
24807 <td class="entry_description">
24808 <p>List of the bounding rectangles for detected
24812 <td class="entry_units">
24815 <td class="entry_range">
24818 <td class="entry_hal_version">
24822 <td class="entry_tags">
24823 <ul class="entry_tags">
24824 <li><a href="#tag_BC">BC</a></li>
24829 <tr class="entries_header">
24830 <th class="th_details" colspan="6">Details</th>
24832 <tr class="entry_cont">
24833 <td class="entry_details" colspan="6">
24834 <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
24835 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24836 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
24841 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24842 <!-- end of entry -->
24845 <tr class="entry" id="dynamic_android.statistics.faceScores">
24846 <td class="entry_name
24848 android.<wbr/>statistics.<wbr/>face<wbr/>Scores
24850 <td class="entry_type">
24851 <span class="entry_type_name">byte</span>
24852 <span class="entry_type_container">x</span>
24854 <span class="entry_type_array">
24857 <span class="entry_type_visibility"> [ndk_public]</span>
24860 <span class="entry_type_hwlevel">[legacy] </span>
24865 </td> <!-- entry_type -->
24867 <td class="entry_description">
24868 <p>List of the face confidence scores for
24872 <td class="entry_units">
24875 <td class="entry_range">
24879 <td class="entry_hal_version">
24883 <td class="entry_tags">
24884 <ul class="entry_tags">
24885 <li><a href="#tag_BC">BC</a></li>
24890 <tr class="entries_header">
24891 <th class="th_details" colspan="6">Details</th>
24893 <tr class="entry_cont">
24894 <td class="entry_details" colspan="6">
24895 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
24899 <tr class="entries_header">
24900 <th class="th_details" colspan="6">HAL Implementation Details</th>
24902 <tr class="entry_cont">
24903 <td class="entry_details" colspan="6">
24904 <p>The value should be meaningful (for example,<wbr/> setting 100 at
24905 all times is illegal).<wbr/></p>
24909 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24910 <!-- end of entry -->
24913 <tr class="entry" id="dynamic_android.statistics.faces">
24914 <td class="entry_name
24916 android.<wbr/>statistics.<wbr/>faces
24918 <td class="entry_type">
24919 <span class="entry_type_name">int32</span>
24920 <span class="entry_type_container">x</span>
24922 <span class="entry_type_array">
24925 <span class="entry_type_visibility"> [java_public as face]</span>
24927 <span class="entry_type_synthetic">[synthetic] </span>
24929 <span class="entry_type_hwlevel">[legacy] </span>
24934 </td> <!-- entry_type -->
24936 <td class="entry_description">
24937 <p>List of the faces detected through camera face detection
24938 in this capture.<wbr/></p>
24941 <td class="entry_units">
24944 <td class="entry_range">
24947 <td class="entry_hal_version">
24951 <td class="entry_tags">
24955 <tr class="entries_header">
24956 <th class="th_details" colspan="6">Details</th>
24958 <tr class="entry_cont">
24959 <td class="entry_details" colspan="6">
24960 <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>
24965 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24966 <!-- end of entry -->
24969 <tr class="entry" id="dynamic_android.statistics.histogram">
24970 <td class="entry_name
24972 android.<wbr/>statistics.<wbr/>histogram
24974 <td class="entry_type">
24975 <span class="entry_type_name">int32</span>
24976 <span class="entry_type_container">x</span>
24978 <span class="entry_type_array">
24981 <span class="entry_type_visibility"> [system]</span>
24986 <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>
24989 </td> <!-- entry_type -->
24991 <td class="entry_description">
24992 <p>A 3-channel histogram based on the raw
24996 <td class="entry_units">
24999 <td class="entry_range">
25002 <td class="entry_hal_version">
25006 <td class="entry_tags">
25007 <ul class="entry_tags">
25008 <li><a href="#tag_FUTURE">FUTURE</a></li>
25013 <tr class="entries_header">
25014 <th class="th_details" colspan="6">Details</th>
25016 <tr class="entry_cont">
25017 <td class="entry_details" colspan="6">
25018 <p>The k'th bucket (0-based) covers the input range
25019 (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/>
25020 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
25021 supported,<wbr/> all channels should have the same data</p>
25026 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25027 <!-- end of entry -->
25030 <tr class="entry" id="dynamic_android.statistics.histogramMode">
25031 <td class="entry_name
25033 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
25035 <td class="entry_type">
25036 <span class="entry_type_name entry_type_name_enum">byte</span>
25038 <span class="entry_type_visibility"> [system as boolean]</span>
25044 <ul class="entry_type_enum">
25046 <span class="entry_type_enum_name">OFF (v3.2)</span>
25049 <span class="entry_type_enum_name">ON (v3.2)</span>
25053 </td> <!-- entry_type -->
25055 <td class="entry_description">
25056 <p>Operating mode for histogram
25060 <td class="entry_units">
25063 <td class="entry_range">
25066 <td class="entry_hal_version">
25070 <td class="entry_tags">
25071 <ul class="entry_tags">
25072 <li><a href="#tag_FUTURE">FUTURE</a></li>
25079 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25080 <!-- end of entry -->
25083 <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
25084 <td class="entry_name
25086 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
25088 <td class="entry_type">
25089 <span class="entry_type_name">int32</span>
25090 <span class="entry_type_container">x</span>
25092 <span class="entry_type_array">
25095 <span class="entry_type_visibility"> [system]</span>
25100 <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>
25103 </td> <!-- entry_type -->
25105 <td class="entry_description">
25106 <p>A 3-channel sharpness map,<wbr/> based on the raw
25110 <td class="entry_units">
25113 <td class="entry_range">
25116 <td class="entry_hal_version">
25120 <td class="entry_tags">
25121 <ul class="entry_tags">
25122 <li><a href="#tag_FUTURE">FUTURE</a></li>
25127 <tr class="entries_header">
25128 <th class="th_details" colspan="6">Details</th>
25130 <tr class="entry_cont">
25131 <td class="entry_details" colspan="6">
25132 <p>If only a monochrome sharpness map is supported,<wbr/>
25133 all channels should have the same data</p>
25138 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25139 <!-- end of entry -->
25142 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
25143 <td class="entry_name
25145 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
25147 <td class="entry_type">
25148 <span class="entry_type_name entry_type_name_enum">byte</span>
25150 <span class="entry_type_visibility"> [system as boolean]</span>
25156 <ul class="entry_type_enum">
25158 <span class="entry_type_enum_name">OFF (v3.2)</span>
25161 <span class="entry_type_enum_name">ON (v3.2)</span>
25165 </td> <!-- entry_type -->
25167 <td class="entry_description">
25168 <p>Operating mode for sharpness map
25172 <td class="entry_units">
25175 <td class="entry_range">
25178 <td class="entry_hal_version">
25182 <td class="entry_tags">
25183 <ul class="entry_tags">
25184 <li><a href="#tag_FUTURE">FUTURE</a></li>
25191 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25192 <!-- end of entry -->
25195 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
25196 <td class="entry_name
25198 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
25200 <td class="entry_type">
25201 <span class="entry_type_name">byte</span>
25203 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
25206 <span class="entry_type_hwlevel">[full] </span>
25211 </td> <!-- entry_type -->
25213 <td class="entry_description">
25214 <p>The shading map is a low-resolution floating-point map
25215 that lists the coefficients used to correct for vignetting,<wbr/> for each
25216 Bayer color channel.<wbr/></p>
25219 <td class="entry_units">
25222 <td class="entry_range">
25223 <p>Each gain factor is >= 1</p>
25226 <td class="entry_hal_version">
25230 <td class="entry_tags">
25234 <tr class="entries_header">
25235 <th class="th_details" colspan="6">Details</th>
25237 <tr class="entry_cont">
25238 <td class="entry_details" colspan="6">
25239 <p>The map provided here is the same map that is used by the camera device to
25240 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25241 <p>When there is no lens shading correction applied to RAW
25242 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25243 false),<wbr/> this map is the complete lens shading correction
25244 map; when there is some lens shading correction applied to
25245 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
25246 correction map that needs to be applied to get shading
25247 corrected images that match the camera device's output for
25248 non-RAW formats.<wbr/></p>
25249 <p>For a complete shading correction map,<wbr/> the least shaded
25250 section of the image will have a gain factor of 1; all
25251 other sections will have gains above 1.<wbr/></p>
25252 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25253 will take into account the colorCorrection settings.<wbr/></p>
25254 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25255 affected by the crop region specified in the request.<wbr/> Each shading map
25256 entry is the value of the shading compensation map over a specific
25257 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
25258 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25259 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25260 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25261 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25262 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25263 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25264 The shading map is stored in a fully interleaved format.<wbr/></p>
25265 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25266 and will be smaller than 64x64.<wbr/></p>
25267 <p>As an example,<wbr/> given a very small map defined as:</p>
25268 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
25270 [ 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/>
25271 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/>
25272 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/>
25273 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/>
25274 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/>
25275 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 ]
25277 <p>The low-resolution scaling map images for each channel are
25278 (displayed using nearest-neighbor interpolation):</p>
25279 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25280 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25281 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25282 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25283 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25284 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
25285 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25290 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25291 <!-- end of entry -->
25294 <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
25295 <td class="entry_name
25297 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
25299 <td class="entry_type">
25300 <span class="entry_type_name">float</span>
25301 <span class="entry_type_container">x</span>
25303 <span class="entry_type_array">
25306 <span class="entry_type_visibility"> [ndk_public]</span>
25309 <span class="entry_type_hwlevel">[full] </span>
25312 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
25315 </td> <!-- entry_type -->
25317 <td class="entry_description">
25318 <p>The shading map is a low-resolution floating-point map
25319 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
25320 for each Bayer color channel of RAW image data.<wbr/></p>
25323 <td class="entry_units">
25326 <td class="entry_range">
25327 <p>Each gain factor is >= 1</p>
25330 <td class="entry_hal_version">
25334 <td class="entry_tags">
25338 <tr class="entries_header">
25339 <th class="th_details" colspan="6">Details</th>
25341 <tr class="entry_cont">
25342 <td class="entry_details" colspan="6">
25343 <p>The map provided here is the same map that is used by the camera device to
25344 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25345 <p>When there is no lens shading correction applied to RAW
25346 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25347 false),<wbr/> this map is the complete lens shading correction
25348 map; when there is some lens shading correction applied to
25349 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
25350 correction map that needs to be applied to get shading
25351 corrected images that match the camera device's output for
25352 non-RAW formats.<wbr/></p>
25353 <p>For a complete shading correction map,<wbr/> the least shaded
25354 section of the image will have a gain factor of 1; all
25355 other sections will have gains above 1.<wbr/></p>
25356 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25357 will take into account the colorCorrection settings.<wbr/></p>
25358 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25359 affected by the crop region specified in the request.<wbr/> Each shading map
25360 entry is the value of the shading compensation map over a specific
25361 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
25362 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25363 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25364 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25365 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25366 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25367 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25368 The shading map is stored in a fully interleaved format,<wbr/> and its size
25369 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>
25370 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25371 and will be smaller than 64x64.<wbr/></p>
25372 <p>As an example,<wbr/> given a very small map defined as:</p>
25373 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
25374 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
25375 [ 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/>
25376 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/>
25377 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/>
25378 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/>
25379 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/>
25380 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 ]
25382 <p>The low-resolution scaling map images for each channel are
25383 (displayed using nearest-neighbor interpolation):</p>
25384 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25385 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25386 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25387 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25388 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25389 image of a gray wall (using bicubic interpolation for visual quality)
25390 as captured by the sensor gives:</p>
25391 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25392 <p>Note that the RAW image data might be subject to lens shading
25393 correction not reported on this map.<wbr/> Query
25394 <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
25395 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>
25396 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25397 correction.<wbr/> In the case full lens shading correction is applied to RAW
25398 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25399 In other words,<wbr/> the map reported in this key is the remaining lens shading
25400 that needs to be applied on the RAW image to get images without lens shading
25401 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
25406 <tr class="entries_header">
25407 <th class="th_details" colspan="6">HAL Implementation Details</th>
25409 <tr class="entry_cont">
25410 <td class="entry_details" colspan="6">
25411 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25412 When AE and AWB are in AUTO modes
25413 (<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
25414 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25415 AE or AWB are in manual mode
25416 (<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
25417 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25418 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25419 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25423 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25424 <!-- end of entry -->
25427 <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25428 <td class="entry_name
25429 entry_name_deprecated
25431 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25433 <td class="entry_type">
25434 <span class="entry_type_name">float</span>
25435 <span class="entry_type_container">x</span>
25437 <span class="entry_type_array">
25440 <span class="entry_type_visibility"> [hidden]</span>
25444 <span class="entry_type_deprecated">[deprecated] </span>
25446 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25449 </td> <!-- entry_type -->
25451 <td class="entry_description">
25452 <p>The best-fit color channel gains calculated
25453 by the camera device's statistics units for the current output frame.<wbr/></p>
25456 <td class="entry_units">
25459 <td class="entry_range">
25460 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25463 <td class="entry_hal_version">
25467 <td class="entry_tags">
25471 <tr class="entries_header">
25472 <th class="th_details" colspan="6">Details</th>
25474 <tr class="entry_cont">
25475 <td class="entry_details" colspan="6">
25476 <p>This may be different than the gains used for this frame,<wbr/>
25477 since statistics processing on data from a new frame
25478 typically completes after the transform has already been
25479 applied to that frame.<wbr/></p>
25480 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25481 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25482 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25483 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25488 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25489 <!-- end of entry -->
25492 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25493 <td class="entry_name
25494 entry_name_deprecated
25496 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25498 <td class="entry_type">
25499 <span class="entry_type_name">rational</span>
25500 <span class="entry_type_container">x</span>
25502 <span class="entry_type_array">
25505 <span class="entry_type_visibility"> [hidden]</span>
25509 <span class="entry_type_deprecated">[deprecated] </span>
25511 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25514 </td> <!-- entry_type -->
25516 <td class="entry_description">
25517 <p>The best-fit color transform matrix estimate
25518 calculated by the camera device's statistics units for the current
25519 output frame.<wbr/></p>
25522 <td class="entry_units">
25525 <td class="entry_range">
25526 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25529 <td class="entry_hal_version">
25533 <td class="entry_tags">
25537 <tr class="entries_header">
25538 <th class="th_details" colspan="6">Details</th>
25540 <tr class="entry_cont">
25541 <td class="entry_details" colspan="6">
25542 <p>The camera device will provide the estimate from its
25543 statistics unit on the white balance transforms to use
25544 for the next frame.<wbr/> These are the values the camera device believes
25545 are the best fit for the current output frame.<wbr/> This may
25546 be different than the transform used for this frame,<wbr/> since
25547 statistics processing on data from a new frame typically
25548 completes after the transform has already been applied to
25549 that frame.<wbr/></p>
25550 <p>These estimates must be provided for all frames,<wbr/> even if
25551 capture settings and color transforms are set by the application.<wbr/></p>
25552 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25553 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25558 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25559 <!-- end of entry -->
25562 <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25563 <td class="entry_name
25565 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25567 <td class="entry_type">
25568 <span class="entry_type_name entry_type_name_enum">byte</span>
25570 <span class="entry_type_visibility"> [public]</span>
25573 <span class="entry_type_hwlevel">[full] </span>
25577 <ul class="entry_type_enum">
25579 <span class="entry_type_enum_name">NONE (v3.2)</span>
25580 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25581 in the current scene.<wbr/></p></span>
25584 <span class="entry_type_enum_name">50HZ (v3.2)</span>
25585 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25586 in the current scene.<wbr/></p></span>
25589 <span class="entry_type_enum_name">60HZ (v3.2)</span>
25590 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25591 in the current scene.<wbr/></p></span>
25595 </td> <!-- entry_type -->
25597 <td class="entry_description">
25598 <p>The camera device estimated scene illumination lighting
25599 frequency.<wbr/></p>
25602 <td class="entry_units">
25605 <td class="entry_range">
25608 <td class="entry_hal_version">
25612 <td class="entry_tags">
25616 <tr class="entries_header">
25617 <th class="th_details" colspan="6">Details</th>
25619 <tr class="entry_cont">
25620 <td class="entry_details" colspan="6">
25621 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25622 that depends on the local utility power standards.<wbr/> This flicker must be
25623 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25624 The camera device uses this entry to tell the application what the scene
25625 illuminant frequency is.<wbr/></p>
25626 <p>When manual exposure control is enabled
25627 (<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> ==
25628 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25629 antibanding,<wbr/> and the application can ensure it selects
25630 exposure times that do not cause banding issues by looking
25631 into this metadata field.<wbr/> See
25632 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25633 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25638 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25639 <!-- end of entry -->
25642 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25643 <td class="entry_name
25645 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25647 <td class="entry_type">
25648 <span class="entry_type_name entry_type_name_enum">byte</span>
25650 <span class="entry_type_visibility"> [public as boolean]</span>
25656 <ul class="entry_type_enum">
25658 <span class="entry_type_enum_name">OFF (v3.2)</span>
25659 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
25662 <span class="entry_type_enum_name">ON (v3.2)</span>
25663 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
25667 </td> <!-- entry_type -->
25669 <td class="entry_description">
25670 <p>Operating mode for hot pixel map generation.<wbr/></p>
25673 <td class="entry_units">
25676 <td class="entry_range">
25677 <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>
25680 <td class="entry_hal_version">
25684 <td class="entry_tags">
25685 <ul class="entry_tags">
25686 <li><a href="#tag_V1">V1</a></li>
25687 <li><a href="#tag_RAW">RAW</a></li>
25692 <tr class="entries_header">
25693 <th class="th_details" colspan="6">Details</th>
25695 <tr class="entry_cont">
25696 <td class="entry_details" colspan="6">
25697 <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/>
25698 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
25703 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25704 <!-- end of entry -->
25707 <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
25708 <td class="entry_name
25710 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
25712 <td class="entry_type">
25713 <span class="entry_type_name">int32</span>
25714 <span class="entry_type_container">x</span>
25716 <span class="entry_type_array">
25719 <span class="entry_type_visibility"> [public as point]</span>
25724 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
25727 </td> <!-- entry_type -->
25729 <td class="entry_description">
25730 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
25733 <td class="entry_units">
25736 <td class="entry_range">
25737 <p>n <= number of pixels on the sensor.<wbr/>
25738 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
25739 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25742 <td class="entry_hal_version">
25746 <td class="entry_tags">
25747 <ul class="entry_tags">
25748 <li><a href="#tag_V1">V1</a></li>
25749 <li><a href="#tag_RAW">RAW</a></li>
25754 <tr class="entries_header">
25755 <th class="th_details" colspan="6">Details</th>
25757 <tr class="entry_cont">
25758 <td class="entry_details" colspan="6">
25759 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
25760 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
25761 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
25762 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/>
25763 This may include hot pixels that lie outside of the active array
25764 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25768 <tr class="entries_header">
25769 <th class="th_details" colspan="6">HAL Implementation Details</th>
25771 <tr class="entry_cont">
25772 <td class="entry_details" colspan="6">
25773 <p>A hotpixel map contains the coordinates of pixels on the camera
25774 sensor that do report valid values (usually due to defects in
25775 the camera sensor).<wbr/> This includes pixels that are stuck at certain
25776 values,<wbr/> or have a response that does not accuractly encode the
25777 incoming light from the scene.<wbr/></p>
25778 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
25779 pixels than actual pixels on the camera sensor.<wbr/></p>
25783 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25784 <!-- end of entry -->
25787 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
25788 <td class="entry_name
25790 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
25792 <td class="entry_type">
25793 <span class="entry_type_name entry_type_name_enum">byte</span>
25795 <span class="entry_type_visibility"> [public]</span>
25798 <span class="entry_type_hwlevel">[full] </span>
25802 <ul class="entry_type_enum">
25804 <span class="entry_type_enum_name">OFF (v3.2)</span>
25805 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
25808 <span class="entry_type_enum_name">ON (v3.2)</span>
25809 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
25813 </td> <!-- entry_type -->
25815 <td class="entry_description">
25816 <p>Whether the camera device will output the lens
25817 shading map in output result metadata.<wbr/></p>
25820 <td class="entry_units">
25823 <td class="entry_range">
25824 <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>
25827 <td class="entry_hal_version">
25831 <td class="entry_tags">
25832 <ul class="entry_tags">
25833 <li><a href="#tag_RAW">RAW</a></li>
25838 <tr class="entries_header">
25839 <th class="th_details" colspan="6">Details</th>
25841 <tr class="entry_cont">
25842 <td class="entry_details" colspan="6">
25843 <p>When set to ON,<wbr/>
25844 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
25845 the output result metadata.<wbr/></p>
25846 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
25851 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25852 <!-- end of entry -->
25855 <tr class="entry" id="dynamic_android.statistics.oisDataMode">
25856 <td class="entry_name
25858 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
25860 <td class="entry_type">
25861 <span class="entry_type_name entry_type_name_enum">byte</span>
25863 <span class="entry_type_visibility"> [public]</span>
25869 <ul class="entry_type_enum">
25871 <span class="entry_type_enum_name">OFF (v3.3)</span>
25872 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
25875 <span class="entry_type_enum_name">ON (v3.3)</span>
25876 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
25880 </td> <!-- entry_type -->
25882 <td class="entry_description">
25883 <p>Whether the camera device will output the OIS data in output
25884 result metadata.<wbr/></p>
25887 <td class="entry_units">
25890 <td class="entry_range">
25891 <p>android.<wbr/>Statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</p>
25894 <td class="entry_hal_version">
25898 <td class="entry_tags">
25902 <tr class="entries_header">
25903 <th class="th_details" colspan="6">Details</th>
25905 <tr class="entry_cont">
25906 <td class="entry_details" colspan="6">
25907 <p>When set to ON,<wbr/>
25908 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>,<wbr/> android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>X,<wbr/>
25909 android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>Y will provide OIS data in the output result metadata.<wbr/></p>
25914 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25915 <!-- end of entry -->
25918 <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
25919 <td class="entry_name
25921 android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
25923 <td class="entry_type">
25924 <span class="entry_type_name">int64</span>
25925 <span class="entry_type_container">x</span>
25927 <span class="entry_type_array">
25930 <span class="entry_type_visibility"> [public]</span>
25937 </td> <!-- entry_type -->
25939 <td class="entry_description">
25940 <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
25943 <td class="entry_units">
25947 <td class="entry_range">
25950 <td class="entry_hal_version">
25954 <td class="entry_tags">
25958 <tr class="entries_header">
25959 <th class="th_details" colspan="6">Details</th>
25961 <tr class="entry_cont">
25962 <td class="entry_details" colspan="6">
25963 <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
25964 timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
25969 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25970 <!-- end of entry -->
25973 <tr class="entry" id="dynamic_android.statistics.oisXShifts">
25974 <td class="entry_name
25976 android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
25978 <td class="entry_type">
25979 <span class="entry_type_name">float</span>
25980 <span class="entry_type_container">x</span>
25982 <span class="entry_type_array">
25985 <span class="entry_type_visibility"> [public]</span>
25992 </td> <!-- entry_type -->
25994 <td class="entry_description">
25995 <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
25998 <td class="entry_units">
25999 Pixels in active array.<wbr/>
26002 <td class="entry_range">
26005 <td class="entry_hal_version">
26009 <td class="entry_tags">
26013 <tr class="entries_header">
26014 <th class="th_details" colspan="6">Details</th>
26016 <tr class="entry_cont">
26017 <td class="entry_details" colspan="6">
26018 <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26019 A positive value is a shift from left to right in active array coordinate system.<wbr/> For
26020 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> an shift of
26021 (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26022 <p>The number of shifts must match the number of timestamps in
26023 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26028 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26029 <!-- end of entry -->
26032 <tr class="entry" id="dynamic_android.statistics.oisYShifts">
26033 <td class="entry_name
26035 android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
26037 <td class="entry_type">
26038 <span class="entry_type_name">float</span>
26039 <span class="entry_type_container">x</span>
26041 <span class="entry_type_array">
26044 <span class="entry_type_visibility"> [public]</span>
26051 </td> <!-- entry_type -->
26053 <td class="entry_description">
26054 <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
26057 <td class="entry_units">
26058 Pixels in active array.<wbr/>
26061 <td class="entry_range">
26064 <td class="entry_hal_version">
26068 <td class="entry_tags">
26072 <tr class="entries_header">
26073 <th class="th_details" colspan="6">Details</th>
26075 <tr class="entry_cont">
26076 <td class="entry_details" colspan="6">
26077 <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26078 A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For
26079 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> an shift of
26080 (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26081 <p>The number of shifts must match the number of timestamps in
26082 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26087 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26088 <!-- end of entry -->
26092 <!-- end of kind -->
26095 <!-- end of section -->
26096 <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
26099 <tr><td colspan="7" class="kind">controls</td></tr>
26101 <thead class="entries_header">
26103 <th class="th_name">Property Name</th>
26104 <th class="th_type">Type</th>
26105 <th class="th_description">Description</th>
26106 <th class="th_units">Units</th>
26107 <th class="th_range">Range</th>
26108 <th class="th_hal_version">Initial HIDL HAL version</th>
26109 <th class="th_tags">Tags</th>
26124 <tr class="entry" id="controls_android.tonemap.curveBlue">
26125 <td class="entry_name
26127 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26129 <td class="entry_type">
26130 <span class="entry_type_name">float</span>
26131 <span class="entry_type_container">x</span>
26133 <span class="entry_type_array">
26136 <span class="entry_type_visibility"> [ndk_public]</span>
26139 <span class="entry_type_hwlevel">[full] </span>
26142 <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>
26145 </td> <!-- entry_type -->
26147 <td class="entry_description">
26148 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26149 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26150 CONTRAST_<wbr/>CURVE.<wbr/></p>
26153 <td class="entry_units">
26156 <td class="entry_range">
26159 <td class="entry_hal_version">
26163 <td class="entry_tags">
26167 <tr class="entries_header">
26168 <th class="th_details" colspan="6">Details</th>
26170 <tr class="entry_cont">
26171 <td class="entry_details" colspan="6">
26172 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26177 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26178 <!-- end of entry -->
26181 <tr class="entry" id="controls_android.tonemap.curveGreen">
26182 <td class="entry_name
26184 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26186 <td class="entry_type">
26187 <span class="entry_type_name">float</span>
26188 <span class="entry_type_container">x</span>
26190 <span class="entry_type_array">
26193 <span class="entry_type_visibility"> [ndk_public]</span>
26196 <span class="entry_type_hwlevel">[full] </span>
26199 <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>
26202 </td> <!-- entry_type -->
26204 <td class="entry_description">
26205 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26206 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26207 CONTRAST_<wbr/>CURVE.<wbr/></p>
26210 <td class="entry_units">
26213 <td class="entry_range">
26216 <td class="entry_hal_version">
26220 <td class="entry_tags">
26224 <tr class="entries_header">
26225 <th class="th_details" colspan="6">Details</th>
26227 <tr class="entry_cont">
26228 <td class="entry_details" colspan="6">
26229 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26234 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26235 <!-- end of entry -->
26238 <tr class="entry" id="controls_android.tonemap.curveRed">
26239 <td class="entry_name
26241 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26243 <td class="entry_type">
26244 <span class="entry_type_name">float</span>
26245 <span class="entry_type_container">x</span>
26247 <span class="entry_type_array">
26250 <span class="entry_type_visibility"> [ndk_public]</span>
26253 <span class="entry_type_hwlevel">[full] </span>
26256 <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>
26259 </td> <!-- entry_type -->
26261 <td class="entry_description">
26262 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26263 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26264 CONTRAST_<wbr/>CURVE.<wbr/></p>
26267 <td class="entry_units">
26270 <td class="entry_range">
26271 <p>0-1 on both input and output coordinates,<wbr/> normalized
26272 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26275 <td class="entry_hal_version">
26279 <td class="entry_tags">
26283 <tr class="entries_header">
26284 <th class="th_details" colspan="6">Details</th>
26286 <tr class="entry_cont">
26287 <td class="entry_details" colspan="6">
26288 <p>Each channel's curve is defined by an array of control points:</p>
26289 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26290 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26291 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26292 <p>These are sorted in order of increasing <code>Pin</code>; it is
26293 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26294 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26295 the camera device must linearly interpolate between the control
26297 <p>Each curve can have an independent number of points,<wbr/> and the number
26298 of points can be less than max (that is,<wbr/> the request doesn't have to
26299 always provide a curve with number of points equivalent to
26300 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26301 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26302 only specify the red channel and the precision is limited to 4
26303 digits,<wbr/> for conciseness.<wbr/></p>
26304 <p>Linear mapping:</p>
26305 <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 ]
26307 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26308 <p>Invert mapping:</p>
26309 <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 ]
26311 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26312 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26313 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26314 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/>
26315 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/>
26316 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/>
26317 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 ]
26319 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26320 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26321 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26322 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/>
26323 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/>
26324 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/>
26325 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 ]
26327 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26331 <tr class="entries_header">
26332 <th class="th_details" colspan="6">HAL Implementation Details</th>
26334 <tr class="entry_cont">
26335 <td class="entry_details" colspan="6">
26336 <p>For good quality of mapping,<wbr/> at least 128 control points are
26337 preferred.<wbr/></p>
26338 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26339 control points used as are available.<wbr/></p>
26343 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26344 <!-- end of entry -->
26347 <tr class="entry" id="controls_android.tonemap.curve">
26348 <td class="entry_name
26350 android.<wbr/>tonemap.<wbr/>curve
26352 <td class="entry_type">
26353 <span class="entry_type_name">float</span>
26355 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26357 <span class="entry_type_synthetic">[synthetic] </span>
26359 <span class="entry_type_hwlevel">[full] </span>
26364 </td> <!-- entry_type -->
26366 <td class="entry_description">
26367 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26368 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26371 <td class="entry_units">
26374 <td class="entry_range">
26377 <td class="entry_hal_version">
26381 <td class="entry_tags">
26385 <tr class="entries_header">
26386 <th class="th_details" colspan="6">Details</th>
26388 <tr class="entry_cont">
26389 <td class="entry_details" colspan="6">
26390 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26391 channels respectively.<wbr/> The following example uses the red channel as an
26392 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26393 Each channel's curve is defined by an array of control points:</p>
26394 <pre><code>curveRed =
26395 [ 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) ]
26396 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26397 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26398 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26399 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26400 the camera device must linearly interpolate between the control
26402 <p>Each curve can have an independent number of points,<wbr/> and the number
26403 of points can be less than max (that is,<wbr/> the request doesn't have to
26404 always provide a curve with number of points equivalent to
26405 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26406 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26407 only specify the red channel and the precision is limited to 4
26408 digits,<wbr/> for conciseness.<wbr/></p>
26409 <p>Linear mapping:</p>
26410 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26412 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26413 <p>Invert mapping:</p>
26414 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26416 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26417 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26418 <pre><code>curveRed = [
26419 (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/>
26420 (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/>
26421 (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/>
26422 (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) ]
26424 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26425 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26426 <pre><code>curveRed = [
26427 (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/>
26428 (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/>
26429 (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/>
26430 (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) ]
26432 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26436 <tr class="entries_header">
26437 <th class="th_details" colspan="6">HAL Implementation Details</th>
26439 <tr class="entry_cont">
26440 <td class="entry_details" colspan="6">
26441 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26442 curveBlue entries.<wbr/></p>
26446 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26447 <!-- end of entry -->
26450 <tr class="entry" id="controls_android.tonemap.mode">
26451 <td class="entry_name
26453 android.<wbr/>tonemap.<wbr/>mode
26455 <td class="entry_type">
26456 <span class="entry_type_name entry_type_name_enum">byte</span>
26458 <span class="entry_type_visibility"> [public]</span>
26461 <span class="entry_type_hwlevel">[full] </span>
26465 <ul class="entry_type_enum">
26467 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
26468 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26469 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26470 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26471 for applying the tonemapping curve specified by
26472 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26473 <p>Must not slow down frame rate relative to raw
26474 sensor output.<wbr/></p></span>
26477 <span class="entry_type_enum_name">FAST (v3.2)</span>
26478 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26479 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26482 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
26483 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26484 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26487 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
26488 <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
26489 tonemapping.<wbr/></p>
26490 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26491 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26492 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26495 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
26496 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26497 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26498 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26499 for applying the tonemapping curve specified by
26500 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26501 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26505 </td> <!-- entry_type -->
26507 <td class="entry_description">
26508 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26511 <td class="entry_units">
26514 <td class="entry_range">
26515 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26518 <td class="entry_hal_version">
26522 <td class="entry_tags">
26526 <tr class="entries_header">
26527 <th class="th_details" colspan="6">Details</th>
26529 <tr class="entry_cont">
26530 <td class="entry_details" colspan="6">
26531 <p>When switching to an application-defined contrast curve by setting
26532 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26533 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26534 mapping from input high-bit-depth pixel value to the output
26535 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
26536 and output may change depending on the camera pipeline,<wbr/> the values
26537 are specified by normalized floating-point numbers.<wbr/></p>
26538 <p>More-complex color mapping operations such as 3D color look-up
26539 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26540 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26541 CONTRAST_<wbr/>CURVE.<wbr/></p>
26542 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26543 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26544 These values are always available,<wbr/> and as close as possible to the
26545 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26546 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26547 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26548 roughly the same.<wbr/></p>
26553 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26554 <!-- end of entry -->
26557 <tr class="entry" id="controls_android.tonemap.gamma">
26558 <td class="entry_name
26560 android.<wbr/>tonemap.<wbr/>gamma
26562 <td class="entry_type">
26563 <span class="entry_type_name">float</span>
26565 <span class="entry_type_visibility"> [public]</span>
26572 </td> <!-- entry_type -->
26574 <td class="entry_description">
26575 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26576 GAMMA_<wbr/>VALUE</p>
26579 <td class="entry_units">
26582 <td class="entry_range">
26585 <td class="entry_hal_version">
26589 <td class="entry_tags">
26593 <tr class="entries_header">
26594 <th class="th_details" colspan="6">Details</th>
26596 <tr class="entry_cont">
26597 <td class="entry_details" colspan="6">
26598 <p>The tonemap curve will be defined the following formula:
26599 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26600 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26601 pow is the power function and gamma is the gamma value specified by this
26603 <p>The same curve will be applied to all color channels.<wbr/> The camera device
26604 may clip the input gamma value to its supported range.<wbr/> The actual applied
26605 value will be returned in capture result.<wbr/></p>
26606 <p>The valid range of gamma value varies on different devices,<wbr/> but values
26607 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
26612 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26613 <!-- end of entry -->
26616 <tr class="entry" id="controls_android.tonemap.presetCurve">
26617 <td class="entry_name
26619 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
26621 <td class="entry_type">
26622 <span class="entry_type_name entry_type_name_enum">byte</span>
26624 <span class="entry_type_visibility"> [public]</span>
26630 <ul class="entry_type_enum">
26632 <span class="entry_type_enum_name">SRGB (v3.2)</span>
26633 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
26636 <span class="entry_type_enum_name">REC709 (v3.2)</span>
26637 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
26641 </td> <!-- entry_type -->
26643 <td class="entry_description">
26644 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26645 PRESET_<wbr/>CURVE</p>
26648 <td class="entry_units">
26651 <td class="entry_range">
26654 <td class="entry_hal_version">
26658 <td class="entry_tags">
26662 <tr class="entries_header">
26663 <th class="th_details" colspan="6">Details</th>
26665 <tr class="entry_cont">
26666 <td class="entry_details" colspan="6">
26667 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
26668 <p>sRGB (approximated by 16 control points):</p>
26669 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26670 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
26671 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
26672 <p>Note that above figures show a 16 control points approximation of preset
26673 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
26678 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26679 <!-- end of entry -->
26683 <!-- end of kind -->
26685 <tr><td colspan="7" class="kind">static</td></tr>
26687 <thead class="entries_header">
26689 <th class="th_name">Property Name</th>
26690 <th class="th_type">Type</th>
26691 <th class="th_description">Description</th>
26692 <th class="th_units">Units</th>
26693 <th class="th_range">Range</th>
26694 <th class="th_hal_version">Initial HIDL HAL version</th>
26695 <th class="th_tags">Tags</th>
26710 <tr class="entry" id="static_android.tonemap.maxCurvePoints">
26711 <td class="entry_name
26713 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
26715 <td class="entry_type">
26716 <span class="entry_type_name">int32</span>
26718 <span class="entry_type_visibility"> [public]</span>
26721 <span class="entry_type_hwlevel">[full] </span>
26726 </td> <!-- entry_type -->
26728 <td class="entry_description">
26729 <p>Maximum number of supported points in the
26730 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26733 <td class="entry_units">
26736 <td class="entry_range">
26739 <td class="entry_hal_version">
26743 <td class="entry_tags">
26747 <tr class="entries_header">
26748 <th class="th_details" colspan="6">Details</th>
26750 <tr class="entry_cont">
26751 <td class="entry_details" colspan="6">
26752 <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
26753 less than this maximum,<wbr/> the camera device will resample the curve to its internal
26754 representation,<wbr/> using linear interpolation.<wbr/></p>
26755 <p>The output curves in the result metadata may have a different number
26756 of points than the input curves,<wbr/> and will represent the actual
26757 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
26761 <tr class="entries_header">
26762 <th class="th_details" colspan="6">HAL Implementation Details</th>
26764 <tr class="entry_cont">
26765 <td class="entry_details" colspan="6">
26766 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
26770 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26771 <!-- end of entry -->
26774 <tr class="entry" id="static_android.tonemap.availableToneMapModes">
26775 <td class="entry_name
26777 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
26779 <td class="entry_type">
26780 <span class="entry_type_name">byte</span>
26781 <span class="entry_type_container">x</span>
26783 <span class="entry_type_array">
26786 <span class="entry_type_visibility"> [public as enumList]</span>
26789 <span class="entry_type_hwlevel">[full] </span>
26792 <div class="entry_type_notes">list of enums</div>
26795 </td> <!-- entry_type -->
26797 <td class="entry_description">
26798 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
26802 <td class="entry_units">
26805 <td class="entry_range">
26806 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
26809 <td class="entry_hal_version">
26813 <td class="entry_tags">
26817 <tr class="entries_header">
26818 <th class="th_details" colspan="6">Details</th>
26820 <tr class="entry_cont">
26821 <td class="entry_details" colspan="6">
26822 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
26823 at least one of below mode combinations:</p>
26825 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26826 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26828 <p>This includes all FULL level devices.<wbr/></p>
26832 <tr class="entries_header">
26833 <th class="th_details" colspan="6">HAL Implementation Details</th>
26835 <tr class="entry_cont">
26836 <td class="entry_details" colspan="6">
26837 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
26838 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
26839 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
26840 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
26844 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26845 <!-- end of entry -->
26849 <!-- end of kind -->
26851 <tr><td colspan="7" class="kind">dynamic</td></tr>
26853 <thead class="entries_header">
26855 <th class="th_name">Property Name</th>
26856 <th class="th_type">Type</th>
26857 <th class="th_description">Description</th>
26858 <th class="th_units">Units</th>
26859 <th class="th_range">Range</th>
26860 <th class="th_hal_version">Initial HIDL HAL version</th>
26861 <th class="th_tags">Tags</th>
26876 <tr class="entry" id="dynamic_android.tonemap.curveBlue">
26877 <td class="entry_name
26879 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26881 <td class="entry_type">
26882 <span class="entry_type_name">float</span>
26883 <span class="entry_type_container">x</span>
26885 <span class="entry_type_array">
26888 <span class="entry_type_visibility"> [ndk_public]</span>
26891 <span class="entry_type_hwlevel">[full] </span>
26894 <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>
26897 </td> <!-- entry_type -->
26899 <td class="entry_description">
26900 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26901 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26902 CONTRAST_<wbr/>CURVE.<wbr/></p>
26905 <td class="entry_units">
26908 <td class="entry_range">
26911 <td class="entry_hal_version">
26915 <td class="entry_tags">
26919 <tr class="entries_header">
26920 <th class="th_details" colspan="6">Details</th>
26922 <tr class="entry_cont">
26923 <td class="entry_details" colspan="6">
26924 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26929 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26930 <!-- end of entry -->
26933 <tr class="entry" id="dynamic_android.tonemap.curveGreen">
26934 <td class="entry_name
26936 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26938 <td class="entry_type">
26939 <span class="entry_type_name">float</span>
26940 <span class="entry_type_container">x</span>
26942 <span class="entry_type_array">
26945 <span class="entry_type_visibility"> [ndk_public]</span>
26948 <span class="entry_type_hwlevel">[full] </span>
26951 <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>
26954 </td> <!-- entry_type -->
26956 <td class="entry_description">
26957 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26958 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26959 CONTRAST_<wbr/>CURVE.<wbr/></p>
26962 <td class="entry_units">
26965 <td class="entry_range">
26968 <td class="entry_hal_version">
26972 <td class="entry_tags">
26976 <tr class="entries_header">
26977 <th class="th_details" colspan="6">Details</th>
26979 <tr class="entry_cont">
26980 <td class="entry_details" colspan="6">
26981 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26986 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26987 <!-- end of entry -->
26990 <tr class="entry" id="dynamic_android.tonemap.curveRed">
26991 <td class="entry_name
26993 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26995 <td class="entry_type">
26996 <span class="entry_type_name">float</span>
26997 <span class="entry_type_container">x</span>
26999 <span class="entry_type_array">
27002 <span class="entry_type_visibility"> [ndk_public]</span>
27005 <span class="entry_type_hwlevel">[full] </span>
27008 <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>
27011 </td> <!-- entry_type -->
27013 <td class="entry_description">
27014 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
27015 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27016 CONTRAST_<wbr/>CURVE.<wbr/></p>
27019 <td class="entry_units">
27022 <td class="entry_range">
27023 <p>0-1 on both input and output coordinates,<wbr/> normalized
27024 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
27027 <td class="entry_hal_version">
27031 <td class="entry_tags">
27035 <tr class="entries_header">
27036 <th class="th_details" colspan="6">Details</th>
27038 <tr class="entry_cont">
27039 <td class="entry_details" colspan="6">
27040 <p>Each channel's curve is defined by an array of control points:</p>
27041 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
27042 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
27043 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27044 <p>These are sorted in order of increasing <code>Pin</code>; it is
27045 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27046 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27047 the camera device must linearly interpolate between the control
27049 <p>Each curve can have an independent number of points,<wbr/> and the number
27050 of points can be less than max (that is,<wbr/> the request doesn't have to
27051 always provide a curve with number of points equivalent to
27052 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27053 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27054 only specify the red channel and the precision is limited to 4
27055 digits,<wbr/> for conciseness.<wbr/></p>
27056 <p>Linear mapping:</p>
27057 <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 ]
27059 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27060 <p>Invert mapping:</p>
27061 <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 ]
27063 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27064 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27065 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27066 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/>
27067 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/>
27068 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/>
27069 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 ]
27071 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27072 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27073 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27074 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/>
27075 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/>
27076 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/>
27077 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 ]
27079 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27083 <tr class="entries_header">
27084 <th class="th_details" colspan="6">HAL Implementation Details</th>
27086 <tr class="entry_cont">
27087 <td class="entry_details" colspan="6">
27088 <p>For good quality of mapping,<wbr/> at least 128 control points are
27089 preferred.<wbr/></p>
27090 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
27091 control points used as are available.<wbr/></p>
27095 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27096 <!-- end of entry -->
27099 <tr class="entry" id="dynamic_android.tonemap.curve">
27100 <td class="entry_name
27102 android.<wbr/>tonemap.<wbr/>curve
27104 <td class="entry_type">
27105 <span class="entry_type_name">float</span>
27107 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
27109 <span class="entry_type_synthetic">[synthetic] </span>
27111 <span class="entry_type_hwlevel">[full] </span>
27116 </td> <!-- entry_type -->
27118 <td class="entry_description">
27119 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
27120 is CONTRAST_<wbr/>CURVE.<wbr/></p>
27123 <td class="entry_units">
27126 <td class="entry_range">
27129 <td class="entry_hal_version">
27133 <td class="entry_tags">
27137 <tr class="entries_header">
27138 <th class="th_details" colspan="6">Details</th>
27140 <tr class="entry_cont">
27141 <td class="entry_details" colspan="6">
27142 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
27143 channels respectively.<wbr/> The following example uses the red channel as an
27144 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
27145 Each channel's curve is defined by an array of control points:</p>
27146 <pre><code>curveRed =
27147 [ 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) ]
27148 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27149 <p>These are sorted in order of increasing <code>Pin</code>; it is always
27150 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27151 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27152 the camera device must linearly interpolate between the control
27154 <p>Each curve can have an independent number of points,<wbr/> and the number
27155 of points can be less than max (that is,<wbr/> the request doesn't have to
27156 always provide a curve with number of points equivalent to
27157 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27158 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27159 only specify the red channel and the precision is limited to 4
27160 digits,<wbr/> for conciseness.<wbr/></p>
27161 <p>Linear mapping:</p>
27162 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
27164 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27165 <p>Invert mapping:</p>
27166 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
27168 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27169 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27170 <pre><code>curveRed = [
27171 (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/>
27172 (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/>
27173 (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/>
27174 (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) ]
27176 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27177 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27178 <pre><code>curveRed = [
27179 (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/>
27180 (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/>
27181 (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/>
27182 (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) ]
27184 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27188 <tr class="entries_header">
27189 <th class="th_details" colspan="6">HAL Implementation Details</th>
27191 <tr class="entry_cont">
27192 <td class="entry_details" colspan="6">
27193 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
27194 curveBlue entries.<wbr/></p>
27198 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27199 <!-- end of entry -->
27202 <tr class="entry" id="dynamic_android.tonemap.mode">
27203 <td class="entry_name
27205 android.<wbr/>tonemap.<wbr/>mode
27207 <td class="entry_type">
27208 <span class="entry_type_name entry_type_name_enum">byte</span>
27210 <span class="entry_type_visibility"> [public]</span>
27213 <span class="entry_type_hwlevel">[full] </span>
27217 <ul class="entry_type_enum">
27219 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
27220 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
27221 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
27222 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27223 for applying the tonemapping curve specified by
27224 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27225 <p>Must not slow down frame rate relative to raw
27226 sensor output.<wbr/></p></span>
27229 <span class="entry_type_enum_name">FAST (v3.2)</span>
27230 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
27231 reducing frame rate compared to raw sensor output.<wbr/></p></span>
27234 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
27235 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
27236 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
27239 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
27240 <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
27241 tonemapping.<wbr/></p>
27242 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27243 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
27244 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27247 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
27248 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
27249 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
27250 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27251 for applying the tonemapping curve specified by
27252 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
27253 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27257 </td> <!-- entry_type -->
27259 <td class="entry_description">
27260 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
27263 <td class="entry_units">
27266 <td class="entry_range">
27267 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
27270 <td class="entry_hal_version">
27274 <td class="entry_tags">
27278 <tr class="entries_header">
27279 <th class="th_details" colspan="6">Details</th>
27281 <tr class="entry_cont">
27282 <td class="entry_details" colspan="6">
27283 <p>When switching to an application-defined contrast curve by setting
27284 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
27285 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
27286 mapping from input high-bit-depth pixel value to the output
27287 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
27288 and output may change depending on the camera pipeline,<wbr/> the values
27289 are specified by normalized floating-point numbers.<wbr/></p>
27290 <p>More-complex color mapping operations such as 3D color look-up
27291 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
27292 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27293 CONTRAST_<wbr/>CURVE.<wbr/></p>
27294 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
27295 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
27296 These values are always available,<wbr/> and as close as possible to the
27297 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
27298 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
27299 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
27300 roughly the same.<wbr/></p>
27305 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27306 <!-- end of entry -->
27309 <tr class="entry" id="dynamic_android.tonemap.gamma">
27310 <td class="entry_name
27312 android.<wbr/>tonemap.<wbr/>gamma
27314 <td class="entry_type">
27315 <span class="entry_type_name">float</span>
27317 <span class="entry_type_visibility"> [public]</span>
27324 </td> <!-- entry_type -->
27326 <td class="entry_description">
27327 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27328 GAMMA_<wbr/>VALUE</p>
27331 <td class="entry_units">
27334 <td class="entry_range">
27337 <td class="entry_hal_version">
27341 <td class="entry_tags">
27345 <tr class="entries_header">
27346 <th class="th_details" colspan="6">Details</th>
27348 <tr class="entry_cont">
27349 <td class="entry_details" colspan="6">
27350 <p>The tonemap curve will be defined the following formula:
27351 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27352 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27353 pow is the power function and gamma is the gamma value specified by this
27355 <p>The same curve will be applied to all color channels.<wbr/> The camera device
27356 may clip the input gamma value to its supported range.<wbr/> The actual applied
27357 value will be returned in capture result.<wbr/></p>
27358 <p>The valid range of gamma value varies on different devices,<wbr/> but values
27359 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27364 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27365 <!-- end of entry -->
27368 <tr class="entry" id="dynamic_android.tonemap.presetCurve">
27369 <td class="entry_name
27371 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27373 <td class="entry_type">
27374 <span class="entry_type_name entry_type_name_enum">byte</span>
27376 <span class="entry_type_visibility"> [public]</span>
27382 <ul class="entry_type_enum">
27384 <span class="entry_type_enum_name">SRGB (v3.2)</span>
27385 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27388 <span class="entry_type_enum_name">REC709 (v3.2)</span>
27389 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27393 </td> <!-- entry_type -->
27395 <td class="entry_description">
27396 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27397 PRESET_<wbr/>CURVE</p>
27400 <td class="entry_units">
27403 <td class="entry_range">
27406 <td class="entry_hal_version">
27410 <td class="entry_tags">
27414 <tr class="entries_header">
27415 <th class="th_details" colspan="6">Details</th>
27417 <tr class="entry_cont">
27418 <td class="entry_details" colspan="6">
27419 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27420 <p>sRGB (approximated by 16 control points):</p>
27421 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27422 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27423 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27424 <p>Note that above figures show a 16 control points approximation of preset
27425 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27430 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27431 <!-- end of entry -->
27435 <!-- end of kind -->
27438 <!-- end of section -->
27439 <tr><td colspan="7" id="section_led" class="section">led</td></tr>
27442 <tr><td colspan="7" class="kind">controls</td></tr>
27444 <thead class="entries_header">
27446 <th class="th_name">Property Name</th>
27447 <th class="th_type">Type</th>
27448 <th class="th_description">Description</th>
27449 <th class="th_units">Units</th>
27450 <th class="th_range">Range</th>
27451 <th class="th_hal_version">Initial HIDL HAL version</th>
27452 <th class="th_tags">Tags</th>
27467 <tr class="entry" id="controls_android.led.transmit">
27468 <td class="entry_name
27470 android.<wbr/>led.<wbr/>transmit
27472 <td class="entry_type">
27473 <span class="entry_type_name entry_type_name_enum">byte</span>
27475 <span class="entry_type_visibility"> [hidden as boolean]</span>
27481 <ul class="entry_type_enum">
27483 <span class="entry_type_enum_name">OFF (v3.2)</span>
27486 <span class="entry_type_enum_name">ON (v3.2)</span>
27490 </td> <!-- entry_type -->
27492 <td class="entry_description">
27493 <p>This LED is nominally used to indicate to the user
27494 that the camera is powered on and may be streaming images back to the
27495 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27496 disable this when video is processed locally and not transmitted to
27497 any untrusted applications.<wbr/></p>
27498 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27499 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27500 data is stored locally on the device.<wbr/></p>
27501 <p>The LED <em>may</em> be off if a trusted application is using the data that
27502 doesn't violate the above rules.<wbr/></p>
27505 <td class="entry_units">
27508 <td class="entry_range">
27511 <td class="entry_hal_version">
27515 <td class="entry_tags">
27521 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27522 <!-- end of entry -->
27526 <!-- end of kind -->
27528 <tr><td colspan="7" class="kind">dynamic</td></tr>
27530 <thead class="entries_header">
27532 <th class="th_name">Property Name</th>
27533 <th class="th_type">Type</th>
27534 <th class="th_description">Description</th>
27535 <th class="th_units">Units</th>
27536 <th class="th_range">Range</th>
27537 <th class="th_hal_version">Initial HIDL HAL version</th>
27538 <th class="th_tags">Tags</th>
27553 <tr class="entry" id="dynamic_android.led.transmit">
27554 <td class="entry_name
27556 android.<wbr/>led.<wbr/>transmit
27558 <td class="entry_type">
27559 <span class="entry_type_name entry_type_name_enum">byte</span>
27561 <span class="entry_type_visibility"> [hidden as boolean]</span>
27567 <ul class="entry_type_enum">
27569 <span class="entry_type_enum_name">OFF (v3.2)</span>
27572 <span class="entry_type_enum_name">ON (v3.2)</span>
27576 </td> <!-- entry_type -->
27578 <td class="entry_description">
27579 <p>This LED is nominally used to indicate to the user
27580 that the camera is powered on and may be streaming images back to the
27581 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27582 disable this when video is processed locally and not transmitted to
27583 any untrusted applications.<wbr/></p>
27584 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27585 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27586 data is stored locally on the device.<wbr/></p>
27587 <p>The LED <em>may</em> be off if a trusted application is using the data that
27588 doesn't violate the above rules.<wbr/></p>
27591 <td class="entry_units">
27594 <td class="entry_range">
27597 <td class="entry_hal_version">
27601 <td class="entry_tags">
27607 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27608 <!-- end of entry -->
27612 <!-- end of kind -->
27614 <tr><td colspan="7" class="kind">static</td></tr>
27616 <thead class="entries_header">
27618 <th class="th_name">Property Name</th>
27619 <th class="th_type">Type</th>
27620 <th class="th_description">Description</th>
27621 <th class="th_units">Units</th>
27622 <th class="th_range">Range</th>
27623 <th class="th_hal_version">Initial HIDL HAL version</th>
27624 <th class="th_tags">Tags</th>
27639 <tr class="entry" id="static_android.led.availableLeds">
27640 <td class="entry_name
27642 android.<wbr/>led.<wbr/>available<wbr/>Leds
27644 <td class="entry_type">
27645 <span class="entry_type_name entry_type_name_enum">byte</span>
27646 <span class="entry_type_container">x</span>
27648 <span class="entry_type_array">
27651 <span class="entry_type_visibility"> [hidden]</span>
27657 <ul class="entry_type_enum">
27659 <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
27660 <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>
27664 </td> <!-- entry_type -->
27666 <td class="entry_description">
27667 <p>A list of camera LEDs that are available on this system.<wbr/></p>
27670 <td class="entry_units">
27673 <td class="entry_range">
27676 <td class="entry_hal_version">
27680 <td class="entry_tags">
27686 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27687 <!-- end of entry -->
27691 <!-- end of kind -->
27694 <!-- end of section -->
27695 <tr><td colspan="7" id="section_info" class="section">info</td></tr>
27698 <tr><td colspan="7" class="kind">static</td></tr>
27700 <thead class="entries_header">
27702 <th class="th_name">Property Name</th>
27703 <th class="th_type">Type</th>
27704 <th class="th_description">Description</th>
27705 <th class="th_units">Units</th>
27706 <th class="th_range">Range</th>
27707 <th class="th_hal_version">Initial HIDL HAL version</th>
27708 <th class="th_tags">Tags</th>
27723 <tr class="entry" id="static_android.info.supportedHardwareLevel">
27724 <td class="entry_name
27726 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
27728 <td class="entry_type">
27729 <span class="entry_type_name entry_type_name_enum">byte</span>
27731 <span class="entry_type_visibility"> [public]</span>
27734 <span class="entry_type_hwlevel">[legacy] </span>
27738 <ul class="entry_type_enum">
27740 <span class="entry_type_enum_name">LIMITED (v3.2)</span>
27741 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
27743 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
27744 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27745 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
27746 support for color image capture.<wbr/> The only exception is that the device may
27747 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
27748 measurements and not color images.<wbr/></p>
27749 <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>
27750 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
27751 capturing a high-quality still image.<wbr/></p>
27752 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
27753 required to support full-automatic operation and post-processing (<code>OFF</code> is not
27754 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
27755 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
27756 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
27757 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
27760 <span class="entry_type_enum_name">FULL (v3.2)</span>
27761 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
27762 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
27763 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27764 <p>A <code>FULL</code> device will support below capabilities:</p>
27766 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27767 <code>BURST_<wbr/>CAPTURE</code>)</li>
27768 <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>
27769 <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>
27770 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27771 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
27772 <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>
27773 <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>
27776 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
27777 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
27778 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
27781 <span class="entry_type_enum_name">LEGACY (v3.2)</span>
27782 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
27783 <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> documentation are supported.<wbr/></p>
27784 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
27785 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
27786 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
27787 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
27788 <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>
27789 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
27790 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may
27791 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
27792 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
27793 enable the flash.<wbr/></p></span>
27796 <span class="entry_type_enum_name">3 (v3.2)</span>
27797 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
27798 FULL-level capabilities.<wbr/></p>
27799 <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
27800 <code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27801 <p>The following additional capabilities are guaranteed to be supported:</p>
27803 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27804 <code>YUV_<wbr/>REPROCESSING</code>)</li>
27805 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27806 <code>RAW</code>)</li>
27811 </td> <!-- entry_type -->
27813 <td class="entry_description">
27814 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
27817 <td class="entry_units">
27820 <td class="entry_range">
27823 <td class="entry_hal_version">
27827 <td class="entry_tags">
27831 <tr class="entries_header">
27832 <th class="th_details" colspan="6">Details</th>
27834 <tr class="entry_cont">
27835 <td class="entry_details" colspan="6">
27836 <p>The supported hardware level is a high-level description of the camera device's
27837 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional
27838 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
27839 The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p>
27840 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
27841 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
27842 the following code snippet can be used:</p>
27843 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
27844 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
27845 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
27846 if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
27847 return requiredLevel == deviceLevel;
27849 //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
27850 return requiredLevel <= deviceLevel;
27853 <p>At a high level,<wbr/> the levels are:</p>
27855 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
27856 Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
27857 <li><code>LIMITED</code> devices represent the
27858 baseline feature set,<wbr/> and may also include additional capabilities that are
27859 subsets of <code>FULL</code>.<wbr/></li>
27860 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
27861 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
27862 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
27863 with additional output stream configurations.<wbr/></li>
27865 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The
27866 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
27867 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
27868 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
27869 <p>Some features are not part of any particular hardware level or capability and must be
27870 queried separately.<wbr/> These include:</p>
27872 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
27873 <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>
27874 <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>
27875 <li>Optical or electrical image stabilization
27876 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
27877 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
27882 <tr class="entries_header">
27883 <th class="th_details" colspan="6">HAL Implementation Details</th>
27885 <tr class="entry_cont">
27886 <td class="entry_details" colspan="6">
27887 <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
27888 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
27889 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
27890 mode has hardware requirements roughly in line with those for a camera HAL device v1
27891 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
27892 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
27893 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
27894 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
27895 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
27896 implemented by the camera framework code.<wbr/></p>
27900 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27901 <!-- end of entry -->
27904 <tr class="entry" id="static_android.info.version">
27905 <td class="entry_name
27907 android.<wbr/>info.<wbr/>version
27909 <td class="entry_type">
27910 <span class="entry_type_name">byte</span>
27912 <span class="entry_type_visibility"> [public as string]</span>
27919 </td> <!-- entry_type -->
27921 <td class="entry_description">
27922 <p>A short string for manufacturer version information about the camera device,<wbr/> such as
27923 ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
27926 <td class="entry_units">
27929 <td class="entry_range">
27932 <td class="entry_hal_version">
27936 <td class="entry_tags">
27940 <tr class="entries_header">
27941 <th class="th_details" colspan="6">Details</th>
27943 <tr class="entry_cont">
27944 <td class="entry_details" colspan="6">
27945 <p>This can be used in <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_IMAGE_DESCRIPTION">TAG_<wbr/>IMAGE_<wbr/>DESCRIPTION</a>
27946 in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
27951 <tr class="entries_header">
27952 <th class="th_details" colspan="6">HAL Implementation Details</th>
27954 <tr class="entry_cont">
27955 <td class="entry_details" colspan="6">
27956 <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
27957 whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
27958 It must not exceed 256 characters.<wbr/></p>
27962 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27963 <!-- end of entry -->
27967 <!-- end of kind -->
27970 <!-- end of section -->
27971 <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
27974 <tr><td colspan="7" class="kind">controls</td></tr>
27976 <thead class="entries_header">
27978 <th class="th_name">Property Name</th>
27979 <th class="th_type">Type</th>
27980 <th class="th_description">Description</th>
27981 <th class="th_units">Units</th>
27982 <th class="th_range">Range</th>
27983 <th class="th_hal_version">Initial HIDL HAL version</th>
27984 <th class="th_tags">Tags</th>
27999 <tr class="entry" id="controls_android.blackLevel.lock">
28000 <td class="entry_name
28002 android.<wbr/>black<wbr/>Level.<wbr/>lock
28004 <td class="entry_type">
28005 <span class="entry_type_name entry_type_name_enum">byte</span>
28007 <span class="entry_type_visibility"> [public as boolean]</span>
28010 <span class="entry_type_hwlevel">[full] </span>
28014 <ul class="entry_type_enum">
28016 <span class="entry_type_enum_name">OFF (v3.2)</span>
28019 <span class="entry_type_enum_name">ON (v3.2)</span>
28023 </td> <!-- entry_type -->
28025 <td class="entry_description">
28026 <p>Whether black-level compensation is locked
28027 to its current values,<wbr/> or is free to vary.<wbr/></p>
28030 <td class="entry_units">
28033 <td class="entry_range">
28036 <td class="entry_hal_version">
28040 <td class="entry_tags">
28041 <ul class="entry_tags">
28042 <li><a href="#tag_HAL2">HAL2</a></li>
28047 <tr class="entries_header">
28048 <th class="th_details" colspan="6">Details</th>
28050 <tr class="entry_cont">
28051 <td class="entry_details" colspan="6">
28052 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
28053 compensation will not change until the lock is set to
28054 <code>false</code> (OFF).<wbr/></p>
28055 <p>Since changes to certain capture parameters (such as
28056 exposure time) may require resetting of black level
28057 compensation,<wbr/> the camera device must report whether setting
28058 the black level lock was successful in the output result
28059 metadata.<wbr/></p>
28060 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
28062 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28063 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28064 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28065 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28066 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28067 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28069 <p>And the exposure change in Request 4 requires the camera
28070 device to reset the black level offsets,<wbr/> then the output
28071 result metadata is expected to be:</p>
28073 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28074 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28075 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28076 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
28077 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28078 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28080 <p>This indicates to the application that on frame 4,<wbr/> black
28081 levels were reset due to exposure value changes,<wbr/> and pixel
28082 values may not be consistent across captures.<wbr/></p>
28083 <p>The camera device will maintain the lock to the extent
28084 possible,<wbr/> only overriding the lock to OFF when changes to
28085 other request parameters require a black level recalculation
28086 or reset.<wbr/></p>
28090 <tr class="entries_header">
28091 <th class="th_details" colspan="6">HAL Implementation Details</th>
28093 <tr class="entry_cont">
28094 <td class="entry_details" colspan="6">
28095 <p>If for some reason black level locking is no longer possible
28096 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28097 black level offsets to be recalculated),<wbr/> then the HAL must
28098 override this request (and it must report 'OFF' when this
28099 does happen) until the next capture for which locking is
28100 possible again.<wbr/></p>
28104 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28105 <!-- end of entry -->
28109 <!-- end of kind -->
28111 <tr><td colspan="7" class="kind">dynamic</td></tr>
28113 <thead class="entries_header">
28115 <th class="th_name">Property Name</th>
28116 <th class="th_type">Type</th>
28117 <th class="th_description">Description</th>
28118 <th class="th_units">Units</th>
28119 <th class="th_range">Range</th>
28120 <th class="th_hal_version">Initial HIDL HAL version</th>
28121 <th class="th_tags">Tags</th>
28136 <tr class="entry" id="dynamic_android.blackLevel.lock">
28137 <td class="entry_name
28139 android.<wbr/>black<wbr/>Level.<wbr/>lock
28141 <td class="entry_type">
28142 <span class="entry_type_name entry_type_name_enum">byte</span>
28144 <span class="entry_type_visibility"> [public as boolean]</span>
28147 <span class="entry_type_hwlevel">[full] </span>
28151 <ul class="entry_type_enum">
28153 <span class="entry_type_enum_name">OFF (v3.2)</span>
28156 <span class="entry_type_enum_name">ON (v3.2)</span>
28160 </td> <!-- entry_type -->
28162 <td class="entry_description">
28163 <p>Whether black-level compensation is locked
28164 to its current values,<wbr/> or is free to vary.<wbr/></p>
28167 <td class="entry_units">
28170 <td class="entry_range">
28173 <td class="entry_hal_version">
28177 <td class="entry_tags">
28178 <ul class="entry_tags">
28179 <li><a href="#tag_HAL2">HAL2</a></li>
28184 <tr class="entries_header">
28185 <th class="th_details" colspan="6">Details</th>
28187 <tr class="entry_cont">
28188 <td class="entry_details" colspan="6">
28189 <p>Whether the black level offset was locked for this frame.<wbr/> Should be
28190 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
28191 a change in other capture settings forced the camera device to
28192 perform a black level reset.<wbr/></p>
28196 <tr class="entries_header">
28197 <th class="th_details" colspan="6">HAL Implementation Details</th>
28199 <tr class="entry_cont">
28200 <td class="entry_details" colspan="6">
28201 <p>If for some reason black level locking is no longer possible
28202 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28203 black level offsets to be recalculated),<wbr/> then the HAL must
28204 override this request (and it must report 'OFF' when this
28205 does happen) until the next capture for which locking is
28206 possible again.<wbr/></p>
28210 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28211 <!-- end of entry -->
28215 <!-- end of kind -->
28218 <!-- end of section -->
28219 <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
28222 <tr><td colspan="7" class="kind">dynamic</td></tr>
28224 <thead class="entries_header">
28226 <th class="th_name">Property Name</th>
28227 <th class="th_type">Type</th>
28228 <th class="th_description">Description</th>
28229 <th class="th_units">Units</th>
28230 <th class="th_range">Range</th>
28231 <th class="th_hal_version">Initial HIDL HAL version</th>
28232 <th class="th_tags">Tags</th>
28247 <tr class="entry" id="dynamic_android.sync.frameNumber">
28248 <td class="entry_name
28250 android.<wbr/>sync.<wbr/>frame<wbr/>Number
28252 <td class="entry_type">
28253 <span class="entry_type_name entry_type_name_enum">int64</span>
28255 <span class="entry_type_visibility"> [ndk_public]</span>
28258 <span class="entry_type_hwlevel">[legacy] </span>
28262 <ul class="entry_type_enum">
28264 <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
28265 <span class="entry_type_enum_value">-1</span>
28266 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
28267 <p>Synchronization is in progress,<wbr/> and reading metadata from this
28268 result may include a mix of data that have taken effect since the
28269 last synchronization time.<wbr/></p>
28270 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
28271 this value will update to the actual frame number frame number
28272 the result is guaranteed to be synchronized to (as long as the
28273 request settings remain constant).<wbr/></p></span>
28276 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28277 <span class="entry_type_enum_value">-2</span>
28278 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
28279 <p>The result may have already converged,<wbr/> or it may be in
28280 progress.<wbr/> Reading from this result may include some mix
28281 of settings from past requests.<wbr/></p>
28282 <p>After a settings change,<wbr/> the new settings will eventually all
28283 take effect for the output buffers and results.<wbr/> However,<wbr/> this
28284 value will not change when that happens.<wbr/> Altering settings
28285 rapidly may provide outcomes using mixes of settings from recent
28286 requests.<wbr/></p>
28287 <p>This value is intended primarily for backwards compatibility with
28288 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
28292 </td> <!-- entry_type -->
28294 <td class="entry_description">
28295 <p>The frame number corresponding to the last request
28296 with which the output result (metadata + buffers) has been fully
28297 synchronized.<wbr/></p>
28300 <td class="entry_units">
28303 <td class="entry_range">
28304 <p>Either a non-negative value corresponding to a
28305 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
28308 <td class="entry_hal_version">
28312 <td class="entry_tags">
28313 <ul class="entry_tags">
28314 <li><a href="#tag_V1">V1</a></li>
28319 <tr class="entries_header">
28320 <th class="th_details" colspan="6">Details</th>
28322 <tr class="entry_cont">
28323 <td class="entry_details" colspan="6">
28324 <p>When a request is submitted to the camera device,<wbr/> there is usually a
28325 delay of several frames before the controls get applied.<wbr/> A camera
28326 device may either choose to account for this delay by implementing a
28327 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
28328 it may start streaming control changes that span over several frame
28329 boundaries.<wbr/></p>
28330 <p>In the latter case,<wbr/> whenever a request's settings change relative to
28331 the previous submitted request,<wbr/> the full set of changes may take
28332 multiple frame durations to fully take effect.<wbr/> Some settings may
28333 take effect sooner (in less frame durations) than others.<wbr/></p>
28334 <p>While a set of control changes are being propagated,<wbr/> this value
28335 will be CONVERGING.<wbr/></p>
28336 <p>Once it is fully known that a set of control changes have been
28337 finished propagating,<wbr/> and the resulting updated control settings
28338 have been read back by the camera device,<wbr/> this value will be set
28339 to a non-negative frame number (corresponding to the request to
28340 which the results have synchronized to).<wbr/></p>
28341 <p>Older camera device implementations may not have a way to detect
28342 when all camera controls have been applied,<wbr/> and will always set this
28343 value to UNKNOWN.<wbr/></p>
28344 <p>FULL capability devices will always have this value set to the
28345 frame number of the request corresponding to this result.<wbr/></p>
28346 <p><em>Further details</em>:</p>
28348 <li>Whenever a request differs from the last request,<wbr/> any future
28349 results not yet returned may have this value set to CONVERGING (this
28350 could include any in-progress captures not yet returned by the camera
28351 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
28352 <li>Submitting a series of multiple requests that differ from the
28353 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
28354 moves the new synchronization frame to the last non-repeating
28355 request (using the smallest frame number from the contiguous list of
28356 repeating requests).<wbr/></li>
28357 <li>Submitting the same request repeatedly will not change this value
28358 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
28359 <li>When this value changes to non-negative,<wbr/> that means that all of the
28360 metadata controls from the request have been applied,<wbr/> all of the
28361 metadata controls from the camera device have been read to the
28362 updated values (into the result),<wbr/> and all of the graphics buffers
28363 corresponding to this result are also synchronized to the request.<wbr/></li>
28365 <p><em>Pipeline considerations</em>:</p>
28366 <p>Submitting a request with updated controls relative to the previously
28367 submitted requests may also invalidate the synchronization state
28368 of all the results corresponding to currently in-flight requests.<wbr/></p>
28369 <p>In other words,<wbr/> results for this current request and up to
28370 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
28371 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
28375 <tr class="entries_header">
28376 <th class="th_details" colspan="6">HAL Implementation Details</th>
28378 <tr class="entry_cont">
28379 <td class="entry_details" colspan="6">
28380 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
28381 is also UNKNOWN.<wbr/></p>
28382 <p>FULL capability devices should simply set this value to the
28383 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
28387 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28388 <!-- end of entry -->
28392 <!-- end of kind -->
28394 <tr><td colspan="7" class="kind">static</td></tr>
28396 <thead class="entries_header">
28398 <th class="th_name">Property Name</th>
28399 <th class="th_type">Type</th>
28400 <th class="th_description">Description</th>
28401 <th class="th_units">Units</th>
28402 <th class="th_range">Range</th>
28403 <th class="th_hal_version">Initial HIDL HAL version</th>
28404 <th class="th_tags">Tags</th>
28419 <tr class="entry" id="static_android.sync.maxLatency">
28420 <td class="entry_name
28422 android.<wbr/>sync.<wbr/>max<wbr/>Latency
28424 <td class="entry_type">
28425 <span class="entry_type_name entry_type_name_enum">int32</span>
28427 <span class="entry_type_visibility"> [public]</span>
28430 <span class="entry_type_hwlevel">[legacy] </span>
28434 <ul class="entry_type_enum">
28436 <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
28437 <span class="entry_type_enum_value">0</span>
28438 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
28439 <p>Changing controls over multiple requests one after another will
28440 produce results that have those controls applied atomically
28441 each frame.<wbr/></p>
28442 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
28445 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28446 <span class="entry_type_enum_value">-1</span>
28447 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
28448 of the past requests applied to the camera settings.<wbr/></p>
28449 <p>By submitting a series of identical requests,<wbr/> the camera device
28450 will eventually have the camera settings applied,<wbr/> but it is
28451 unknown when that exact point will be.<wbr/></p>
28452 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
28456 </td> <!-- entry_type -->
28458 <td class="entry_description">
28459 <p>The maximum number of frames that can occur after a request
28460 (different than the previous) has been submitted,<wbr/> and before the
28461 result's state becomes synchronized.<wbr/></p>
28464 <td class="entry_units">
28468 <td class="entry_range">
28469 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
28472 <td class="entry_hal_version">
28476 <td class="entry_tags">
28477 <ul class="entry_tags">
28478 <li><a href="#tag_V1">V1</a></li>
28483 <tr class="entries_header">
28484 <th class="th_details" colspan="6">Details</th>
28486 <tr class="entry_cont">
28487 <td class="entry_details" colspan="6">
28488 <p>This defines the maximum distance (in number of metadata results),<wbr/>
28489 between the frame number of the request that has new controls to apply
28490 and the frame number of the result that has all the controls applied.<wbr/></p>
28491 <p>In other words this acts as an upper boundary for how many frames
28492 must occur before the camera device knows for a fact that the new
28493 submitted camera settings have been applied in outgoing frames.<wbr/></p>
28497 <tr class="entries_header">
28498 <th class="th_details" colspan="6">HAL Implementation Details</th>
28500 <tr class="entry_cont">
28501 <td class="entry_details" colspan="6">
28502 <p>For example if maxLatency was 2,<wbr/></p>
28503 <pre><code>initial request = X (repeating)
28509 where requestN has frameNumber N,<wbr/> and the first of the repeating
28510 initial request's has frameNumber F (and F < 1).<wbr/>
28512 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28513 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28514 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28515 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28516 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
28518 where resultN has frameNumber N.<wbr/>
28520 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
28521 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
28522 <code>4 - 2 = 2</code>.<wbr/></p>
28523 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
28524 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
28525 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
28526 <p>LIMITED devices are strongly encouraged to use a non-negative
28527 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
28528 to know when sensor settings have been applied.<wbr/></p>
28532 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28533 <!-- end of entry -->
28537 <!-- end of kind -->
28540 <!-- end of section -->
28541 <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
28544 <tr><td colspan="7" class="kind">controls</td></tr>
28546 <thead class="entries_header">
28548 <th class="th_name">Property Name</th>
28549 <th class="th_type">Type</th>
28550 <th class="th_description">Description</th>
28551 <th class="th_units">Units</th>
28552 <th class="th_range">Range</th>
28553 <th class="th_hal_version">Initial HIDL HAL version</th>
28554 <th class="th_tags">Tags</th>
28569 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
28570 <td class="entry_name
28572 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28574 <td class="entry_type">
28575 <span class="entry_type_name">float</span>
28577 <span class="entry_type_visibility"> [java_public]</span>
28580 <span class="entry_type_hwlevel">[limited] </span>
28585 </td> <!-- entry_type -->
28587 <td class="entry_description">
28588 <p>The amount of exposure time increase factor applied to the original output
28589 frame by the application processing before sending for reprocessing.<wbr/></p>
28592 <td class="entry_units">
28593 Relative exposure time increase factor.<wbr/>
28596 <td class="entry_range">
28597 <p>>= 1.<wbr/>0</p>
28600 <td class="entry_hal_version">
28604 <td class="entry_tags">
28605 <ul class="entry_tags">
28606 <li><a href="#tag_REPROC">REPROC</a></li>
28611 <tr class="entries_header">
28612 <th class="th_details" colspan="6">Details</th>
28614 <tr class="entry_cont">
28615 <td class="entry_details" colspan="6">
28616 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28617 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28618 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28619 output frames to effectively reduce the noise to the same level as a frame that was
28620 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28621 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28622 the camera device is that the amount of noise in the image would be approximately what
28623 would be expected if the original capture parameters had been a sensitivity of
28624 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28625 than S and T respectively.<wbr/> If the captured images were processed by the application
28626 before being sent for reprocessing,<wbr/> then the application may have used image processing
28627 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28628 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28629 control,<wbr/> the application can communicate to the camera device the actual noise level
28630 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28631 device can select appropriate noise reduction and edge enhancement parameters to avoid
28632 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28633 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28634 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28635 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28636 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28637 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28638 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28639 produce the best quality images.<wbr/></p>
28640 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28641 buffer in a way that affects its effective exposure time.<wbr/></p>
28642 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28643 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/>
28644 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28645 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28650 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28651 <!-- end of entry -->
28655 <!-- end of kind -->
28657 <tr><td colspan="7" class="kind">dynamic</td></tr>
28659 <thead class="entries_header">
28661 <th class="th_name">Property Name</th>
28662 <th class="th_type">Type</th>
28663 <th class="th_description">Description</th>
28664 <th class="th_units">Units</th>
28665 <th class="th_range">Range</th>
28666 <th class="th_hal_version">Initial HIDL HAL version</th>
28667 <th class="th_tags">Tags</th>
28682 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
28683 <td class="entry_name
28685 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28687 <td class="entry_type">
28688 <span class="entry_type_name">float</span>
28690 <span class="entry_type_visibility"> [java_public]</span>
28693 <span class="entry_type_hwlevel">[limited] </span>
28698 </td> <!-- entry_type -->
28700 <td class="entry_description">
28701 <p>The amount of exposure time increase factor applied to the original output
28702 frame by the application processing before sending for reprocessing.<wbr/></p>
28705 <td class="entry_units">
28706 Relative exposure time increase factor.<wbr/>
28709 <td class="entry_range">
28710 <p>>= 1.<wbr/>0</p>
28713 <td class="entry_hal_version">
28717 <td class="entry_tags">
28718 <ul class="entry_tags">
28719 <li><a href="#tag_REPROC">REPROC</a></li>
28724 <tr class="entries_header">
28725 <th class="th_details" colspan="6">Details</th>
28727 <tr class="entry_cont">
28728 <td class="entry_details" colspan="6">
28729 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28730 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28731 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28732 output frames to effectively reduce the noise to the same level as a frame that was
28733 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28734 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28735 the camera device is that the amount of noise in the image would be approximately what
28736 would be expected if the original capture parameters had been a sensitivity of
28737 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28738 than S and T respectively.<wbr/> If the captured images were processed by the application
28739 before being sent for reprocessing,<wbr/> then the application may have used image processing
28740 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28741 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28742 control,<wbr/> the application can communicate to the camera device the actual noise level
28743 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28744 device can select appropriate noise reduction and edge enhancement parameters to avoid
28745 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28746 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28747 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28748 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28749 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28750 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28751 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28752 produce the best quality images.<wbr/></p>
28753 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28754 buffer in a way that affects its effective exposure time.<wbr/></p>
28755 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28756 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/>
28757 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28758 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28763 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28764 <!-- end of entry -->
28768 <!-- end of kind -->
28770 <tr><td colspan="7" class="kind">static</td></tr>
28772 <thead class="entries_header">
28774 <th class="th_name">Property Name</th>
28775 <th class="th_type">Type</th>
28776 <th class="th_description">Description</th>
28777 <th class="th_units">Units</th>
28778 <th class="th_range">Range</th>
28779 <th class="th_hal_version">Initial HIDL HAL version</th>
28780 <th class="th_tags">Tags</th>
28795 <tr class="entry" id="static_android.reprocess.maxCaptureStall">
28796 <td class="entry_name
28798 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
28800 <td class="entry_type">
28801 <span class="entry_type_name">int32</span>
28803 <span class="entry_type_visibility"> [java_public]</span>
28806 <span class="entry_type_hwlevel">[limited] </span>
28811 </td> <!-- entry_type -->
28813 <td class="entry_description">
28814 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
28815 reprocess capture request.<wbr/></p>
28818 <td class="entry_units">
28819 Number of frames.<wbr/>
28822 <td class="entry_range">
28826 <td class="entry_hal_version">
28830 <td class="entry_tags">
28831 <ul class="entry_tags">
28832 <li><a href="#tag_REPROC">REPROC</a></li>
28837 <tr class="entries_header">
28838 <th class="th_details" colspan="6">Details</th>
28840 <tr class="entry_cont">
28841 <td class="entry_details" colspan="6">
28842 <p>The key describes the maximal interference that one reprocess (input) request
28843 can introduce to the camera simultaneous streaming of regular (output) capture
28844 requests,<wbr/> including repeating requests.<wbr/></p>
28845 <p>When a reprocessing capture request is submitted while a camera output repeating request
28846 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
28847 pipeline for at least one frame duration so that the camera device is unable to process
28848 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
28849 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
28850 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
28851 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
28852 the worst-case number of frame stall introduced by one reprocess request with any kind of
28853 formats/<wbr/>sizes combination.<wbr/></p>
28854 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
28855 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
28856 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
28857 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
28858 YUV_<wbr/>REPROCESSING).<wbr/></p>
28863 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28864 <!-- end of entry -->
28868 <!-- end of kind -->
28871 <!-- end of section -->
28872 <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
28875 <tr><td colspan="7" class="kind">static</td></tr>
28877 <thead class="entries_header">
28879 <th class="th_name">Property Name</th>
28880 <th class="th_type">Type</th>
28881 <th class="th_description">Description</th>
28882 <th class="th_units">Units</th>
28883 <th class="th_range">Range</th>
28884 <th class="th_hal_version">Initial HIDL HAL version</th>
28885 <th class="th_tags">Tags</th>
28900 <tr class="entry" id="static_android.depth.maxDepthSamples">
28901 <td class="entry_name
28903 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
28905 <td class="entry_type">
28906 <span class="entry_type_name">int32</span>
28908 <span class="entry_type_visibility"> [system]</span>
28911 <span class="entry_type_hwlevel">[limited] </span>
28916 </td> <!-- entry_type -->
28918 <td class="entry_description">
28919 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
28922 <td class="entry_units">
28925 <td class="entry_range">
28928 <td class="entry_hal_version">
28932 <td class="entry_tags">
28933 <ul class="entry_tags">
28934 <li><a href="#tag_DEPTH">DEPTH</a></li>
28939 <tr class="entries_header">
28940 <th class="th_details" colspan="6">Details</th>
28942 <tr class="entry_cont">
28943 <td class="entry_details" colspan="6">
28944 <p>If a camera device supports outputting depth range data in the form of a depth point
28945 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
28946 number of points an output buffer may contain.<wbr/></p>
28947 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
28948 If output in the depth point cloud format is not supported,<wbr/> this entry will
28949 not be defined.<wbr/></p>
28954 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28955 <!-- end of entry -->
28958 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
28959 <td class="entry_name
28961 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
28963 <td class="entry_type">
28964 <span class="entry_type_name entry_type_name_enum">int32</span>
28965 <span class="entry_type_container">x</span>
28967 <span class="entry_type_array">
28970 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
28973 <span class="entry_type_hwlevel">[limited] </span>
28977 <ul class="entry_type_enum">
28979 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
28982 <span class="entry_type_enum_name">INPUT (v3.2)</span>
28986 </td> <!-- entry_type -->
28988 <td class="entry_description">
28989 <p>The available depth dataspace stream
28990 configurations that this camera device supports
28991 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
28994 <td class="entry_units">
28997 <td class="entry_range">
29000 <td class="entry_hal_version">
29004 <td class="entry_tags">
29005 <ul class="entry_tags">
29006 <li><a href="#tag_DEPTH">DEPTH</a></li>
29011 <tr class="entries_header">
29012 <th class="th_details" colspan="6">Details</th>
29014 <tr class="entry_cont">
29015 <td class="entry_details" colspan="6">
29016 <p>These are output stream configurations for use with
29017 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
29018 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
29019 <p>Only devices that support depth output for at least
29020 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
29021 this entry.<wbr/></p>
29022 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
29023 sparse depth point cloud must report a single entry for
29024 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
29025 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
29026 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
29031 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29032 <!-- end of entry -->
29035 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
29036 <td class="entry_name
29038 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
29040 <td class="entry_type">
29041 <span class="entry_type_name">int64</span>
29042 <span class="entry_type_container">x</span>
29044 <span class="entry_type_array">
29047 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29050 <span class="entry_type_hwlevel">[limited] </span>
29055 </td> <!-- entry_type -->
29057 <td class="entry_description">
29058 <p>This lists the minimum frame duration for each
29059 format/<wbr/>size combination for depth output formats.<wbr/></p>
29062 <td class="entry_units">
29063 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29066 <td class="entry_range">
29069 <td class="entry_hal_version">
29073 <td class="entry_tags">
29074 <ul class="entry_tags">
29075 <li><a href="#tag_DEPTH">DEPTH</a></li>
29080 <tr class="entries_header">
29081 <th class="th_details" colspan="6">Details</th>
29083 <tr class="entry_cont">
29084 <td class="entry_details" colspan="6">
29085 <p>This should correspond to the frame duration when only that
29086 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
29087 set to either OFF or FAST.<wbr/></p>
29088 <p>When multiple streams are used in a request,<wbr/> the minimum frame
29089 duration will be max(individual stream min durations).<wbr/></p>
29090 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
29091 is the same regardless of whether the stream is input or output.<wbr/></p>
29092 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
29093 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
29094 calculating the max frame rate.<wbr/></p>
29099 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29100 <!-- end of entry -->
29103 <tr class="entry" id="static_android.depth.availableDepthStallDurations">
29104 <td class="entry_name
29106 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
29108 <td class="entry_type">
29109 <span class="entry_type_name">int64</span>
29110 <span class="entry_type_container">x</span>
29112 <span class="entry_type_array">
29115 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29118 <span class="entry_type_hwlevel">[limited] </span>
29123 </td> <!-- entry_type -->
29125 <td class="entry_description">
29126 <p>This lists the maximum stall duration for each
29127 output format/<wbr/>size combination for depth streams.<wbr/></p>
29130 <td class="entry_units">
29131 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29134 <td class="entry_range">
29137 <td class="entry_hal_version">
29141 <td class="entry_tags">
29142 <ul class="entry_tags">
29143 <li><a href="#tag_DEPTH">DEPTH</a></li>
29148 <tr class="entries_header">
29149 <th class="th_details" colspan="6">Details</th>
29151 <tr class="entry_cont">
29152 <td class="entry_details" colspan="6">
29153 <p>A stall duration is how much extra time would get added
29154 to the normal minimum frame duration for a repeating request
29155 that has streams with non-zero stall.<wbr/></p>
29156 <p>This functions similarly to
29157 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
29159 <p>All depth output stream formats may have a nonzero stall
29160 duration.<wbr/></p>
29165 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29166 <!-- end of entry -->
29169 <tr class="entry" id="static_android.depth.depthIsExclusive">
29170 <td class="entry_name
29172 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
29174 <td class="entry_type">
29175 <span class="entry_type_name entry_type_name_enum">byte</span>
29177 <span class="entry_type_visibility"> [public as boolean]</span>
29180 <span class="entry_type_hwlevel">[limited] </span>
29184 <ul class="entry_type_enum">
29186 <span class="entry_type_enum_name">FALSE (v3.2)</span>
29189 <span class="entry_type_enum_name">TRUE (v3.2)</span>
29193 </td> <!-- entry_type -->
29195 <td class="entry_description">
29196 <p>Indicates whether a capture request may target both a
29197 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
29198 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
29201 <td class="entry_units">
29204 <td class="entry_range">
29207 <td class="entry_hal_version">
29211 <td class="entry_tags">
29215 <tr class="entries_header">
29216 <th class="th_details" colspan="6">Details</th>
29218 <tr class="entry_cont">
29219 <td class="entry_details" colspan="6">
29220 <p>If TRUE,<wbr/> including both depth and color outputs in a single
29221 capture request is not supported.<wbr/> An application must interleave color
29222 and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types
29223 of output.<wbr/></p>
29224 <p>Typically,<wbr/> this restriction exists on camera devices that
29225 need to emit a specific pattern or wavelength of light to
29226 measure depth values,<wbr/> which causes the color image to be
29227 corrupted during depth measurement.<wbr/></p>
29232 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29233 <!-- end of entry -->
29237 <!-- end of kind -->
29240 <!-- end of section -->
29241 <!-- </namespace> -->
29244 <div class="tags" id="tag_index">
29247 <li id="tag_BC">BC -
29248 Needed for backwards compatibility with old Java API
29250 <ul class="tags_entries">
29251 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
29252 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
29253 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
29254 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
29255 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
29256 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
29257 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
29258 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
29259 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
29260 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
29261 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
29262 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
29263 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
29264 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
29265 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
29266 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
29267 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
29268 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
29269 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
29270 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
29271 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
29272 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
29273 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
29274 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
29275 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
29276 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
29277 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
29278 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
29279 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
29280 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
29281 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
29282 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
29283 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
29284 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
29285 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
29286 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
29287 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
29288 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
29289 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
29290 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
29291 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
29292 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
29293 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
29294 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
29295 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
29296 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
29297 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
29298 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
29299 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
29300 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
29301 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
29302 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
29303 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
29304 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
29305 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
29306 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
29307 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
29308 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
29309 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
29310 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
29311 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
29312 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
29313 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
29314 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
29315 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
29316 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
29317 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
29319 </li> <!-- tag_BC -->
29320 <li id="tag_V1">V1 -
29321 New features for first camera 2 release (API1)
29323 <ul class="tags_entries">
29324 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
29325 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
29326 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
29327 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
29328 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
29329 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
29330 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
29331 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
29332 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
29333 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
29334 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
29335 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
29336 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
29337 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
29338 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
29339 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
29340 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
29341 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
29342 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
29343 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
29344 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
29345 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
29346 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
29347 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
29348 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
29349 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
29350 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
29351 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
29352 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
29353 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
29354 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
29355 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
29356 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
29357 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
29358 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
29359 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
29360 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
29361 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
29362 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
29363 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
29364 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
29365 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
29366 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
29367 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
29368 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
29370 </li> <!-- tag_V1 -->
29371 <li id="tag_RAW">RAW -
29372 Needed for useful RAW image processing and DNG file support
29374 <ul class="tags_entries">
29375 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
29376 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
29377 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
29378 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
29379 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
29380 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
29381 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
29382 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
29383 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
29384 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
29385 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
29386 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
29387 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
29388 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
29389 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
29390 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
29391 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
29392 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
29393 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
29394 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
29395 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
29396 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
29397 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
29398 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
29399 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
29400 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
29401 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
29402 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
29403 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
29405 </li> <!-- tag_RAW -->
29406 <li id="tag_HAL2">HAL2 -
29407 Entry is only used by camera device legacy HAL 2.x
29409 <ul class="tags_entries">
29410 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
29411 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
29412 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
29413 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
29414 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
29416 </li> <!-- tag_HAL2 -->
29417 <li id="tag_FULL">FULL -
29418 Entry is required for full hardware level devices, and optional for other hardware levels
29420 <ul class="tags_entries">
29421 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
29423 </li> <!-- tag_FULL -->
29424 <li id="tag_DEPTH">DEPTH -
29425 Entry is required for the depth capability.
29427 <ul class="tags_entries">
29428 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
29429 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
29430 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
29431 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
29432 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
29433 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
29434 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
29435 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
29437 </li> <!-- tag_DEPTH -->
29438 <li id="tag_REPROC">REPROC -
29439 Entry is required for the YUV or PRIVATE reprocessing capability.
29441 <ul class="tags_entries">
29442 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
29443 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
29444 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
29445 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
29446 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
29447 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
29448 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
29449 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
29450 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
29451 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
29453 </li> <!-- tag_REPROC -->
29454 <li id="tag_FUTURE">FUTURE -
29455 Entry is under-specified and is not required for now. This is for book-keeping purpose,
29456 do not implement or use it, it may be revised for future.
29458 <ul class="tags_entries">
29459 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
29460 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
29461 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
29462 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
29463 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
29464 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
29465 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
29466 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
29467 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
29468 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
29469 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
29470 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
29471 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
29472 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
29473 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
29474 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
29475 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
29476 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
29477 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
29478 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
29479 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
29481 </li> <!-- tag_FUTURE -->
29485 [ <a href="#">top</a> ]