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>
524 <span class="toc_kind_header">dynamic</span>
525 <ul class="toc_section">
527 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
529 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
531 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
533 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
535 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
537 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
539 ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
541 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
543 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
545 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
547 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
550 </ul> <!-- toc_section -->
553 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
554 <ul class="toc_section">
556 <span class="toc_kind_header">controls</span>
557 <ul class="toc_section">
559 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
561 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
565 <span class="toc_kind_header">static</span>
566 <ul class="toc_section">
568 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
572 <span class="toc_kind_header">dynamic</span>
573 <ul class="toc_section">
575 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
578 </ul> <!-- toc_section -->
581 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
582 <ul class="toc_section">
584 <span class="toc_kind_header">static</span>
585 <ul class="toc_section">
587 class="toc_deprecated"
588 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
590 class="toc_deprecated"
591 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
593 class="toc_deprecated"
594 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
596 class="toc_deprecated"
597 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
601 <span class="toc_kind_header">dynamic</span>
602 <ul class="toc_section">
604 class="toc_deprecated"
605 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
608 </ul> <!-- toc_section -->
611 <span class="toc_section_header"><a href="#section_request">request</a></span>
612 <ul class="toc_section">
614 <span class="toc_kind_header">controls</span>
615 <ul class="toc_section">
617 class="toc_deprecated"
618 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
620 ><a href="#controls_android.request.id">android.request.id</a></li>
622 class="toc_deprecated"
623 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
625 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
627 class="toc_deprecated"
628 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
630 class="toc_deprecated"
631 ><a href="#controls_android.request.type">android.request.type</a></li>
635 <span class="toc_kind_header">static</span>
636 <ul class="toc_section">
638 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
640 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
642 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
644 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
646 class="toc_deprecated"
647 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
649 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
651 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
653 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
655 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
657 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
659 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
661 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
663 ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
667 <span class="toc_kind_header">dynamic</span>
668 <ul class="toc_section">
670 class="toc_deprecated"
671 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
673 ><a href="#dynamic_android.request.id">android.request.id</a></li>
675 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
677 class="toc_deprecated"
678 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
680 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
683 </ul> <!-- toc_section -->
686 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
687 <ul class="toc_section">
689 <span class="toc_kind_header">controls</span>
690 <ul class="toc_section">
692 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
696 <span class="toc_kind_header">static</span>
697 <ul class="toc_section">
699 class="toc_deprecated"
700 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
702 class="toc_deprecated"
703 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
705 class="toc_deprecated"
706 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
708 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
710 class="toc_deprecated"
711 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
713 class="toc_deprecated"
714 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
716 class="toc_deprecated"
717 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
719 class="toc_deprecated"
720 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
722 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
724 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
726 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
728 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
730 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
732 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
736 <span class="toc_kind_header">dynamic</span>
737 <ul class="toc_section">
739 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
742 </ul> <!-- toc_section -->
745 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
746 <ul class="toc_section">
748 <span class="toc_kind_header">controls</span>
749 <ul class="toc_section">
751 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
753 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
755 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
757 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
759 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
763 <span class="toc_kind_header">static</span>
764 <ul class="toc_section">
767 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
769 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
771 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
773 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
775 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
777 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
779 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
781 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
783 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
785 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
787 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
790 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
792 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
794 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
796 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
798 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
800 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
802 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
804 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
806 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
808 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
810 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
812 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
814 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
816 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
818 ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
820 ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
824 <span class="toc_kind_header">dynamic</span>
825 <ul class="toc_section">
827 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
829 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
831 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
833 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
835 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
837 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
839 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
841 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
843 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
845 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
847 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
849 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
851 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
853 ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
855 ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
858 </ul> <!-- toc_section -->
861 <span class="toc_section_header"><a href="#section_shading">shading</a></span>
862 <ul class="toc_section">
864 <span class="toc_kind_header">controls</span>
865 <ul class="toc_section">
867 ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
869 ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
873 <span class="toc_kind_header">dynamic</span>
874 <ul class="toc_section">
876 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
880 <span class="toc_kind_header">static</span>
881 <ul class="toc_section">
883 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
886 </ul> <!-- toc_section -->
889 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
890 <ul class="toc_section">
892 <span class="toc_kind_header">controls</span>
893 <ul class="toc_section">
895 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
897 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
899 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
901 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
903 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
907 <span class="toc_kind_header">static</span>
908 <ul class="toc_section">
911 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
913 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
915 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
917 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
919 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
921 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
923 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
925 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
930 <span class="toc_kind_header">dynamic</span>
931 <ul class="toc_section">
933 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
935 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
937 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
939 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
941 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
943 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
945 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
947 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
949 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
951 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
953 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
955 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
957 class="toc_deprecated"
958 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
960 class="toc_deprecated"
961 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
963 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
965 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
967 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
969 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
972 </ul> <!-- toc_section -->
975 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
976 <ul class="toc_section">
978 <span class="toc_kind_header">controls</span>
979 <ul class="toc_section">
981 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
983 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
985 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
987 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
989 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
991 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
993 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
997 <span class="toc_kind_header">static</span>
998 <ul class="toc_section">
1000 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1002 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1006 <span class="toc_kind_header">dynamic</span>
1007 <ul class="toc_section">
1009 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1011 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1013 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1015 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1017 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1019 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1021 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1024 </ul> <!-- toc_section -->
1027 <span class="toc_section_header"><a href="#section_led">led</a></span>
1028 <ul class="toc_section">
1030 <span class="toc_kind_header">controls</span>
1031 <ul class="toc_section">
1033 ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1037 <span class="toc_kind_header">dynamic</span>
1038 <ul class="toc_section">
1040 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1044 <span class="toc_kind_header">static</span>
1045 <ul class="toc_section">
1047 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1050 </ul> <!-- toc_section -->
1053 <span class="toc_section_header"><a href="#section_info">info</a></span>
1054 <ul class="toc_section">
1056 <span class="toc_kind_header">static</span>
1057 <ul class="toc_section">
1059 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1061 ><a href="#static_android.info.version">android.info.version</a></li>
1064 </ul> <!-- toc_section -->
1067 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1068 <ul class="toc_section">
1070 <span class="toc_kind_header">controls</span>
1071 <ul class="toc_section">
1073 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1077 <span class="toc_kind_header">dynamic</span>
1078 <ul class="toc_section">
1080 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1083 </ul> <!-- toc_section -->
1086 <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1087 <ul class="toc_section">
1089 <span class="toc_kind_header">dynamic</span>
1090 <ul class="toc_section">
1092 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1096 <span class="toc_kind_header">static</span>
1097 <ul class="toc_section">
1099 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1102 </ul> <!-- toc_section -->
1105 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1106 <ul class="toc_section">
1108 <span class="toc_kind_header">controls</span>
1109 <ul class="toc_section">
1111 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1115 <span class="toc_kind_header">dynamic</span>
1116 <ul class="toc_section">
1118 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1122 <span class="toc_kind_header">static</span>
1123 <ul class="toc_section">
1125 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1128 </ul> <!-- toc_section -->
1131 <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1132 <ul class="toc_section">
1134 <span class="toc_kind_header">static</span>
1135 <ul class="toc_section">
1137 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1139 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1141 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1143 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1145 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1148 </ul> <!-- toc_section -->
1154 <table class="properties">
1156 <thead class="thead_dummy">
1158 <th class="th_name">Property Name</th>
1159 <th class="th_type">Type</th>
1160 <th class="th_description">Description</th>
1161 <th class="th_units">Units</th>
1162 <th class="th_range">Range</th>
1163 <th class="th_hal_version">HIDL HAL version</th>
1164 <th class="th_tags">Tags</th>
1166 </thead> <!-- so that the first occurrence of thead is not
1167 above the first occurrence of tr -->
1168 <!-- <namespace name="android"> -->
1169 <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1172 <tr><td colspan="7" class="kind">controls</td></tr>
1174 <thead class="entries_header">
1176 <th class="th_name">Property Name</th>
1177 <th class="th_type">Type</th>
1178 <th class="th_description">Description</th>
1179 <th class="th_units">Units</th>
1180 <th class="th_range">Range</th>
1181 <th class="th_hal_version">Initial HIDL HAL version</th>
1182 <th class="th_tags">Tags</th>
1197 <tr class="entry" id="controls_android.colorCorrection.mode">
1198 <td class="entry_name
1200 android.<wbr/>color<wbr/>Correction.<wbr/>mode
1202 <td class="entry_type">
1203 <span class="entry_type_name entry_type_name_enum">byte</span>
1205 <span class="entry_type_visibility"> [public]</span>
1208 <span class="entry_type_hwlevel">[full] </span>
1212 <ul class="entry_type_enum">
1214 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1215 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1216 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1217 <p>All advanced white balance adjustments (not specified
1218 by our white balance pipeline) must be disabled.<wbr/></p>
1219 <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
1220 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1221 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1224 <span class="entry_type_enum_name">FAST (v3.2)</span>
1225 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1226 capture rate relative to sensor raw output.<wbr/></p>
1227 <p>Advanced white balance adjustments above and beyond
1228 the specified white balance pipeline may be applied.<wbr/></p>
1229 <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
1230 the camera device uses the last frame's AWB values
1231 (or defaults if AWB has never been run).<wbr/></p></span>
1234 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1235 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1236 quality but the capture rate might be reduced (relative to sensor
1237 raw output rate)</p>
1238 <p>Advanced white balance adjustments above and beyond
1239 the specified white balance pipeline may be applied.<wbr/></p>
1240 <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
1241 the camera device uses the last frame's AWB values
1242 (or defaults if AWB has never been run).<wbr/></p></span>
1246 </td> <!-- entry_type -->
1248 <td class="entry_description">
1249 <p>The mode control selects how the image data is converted from the
1250 sensor's native color into linear sRGB color.<wbr/></p>
1253 <td class="entry_units">
1256 <td class="entry_range">
1259 <td class="entry_hal_version">
1263 <td class="entry_tags">
1267 <tr class="entries_header">
1268 <th class="th_details" colspan="6">Details</th>
1270 <tr class="entry_cont">
1271 <td class="entry_details" colspan="6">
1272 <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
1273 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1274 application controls how the color mapping is performed.<wbr/></p>
1275 <p>We define the expected processing pipeline below.<wbr/> For consistency
1276 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1277 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1278 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1279 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1280 camera device (in the results) and be roughly correct.<wbr/></p>
1281 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1282 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1283 as what was produced by the camera device in the earlier frame.<wbr/></p>
1284 <p>The expected processing pipeline is as follows:</p>
1285 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1286 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1287 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1288 matrix (applied after demosaic).<wbr/></p>
1289 <p>The 4-channel white-balance gains are defined as:</p>
1290 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1292 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1293 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1294 These may be identical for a given camera device implementation; if
1295 the camera device does not support a separate gain for even/<wbr/>odd green
1296 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1297 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1298 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1299 <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 ]
1301 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1302 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1303 <p>with colors as follows:</p>
1304 <pre><code>r' = I0r + I1g + I2b
1305 g' = I3r + I4g + I5b
1306 b' = I6r + I7g + I8b
1308 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1309 values are clipped to fit within the range.<wbr/></p>
1313 <tr class="entries_header">
1314 <th class="th_details" colspan="6">HAL Implementation Details</th>
1316 <tr class="entry_cont">
1317 <td class="entry_details" colspan="6">
1318 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1319 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1320 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1321 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1325 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1326 <!-- end of entry -->
1329 <tr class="entry" id="controls_android.colorCorrection.transform">
1330 <td class="entry_name
1332 android.<wbr/>color<wbr/>Correction.<wbr/>transform
1334 <td class="entry_type">
1335 <span class="entry_type_name">rational</span>
1336 <span class="entry_type_container">x</span>
1338 <span class="entry_type_array">
1341 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1344 <span class="entry_type_hwlevel">[full] </span>
1347 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1350 </td> <!-- entry_type -->
1352 <td class="entry_description">
1353 <p>A color transform matrix to use to transform
1354 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1357 <td class="entry_units">
1358 Unitless scale factors
1361 <td class="entry_range">
1364 <td class="entry_hal_version">
1368 <td class="entry_tags">
1372 <tr class="entries_header">
1373 <th class="th_details" colspan="6">Details</th>
1375 <tr class="entry_cont">
1376 <td class="entry_details" colspan="6">
1377 <p>This matrix is either set by the camera device when the request
1378 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1379 directly by the application in the request when the
1380 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1381 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1382 for precision issues; the final rounded matrix should be reported back
1383 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1384 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1385 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1386 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1387 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1392 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1393 <!-- end of entry -->
1396 <tr class="entry" id="controls_android.colorCorrection.gains">
1397 <td class="entry_name
1399 android.<wbr/>color<wbr/>Correction.<wbr/>gains
1401 <td class="entry_type">
1402 <span class="entry_type_name">float</span>
1403 <span class="entry_type_container">x</span>
1405 <span class="entry_type_array">
1408 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1411 <span class="entry_type_hwlevel">[full] </span>
1414 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1417 </td> <!-- entry_type -->
1419 <td class="entry_description">
1420 <p>Gains applying to Bayer raw color channels for
1421 white-balance.<wbr/></p>
1424 <td class="entry_units">
1425 Unitless gain factors
1428 <td class="entry_range">
1431 <td class="entry_hal_version">
1435 <td class="entry_tags">
1439 <tr class="entries_header">
1440 <th class="th_details" colspan="6">Details</th>
1442 <tr class="entry_cont">
1443 <td class="entry_details" colspan="6">
1444 <p>These per-channel gains are either set by the camera device
1445 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1446 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1447 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1448 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1449 <p>The gains in the result metadata are the gains actually
1450 applied by the camera device to the current frame.<wbr/></p>
1451 <p>The valid range of gains varies on different devices,<wbr/> but gains
1452 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1453 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1454 this can create color artifacts.<wbr/></p>
1458 <tr class="entries_header">
1459 <th class="th_details" colspan="6">HAL Implementation Details</th>
1461 <tr class="entry_cont">
1462 <td class="entry_details" colspan="6">
1463 <p>The 4-channel white-balance gains are defined in
1464 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1465 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1466 is the gain for green pixels on the odd rows.<wbr/></p>
1467 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1468 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1469 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1473 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1474 <!-- end of entry -->
1477 <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1478 <td class="entry_name
1480 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1482 <td class="entry_type">
1483 <span class="entry_type_name entry_type_name_enum">byte</span>
1485 <span class="entry_type_visibility"> [public]</span>
1488 <span class="entry_type_hwlevel">[legacy] </span>
1492 <ul class="entry_type_enum">
1494 <span class="entry_type_enum_name">OFF (v3.2)</span>
1495 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1498 <span class="entry_type_enum_name">FAST (v3.2)</span>
1499 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1500 relative to sensor raw output.<wbr/></p></span>
1503 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1504 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1505 reduced (relative to sensor raw output rate)</p></span>
1509 </td> <!-- entry_type -->
1511 <td class="entry_description">
1512 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1515 <td class="entry_units">
1518 <td class="entry_range">
1519 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1522 <td class="entry_hal_version">
1526 <td class="entry_tags">
1530 <tr class="entries_header">
1531 <th class="th_details" colspan="6">Details</th>
1533 <tr class="entry_cont">
1534 <td class="entry_details" colspan="6">
1535 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1536 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1537 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1538 minimize the chromatic artifacts that may occur along the object boundaries in an
1540 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1541 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1542 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1543 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1544 applying aberration correction.<wbr/></p>
1545 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1550 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1551 <!-- end of entry -->
1555 <!-- end of kind -->
1557 <tr><td colspan="7" class="kind">dynamic</td></tr>
1559 <thead class="entries_header">
1561 <th class="th_name">Property Name</th>
1562 <th class="th_type">Type</th>
1563 <th class="th_description">Description</th>
1564 <th class="th_units">Units</th>
1565 <th class="th_range">Range</th>
1566 <th class="th_hal_version">Initial HIDL HAL version</th>
1567 <th class="th_tags">Tags</th>
1582 <tr class="entry" id="dynamic_android.colorCorrection.mode">
1583 <td class="entry_name
1585 android.<wbr/>color<wbr/>Correction.<wbr/>mode
1587 <td class="entry_type">
1588 <span class="entry_type_name entry_type_name_enum">byte</span>
1590 <span class="entry_type_visibility"> [public]</span>
1593 <span class="entry_type_hwlevel">[full] </span>
1597 <ul class="entry_type_enum">
1599 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1600 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1601 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1602 <p>All advanced white balance adjustments (not specified
1603 by our white balance pipeline) must be disabled.<wbr/></p>
1604 <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
1605 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1606 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1609 <span class="entry_type_enum_name">FAST (v3.2)</span>
1610 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1611 capture rate relative to sensor raw output.<wbr/></p>
1612 <p>Advanced white balance adjustments above and beyond
1613 the specified white balance pipeline may be applied.<wbr/></p>
1614 <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
1615 the camera device uses the last frame's AWB values
1616 (or defaults if AWB has never been run).<wbr/></p></span>
1619 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1620 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1621 quality but the capture rate might be reduced (relative to sensor
1622 raw output rate)</p>
1623 <p>Advanced white balance adjustments above and beyond
1624 the specified white balance pipeline may be applied.<wbr/></p>
1625 <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
1626 the camera device uses the last frame's AWB values
1627 (or defaults if AWB has never been run).<wbr/></p></span>
1631 </td> <!-- entry_type -->
1633 <td class="entry_description">
1634 <p>The mode control selects how the image data is converted from the
1635 sensor's native color into linear sRGB color.<wbr/></p>
1638 <td class="entry_units">
1641 <td class="entry_range">
1644 <td class="entry_hal_version">
1648 <td class="entry_tags">
1652 <tr class="entries_header">
1653 <th class="th_details" colspan="6">Details</th>
1655 <tr class="entry_cont">
1656 <td class="entry_details" colspan="6">
1657 <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
1658 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1659 application controls how the color mapping is performed.<wbr/></p>
1660 <p>We define the expected processing pipeline below.<wbr/> For consistency
1661 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1662 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1663 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1664 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1665 camera device (in the results) and be roughly correct.<wbr/></p>
1666 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1667 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1668 as what was produced by the camera device in the earlier frame.<wbr/></p>
1669 <p>The expected processing pipeline is as follows:</p>
1670 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1671 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1672 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1673 matrix (applied after demosaic).<wbr/></p>
1674 <p>The 4-channel white-balance gains are defined as:</p>
1675 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1677 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1678 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1679 These may be identical for a given camera device implementation; if
1680 the camera device does not support a separate gain for even/<wbr/>odd green
1681 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1682 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1683 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1684 <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 ]
1686 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1687 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1688 <p>with colors as follows:</p>
1689 <pre><code>r' = I0r + I1g + I2b
1690 g' = I3r + I4g + I5b
1691 b' = I6r + I7g + I8b
1693 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1694 values are clipped to fit within the range.<wbr/></p>
1698 <tr class="entries_header">
1699 <th class="th_details" colspan="6">HAL Implementation Details</th>
1701 <tr class="entry_cont">
1702 <td class="entry_details" colspan="6">
1703 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1704 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1705 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1706 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1710 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1711 <!-- end of entry -->
1714 <tr class="entry" id="dynamic_android.colorCorrection.transform">
1715 <td class="entry_name
1717 android.<wbr/>color<wbr/>Correction.<wbr/>transform
1719 <td class="entry_type">
1720 <span class="entry_type_name">rational</span>
1721 <span class="entry_type_container">x</span>
1723 <span class="entry_type_array">
1726 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1729 <span class="entry_type_hwlevel">[full] </span>
1732 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1735 </td> <!-- entry_type -->
1737 <td class="entry_description">
1738 <p>A color transform matrix to use to transform
1739 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1742 <td class="entry_units">
1743 Unitless scale factors
1746 <td class="entry_range">
1749 <td class="entry_hal_version">
1753 <td class="entry_tags">
1757 <tr class="entries_header">
1758 <th class="th_details" colspan="6">Details</th>
1760 <tr class="entry_cont">
1761 <td class="entry_details" colspan="6">
1762 <p>This matrix is either set by the camera device when the request
1763 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1764 directly by the application in the request when the
1765 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1766 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1767 for precision issues; the final rounded matrix should be reported back
1768 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1769 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1770 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1771 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1772 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1777 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1778 <!-- end of entry -->
1781 <tr class="entry" id="dynamic_android.colorCorrection.gains">
1782 <td class="entry_name
1784 android.<wbr/>color<wbr/>Correction.<wbr/>gains
1786 <td class="entry_type">
1787 <span class="entry_type_name">float</span>
1788 <span class="entry_type_container">x</span>
1790 <span class="entry_type_array">
1793 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1796 <span class="entry_type_hwlevel">[full] </span>
1799 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1802 </td> <!-- entry_type -->
1804 <td class="entry_description">
1805 <p>Gains applying to Bayer raw color channels for
1806 white-balance.<wbr/></p>
1809 <td class="entry_units">
1810 Unitless gain factors
1813 <td class="entry_range">
1816 <td class="entry_hal_version">
1820 <td class="entry_tags">
1824 <tr class="entries_header">
1825 <th class="th_details" colspan="6">Details</th>
1827 <tr class="entry_cont">
1828 <td class="entry_details" colspan="6">
1829 <p>These per-channel gains are either set by the camera device
1830 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1831 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1832 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1833 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1834 <p>The gains in the result metadata are the gains actually
1835 applied by the camera device to the current frame.<wbr/></p>
1836 <p>The valid range of gains varies on different devices,<wbr/> but gains
1837 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1838 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1839 this can create color artifacts.<wbr/></p>
1843 <tr class="entries_header">
1844 <th class="th_details" colspan="6">HAL Implementation Details</th>
1846 <tr class="entry_cont">
1847 <td class="entry_details" colspan="6">
1848 <p>The 4-channel white-balance gains are defined in
1849 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1850 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1851 is the gain for green pixels on the odd rows.<wbr/></p>
1852 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1853 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1854 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1858 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1859 <!-- end of entry -->
1862 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1863 <td class="entry_name
1865 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1867 <td class="entry_type">
1868 <span class="entry_type_name entry_type_name_enum">byte</span>
1870 <span class="entry_type_visibility"> [public]</span>
1873 <span class="entry_type_hwlevel">[legacy] </span>
1877 <ul class="entry_type_enum">
1879 <span class="entry_type_enum_name">OFF (v3.2)</span>
1880 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1883 <span class="entry_type_enum_name">FAST (v3.2)</span>
1884 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1885 relative to sensor raw output.<wbr/></p></span>
1888 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1889 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1890 reduced (relative to sensor raw output rate)</p></span>
1894 </td> <!-- entry_type -->
1896 <td class="entry_description">
1897 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1900 <td class="entry_units">
1903 <td class="entry_range">
1904 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1907 <td class="entry_hal_version">
1911 <td class="entry_tags">
1915 <tr class="entries_header">
1916 <th class="th_details" colspan="6">Details</th>
1918 <tr class="entry_cont">
1919 <td class="entry_details" colspan="6">
1920 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1921 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1922 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1923 minimize the chromatic artifacts that may occur along the object boundaries in an
1925 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1926 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1927 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1928 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1929 applying aberration correction.<wbr/></p>
1930 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1935 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1936 <!-- end of entry -->
1940 <!-- end of kind -->
1942 <tr><td colspan="7" class="kind">static</td></tr>
1944 <thead class="entries_header">
1946 <th class="th_name">Property Name</th>
1947 <th class="th_type">Type</th>
1948 <th class="th_description">Description</th>
1949 <th class="th_units">Units</th>
1950 <th class="th_range">Range</th>
1951 <th class="th_hal_version">Initial HIDL HAL version</th>
1952 <th class="th_tags">Tags</th>
1967 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1968 <td class="entry_name
1970 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1972 <td class="entry_type">
1973 <span class="entry_type_name">byte</span>
1974 <span class="entry_type_container">x</span>
1976 <span class="entry_type_array">
1979 <span class="entry_type_visibility"> [public as enumList]</span>
1982 <span class="entry_type_hwlevel">[legacy] </span>
1985 <div class="entry_type_notes">list of enums</div>
1988 </td> <!-- entry_type -->
1990 <td class="entry_description">
1991 <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
1992 supported by this camera device.<wbr/></p>
1995 <td class="entry_units">
1998 <td class="entry_range">
1999 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
2002 <td class="entry_hal_version">
2006 <td class="entry_tags">
2007 <ul class="entry_tags">
2008 <li><a href="#tag_V1">V1</a></li>
2013 <tr class="entries_header">
2014 <th class="th_details" colspan="6">Details</th>
2016 <tr class="entry_cont">
2017 <td class="entry_details" colspan="6">
2018 <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
2019 aberration correction modes are available for a device,<wbr/> this list will solely include
2020 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2021 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2022 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2023 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
2027 <tr class="entries_header">
2028 <th class="th_details" colspan="6">HAL Implementation Details</th>
2030 <tr class="entry_cont">
2031 <td class="entry_details" colspan="6">
2032 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2033 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2034 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2035 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2039 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2040 <!-- end of entry -->
2044 <!-- end of kind -->
2047 <!-- end of section -->
2048 <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2051 <tr><td colspan="7" class="kind">controls</td></tr>
2053 <thead class="entries_header">
2055 <th class="th_name">Property Name</th>
2056 <th class="th_type">Type</th>
2057 <th class="th_description">Description</th>
2058 <th class="th_units">Units</th>
2059 <th class="th_range">Range</th>
2060 <th class="th_hal_version">Initial HIDL HAL version</th>
2061 <th class="th_tags">Tags</th>
2076 <tr class="entry" id="controls_android.control.aeAntibandingMode">
2077 <td class="entry_name
2079 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2081 <td class="entry_type">
2082 <span class="entry_type_name entry_type_name_enum">byte</span>
2084 <span class="entry_type_visibility"> [public]</span>
2087 <span class="entry_type_hwlevel">[legacy] </span>
2091 <ul class="entry_type_enum">
2093 <span class="entry_type_enum_name">OFF (v3.2)</span>
2094 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2095 avoid banding problems.<wbr/></p></span>
2098 <span class="entry_type_enum_name">50HZ (v3.2)</span>
2099 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2100 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2103 <span class="entry_type_enum_name">60HZ (v3.2)</span>
2104 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2105 avoid banding problems with 60Hz illumination
2106 sources.<wbr/></p></span>
2109 <span class="entry_type_enum_name">AUTO (v3.2)</span>
2110 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2111 antibanding routine to the current illumination
2112 condition.<wbr/> This is the default mode if AUTO is
2113 available on given camera device.<wbr/></p></span>
2117 </td> <!-- entry_type -->
2119 <td class="entry_description">
2120 <p>The desired setting for the camera device's auto-exposure
2121 algorithm's antibanding compensation.<wbr/></p>
2124 <td class="entry_units">
2127 <td class="entry_range">
2128 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2131 <td class="entry_hal_version">
2135 <td class="entry_tags">
2136 <ul class="entry_tags">
2137 <li><a href="#tag_BC">BC</a></li>
2142 <tr class="entries_header">
2143 <th class="th_details" colspan="6">Details</th>
2145 <tr class="entry_cont">
2146 <td class="entry_details" colspan="6">
2147 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2148 lights,<wbr/> flicker at the rate of the power supply frequency
2149 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2150 typically not noticeable to a person,<wbr/> it can be visible to
2151 a camera device.<wbr/> If a camera sets its exposure time to the
2152 wrong value,<wbr/> the flicker may become visible in the
2153 viewfinder as flicker or in a final captured image,<wbr/> as a
2154 set of variable-brightness bands across the image.<wbr/></p>
2155 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2156 include antibanding routines that ensure that the chosen
2157 exposure value will not cause such banding.<wbr/> The choice of
2158 exposure time depends on the rate of flicker,<wbr/> which the
2159 camera device can detect automatically,<wbr/> or the expected
2160 rate can be selected by the application using this
2162 <p>A given camera device may not support all of the possible
2163 options for the antibanding mode.<wbr/> The
2164 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2165 the available modes for a given camera device.<wbr/></p>
2166 <p>AUTO mode is the default if it is available on given
2167 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2168 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2169 and 60HZ will be available.<wbr/></p>
2170 <p>If manual exposure control is enabled (by setting
2171 <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/>
2172 then this setting has no effect,<wbr/> and the application must
2173 ensure it selects exposure times that do not cause banding
2174 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2175 the application in this.<wbr/></p>
2179 <tr class="entries_header">
2180 <th class="th_details" colspan="6">HAL Implementation Details</th>
2182 <tr class="entry_cont">
2183 <td class="entry_details" colspan="6">
2184 <p>For all capture request templates,<wbr/> this field must be set
2185 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2186 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2187 60HZ must be available.<wbr/></p>
2188 <p>If manual exposure control is enabled (by setting
2189 <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/>
2190 then the exposure values provided by the application must not be
2191 adjusted for antibanding.<wbr/></p>
2195 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2196 <!-- end of entry -->
2199 <tr class="entry" id="controls_android.control.aeExposureCompensation">
2200 <td class="entry_name
2202 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2204 <td class="entry_type">
2205 <span class="entry_type_name">int32</span>
2207 <span class="entry_type_visibility"> [public]</span>
2210 <span class="entry_type_hwlevel">[legacy] </span>
2215 </td> <!-- entry_type -->
2217 <td class="entry_description">
2218 <p>Adjustment to auto-exposure (AE) target image
2219 brightness.<wbr/></p>
2222 <td class="entry_units">
2226 <td class="entry_range">
2227 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2230 <td class="entry_hal_version">
2234 <td class="entry_tags">
2235 <ul class="entry_tags">
2236 <li><a href="#tag_BC">BC</a></li>
2241 <tr class="entries_header">
2242 <th class="th_details" colspan="6">Details</th>
2244 <tr class="entry_cont">
2245 <td class="entry_details" colspan="6">
2246 <p>The adjustment is measured as a count of steps,<wbr/> with the
2247 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2248 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2249 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2250 will mean an exposure compensation of +2 EV; -3 will mean an
2251 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2252 of image brightness.<wbr/> Note that this control will only be
2253 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2254 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2255 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2256 may take several frames to reach the newly requested exposure target.<wbr/>
2257 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2258 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
2259 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2260 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2265 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2266 <!-- end of entry -->
2269 <tr class="entry" id="controls_android.control.aeLock">
2270 <td class="entry_name
2272 android.<wbr/>control.<wbr/>ae<wbr/>Lock
2274 <td class="entry_type">
2275 <span class="entry_type_name entry_type_name_enum">byte</span>
2277 <span class="entry_type_visibility"> [public as boolean]</span>
2280 <span class="entry_type_hwlevel">[legacy] </span>
2284 <ul class="entry_type_enum">
2286 <span class="entry_type_enum_name">OFF (v3.2)</span>
2287 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2288 is free to update its parameters.<wbr/></p></span>
2291 <span class="entry_type_enum_name">ON (v3.2)</span>
2292 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2293 must not update the exposure and sensitivity parameters
2294 while the lock is active.<wbr/></p>
2295 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2296 will still take effect while auto-exposure is locked.<wbr/></p>
2297 <p>Some rare LEGACY devices may not support
2298 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2302 </td> <!-- entry_type -->
2304 <td class="entry_description">
2305 <p>Whether auto-exposure (AE) is currently locked to its latest
2306 calculated values.<wbr/></p>
2309 <td class="entry_units">
2312 <td class="entry_range">
2315 <td class="entry_hal_version">
2319 <td class="entry_tags">
2320 <ul class="entry_tags">
2321 <li><a href="#tag_BC">BC</a></li>
2326 <tr class="entries_header">
2327 <th class="th_details" colspan="6">Details</th>
2329 <tr class="entry_cont">
2330 <td class="entry_details" colspan="6">
2331 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2332 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2333 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2334 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2335 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2336 <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
2337 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2338 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2339 when AE is already locked,<wbr/> the camera device will not change the exposure time
2340 (<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>)
2341 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2342 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2343 <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/>
2344 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2345 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2346 the AE if AE is locked by the camera device internally during precapture metering
2347 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2348 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2349 will never succeed in a sequence of preview requests where AE lock is always set
2350 to <code>false</code>.<wbr/></p>
2351 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2352 get locked do not necessarily correspond to the settings that were present in the
2353 latest capture result received from the camera device,<wbr/> since additional captures
2354 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2355 application is switching between automatic and manual control and wishes to eliminate
2356 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2358 <li>Starting in auto-AE mode:</li>
2360 <li>Wait for the first result to be output that has the AE locked</li>
2361 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2362 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2364 <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>
2369 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2370 <!-- end of entry -->
2373 <tr class="entry" id="controls_android.control.aeMode">
2374 <td class="entry_name
2376 android.<wbr/>control.<wbr/>ae<wbr/>Mode
2378 <td class="entry_type">
2379 <span class="entry_type_name entry_type_name_enum">byte</span>
2381 <span class="entry_type_visibility"> [public]</span>
2384 <span class="entry_type_hwlevel">[legacy] </span>
2388 <ul class="entry_type_enum">
2390 <span class="entry_type_enum_name">OFF (v3.2)</span>
2391 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2392 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2393 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2394 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2395 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2396 a flash unit for this camera device.<wbr/></p>
2397 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2398 behavior is device dependent when AE is in OFF mode.<wbr/>
2399 To have consistent behavior across different devices,<wbr/>
2400 it is recommended to either set AWB and AF to OFF mode
2401 or lock AWB and AF before setting AE to OFF.<wbr/>
2402 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/>
2403 <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>
2404 for more details.<wbr/></p>
2405 <p>LEGACY devices do not support the OFF mode and will
2406 override attempts to use this value to ON.<wbr/></p></span>
2409 <span class="entry_type_enum_name">ON (v3.2)</span>
2410 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2411 with no flash control.<wbr/></p>
2412 <p>The application's values for
2413 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2414 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2415 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2416 application has control over the various
2417 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2420 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
2421 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2422 the camera's flash unit,<wbr/> firing it in low-light
2423 conditions.<wbr/></p>
2424 <p>The flash may be fired during a precapture sequence
2425 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2426 may be fired for captures for which the
2427 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2428 STILL_<wbr/>CAPTURE</p></span>
2431 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
2432 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2433 the camera's flash unit,<wbr/> always firing it for still
2435 <p>The flash may be fired during a precapture sequence
2436 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2437 will always be fired for captures for which the
2438 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2439 STILL_<wbr/>CAPTURE</p></span>
2442 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
2443 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2444 reduction.<wbr/></p>
2445 <p>If deemed necessary by the camera device,<wbr/> a red eye
2446 reduction flash will fire during the precapture
2447 sequence.<wbr/></p></span>
2451 </td> <!-- entry_type -->
2453 <td class="entry_description">
2454 <p>The desired mode for the camera device's
2455 auto-exposure routine.<wbr/></p>
2458 <td class="entry_units">
2461 <td class="entry_range">
2462 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2465 <td class="entry_hal_version">
2469 <td class="entry_tags">
2470 <ul class="entry_tags">
2471 <li><a href="#tag_BC">BC</a></li>
2476 <tr class="entries_header">
2477 <th class="th_details" colspan="6">Details</th>
2479 <tr class="entry_cont">
2480 <td class="entry_details" colspan="6">
2481 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2483 <p>When set to any of the ON modes,<wbr/> the camera device's
2484 auto-exposure routine is enabled,<wbr/> overriding the
2485 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2486 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2487 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2488 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2489 is selected,<wbr/> the camera device's flash unit controls are
2490 also overridden.<wbr/></p>
2491 <p>The FLASH modes are only available if the camera device
2492 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>
2493 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2494 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2495 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2496 camera device auto-exposure routine for the overridden
2497 fields for a given capture will be available in its
2498 CaptureResult.<wbr/></p>
2503 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2504 <!-- end of entry -->
2507 <tr class="entry" id="controls_android.control.aeRegions">
2508 <td class="entry_name
2510 android.<wbr/>control.<wbr/>ae<wbr/>Regions
2512 <td class="entry_type">
2513 <span class="entry_type_name">int32</span>
2514 <span class="entry_type_container">x</span>
2516 <span class="entry_type_array">
2519 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2526 </td> <!-- entry_type -->
2528 <td class="entry_description">
2529 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2532 <td class="entry_units">
2533 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2536 <td class="entry_range">
2537 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2538 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2541 <td class="entry_hal_version">
2545 <td class="entry_tags">
2546 <ul class="entry_tags">
2547 <li><a href="#tag_BC">BC</a></li>
2552 <tr class="entries_header">
2553 <th class="th_details" colspan="6">Details</th>
2555 <tr class="entry_cont">
2556 <td class="entry_details" colspan="6">
2557 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2558 Otherwise will always be present.<wbr/></p>
2559 <p>The maximum number of regions supported by the device is determined by the value
2560 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2561 <p>The coordinate system is based on the active pixel array,<wbr/>
2562 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2563 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2564 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2565 bottom-right pixel in the active pixel array.<wbr/></p>
2566 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2567 for every pixel in the area.<wbr/> This means that a large metering area
2568 with the same weight as a smaller area will have more effect in
2569 the metering result.<wbr/> Metering areas can partially overlap and the
2570 camera device will add the weights in the overlap region.<wbr/></p>
2571 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2572 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2573 weight is ignored.<wbr/></p>
2574 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2575 camera device.<wbr/></p>
2576 <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
2577 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2578 region and output only the intersection rectangle as the metering region in the result
2579 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2580 not reported in the result metadata.<wbr/></p>
2584 <tr class="entries_header">
2585 <th class="th_details" colspan="6">HAL Implementation Details</th>
2587 <tr class="entry_cont">
2588 <td class="entry_details" colspan="6">
2589 <p>The HAL level representation of MeteringRectangle[] is a
2590 int[5 * area_<wbr/>count].<wbr/>
2591 Every five elements represent a metering region of
2592 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2593 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2594 exclusive on xmax and ymax.<wbr/></p>
2598 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2599 <!-- end of entry -->
2602 <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2603 <td class="entry_name
2605 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2607 <td class="entry_type">
2608 <span class="entry_type_name">int32</span>
2609 <span class="entry_type_container">x</span>
2611 <span class="entry_type_array">
2614 <span class="entry_type_visibility"> [public as rangeInt]</span>
2617 <span class="entry_type_hwlevel">[legacy] </span>
2622 </td> <!-- entry_type -->
2624 <td class="entry_description">
2625 <p>Range over which the auto-exposure routine can
2626 adjust the capture frame rate to maintain good
2630 <td class="entry_units">
2631 Frames per second (FPS)
2634 <td class="entry_range">
2635 <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>
2638 <td class="entry_hal_version">
2642 <td class="entry_tags">
2643 <ul class="entry_tags">
2644 <li><a href="#tag_BC">BC</a></li>
2649 <tr class="entries_header">
2650 <th class="th_details" colspan="6">Details</th>
2652 <tr class="entry_cont">
2653 <td class="entry_details" colspan="6">
2654 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2655 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2656 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2661 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2662 <!-- end of entry -->
2665 <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2666 <td class="entry_name
2668 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2670 <td class="entry_type">
2671 <span class="entry_type_name entry_type_name_enum">byte</span>
2673 <span class="entry_type_visibility"> [public]</span>
2676 <span class="entry_type_hwlevel">[limited] </span>
2680 <ul class="entry_type_enum">
2682 <span class="entry_type_enum_name">IDLE (v3.2)</span>
2683 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2686 <span class="entry_type_enum_name">START (v3.2)</span>
2687 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2688 by the camera device.<wbr/></p>
2689 <p>The exact effect of the precapture trigger depends on
2690 the current AE mode and state.<wbr/></p></span>
2693 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
2694 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2695 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2696 initial state.<wbr/></p></span>
2700 </td> <!-- entry_type -->
2702 <td class="entry_description">
2703 <p>Whether the camera device will trigger a precapture
2704 metering sequence when it processes this request.<wbr/></p>
2707 <td class="entry_units">
2710 <td class="entry_range">
2713 <td class="entry_hal_version">
2717 <td class="entry_tags">
2718 <ul class="entry_tags">
2719 <li><a href="#tag_BC">BC</a></li>
2724 <tr class="entries_header">
2725 <th class="th_details" colspan="6">Details</th>
2727 <tr class="entry_cont">
2728 <td class="entry_details" colspan="6">
2729 <p>This entry is normally set to IDLE,<wbr/> or is not
2730 included at all in the request settings.<wbr/> When included and
2731 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2732 precapture metering sequence.<wbr/></p>
2733 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2734 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2735 If a precapture metering sequence is already completed,<wbr/> and the camera
2736 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2737 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2738 <p>The precapture sequence should be triggered before starting a
2739 high-quality still capture for final metering decisions to
2740 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2741 scene brightness and required final capture flash power,<wbr/> when
2742 the flash is enabled.<wbr/></p>
2743 <p>Normally,<wbr/> this entry should be set to START for only a
2744 single request,<wbr/> and the application should wait until the
2745 sequence completes before starting a new one.<wbr/></p>
2746 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2747 may lock the auto-exposure routine internally to be able to accurately expose the
2748 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2749 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2750 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2751 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
2752 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
2753 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2754 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2755 internally locked AE if the application doesn't submit a still capture request after
2756 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2757 be used in devices that have earlier API levels.<wbr/></p>
2758 <p>The exact effect of auto-exposure (AE) precapture trigger
2759 depends on the current AE mode and state; see
2760 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2762 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2763 capturing a high-resolution JPEG image will automatically trigger a
2764 precapture sequence before the high-resolution capture,<wbr/> including
2765 potentially firing a pre-capture flash.<wbr/></p>
2766 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2767 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2768 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2769 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2770 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2771 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
2773 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2774 the camera device will complete them in the optimal order for that device.<wbr/></p>
2778 <tr class="entries_header">
2779 <th class="th_details" colspan="6">HAL Implementation Details</th>
2781 <tr class="entry_cont">
2782 <td class="entry_details" colspan="6">
2783 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2784 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
2785 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2786 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2787 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2791 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2792 <!-- end of entry -->
2795 <tr class="entry" id="controls_android.control.afMode">
2796 <td class="entry_name
2798 android.<wbr/>control.<wbr/>af<wbr/>Mode
2800 <td class="entry_type">
2801 <span class="entry_type_name entry_type_name_enum">byte</span>
2803 <span class="entry_type_visibility"> [public]</span>
2806 <span class="entry_type_hwlevel">[legacy] </span>
2810 <ul class="entry_type_enum">
2812 <span class="entry_type_enum_name">OFF (v3.2)</span>
2813 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2814 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2815 application.<wbr/></p></span>
2818 <span class="entry_type_enum_name">AUTO (v3.2)</span>
2819 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2820 <p>In this mode,<wbr/> the lens does not move unless
2821 the autofocus trigger action is called.<wbr/> When that trigger
2822 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2823 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2824 <p>Always supported if lens is not fixed focus.<wbr/></p>
2825 <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
2826 is fixed-focus.<wbr/></p>
2827 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2828 and sets the AF state to INACTIVE.<wbr/></p></span>
2831 <span class="entry_type_enum_name">MACRO (v3.2)</span>
2832 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2833 <p>In this mode,<wbr/> the lens does not move unless the
2834 autofocus trigger action is called.<wbr/> When that trigger is
2835 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2836 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2837 mode is optimized for focusing on objects very close to
2838 the camera.<wbr/></p>
2839 <p>When that trigger is activated,<wbr/> AF will transition to
2840 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2841 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2842 position to default,<wbr/> and sets the AF state to
2843 INACTIVE.<wbr/></p></span>
2846 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
2847 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2848 position continually to attempt to provide a
2849 constantly-in-focus image stream.<wbr/></p>
2850 <p>The focusing behavior should be suitable for good quality
2851 video recording; typically this means slower focus
2852 movement and no overshoots.<wbr/> When the AF trigger is not
2853 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2854 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2855 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2856 the algorithm should immediately transition into
2857 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2858 lens position until a cancel AF trigger is received.<wbr/></p>
2859 <p>Once cancel is received,<wbr/> the algorithm should transition
2860 back to INACTIVE and resume passive scan.<wbr/> Note that this
2861 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2862 ongoing PASSIVE_<wbr/>SCAN must immediately be
2863 canceled.<wbr/></p></span>
2866 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
2867 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2868 position continually to attempt to provide a
2869 constantly-in-focus image stream.<wbr/></p>
2870 <p>The focusing behavior should be suitable for still image
2871 capture; typically this means focusing as fast as
2872 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2873 algorithm should start in INACTIVE state,<wbr/> and then
2874 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2875 appropriate as it attempts to maintain focus.<wbr/> When the AF
2876 trigger is activated,<wbr/> the algorithm should finish its
2877 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2878 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2879 lens position until a cancel AF trigger is received.<wbr/></p>
2880 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2881 should transition back to INACTIVE and then act as if it
2882 has just been started.<wbr/></p></span>
2885 <span class="entry_type_enum_name">EDOF (v3.2)</span>
2886 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2887 <p>The camera device will produce images with an extended
2888 depth of field automatically; no special focusing
2889 operations need to be done before taking a picture.<wbr/></p>
2890 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2891 INACTIVE.<wbr/></p></span>
2895 </td> <!-- entry_type -->
2897 <td class="entry_description">
2898 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2899 mode it is set to.<wbr/></p>
2902 <td class="entry_units">
2905 <td class="entry_range">
2906 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2909 <td class="entry_hal_version">
2913 <td class="entry_tags">
2914 <ul class="entry_tags">
2915 <li><a href="#tag_BC">BC</a></li>
2920 <tr class="entries_header">
2921 <th class="th_details" colspan="6">Details</th>
2923 <tr class="entry_cont">
2924 <td class="entry_details" colspan="6">
2925 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2926 (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
2927 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2928 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
2929 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>
2930 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2931 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2932 in result metadata.<wbr/></p>
2936 <tr class="entries_header">
2937 <th class="th_details" colspan="6">HAL Implementation Details</th>
2939 <tr class="entry_cont">
2940 <td class="entry_details" colspan="6">
2941 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2942 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
2943 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2944 <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
2945 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2946 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2947 the same focal plane remains in focus.<wbr/></p>
2948 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2949 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2950 (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
2951 same lock behavior as above.<wbr/></p>
2952 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2953 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/>
2954 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2955 manual control.<wbr/></p>
2956 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2957 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2958 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2959 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2960 that will arise on camera modules with open-loop VCMs.<wbr/></p>
2964 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2965 <!-- end of entry -->
2968 <tr class="entry" id="controls_android.control.afRegions">
2969 <td class="entry_name
2971 android.<wbr/>control.<wbr/>af<wbr/>Regions
2973 <td class="entry_type">
2974 <span class="entry_type_name">int32</span>
2975 <span class="entry_type_container">x</span>
2977 <span class="entry_type_array">
2980 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2987 </td> <!-- entry_type -->
2989 <td class="entry_description">
2990 <p>List of metering areas to use for auto-focus.<wbr/></p>
2993 <td class="entry_units">
2994 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2997 <td class="entry_range">
2998 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2999 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3002 <td class="entry_hal_version">
3006 <td class="entry_tags">
3007 <ul class="entry_tags">
3008 <li><a href="#tag_BC">BC</a></li>
3013 <tr class="entries_header">
3014 <th class="th_details" colspan="6">Details</th>
3016 <tr class="entry_cont">
3017 <td class="entry_details" colspan="6">
3018 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3019 Otherwise will always be present.<wbr/></p>
3020 <p>The maximum number of focus areas supported by the device is determined by the value
3021 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3022 <p>The coordinate system is based on the active pixel array,<wbr/>
3023 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3024 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3025 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3026 bottom-right pixel in the active pixel array.<wbr/></p>
3027 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3028 for every pixel in the area.<wbr/> This means that a large metering area
3029 with the same weight as a smaller area will have more effect in
3030 the metering result.<wbr/> Metering areas can partially overlap and the
3031 camera device will add the weights in the overlap region.<wbr/></p>
3032 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3033 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3035 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3036 camera device.<wbr/></p>
3037 <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
3038 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3039 region and output only the intersection rectangle as the metering region in the result
3040 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3041 not reported in the result metadata.<wbr/></p>
3045 <tr class="entries_header">
3046 <th class="th_details" colspan="6">HAL Implementation Details</th>
3048 <tr class="entry_cont">
3049 <td class="entry_details" colspan="6">
3050 <p>The HAL level representation of MeteringRectangle[] is a
3051 int[5 * area_<wbr/>count].<wbr/>
3052 Every five elements represent a metering region of
3053 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3054 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3055 exclusive on xmax and ymax.<wbr/></p>
3059 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3060 <!-- end of entry -->
3063 <tr class="entry" id="controls_android.control.afTrigger">
3064 <td class="entry_name
3066 android.<wbr/>control.<wbr/>af<wbr/>Trigger
3068 <td class="entry_type">
3069 <span class="entry_type_name entry_type_name_enum">byte</span>
3071 <span class="entry_type_visibility"> [public]</span>
3074 <span class="entry_type_hwlevel">[legacy] </span>
3078 <ul class="entry_type_enum">
3080 <span class="entry_type_enum_name">IDLE (v3.2)</span>
3081 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3084 <span class="entry_type_enum_name">START (v3.2)</span>
3085 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3088 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
3089 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3090 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3094 </td> <!-- entry_type -->
3096 <td class="entry_description">
3097 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3100 <td class="entry_units">
3103 <td class="entry_range">
3106 <td class="entry_hal_version">
3110 <td class="entry_tags">
3111 <ul class="entry_tags">
3112 <li><a href="#tag_BC">BC</a></li>
3117 <tr class="entries_header">
3118 <th class="th_details" colspan="6">Details</th>
3120 <tr class="entry_cont">
3121 <td class="entry_details" colspan="6">
3122 <p>This entry is normally set to IDLE,<wbr/> or is not
3123 included at all in the request settings.<wbr/></p>
3124 <p>When included and set to START,<wbr/> the camera device will trigger the
3125 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3126 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3127 and return to its initial AF state.<wbr/></p>
3128 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3129 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3130 START for multiple captures in a row means restarting the AF operation over
3131 and over again.<wbr/></p>
3132 <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>
3133 <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>
3134 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3135 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3136 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3137 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3138 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3142 <tr class="entries_header">
3143 <th class="th_details" colspan="6">HAL Implementation Details</th>
3145 <tr class="entry_cont">
3146 <td class="entry_details" colspan="6">
3147 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3148 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
3149 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3150 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3151 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3155 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3156 <!-- end of entry -->
3159 <tr class="entry" id="controls_android.control.awbLock">
3160 <td class="entry_name
3162 android.<wbr/>control.<wbr/>awb<wbr/>Lock
3164 <td class="entry_type">
3165 <span class="entry_type_name entry_type_name_enum">byte</span>
3167 <span class="entry_type_visibility"> [public as boolean]</span>
3170 <span class="entry_type_hwlevel">[legacy] </span>
3174 <ul class="entry_type_enum">
3176 <span class="entry_type_enum_name">OFF (v3.2)</span>
3177 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3178 algorithm is free to update its parameters if in AUTO
3179 mode.<wbr/></p></span>
3182 <span class="entry_type_enum_name">ON (v3.2)</span>
3183 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3184 algorithm will not update its parameters while the lock
3185 is active.<wbr/></p></span>
3189 </td> <!-- entry_type -->
3191 <td class="entry_description">
3192 <p>Whether auto-white balance (AWB) is currently locked to its
3193 latest calculated values.<wbr/></p>
3196 <td class="entry_units">
3199 <td class="entry_range">
3202 <td class="entry_hal_version">
3206 <td class="entry_tags">
3207 <ul class="entry_tags">
3208 <li><a href="#tag_BC">BC</a></li>
3213 <tr class="entries_header">
3214 <th class="th_details" colspan="6">Details</th>
3216 <tr class="entry_cont">
3217 <td class="entry_details" colspan="6">
3218 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3219 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3220 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3221 get locked do not necessarily correspond to the settings that were present in the
3222 latest capture result received from the camera device,<wbr/> since additional captures
3223 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3224 application is switching between automatic and manual control and wishes to eliminate
3225 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3227 <li>Starting in auto-AWB mode:</li>
3229 <li>Wait for the first result to be output that has the AWB locked</li>
3230 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3231 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3233 <p>Note that AWB lock is only meaningful when
3234 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3235 AWB is already fixed to a specific setting.<wbr/></p>
3236 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3241 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3242 <!-- end of entry -->
3245 <tr class="entry" id="controls_android.control.awbMode">
3246 <td class="entry_name
3248 android.<wbr/>control.<wbr/>awb<wbr/>Mode
3250 <td class="entry_type">
3251 <span class="entry_type_name entry_type_name_enum">byte</span>
3253 <span class="entry_type_visibility"> [public]</span>
3256 <span class="entry_type_hwlevel">[legacy] </span>
3260 <ul class="entry_type_enum">
3262 <span class="entry_type_enum_name">OFF (v3.2)</span>
3263 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3264 <p>The application-selected color transform matrix
3265 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3266 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3267 device for manual white balance control.<wbr/></p></span>
3270 <span class="entry_type_enum_name">AUTO (v3.2)</span>
3271 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3272 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3273 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3274 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3275 values used by the camera device for the transform and gains
3276 will be available in the capture result for this request.<wbr/></p></span>
3279 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
3280 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3281 the camera device uses incandescent light as the assumed scene
3282 illumination for white balance.<wbr/></p>
3283 <p>While the exact white balance transforms are up to the
3284 camera device,<wbr/> they will approximately match the CIE
3285 standard illuminant A.<wbr/></p>
3286 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3287 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3288 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3289 values used by the camera device for the transform and gains
3290 will be available in the capture result for this request.<wbr/></p></span>
3293 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
3294 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3295 the camera device uses fluorescent light as the assumed scene
3296 illumination for white balance.<wbr/></p>
3297 <p>While the exact white balance transforms are up to the
3298 camera device,<wbr/> they will approximately match the CIE
3299 standard illuminant F2.<wbr/></p>
3300 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3301 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3302 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3303 values used by the camera device for the transform and gains
3304 will be available in the capture result for this request.<wbr/></p></span>
3307 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
3308 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3309 the camera device uses warm fluorescent light as the assumed scene
3310 illumination for white balance.<wbr/></p>
3311 <p>While the exact white balance transforms are up to the
3312 camera device,<wbr/> they will approximately match the CIE
3313 standard illuminant F4.<wbr/></p>
3314 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3315 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3316 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3317 values used by the camera device for the transform and gains
3318 will be available in the capture result for this request.<wbr/></p></span>
3321 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
3322 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3323 the camera device uses daylight light as the assumed scene
3324 illumination for white balance.<wbr/></p>
3325 <p>While the exact white balance transforms are up to the
3326 camera device,<wbr/> they will approximately match the CIE
3327 standard illuminant D65.<wbr/></p>
3328 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3329 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3330 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3331 values used by the camera device for the transform and gains
3332 will be available in the capture result for this request.<wbr/></p></span>
3335 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
3336 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3337 the camera device uses cloudy daylight light as the assumed scene
3338 illumination for white balance.<wbr/></p>
3339 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3340 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3341 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3342 values used by the camera device for the transform and gains
3343 will be available in the capture result for this request.<wbr/></p></span>
3346 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
3347 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3348 the camera device uses twilight light as the assumed scene
3349 illumination for white balance.<wbr/></p>
3350 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3351 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3352 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3353 values used by the camera device for the transform and gains
3354 will be available in the capture result for this request.<wbr/></p></span>
3357 <span class="entry_type_enum_name">SHADE (v3.2)</span>
3358 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3359 the camera device uses shade light as the assumed scene
3360 illumination for white balance.<wbr/></p>
3361 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3362 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3363 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3364 values used by the camera device for the transform and gains
3365 will be available in the capture result for this request.<wbr/></p></span>
3369 </td> <!-- entry_type -->
3371 <td class="entry_description">
3372 <p>Whether auto-white balance (AWB) is currently setting the color
3373 transform fields,<wbr/> and what its illumination target
3377 <td class="entry_units">
3380 <td class="entry_range">
3381 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3384 <td class="entry_hal_version">
3388 <td class="entry_tags">
3389 <ul class="entry_tags">
3390 <li><a href="#tag_BC">BC</a></li>
3395 <tr class="entries_header">
3396 <th class="th_details" colspan="6">Details</th>
3398 <tr class="entry_cont">
3399 <td class="entry_details" colspan="6">
3400 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3401 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3402 routine is enabled,<wbr/> overriding the application's selected
3403 <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
3404 <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>
3405 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3406 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
3407 setting AE mode to OFF.<wbr/></p>
3408 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3409 routine is disabled.<wbr/> The application manually controls the white
3410 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>
3411 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3412 <p>When set to any other modes,<wbr/> the camera device's auto-white
3413 balance routine is disabled.<wbr/> The camera device uses each
3414 particular illumination target for white balance
3415 adjustment.<wbr/> The application's values for
3416 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3417 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3418 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3423 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3424 <!-- end of entry -->
3427 <tr class="entry" id="controls_android.control.awbRegions">
3428 <td class="entry_name
3430 android.<wbr/>control.<wbr/>awb<wbr/>Regions
3432 <td class="entry_type">
3433 <span class="entry_type_name">int32</span>
3434 <span class="entry_type_container">x</span>
3436 <span class="entry_type_array">
3439 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3446 </td> <!-- entry_type -->
3448 <td class="entry_description">
3449 <p>List of metering areas to use for auto-white-balance illuminant
3450 estimation.<wbr/></p>
3453 <td class="entry_units">
3454 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3457 <td class="entry_range">
3458 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3459 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3462 <td class="entry_hal_version">
3466 <td class="entry_tags">
3467 <ul class="entry_tags">
3468 <li><a href="#tag_BC">BC</a></li>
3473 <tr class="entries_header">
3474 <th class="th_details" colspan="6">Details</th>
3476 <tr class="entry_cont">
3477 <td class="entry_details" colspan="6">
3478 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3479 Otherwise will always be present.<wbr/></p>
3480 <p>The maximum number of regions supported by the device is determined by the value
3481 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3482 <p>The coordinate system is based on the active pixel array,<wbr/>
3483 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3484 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3485 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3486 bottom-right pixel in the active pixel array.<wbr/></p>
3487 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3488 for every pixel in the area.<wbr/> This means that a large metering area
3489 with the same weight as a smaller area will have more effect in
3490 the metering result.<wbr/> Metering areas can partially overlap and the
3491 camera device will add the weights in the overlap region.<wbr/></p>
3492 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3493 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3494 0 weight is ignored.<wbr/></p>
3495 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3496 camera device.<wbr/></p>
3497 <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
3498 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3499 region and output only the intersection rectangle as the metering region in the result
3500 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3501 not reported in the result metadata.<wbr/></p>
3505 <tr class="entries_header">
3506 <th class="th_details" colspan="6">HAL Implementation Details</th>
3508 <tr class="entry_cont">
3509 <td class="entry_details" colspan="6">
3510 <p>The HAL level representation of MeteringRectangle[] is a
3511 int[5 * area_<wbr/>count].<wbr/>
3512 Every five elements represent a metering region of
3513 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3514 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3515 exclusive on xmax and ymax.<wbr/></p>
3519 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3520 <!-- end of entry -->
3523 <tr class="entry" id="controls_android.control.captureIntent">
3524 <td class="entry_name
3526 android.<wbr/>control.<wbr/>capture<wbr/>Intent
3528 <td class="entry_type">
3529 <span class="entry_type_name entry_type_name_enum">byte</span>
3531 <span class="entry_type_visibility"> [public]</span>
3534 <span class="entry_type_hwlevel">[legacy] </span>
3538 <ul class="entry_type_enum">
3540 <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
3541 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3542 categories.<wbr/> The camera device will default to preview-like
3543 behavior.<wbr/></p></span>
3546 <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
3547 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3548 <p>The precapture trigger may be used to start off a metering
3549 w/<wbr/>flash sequence.<wbr/></p></span>
3552 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
3553 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3555 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3558 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
3559 <span class="entry_type_enum_notes"><p>This request is for a video recording
3560 use case.<wbr/></p></span>
3563 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
3564 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3565 image while recording video) use case.<wbr/></p>
3566 <p>The camera device should take the highest-quality image
3567 possible (given the other settings) without disrupting the
3568 frame rate of video recording.<wbr/> </p></span>
3571 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
3572 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3573 application will stream full-resolution images and
3574 reprocess one or several later for a final
3575 capture.<wbr/></p></span>
3578 <span class="entry_type_enum_name">MANUAL (v3.2)</span>
3579 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3580 the applications want to directly control the capture parameters.<wbr/></p>
3581 <p>For example,<wbr/> the application may wish to manually control
3582 <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>
3586 </td> <!-- entry_type -->
3588 <td class="entry_description">
3589 <p>Information to the camera device 3A (auto-exposure,<wbr/>
3590 auto-focus,<wbr/> auto-white balance) routines about the purpose
3591 of this capture,<wbr/> to help the camera device to decide optimal 3A
3595 <td class="entry_units">
3598 <td class="entry_range">
3601 <td class="entry_hal_version">
3605 <td class="entry_tags">
3606 <ul class="entry_tags">
3607 <li><a href="#tag_BC">BC</a></li>
3612 <tr class="entries_header">
3613 <th class="th_details" colspan="6">Details</th>
3615 <tr class="entry_cont">
3616 <td class="entry_details" colspan="6">
3617 <p>This control (except for MANUAL) is only effective if
3618 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3619 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3620 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
3621 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
3622 always supported.<wbr/></p>
3627 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3628 <!-- end of entry -->
3631 <tr class="entry" id="controls_android.control.effectMode">
3632 <td class="entry_name
3634 android.<wbr/>control.<wbr/>effect<wbr/>Mode
3636 <td class="entry_type">
3637 <span class="entry_type_name entry_type_name_enum">byte</span>
3639 <span class="entry_type_visibility"> [public]</span>
3642 <span class="entry_type_hwlevel">[legacy] </span>
3646 <ul class="entry_type_enum">
3648 <span class="entry_type_enum_name">OFF (v3.2)</span>
3649 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3652 <span class="entry_type_enum_name">MONO (v3.2)</span>
3653 <span class="entry_type_enum_optional">[optional]</span>
3654 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3655 a single color.<wbr/></p>
3656 <p>This will typically be grayscale.<wbr/></p></span>
3659 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
3660 <span class="entry_type_enum_optional">[optional]</span>
3661 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3662 are inverted.<wbr/></p></span>
3665 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
3666 <span class="entry_type_enum_optional">[optional]</span>
3667 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3668 image is wholly or partially reversed in
3669 tone.<wbr/></p></span>
3672 <span class="entry_type_enum_name">SEPIA (v3.2)</span>
3673 <span class="entry_type_enum_optional">[optional]</span>
3674 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3675 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3678 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
3679 <span class="entry_type_enum_optional">[optional]</span>
3680 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3681 discrete regions of tone rather than a continuous
3682 gradient of tones.<wbr/></p></span>
3685 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
3686 <span class="entry_type_enum_optional">[optional]</span>
3687 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3688 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3691 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
3692 <span class="entry_type_enum_optional">[optional]</span>
3693 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3694 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3697 <span class="entry_type_enum_name">AQUA (v3.2)</span>
3698 <span class="entry_type_enum_optional">[optional]</span>
3699 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3703 </td> <!-- entry_type -->
3705 <td class="entry_description">
3706 <p>A special color effect to apply.<wbr/></p>
3709 <td class="entry_units">
3712 <td class="entry_range">
3713 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3716 <td class="entry_hal_version">
3720 <td class="entry_tags">
3721 <ul class="entry_tags">
3722 <li><a href="#tag_BC">BC</a></li>
3727 <tr class="entries_header">
3728 <th class="th_details" colspan="6">Details</th>
3730 <tr class="entry_cont">
3731 <td class="entry_details" colspan="6">
3732 <p>When this mode is set,<wbr/> a color effect will be applied
3733 to images produced by the camera device.<wbr/> The interpretation
3734 and implementation of these color effects is left to the
3735 implementor of the camera device,<wbr/> and should not be
3736 depended on to be consistent (or present) across all
3742 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3743 <!-- end of entry -->
3746 <tr class="entry" id="controls_android.control.mode">
3747 <td class="entry_name
3749 android.<wbr/>control.<wbr/>mode
3751 <td class="entry_type">
3752 <span class="entry_type_name entry_type_name_enum">byte</span>
3754 <span class="entry_type_visibility"> [public]</span>
3757 <span class="entry_type_hwlevel">[legacy] </span>
3761 <ul class="entry_type_enum">
3763 <span class="entry_type_enum_name">OFF (v3.2)</span>
3764 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3765 <p>All control by the device's metering and focusing (3A)
3766 routines is disabled,<wbr/> and no other settings in
3767 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3768 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3769 device to select post-processing values for processing
3770 blocks that do not allow for manual control,<wbr/> or are not
3771 exposed by the camera API.<wbr/></p>
3772 <p>However,<wbr/> the camera device's 3A routines may continue to
3773 collect statistics and update their internal state so that
3774 when control is switched to AUTO mode,<wbr/> good control values
3775 can be immediately applied.<wbr/></p></span>
3778 <span class="entry_type_enum_name">AUTO (v3.2)</span>
3779 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3780 <p>Manual control of capture parameters is disabled.<wbr/> All
3781 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3782 effect.<wbr/></p></span>
3785 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
3786 <span class="entry_type_enum_optional">[optional]</span>
3787 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3788 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3789 control.<wbr/>afMode controls; the camera device will ignore
3790 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3791 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3792 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3793 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3794 contain some modes other than DISABLED).<wbr/></p></span>
3797 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
3798 <span class="entry_type_enum_optional">[optional]</span>
3799 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3800 used by camera device background auto-exposure,<wbr/> auto-white balance and
3801 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3802 <p>Specifically,<wbr/> the 3A routines are locked to the last
3803 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3804 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3805 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3806 discarded by the camera device.<wbr/></p></span>
3810 </td> <!-- entry_type -->
3812 <td class="entry_description">
3813 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3817 <td class="entry_units">
3820 <td class="entry_range">
3821 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3824 <td class="entry_hal_version">
3828 <td class="entry_tags">
3829 <ul class="entry_tags">
3830 <li><a href="#tag_BC">BC</a></li>
3835 <tr class="entries_header">
3836 <th class="th_details" colspan="6">Details</th>
3838 <tr class="entry_cont">
3839 <td class="entry_details" colspan="6">
3840 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3841 by the camera device is disabled.<wbr/> The application must set the fields for
3842 capture parameters itself.<wbr/></p>
3843 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3844 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>
3845 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3846 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
3847 implements one of the scene mode settings (such as ACTION,<wbr/>
3848 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
3849 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3850 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3851 is that this frame will not be used by camera device background 3A statistics
3852 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3853 where the application doesn't want a 3A manual control capture to affect
3854 the subsequent auto 3A capture results.<wbr/></p>
3859 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3860 <!-- end of entry -->
3863 <tr class="entry" id="controls_android.control.sceneMode">
3864 <td class="entry_name
3866 android.<wbr/>control.<wbr/>scene<wbr/>Mode
3868 <td class="entry_type">
3869 <span class="entry_type_name entry_type_name_enum">byte</span>
3871 <span class="entry_type_visibility"> [public]</span>
3874 <span class="entry_type_hwlevel">[legacy] </span>
3878 <ul class="entry_type_enum">
3880 <span class="entry_type_enum_name">DISABLED (v3.2)</span>
3881 <span class="entry_type_enum_value">0</span>
3882 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3885 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
3886 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3887 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3888 auto-exposure routines.<wbr/></p>
3889 <p>If face detection statistics are disabled
3890 (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/>
3891 this should still operate correctly (but will not return
3892 face detection statistics to the framework).<wbr/></p>
3893 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3894 <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>
3895 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3898 <span class="entry_type_enum_name">ACTION (v3.2)</span>
3899 <span class="entry_type_enum_optional">[optional]</span>
3900 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3901 <p>Similar to SPORTS.<wbr/></p></span>
3904 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
3905 <span class="entry_type_enum_optional">[optional]</span>
3906 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3909 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
3910 <span class="entry_type_enum_optional">[optional]</span>
3911 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3914 <span class="entry_type_enum_name">NIGHT (v3.2)</span>
3915 <span class="entry_type_enum_optional">[optional]</span>
3916 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3919 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
3920 <span class="entry_type_enum_optional">[optional]</span>
3921 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3922 settings.<wbr/></p></span>
3925 <span class="entry_type_enum_name">THEATRE (v3.2)</span>
3926 <span class="entry_type_enum_optional">[optional]</span>
3927 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3928 remain off.<wbr/></p></span>
3931 <span class="entry_type_enum_name">BEACH (v3.2)</span>
3932 <span class="entry_type_enum_optional">[optional]</span>
3933 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3936 <span class="entry_type_enum_name">SNOW (v3.2)</span>
3937 <span class="entry_type_enum_optional">[optional]</span>
3938 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3941 <span class="entry_type_enum_name">SUNSET (v3.2)</span>
3942 <span class="entry_type_enum_optional">[optional]</span>
3943 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3946 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
3947 <span class="entry_type_enum_optional">[optional]</span>
3948 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3949 device motion (for example: due to hand shake).<wbr/></p></span>
3952 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
3953 <span class="entry_type_enum_optional">[optional]</span>
3954 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3957 <span class="entry_type_enum_name">SPORTS (v3.2)</span>
3958 <span class="entry_type_enum_optional">[optional]</span>
3959 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3960 <p>Similar to ACTION.<wbr/></p></span>
3963 <span class="entry_type_enum_name">PARTY (v3.2)</span>
3964 <span class="entry_type_enum_optional">[optional]</span>
3965 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3966 people.<wbr/></p></span>
3969 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
3970 <span class="entry_type_enum_optional">[optional]</span>
3971 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3972 is a flame.<wbr/></p></span>
3975 <span class="entry_type_enum_name">BARCODE (v3.2)</span>
3976 <span class="entry_type_enum_optional">[optional]</span>
3977 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3978 for use by camera applications that wish to read the
3979 barcode value.<wbr/></p></span>
3982 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
3983 <span class="entry_type_enum_deprecated">[deprecated]</span>
3984 <span class="entry_type_enum_optional">[optional]</span>
3985 <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>
3986 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
3987 for high speed video recording.<wbr/></p>
3988 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p>
3989 <p>The supported high speed video sizes and fps ranges are specified in
3990 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3991 output frame rates,<wbr/> the application is only allowed to select video size
3992 and fps range combinations listed in this static metadata.<wbr/> The fps range
3993 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3994 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3995 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3996 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3997 and post-processing parameters is possible.<wbr/> All other controls operate the
3998 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3999 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
4001 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
4002 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
4003 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4004 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4005 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4006 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4007 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4008 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4009 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4010 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
4012 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4014 <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>
4015 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4016 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4017 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4019 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4020 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4021 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4022 the application need check if the video encoder is capable of supporting the
4023 high frame rate for a given video size,<wbr/> or it will end up with lower recording
4024 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4025 rate will be bounded by the screen refresh rate.<wbr/></p>
4026 <p>The camera device will only support up to 2 output high speed streams
4027 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4028 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4030 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4031 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4032 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>
4033 <li>The stream sizes are selected from the sizes reported by
4034 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4035 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
4037 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
4038 <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/>
4039 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
4040 and the returned capture result metadata will give the fps range choosen
4041 by the camera device.<wbr/></p>
4042 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4043 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4044 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4047 <span class="entry_type_enum_name">HDR (v3.2)</span>
4048 <span class="entry_type_enum_optional">[optional]</span>
4049 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4050 <p>In this scene mode,<wbr/> the camera device captures images
4051 that keep a larger range of scene illumination levels
4052 visible in the final image.<wbr/> For example,<wbr/> when taking a
4053 picture of a object in front of a bright window,<wbr/> both
4054 the object and the scene through the window may be
4055 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4056 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4057 HDR mode generally takes much longer to capture a single
4058 image,<wbr/> has no user control,<wbr/> and may have other artifacts
4059 depending on the HDR method used.<wbr/></p>
4060 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
4061 than regular captures.<wbr/></p>
4062 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4063 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4064 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4065 using a high dynamic range capture technique.<wbr/> On LEGACY
4066 devices,<wbr/> captures that target a JPEG-format output will
4067 be captured with HDR,<wbr/> and the capture intent is not
4069 <p>The HDR capture may involve the device capturing a burst
4070 of images internally and combining them into one,<wbr/> or it
4071 may involve the device using specialized high dynamic
4072 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4073 produced in response to a capture request submitted
4074 while in HDR mode.<wbr/></p>
4075 <p>Since substantial post-processing is generally needed to
4076 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4077 outputs are supported for LIMITED/<wbr/>FULL device HDR
4078 captures,<wbr/> and only JPEG outputs are supported for LEGACY
4079 HDR captures.<wbr/> Using a RAW output for HDR capture is not
4080 supported.<wbr/></p>
4081 <p>Some devices may also support always-on HDR,<wbr/> which
4082 applies HDR processing at full frame rate.<wbr/> For these
4083 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4084 produce an HDR output with no frame rate impact compared
4085 to normal operation,<wbr/> though the quality may be lower
4086 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4087 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4088 or capture intents,<wbr/> the images captured will be as if
4089 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
4092 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
4093 <span class="entry_type_enum_optional">[optional]</span>
4094 <span class="entry_type_enum_hidden">[hidden]</span>
4095 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
4096 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
4097 under low light conditions.<wbr/></p>
4098 <p>The camera device may be tuned to expose the images in a reduced
4099 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4100 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/>
4101 the camera device auto-exposure routine tuning process may limit the actual
4102 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
4103 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
4104 low light may be under-exposed when the sensor max exposure time (bounded by the
4105 <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
4106 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
4107 camera device auto-exposure routine to increase the sensitivity up to the max
4108 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
4109 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
4110 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
4111 recommended that the application only use this scene mode when it is capable of
4112 reducing the noise level of the captured images.<wbr/></p>
4113 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4114 <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>
4115 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4118 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
4119 <span class="entry_type_enum_optional">[optional]</span>
4120 <span class="entry_type_enum_hidden">[hidden]</span>
4121 <span class="entry_type_enum_value">100</span>
4122 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4123 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4124 customized scene modes.<wbr/></p></span>
4127 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
4128 <span class="entry_type_enum_optional">[optional]</span>
4129 <span class="entry_type_enum_hidden">[hidden]</span>
4130 <span class="entry_type_enum_value">127</span>
4131 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4132 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4133 customized scene modes.<wbr/></p></span>
4137 </td> <!-- entry_type -->
4139 <td class="entry_description">
4140 <p>Control for which scene mode is currently active.<wbr/></p>
4143 <td class="entry_units">
4146 <td class="entry_range">
4147 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4150 <td class="entry_hal_version">
4154 <td class="entry_tags">
4155 <ul class="entry_tags">
4156 <li><a href="#tag_BC">BC</a></li>
4161 <tr class="entries_header">
4162 <th class="th_details" colspan="6">Details</th>
4164 <tr class="entry_cont">
4165 <td class="entry_details" colspan="6">
4166 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4167 capture settings.<wbr/></p>
4168 <p>This is the mode that that is active when
4169 <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
4170 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>
4171 while in use.<wbr/></p>
4172 <p>The interpretation and implementation of these scene modes is left
4173 to the implementor of the camera device.<wbr/> Their behavior will not be
4174 consistent across all devices,<wbr/> and any given device may only implement
4175 a subset of these modes.<wbr/></p>
4179 <tr class="entries_header">
4180 <th class="th_details" colspan="6">HAL Implementation Details</th>
4182 <tr class="entry_cont">
4183 <td class="entry_details" colspan="6">
4184 <p>HAL implementations that include scene modes are expected to provide
4185 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4186 <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
4187 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4188 <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
4189 HAL must list supported video size and fps range in
4190 <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/>
4191 if the HAL has two different sensor configurations for normal streaming mode and high
4192 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4193 HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
4194 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4195 <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
4196 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4200 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4201 <!-- end of entry -->
4204 <tr class="entry" id="controls_android.control.videoStabilizationMode">
4205 <td class="entry_name
4207 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4209 <td class="entry_type">
4210 <span class="entry_type_name entry_type_name_enum">byte</span>
4212 <span class="entry_type_visibility"> [public]</span>
4215 <span class="entry_type_hwlevel">[legacy] </span>
4219 <ul class="entry_type_enum">
4221 <span class="entry_type_enum_name">OFF (v3.2)</span>
4222 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4225 <span class="entry_type_enum_name">ON (v3.2)</span>
4226 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4230 </td> <!-- entry_type -->
4232 <td class="entry_description">
4233 <p>Whether video stabilization is
4237 <td class="entry_units">
4240 <td class="entry_range">
4243 <td class="entry_hal_version">
4247 <td class="entry_tags">
4248 <ul class="entry_tags">
4249 <li><a href="#tag_BC">BC</a></li>
4254 <tr class="entries_header">
4255 <th class="th_details" colspan="6">Details</th>
4257 <tr class="entry_cont">
4258 <td class="entry_details" colspan="6">
4259 <p>Video stabilization automatically warps images from
4260 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4261 <p>If enabled,<wbr/> video stabilization can modify the
4262 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4263 <p>Switching between different video stabilization modes may take several
4264 frames to initialize,<wbr/> the camera device will report the current mode
4265 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4266 the video stabilization modes in the first several capture results may
4267 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4269 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4270 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4271 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4272 the recording resolution is less than or equal to 1920 x 1080 (width less than
4273 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4274 frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
4275 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4276 OFF if the recording output is not stabilized,<wbr/> or if there are no output
4277 Surface types that can be stabilized.<wbr/></p>
4278 <p>If a camera device supports both this mode and OIS
4279 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4280 produce undesirable interaction,<wbr/> so it is recommended not to enable
4281 both at the same time.<wbr/></p>
4286 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4287 <!-- end of entry -->
4290 <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4291 <td class="entry_name
4293 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4295 <td class="entry_type">
4296 <span class="entry_type_name">int32</span>
4298 <span class="entry_type_visibility"> [public]</span>
4305 </td> <!-- entry_type -->
4307 <td class="entry_description">
4308 <p>The amount of additional sensitivity boost applied to output images
4309 after RAW sensor data is captured.<wbr/></p>
4312 <td class="entry_units">
4313 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4316 <td class="entry_range">
4317 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4320 <td class="entry_hal_version">
4324 <td class="entry_tags">
4328 <tr class="entries_header">
4329 <th class="th_details" colspan="6">Details</th>
4331 <tr class="entry_cont">
4332 <td class="entry_details" colspan="6">
4333 <p>Some camera devices support additional digital sensitivity boosting in the
4334 camera processing pipeline after sensor RAW image is captured.<wbr/>
4335 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4336 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4337 <p>This key will be <code>null</code> for devices that do not support any RAW format
4338 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4339 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4340 list <code>100</code> in this key.<wbr/></p>
4341 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4342 boost to the nearest supported value.<wbr/>
4343 The final boost value used will be available in the output capture result.<wbr/></p>
4344 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4345 of such device will have the total sensitivity of
4346 <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>
4347 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4348 <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
4349 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4354 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4355 <!-- end of entry -->
4358 <tr class="entry" id="controls_android.control.enableZsl">
4359 <td class="entry_name
4361 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4363 <td class="entry_type">
4364 <span class="entry_type_name entry_type_name_enum">byte</span>
4366 <span class="entry_type_visibility"> [public as boolean]</span>
4372 <ul class="entry_type_enum">
4374 <span class="entry_type_enum_name">FALSE (v3.2)</span>
4375 <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
4376 after previous requests.<wbr/></p></span>
4379 <span class="entry_type_enum_name">TRUE (v3.2)</span>
4380 <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
4381 captured before previous requests.<wbr/></p></span>
4385 </td> <!-- entry_type -->
4387 <td class="entry_description">
4388 <p>Allow camera device to enable zero-shutter-lag mode for requests with
4389 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4392 <td class="entry_units">
4395 <td class="entry_range">
4398 <td class="entry_hal_version">
4402 <td class="entry_tags">
4406 <tr class="entries_header">
4407 <th class="th_details" colspan="6">Details</th>
4409 <tr class="entry_cont">
4410 <td class="entry_details" colspan="6">
4411 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4412 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4413 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4414 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4415 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4416 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4417 capture intents.<wbr/></p>
4418 <p>For example,<wbr/> when requests are submitted in the following order:
4419 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4420 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>
4421 <p>The output images for request B may have contents captured before the output images for
4422 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4423 request A.<wbr/></p>
4424 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4425 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4426 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4427 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4428 <code>false</code> if present.<wbr/></p>
4429 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4430 capture templates is always <code>false</code> if present.<wbr/></p>
4431 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4435 <tr class="entries_header">
4436 <th class="th_details" colspan="6">HAL Implementation Details</th>
4438 <tr class="entry_cont">
4439 <td class="entry_details" colspan="6">
4440 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4441 capture intent.<wbr/></p>
4445 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4446 <!-- end of entry -->
4450 <!-- end of kind -->
4452 <tr><td colspan="7" class="kind">static</td></tr>
4454 <thead class="entries_header">
4456 <th class="th_name">Property Name</th>
4457 <th class="th_type">Type</th>
4458 <th class="th_description">Description</th>
4459 <th class="th_units">Units</th>
4460 <th class="th_range">Range</th>
4461 <th class="th_hal_version">Initial HIDL HAL version</th>
4462 <th class="th_tags">Tags</th>
4477 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4478 <td class="entry_name
4480 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4482 <td class="entry_type">
4483 <span class="entry_type_name">byte</span>
4484 <span class="entry_type_container">x</span>
4486 <span class="entry_type_array">
4489 <span class="entry_type_visibility"> [public as enumList]</span>
4492 <span class="entry_type_hwlevel">[legacy] </span>
4495 <div class="entry_type_notes">list of enums</div>
4498 </td> <!-- entry_type -->
4500 <td class="entry_description">
4501 <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
4502 supported by this camera device.<wbr/></p>
4505 <td class="entry_units">
4508 <td class="entry_range">
4509 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4512 <td class="entry_hal_version">
4516 <td class="entry_tags">
4517 <ul class="entry_tags">
4518 <li><a href="#tag_BC">BC</a></li>
4523 <tr class="entries_header">
4524 <th class="th_details" colspan="6">Details</th>
4526 <tr class="entry_cont">
4527 <td class="entry_details" colspan="6">
4528 <p>Not all of the auto-exposure anti-banding modes may be
4529 supported by a given camera device.<wbr/> This field lists the
4530 valid anti-banding modes that the application may request
4531 for this camera device with the
4532 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4537 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4538 <!-- end of entry -->
4541 <tr class="entry" id="static_android.control.aeAvailableModes">
4542 <td class="entry_name
4544 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4546 <td class="entry_type">
4547 <span class="entry_type_name">byte</span>
4548 <span class="entry_type_container">x</span>
4550 <span class="entry_type_array">
4553 <span class="entry_type_visibility"> [public as enumList]</span>
4556 <span class="entry_type_hwlevel">[legacy] </span>
4559 <div class="entry_type_notes">list of enums</div>
4562 </td> <!-- entry_type -->
4564 <td class="entry_description">
4565 <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
4569 <td class="entry_units">
4572 <td class="entry_range">
4573 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4576 <td class="entry_hal_version">
4580 <td class="entry_tags">
4581 <ul class="entry_tags">
4582 <li><a href="#tag_BC">BC</a></li>
4587 <tr class="entries_header">
4588 <th class="th_details" colspan="6">Details</th>
4590 <tr class="entry_cont">
4591 <td class="entry_details" colspan="6">
4592 <p>Not all the auto-exposure modes may be supported by a
4593 given camera device,<wbr/> especially if no flash unit is
4594 available.<wbr/> This entry lists the valid modes for
4595 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4596 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4597 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4598 <p>FULL mode camera devices always support OFF mode,<wbr/>
4599 which enables application control of camera exposure time,<wbr/>
4600 sensitivity,<wbr/> and frame duration.<wbr/></p>
4601 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4602 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4603 capability.<wbr/></p>
4608 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4609 <!-- end of entry -->
4612 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4613 <td class="entry_name
4615 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4617 <td class="entry_type">
4618 <span class="entry_type_name">int32</span>
4619 <span class="entry_type_container">x</span>
4621 <span class="entry_type_array">
4624 <span class="entry_type_visibility"> [public as rangeInt]</span>
4627 <span class="entry_type_hwlevel">[legacy] </span>
4630 <div class="entry_type_notes">list of pairs of frame rates</div>
4633 </td> <!-- entry_type -->
4635 <td class="entry_description">
4636 <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
4637 this camera device.<wbr/></p>
4640 <td class="entry_units">
4641 Frames per second (FPS)
4644 <td class="entry_range">
4647 <td class="entry_hal_version">
4651 <td class="entry_tags">
4652 <ul class="entry_tags">
4653 <li><a href="#tag_BC">BC</a></li>
4658 <tr class="entries_header">
4659 <th class="th_details" colspan="6">Details</th>
4661 <tr class="entry_cont">
4662 <td class="entry_details" colspan="6">
4663 <p>For devices at the LEGACY level or above:</p>
4666 <p>For constant-framerate recording,<wbr/> for each normal
4667 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4668 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4669 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4670 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4671 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4672 supported by the device and has
4673 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4674 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4677 <p>Also,<wbr/> a camera device must either not support any
4678 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4679 or support at least one
4680 normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4681 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p>
4684 <p>For devices at the LIMITED level or above:</p>
4686 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4687 and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the
4688 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4694 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4695 <!-- end of entry -->
4698 <tr class="entry" id="static_android.control.aeCompensationRange">
4699 <td class="entry_name
4701 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4703 <td class="entry_type">
4704 <span class="entry_type_name">int32</span>
4705 <span class="entry_type_container">x</span>
4707 <span class="entry_type_array">
4710 <span class="entry_type_visibility"> [public as rangeInt]</span>
4713 <span class="entry_type_hwlevel">[legacy] </span>
4718 </td> <!-- entry_type -->
4720 <td class="entry_description">
4721 <p>Maximum and minimum exposure compensation values for
4722 <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/>
4723 that are supported by this camera device.<wbr/></p>
4726 <td class="entry_units">
4729 <td class="entry_range">
4730 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4731 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4732 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4733 <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>
4734 <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>
4735 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4738 <td class="entry_hal_version">
4742 <td class="entry_tags">
4743 <ul class="entry_tags">
4744 <li><a href="#tag_BC">BC</a></li>
4751 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4752 <!-- end of entry -->
4755 <tr class="entry" id="static_android.control.aeCompensationStep">
4756 <td class="entry_name
4758 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4760 <td class="entry_type">
4761 <span class="entry_type_name">rational</span>
4763 <span class="entry_type_visibility"> [public]</span>
4766 <span class="entry_type_hwlevel">[legacy] </span>
4771 </td> <!-- entry_type -->
4773 <td class="entry_description">
4774 <p>Smallest step by which the exposure compensation
4775 can be changed.<wbr/></p>
4778 <td class="entry_units">
4782 <td class="entry_range">
4785 <td class="entry_hal_version">
4789 <td class="entry_tags">
4790 <ul class="entry_tags">
4791 <li><a href="#tag_BC">BC</a></li>
4796 <tr class="entries_header">
4797 <th class="th_details" colspan="6">Details</th>
4799 <tr class="entry_cont">
4800 <td class="entry_details" colspan="6">
4801 <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
4802 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
4803 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4804 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4805 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4809 <tr class="entries_header">
4810 <th class="th_details" colspan="6">HAL Implementation Details</th>
4812 <tr class="entry_cont">
4813 <td class="entry_details" colspan="6">
4814 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4818 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4819 <!-- end of entry -->
4822 <tr class="entry" id="static_android.control.afAvailableModes">
4823 <td class="entry_name
4825 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4827 <td class="entry_type">
4828 <span class="entry_type_name">byte</span>
4829 <span class="entry_type_container">x</span>
4831 <span class="entry_type_array">
4834 <span class="entry_type_visibility"> [public as enumList]</span>
4837 <span class="entry_type_hwlevel">[legacy] </span>
4840 <div class="entry_type_notes">List of enums</div>
4843 </td> <!-- entry_type -->
4845 <td class="entry_description">
4846 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4847 supported by this camera device.<wbr/></p>
4850 <td class="entry_units">
4853 <td class="entry_range">
4854 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4857 <td class="entry_hal_version">
4861 <td class="entry_tags">
4862 <ul class="entry_tags">
4863 <li><a href="#tag_BC">BC</a></li>
4868 <tr class="entries_header">
4869 <th class="th_details" colspan="6">Details</th>
4871 <tr class="entry_cont">
4872 <td class="entry_details" colspan="6">
4873 <p>Not all the auto-focus modes may be supported by a
4874 given camera device.<wbr/> This entry lists the valid modes for
4875 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4876 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4877 camera devices with adjustable focuser units
4878 (<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>
4879 <p>LEGACY devices will support OFF mode only if they support
4880 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4881 <code>0.<wbr/>0f</code>).<wbr/></p>
4886 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4887 <!-- end of entry -->
4890 <tr class="entry" id="static_android.control.availableEffects">
4891 <td class="entry_name
4893 android.<wbr/>control.<wbr/>available<wbr/>Effects
4895 <td class="entry_type">
4896 <span class="entry_type_name">byte</span>
4897 <span class="entry_type_container">x</span>
4899 <span class="entry_type_array">
4902 <span class="entry_type_visibility"> [public as enumList]</span>
4905 <span class="entry_type_hwlevel">[legacy] </span>
4908 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4911 </td> <!-- entry_type -->
4913 <td class="entry_description">
4914 <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
4918 <td class="entry_units">
4921 <td class="entry_range">
4922 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4925 <td class="entry_hal_version">
4929 <td class="entry_tags">
4930 <ul class="entry_tags">
4931 <li><a href="#tag_BC">BC</a></li>
4936 <tr class="entries_header">
4937 <th class="th_details" colspan="6">Details</th>
4939 <tr class="entry_cont">
4940 <td class="entry_details" colspan="6">
4941 <p>This list contains the color effect modes that can be applied to
4942 images produced by the camera device.<wbr/>
4943 Implementations are not expected to be consistent across all devices.<wbr/>
4944 If no color effect modes are available for a device,<wbr/> this will only list
4946 <p>A color effect will only be applied if
4947 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p>
4948 <p>This control has no effect on the operation of other control routines such
4949 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4954 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4955 <!-- end of entry -->
4958 <tr class="entry" id="static_android.control.availableSceneModes">
4959 <td class="entry_name
4961 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4963 <td class="entry_type">
4964 <span class="entry_type_name">byte</span>
4965 <span class="entry_type_container">x</span>
4967 <span class="entry_type_array">
4970 <span class="entry_type_visibility"> [public as enumList]</span>
4973 <span class="entry_type_hwlevel">[legacy] </span>
4976 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4979 </td> <!-- entry_type -->
4981 <td class="entry_description">
4982 <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
4986 <td class="entry_units">
4989 <td class="entry_range">
4990 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4993 <td class="entry_hal_version">
4997 <td class="entry_tags">
4998 <ul class="entry_tags">
4999 <li><a href="#tag_BC">BC</a></li>
5004 <tr class="entries_header">
5005 <th class="th_details" colspan="6">Details</th>
5007 <tr class="entry_cont">
5008 <td class="entry_details" colspan="6">
5009 <p>This list contains scene modes that can be set for the camera device.<wbr/>
5010 Only scene modes that have been fully implemented for the
5011 camera device may be included here.<wbr/> Implementations are not expected
5012 to be consistent across all devices.<wbr/></p>
5013 <p>If no scene modes are supported by the camera device,<wbr/> this
5014 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5015 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
5016 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> >
5017 0</code>).<wbr/></p>
5022 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5023 <!-- end of entry -->
5026 <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
5027 <td class="entry_name
5029 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
5031 <td class="entry_type">
5032 <span class="entry_type_name">byte</span>
5033 <span class="entry_type_container">x</span>
5035 <span class="entry_type_array">
5038 <span class="entry_type_visibility"> [public as enumList]</span>
5041 <span class="entry_type_hwlevel">[legacy] </span>
5044 <div class="entry_type_notes">List of enums.<wbr/></div>
5047 </td> <!-- entry_type -->
5049 <td class="entry_description">
5050 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5051 that are supported by this camera device.<wbr/></p>
5054 <td class="entry_units">
5057 <td class="entry_range">
5058 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
5061 <td class="entry_hal_version">
5065 <td class="entry_tags">
5066 <ul class="entry_tags">
5067 <li><a href="#tag_BC">BC</a></li>
5072 <tr class="entries_header">
5073 <th class="th_details" colspan="6">Details</th>
5075 <tr class="entry_cont">
5076 <td class="entry_details" colspan="6">
5077 <p>OFF will always be listed.<wbr/></p>
5082 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5083 <!-- end of entry -->
5086 <tr class="entry" id="static_android.control.awbAvailableModes">
5087 <td class="entry_name
5089 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
5091 <td class="entry_type">
5092 <span class="entry_type_name">byte</span>
5093 <span class="entry_type_container">x</span>
5095 <span class="entry_type_array">
5098 <span class="entry_type_visibility"> [public as enumList]</span>
5101 <span class="entry_type_hwlevel">[legacy] </span>
5104 <div class="entry_type_notes">List of enums</div>
5107 </td> <!-- entry_type -->
5109 <td class="entry_description">
5110 <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
5111 camera device.<wbr/></p>
5114 <td class="entry_units">
5117 <td class="entry_range">
5118 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
5121 <td class="entry_hal_version">
5125 <td class="entry_tags">
5126 <ul class="entry_tags">
5127 <li><a href="#tag_BC">BC</a></li>
5132 <tr class="entries_header">
5133 <th class="th_details" colspan="6">Details</th>
5135 <tr class="entry_cont">
5136 <td class="entry_details" colspan="6">
5137 <p>Not all the auto-white-balance modes may be supported by a
5138 given camera device.<wbr/> This entry lists the valid modes for
5139 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
5140 <p>All camera devices will support ON mode.<wbr/></p>
5141 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
5142 mode,<wbr/> which enables application control of white balance,<wbr/> by using
5143 <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
5144 mode camera devices.<wbr/></p>
5149 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5150 <!-- end of entry -->
5153 <tr class="entry" id="static_android.control.maxRegions">
5154 <td class="entry_name
5156 android.<wbr/>control.<wbr/>max<wbr/>Regions
5158 <td class="entry_type">
5159 <span class="entry_type_name">int32</span>
5160 <span class="entry_type_container">x</span>
5162 <span class="entry_type_array">
5165 <span class="entry_type_visibility"> [ndk_public]</span>
5168 <span class="entry_type_hwlevel">[legacy] </span>
5173 </td> <!-- entry_type -->
5175 <td class="entry_description">
5176 <p>List of the maximum number of regions that can be used for metering in
5177 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5178 this corresponds to the the maximum number of elements in
5179 <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/>
5180 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5183 <td class="entry_units">
5186 <td class="entry_range">
5187 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices
5188 this value must be >= 1 for AE and AF.<wbr/> The order of the elements is:
5189 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5192 <td class="entry_hal_version">
5196 <td class="entry_tags">
5197 <ul class="entry_tags">
5198 <li><a href="#tag_BC">BC</a></li>
5205 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5206 <!-- end of entry -->
5209 <tr class="entry" id="static_android.control.maxRegionsAe">
5210 <td class="entry_name
5212 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5214 <td class="entry_type">
5215 <span class="entry_type_name">int32</span>
5217 <span class="entry_type_visibility"> [java_public]</span>
5219 <span class="entry_type_synthetic">[synthetic] </span>
5221 <span class="entry_type_hwlevel">[legacy] </span>
5226 </td> <!-- entry_type -->
5228 <td class="entry_description">
5229 <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5233 <td class="entry_units">
5236 <td class="entry_range">
5237 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this
5238 value will be >= 1.<wbr/></p>
5241 <td class="entry_hal_version">
5245 <td class="entry_tags">
5249 <tr class="entries_header">
5250 <th class="th_details" colspan="6">Details</th>
5252 <tr class="entry_cont">
5253 <td class="entry_details" colspan="6">
5254 <p>This corresponds to the the maximum allowed number of elements in
5255 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5259 <tr class="entries_header">
5260 <th class="th_details" colspan="6">HAL Implementation Details</th>
5262 <tr class="entry_cont">
5263 <td class="entry_details" colspan="6">
5264 <p>This entry is private to the framework.<wbr/> Fill in
5265 maxRegions to have this entry be automatically populated.<wbr/></p>
5269 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5270 <!-- end of entry -->
5273 <tr class="entry" id="static_android.control.maxRegionsAwb">
5274 <td class="entry_name
5276 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5278 <td class="entry_type">
5279 <span class="entry_type_name">int32</span>
5281 <span class="entry_type_visibility"> [java_public]</span>
5283 <span class="entry_type_synthetic">[synthetic] </span>
5285 <span class="entry_type_hwlevel">[legacy] </span>
5290 </td> <!-- entry_type -->
5292 <td class="entry_description">
5293 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5297 <td class="entry_units">
5300 <td class="entry_range">
5301 <p>Value will be >= 0.<wbr/></p>
5304 <td class="entry_hal_version">
5308 <td class="entry_tags">
5312 <tr class="entries_header">
5313 <th class="th_details" colspan="6">Details</th>
5315 <tr class="entry_cont">
5316 <td class="entry_details" colspan="6">
5317 <p>This corresponds to the the maximum allowed number of elements in
5318 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5322 <tr class="entries_header">
5323 <th class="th_details" colspan="6">HAL Implementation Details</th>
5325 <tr class="entry_cont">
5326 <td class="entry_details" colspan="6">
5327 <p>This entry is private to the framework.<wbr/> Fill in
5328 maxRegions to have this entry be automatically populated.<wbr/></p>
5332 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5333 <!-- end of entry -->
5336 <tr class="entry" id="static_android.control.maxRegionsAf">
5337 <td class="entry_name
5339 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5341 <td class="entry_type">
5342 <span class="entry_type_name">int32</span>
5344 <span class="entry_type_visibility"> [java_public]</span>
5346 <span class="entry_type_synthetic">[synthetic] </span>
5348 <span class="entry_type_hwlevel">[legacy] </span>
5353 </td> <!-- entry_type -->
5355 <td class="entry_description">
5356 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5359 <td class="entry_units">
5362 <td class="entry_range">
5363 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this
5364 value will be >= 1.<wbr/></p>
5367 <td class="entry_hal_version">
5371 <td class="entry_tags">
5375 <tr class="entries_header">
5376 <th class="th_details" colspan="6">Details</th>
5378 <tr class="entry_cont">
5379 <td class="entry_details" colspan="6">
5380 <p>This corresponds to the the maximum allowed number of elements in
5381 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5385 <tr class="entries_header">
5386 <th class="th_details" colspan="6">HAL Implementation Details</th>
5388 <tr class="entry_cont">
5389 <td class="entry_details" colspan="6">
5390 <p>This entry is private to the framework.<wbr/> Fill in
5391 maxRegions to have this entry be automatically populated.<wbr/></p>
5395 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5396 <!-- end of entry -->
5399 <tr class="entry" id="static_android.control.sceneModeOverrides">
5400 <td class="entry_name
5402 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5404 <td class="entry_type">
5405 <span class="entry_type_name">byte</span>
5406 <span class="entry_type_container">x</span>
5408 <span class="entry_type_array">
5409 3 x length(availableSceneModes)
5411 <span class="entry_type_visibility"> [system]</span>
5414 <span class="entry_type_hwlevel">[limited] </span>
5419 </td> <!-- entry_type -->
5421 <td class="entry_description">
5422 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5423 settings to use with each available scene mode.<wbr/></p>
5426 <td class="entry_units">
5429 <td class="entry_range">
5430 <p>For each available scene mode,<wbr/> the list must contain three
5431 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5432 <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
5433 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5434 where aeMode has the lowest index position.<wbr/></p>
5437 <td class="entry_hal_version">
5441 <td class="entry_tags">
5442 <ul class="entry_tags">
5443 <li><a href="#tag_BC">BC</a></li>
5448 <tr class="entries_header">
5449 <th class="th_details" colspan="6">Details</th>
5451 <tr class="entry_cont">
5452 <td class="entry_details" colspan="6">
5453 <p>When a scene mode is enabled,<wbr/> the camera device is expected
5454 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/>
5455 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5456 that scene mode.<wbr/></p>
5457 <p>The order of this list matches that of availableSceneModes,<wbr/>
5458 with 3 entries for each mode.<wbr/> The overrides listed
5459 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5460 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5461 <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
5462 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5463 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5464 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5465 <p>For example,<wbr/> if availableSceneModes contains
5466 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework
5467 expects sceneModeOverrides to have 9 entries formatted like:
5468 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5469 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5473 <tr class="entries_header">
5474 <th class="th_details" colspan="6">HAL Implementation Details</th>
5476 <tr class="entry_cont">
5477 <td class="entry_details" colspan="6">
5478 <p>To maintain backward compatibility,<wbr/> this list will be made available
5479 in the static metadata of the camera service.<wbr/> The camera service will
5480 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5481 <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
5482 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5486 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5487 <!-- end of entry -->
5490 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5491 <td class="entry_name
5493 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5495 <td class="entry_type">
5496 <span class="entry_type_name">int32</span>
5497 <span class="entry_type_container">x</span>
5499 <span class="entry_type_array">
5502 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5505 <span class="entry_type_hwlevel">[limited] </span>
5510 </td> <!-- entry_type -->
5512 <td class="entry_description">
5513 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5514 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>
5517 <td class="entry_units">
5520 <td class="entry_range">
5521 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p>
5524 <td class="entry_hal_version">
5528 <td class="entry_tags">
5529 <ul class="entry_tags">
5530 <li><a href="#tag_V1">V1</a></li>
5535 <tr class="entries_header">
5536 <th class="th_details" colspan="6">Details</th>
5538 <tr class="entry_cont">
5539 <td class="entry_details" colspan="6">
5540 <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/>
5541 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5542 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5543 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5544 for processed non-stalling formats.<wbr/></p>
5545 <p>For the high speed video use case,<wbr/> the application must
5546 select the video size and fps range from this metadata to configure the recording and
5547 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5548 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5549 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5550 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5551 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5552 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5553 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5554 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5555 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5556 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5557 multiple frames together and send to camera device for processing where the request
5558 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5559 the max possible number of frames the camera device will group together for this high
5560 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5561 recording request list by
5562 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5563 The max batch size for each configuration will satisfy below conditions:</p>
5565 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5566 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5567 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5568 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5569 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>
5570 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5572 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5573 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5574 <p>This fps ranges in this configuration list can only be used to create requests
5575 that are submitted to a high speed camera capture session created by
5576 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5577 The fps ranges reported in this metadata must not be used to setup capture requests for
5578 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5582 <tr class="entries_header">
5583 <th class="th_details" colspan="6">HAL Implementation Details</th>
5585 <tr class="entry_cont">
5586 <td class="entry_details" colspan="6">
5587 <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5588 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5589 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5590 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5591 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5592 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5593 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5594 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5595 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5596 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5597 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5598 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5599 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5600 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5601 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5602 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5603 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5607 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5608 <!-- end of entry -->
5611 <tr class="entry" id="static_android.control.aeLockAvailable">
5612 <td class="entry_name
5614 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5616 <td class="entry_type">
5617 <span class="entry_type_name entry_type_name_enum">byte</span>
5619 <span class="entry_type_visibility"> [public as boolean]</span>
5622 <span class="entry_type_hwlevel">[legacy] </span>
5626 <ul class="entry_type_enum">
5628 <span class="entry_type_enum_name">FALSE (v3.2)</span>
5631 <span class="entry_type_enum_name">TRUE (v3.2)</span>
5635 </td> <!-- entry_type -->
5637 <td class="entry_description">
5638 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5641 <td class="entry_units">
5644 <td class="entry_range">
5647 <td class="entry_hal_version">
5651 <td class="entry_tags">
5652 <ul class="entry_tags">
5653 <li><a href="#tag_BC">BC</a></li>
5658 <tr class="entries_header">
5659 <th class="th_details" colspan="6">Details</th>
5661 <tr class="entry_cont">
5662 <td class="entry_details" colspan="6">
5663 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5664 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5669 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5670 <!-- end of entry -->
5673 <tr class="entry" id="static_android.control.awbLockAvailable">
5674 <td class="entry_name
5676 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5678 <td class="entry_type">
5679 <span class="entry_type_name entry_type_name_enum">byte</span>
5681 <span class="entry_type_visibility"> [public as boolean]</span>
5684 <span class="entry_type_hwlevel">[legacy] </span>
5688 <ul class="entry_type_enum">
5690 <span class="entry_type_enum_name">FALSE (v3.2)</span>
5693 <span class="entry_type_enum_name">TRUE (v3.2)</span>
5697 </td> <!-- entry_type -->
5699 <td class="entry_description">
5700 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5703 <td class="entry_units">
5706 <td class="entry_range">
5709 <td class="entry_hal_version">
5713 <td class="entry_tags">
5714 <ul class="entry_tags">
5715 <li><a href="#tag_BC">BC</a></li>
5720 <tr class="entries_header">
5721 <th class="th_details" colspan="6">Details</th>
5723 <tr class="entry_cont">
5724 <td class="entry_details" colspan="6">
5725 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5726 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5731 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5732 <!-- end of entry -->
5735 <tr class="entry" id="static_android.control.availableModes">
5736 <td class="entry_name
5738 android.<wbr/>control.<wbr/>available<wbr/>Modes
5740 <td class="entry_type">
5741 <span class="entry_type_name">byte</span>
5742 <span class="entry_type_container">x</span>
5744 <span class="entry_type_array">
5747 <span class="entry_type_visibility"> [public as enumList]</span>
5750 <span class="entry_type_hwlevel">[legacy] </span>
5753 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5756 </td> <!-- entry_type -->
5758 <td class="entry_description">
5759 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5763 <td class="entry_units">
5766 <td class="entry_range">
5767 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5770 <td class="entry_hal_version">
5774 <td class="entry_tags">
5778 <tr class="entries_header">
5779 <th class="th_details" colspan="6">Details</th>
5781 <tr class="entry_cont">
5782 <td class="entry_details" colspan="6">
5783 <p>This list contains control modes that can be set for the camera device.<wbr/>
5784 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5785 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5790 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5791 <!-- end of entry -->
5794 <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5795 <td class="entry_name
5797 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5799 <td class="entry_type">
5800 <span class="entry_type_name">int32</span>
5801 <span class="entry_type_container">x</span>
5803 <span class="entry_type_array">
5806 <span class="entry_type_visibility"> [public as rangeInt]</span>
5811 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5814 </td> <!-- entry_type -->
5816 <td class="entry_description">
5817 <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5818 by this camera device.<wbr/></p>
5821 <td class="entry_units">
5822 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5825 <td class="entry_range">
5828 <td class="entry_hal_version">
5832 <td class="entry_tags">
5836 <tr class="entries_header">
5837 <th class="th_details" colspan="6">Details</th>
5839 <tr class="entry_cont">
5840 <td class="entry_details" colspan="6">
5841 <p>Devices support post RAW sensitivity boost will advertise
5842 <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5843 post RAW sensitivity boost.<wbr/></p>
5844 <p>This key will be <code>null</code> for devices that do not support any RAW format
5845 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5846 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5847 list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5851 <tr class="entries_header">
5852 <th class="th_details" colspan="6">HAL Implementation Details</th>
5854 <tr class="entry_cont">
5855 <td class="entry_details" colspan="6">
5856 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
5857 framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
5858 formats.<wbr/> All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
5859 any of RAW output formats.<wbr/></p>
5863 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5864 <!-- end of entry -->
5868 <!-- end of kind -->
5870 <tr><td colspan="7" class="kind">dynamic</td></tr>
5872 <thead class="entries_header">
5874 <th class="th_name">Property Name</th>
5875 <th class="th_type">Type</th>
5876 <th class="th_description">Description</th>
5877 <th class="th_units">Units</th>
5878 <th class="th_range">Range</th>
5879 <th class="th_hal_version">Initial HIDL HAL version</th>
5880 <th class="th_tags">Tags</th>
5895 <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5896 <td class="entry_name
5897 entry_name_deprecated
5899 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5901 <td class="entry_type">
5902 <span class="entry_type_name">int32</span>
5904 <span class="entry_type_visibility"> [system]</span>
5908 <span class="entry_type_deprecated">[deprecated] </span>
5912 </td> <!-- entry_type -->
5914 <td class="entry_description">
5915 <p>The ID sent with the latest
5916 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5919 <td class="entry_units">
5922 <td class="entry_range">
5923 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5926 <td class="entry_hal_version">
5930 <td class="entry_tags">
5934 <tr class="entries_header">
5935 <th class="th_details" colspan="6">Details</th>
5937 <tr class="entry_cont">
5938 <td class="entry_details" colspan="6">
5940 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5941 by HAL.<wbr/> Always updated even if AE algorithm ignores the
5947 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5948 <!-- end of entry -->
5951 <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5952 <td class="entry_name
5954 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5956 <td class="entry_type">
5957 <span class="entry_type_name entry_type_name_enum">byte</span>
5959 <span class="entry_type_visibility"> [public]</span>
5962 <span class="entry_type_hwlevel">[legacy] </span>
5966 <ul class="entry_type_enum">
5968 <span class="entry_type_enum_name">OFF (v3.2)</span>
5969 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5970 avoid banding problems.<wbr/></p></span>
5973 <span class="entry_type_enum_name">50HZ (v3.2)</span>
5974 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5975 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5978 <span class="entry_type_enum_name">60HZ (v3.2)</span>
5979 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5980 avoid banding problems with 60Hz illumination
5981 sources.<wbr/></p></span>
5984 <span class="entry_type_enum_name">AUTO (v3.2)</span>
5985 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5986 antibanding routine to the current illumination
5987 condition.<wbr/> This is the default mode if AUTO is
5988 available on given camera device.<wbr/></p></span>
5992 </td> <!-- entry_type -->
5994 <td class="entry_description">
5995 <p>The desired setting for the camera device's auto-exposure
5996 algorithm's antibanding compensation.<wbr/></p>
5999 <td class="entry_units">
6002 <td class="entry_range">
6003 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
6006 <td class="entry_hal_version">
6010 <td class="entry_tags">
6011 <ul class="entry_tags">
6012 <li><a href="#tag_BC">BC</a></li>
6017 <tr class="entries_header">
6018 <th class="th_details" colspan="6">Details</th>
6020 <tr class="entry_cont">
6021 <td class="entry_details" colspan="6">
6022 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
6023 lights,<wbr/> flicker at the rate of the power supply frequency
6024 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
6025 typically not noticeable to a person,<wbr/> it can be visible to
6026 a camera device.<wbr/> If a camera sets its exposure time to the
6027 wrong value,<wbr/> the flicker may become visible in the
6028 viewfinder as flicker or in a final captured image,<wbr/> as a
6029 set of variable-brightness bands across the image.<wbr/></p>
6030 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
6031 include antibanding routines that ensure that the chosen
6032 exposure value will not cause such banding.<wbr/> The choice of
6033 exposure time depends on the rate of flicker,<wbr/> which the
6034 camera device can detect automatically,<wbr/> or the expected
6035 rate can be selected by the application using this
6037 <p>A given camera device may not support all of the possible
6038 options for the antibanding mode.<wbr/> The
6039 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
6040 the available modes for a given camera device.<wbr/></p>
6041 <p>AUTO mode is the default if it is available on given
6042 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
6043 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
6044 and 60HZ will be available.<wbr/></p>
6045 <p>If manual exposure control is enabled (by setting
6046 <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/>
6047 then this setting has no effect,<wbr/> and the application must
6048 ensure it selects exposure times that do not cause banding
6049 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
6050 the application in this.<wbr/></p>
6054 <tr class="entries_header">
6055 <th class="th_details" colspan="6">HAL Implementation Details</th>
6057 <tr class="entry_cont">
6058 <td class="entry_details" colspan="6">
6059 <p>For all capture request templates,<wbr/> this field must be set
6060 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
6061 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
6062 60HZ must be available.<wbr/></p>
6063 <p>If manual exposure control is enabled (by setting
6064 <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/>
6065 then the exposure values provided by the application must not be
6066 adjusted for antibanding.<wbr/></p>
6070 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6071 <!-- end of entry -->
6074 <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
6075 <td class="entry_name
6077 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
6079 <td class="entry_type">
6080 <span class="entry_type_name">int32</span>
6082 <span class="entry_type_visibility"> [public]</span>
6085 <span class="entry_type_hwlevel">[legacy] </span>
6090 </td> <!-- entry_type -->
6092 <td class="entry_description">
6093 <p>Adjustment to auto-exposure (AE) target image
6094 brightness.<wbr/></p>
6097 <td class="entry_units">
6101 <td class="entry_range">
6102 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
6105 <td class="entry_hal_version">
6109 <td class="entry_tags">
6110 <ul class="entry_tags">
6111 <li><a href="#tag_BC">BC</a></li>
6116 <tr class="entries_header">
6117 <th class="th_details" colspan="6">Details</th>
6119 <tr class="entry_cont">
6120 <td class="entry_details" colspan="6">
6121 <p>The adjustment is measured as a count of steps,<wbr/> with the
6122 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
6123 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
6124 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
6125 will mean an exposure compensation of +2 EV; -3 will mean an
6126 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
6127 of image brightness.<wbr/> Note that this control will only be
6128 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
6129 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
6130 <p>In the event of exposure compensation value being changed,<wbr/> camera device
6131 may take several frames to reach the newly requested exposure target.<wbr/>
6132 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
6133 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
6134 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
6135 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
6140 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6141 <!-- end of entry -->
6144 <tr class="entry" id="dynamic_android.control.aeLock">
6145 <td class="entry_name
6147 android.<wbr/>control.<wbr/>ae<wbr/>Lock
6149 <td class="entry_type">
6150 <span class="entry_type_name entry_type_name_enum">byte</span>
6152 <span class="entry_type_visibility"> [public as boolean]</span>
6155 <span class="entry_type_hwlevel">[legacy] </span>
6159 <ul class="entry_type_enum">
6161 <span class="entry_type_enum_name">OFF (v3.2)</span>
6162 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
6163 is free to update its parameters.<wbr/></p></span>
6166 <span class="entry_type_enum_name">ON (v3.2)</span>
6167 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
6168 must not update the exposure and sensitivity parameters
6169 while the lock is active.<wbr/></p>
6170 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
6171 will still take effect while auto-exposure is locked.<wbr/></p>
6172 <p>Some rare LEGACY devices may not support
6173 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
6177 </td> <!-- entry_type -->
6179 <td class="entry_description">
6180 <p>Whether auto-exposure (AE) is currently locked to its latest
6181 calculated values.<wbr/></p>
6184 <td class="entry_units">
6187 <td class="entry_range">
6190 <td class="entry_hal_version">
6194 <td class="entry_tags">
6195 <ul class="entry_tags">
6196 <li><a href="#tag_BC">BC</a></li>
6201 <tr class="entries_header">
6202 <th class="th_details" colspan="6">Details</th>
6204 <tr class="entry_cont">
6205 <td class="entry_details" colspan="6">
6206 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
6207 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
6208 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
6209 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
6210 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
6211 <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
6212 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
6213 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
6214 when AE is already locked,<wbr/> the camera device will not change the exposure time
6215 (<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>)
6216 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
6217 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
6218 <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/>
6219 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
6220 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
6221 the AE if AE is locked by the camera device internally during precapture metering
6222 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
6223 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
6224 will never succeed in a sequence of preview requests where AE lock is always set
6225 to <code>false</code>.<wbr/></p>
6226 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6227 get locked do not necessarily correspond to the settings that were present in the
6228 latest capture result received from the camera device,<wbr/> since additional captures
6229 and AE updates may have occurred even before the result was sent out.<wbr/> If an
6230 application is switching between automatic and manual control and wishes to eliminate
6231 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6233 <li>Starting in auto-AE mode:</li>
6235 <li>Wait for the first result to be output that has the AE locked</li>
6236 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6237 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6239 <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>
6244 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6245 <!-- end of entry -->
6248 <tr class="entry" id="dynamic_android.control.aeMode">
6249 <td class="entry_name
6251 android.<wbr/>control.<wbr/>ae<wbr/>Mode
6253 <td class="entry_type">
6254 <span class="entry_type_name entry_type_name_enum">byte</span>
6256 <span class="entry_type_visibility"> [public]</span>
6259 <span class="entry_type_hwlevel">[legacy] </span>
6263 <ul class="entry_type_enum">
6265 <span class="entry_type_enum_name">OFF (v3.2)</span>
6266 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6267 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6268 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6269 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6270 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6271 a flash unit for this camera device.<wbr/></p>
6272 <p>Note that auto-white balance (AWB) and auto-focus (AF)
6273 behavior is device dependent when AE is in OFF mode.<wbr/>
6274 To have consistent behavior across different devices,<wbr/>
6275 it is recommended to either set AWB and AF to OFF mode
6276 or lock AWB and AF before setting AE to OFF.<wbr/>
6277 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/>
6278 <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>
6279 for more details.<wbr/></p>
6280 <p>LEGACY devices do not support the OFF mode and will
6281 override attempts to use this value to ON.<wbr/></p></span>
6284 <span class="entry_type_enum_name">ON (v3.2)</span>
6285 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6286 with no flash control.<wbr/></p>
6287 <p>The application's values for
6288 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6289 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6290 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6291 application has control over the various
6292 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6295 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
6296 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6297 the camera's flash unit,<wbr/> firing it in low-light
6298 conditions.<wbr/></p>
6299 <p>The flash may be fired during a precapture sequence
6300 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6301 may be fired for captures for which the
6302 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6303 STILL_<wbr/>CAPTURE</p></span>
6306 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
6307 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6308 the camera's flash unit,<wbr/> always firing it for still
6310 <p>The flash may be fired during a precapture sequence
6311 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6312 will always be fired for captures for which the
6313 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6314 STILL_<wbr/>CAPTURE</p></span>
6317 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
6318 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6319 reduction.<wbr/></p>
6320 <p>If deemed necessary by the camera device,<wbr/> a red eye
6321 reduction flash will fire during the precapture
6322 sequence.<wbr/></p></span>
6326 </td> <!-- entry_type -->
6328 <td class="entry_description">
6329 <p>The desired mode for the camera device's
6330 auto-exposure routine.<wbr/></p>
6333 <td class="entry_units">
6336 <td class="entry_range">
6337 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6340 <td class="entry_hal_version">
6344 <td class="entry_tags">
6345 <ul class="entry_tags">
6346 <li><a href="#tag_BC">BC</a></li>
6351 <tr class="entries_header">
6352 <th class="th_details" colspan="6">Details</th>
6354 <tr class="entry_cont">
6355 <td class="entry_details" colspan="6">
6356 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6358 <p>When set to any of the ON modes,<wbr/> the camera device's
6359 auto-exposure routine is enabled,<wbr/> overriding the
6360 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6361 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6362 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6363 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6364 is selected,<wbr/> the camera device's flash unit controls are
6365 also overridden.<wbr/></p>
6366 <p>The FLASH modes are only available if the camera device
6367 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>
6368 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
6369 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6370 <p>When set to any of the ON modes,<wbr/> the values chosen by the
6371 camera device auto-exposure routine for the overridden
6372 fields for a given capture will be available in its
6373 CaptureResult.<wbr/></p>
6378 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6379 <!-- end of entry -->
6382 <tr class="entry" id="dynamic_android.control.aeRegions">
6383 <td class="entry_name
6385 android.<wbr/>control.<wbr/>ae<wbr/>Regions
6387 <td class="entry_type">
6388 <span class="entry_type_name">int32</span>
6389 <span class="entry_type_container">x</span>
6391 <span class="entry_type_array">
6394 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6401 </td> <!-- entry_type -->
6403 <td class="entry_description">
6404 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6407 <td class="entry_units">
6408 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6411 <td class="entry_range">
6412 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6413 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6416 <td class="entry_hal_version">
6420 <td class="entry_tags">
6421 <ul class="entry_tags">
6422 <li><a href="#tag_BC">BC</a></li>
6427 <tr class="entries_header">
6428 <th class="th_details" colspan="6">Details</th>
6430 <tr class="entry_cont">
6431 <td class="entry_details" colspan="6">
6432 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6433 Otherwise will always be present.<wbr/></p>
6434 <p>The maximum number of regions supported by the device is determined by the value
6435 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6436 <p>The coordinate system is based on the active pixel array,<wbr/>
6437 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6438 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6439 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6440 bottom-right pixel in the active pixel array.<wbr/></p>
6441 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6442 for every pixel in the area.<wbr/> This means that a large metering area
6443 with the same weight as a smaller area will have more effect in
6444 the metering result.<wbr/> Metering areas can partially overlap and the
6445 camera device will add the weights in the overlap region.<wbr/></p>
6446 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6447 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6448 weight is ignored.<wbr/></p>
6449 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6450 camera device.<wbr/></p>
6451 <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
6452 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6453 region and output only the intersection rectangle as the metering region in the result
6454 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6455 not reported in the result metadata.<wbr/></p>
6459 <tr class="entries_header">
6460 <th class="th_details" colspan="6">HAL Implementation Details</th>
6462 <tr class="entry_cont">
6463 <td class="entry_details" colspan="6">
6464 <p>The HAL level representation of MeteringRectangle[] is a
6465 int[5 * area_<wbr/>count].<wbr/>
6466 Every five elements represent a metering region of
6467 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6468 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6469 exclusive on xmax and ymax.<wbr/></p>
6473 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6474 <!-- end of entry -->
6477 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6478 <td class="entry_name
6480 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6482 <td class="entry_type">
6483 <span class="entry_type_name">int32</span>
6484 <span class="entry_type_container">x</span>
6486 <span class="entry_type_array">
6489 <span class="entry_type_visibility"> [public as rangeInt]</span>
6492 <span class="entry_type_hwlevel">[legacy] </span>
6497 </td> <!-- entry_type -->
6499 <td class="entry_description">
6500 <p>Range over which the auto-exposure routine can
6501 adjust the capture frame rate to maintain good
6505 <td class="entry_units">
6506 Frames per second (FPS)
6509 <td class="entry_range">
6510 <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>
6513 <td class="entry_hal_version">
6517 <td class="entry_tags">
6518 <ul class="entry_tags">
6519 <li><a href="#tag_BC">BC</a></li>
6524 <tr class="entries_header">
6525 <th class="th_details" colspan="6">Details</th>
6527 <tr class="entry_cont">
6528 <td class="entry_details" colspan="6">
6529 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6530 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6531 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6536 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6537 <!-- end of entry -->
6540 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6541 <td class="entry_name
6543 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6545 <td class="entry_type">
6546 <span class="entry_type_name entry_type_name_enum">byte</span>
6548 <span class="entry_type_visibility"> [public]</span>
6551 <span class="entry_type_hwlevel">[limited] </span>
6555 <ul class="entry_type_enum">
6557 <span class="entry_type_enum_name">IDLE (v3.2)</span>
6558 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6561 <span class="entry_type_enum_name">START (v3.2)</span>
6562 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6563 by the camera device.<wbr/></p>
6564 <p>The exact effect of the precapture trigger depends on
6565 the current AE mode and state.<wbr/></p></span>
6568 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
6569 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6570 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6571 initial state.<wbr/></p></span>
6575 </td> <!-- entry_type -->
6577 <td class="entry_description">
6578 <p>Whether the camera device will trigger a precapture
6579 metering sequence when it processes this request.<wbr/></p>
6582 <td class="entry_units">
6585 <td class="entry_range">
6588 <td class="entry_hal_version">
6592 <td class="entry_tags">
6593 <ul class="entry_tags">
6594 <li><a href="#tag_BC">BC</a></li>
6599 <tr class="entries_header">
6600 <th class="th_details" colspan="6">Details</th>
6602 <tr class="entry_cont">
6603 <td class="entry_details" colspan="6">
6604 <p>This entry is normally set to IDLE,<wbr/> or is not
6605 included at all in the request settings.<wbr/> When included and
6606 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6607 precapture metering sequence.<wbr/></p>
6608 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
6609 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6610 If a precapture metering sequence is already completed,<wbr/> and the camera
6611 device has implicitly locked the AE for subsequent still capture,<wbr/> the
6612 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6613 <p>The precapture sequence should be triggered before starting a
6614 high-quality still capture for final metering decisions to
6615 be made,<wbr/> and for firing pre-capture flash pulses to estimate
6616 scene brightness and required final capture flash power,<wbr/> when
6617 the flash is enabled.<wbr/></p>
6618 <p>Normally,<wbr/> this entry should be set to START for only a
6619 single request,<wbr/> and the application should wait until the
6620 sequence completes before starting a new one.<wbr/></p>
6621 <p>When a precapture metering sequence is finished,<wbr/> the camera device
6622 may lock the auto-exposure routine internally to be able to accurately expose the
6623 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6624 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6625 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6626 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
6627 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
6628 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6629 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6630 internally locked AE if the application doesn't submit a still capture request after
6631 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6632 be used in devices that have earlier API levels.<wbr/></p>
6633 <p>The exact effect of auto-exposure (AE) precapture trigger
6634 depends on the current AE mode and state; see
6635 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6637 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6638 capturing a high-resolution JPEG image will automatically trigger a
6639 precapture sequence before the high-resolution capture,<wbr/> including
6640 potentially firing a pre-capture flash.<wbr/></p>
6641 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6642 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6643 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6644 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6645 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6646 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
6648 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6649 the camera device will complete them in the optimal order for that device.<wbr/></p>
6653 <tr class="entries_header">
6654 <th class="th_details" colspan="6">HAL Implementation Details</th>
6656 <tr class="entry_cont">
6657 <td class="entry_details" colspan="6">
6658 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6659 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
6660 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6661 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6662 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6666 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6667 <!-- end of entry -->
6670 <tr class="entry" id="dynamic_android.control.aeState">
6671 <td class="entry_name
6673 android.<wbr/>control.<wbr/>ae<wbr/>State
6675 <td class="entry_type">
6676 <span class="entry_type_name entry_type_name_enum">byte</span>
6678 <span class="entry_type_visibility"> [public]</span>
6681 <span class="entry_type_hwlevel">[limited] </span>
6685 <ul class="entry_type_enum">
6687 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
6688 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6689 <p>When a camera device is opened,<wbr/> it starts in
6690 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6691 this state in capture result.<wbr/></p></span>
6694 <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
6695 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6696 for the current scene.<wbr/></p>
6697 <p>This is a transient state,<wbr/> the camera device may skip
6698 reporting this state in capture result.<wbr/></p></span>
6701 <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
6702 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6703 current scene.<wbr/></p></span>
6706 <span class="entry_type_enum_name">LOCKED (v3.2)</span>
6707 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6710 <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
6711 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6712 needs to be fired for good quality still
6713 capture.<wbr/></p></span>
6716 <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
6717 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6718 and is currently executing it.<wbr/></p>
6719 <p>Precapture can be triggered through setting
6720 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6721 active and completed (if it causes camera device internal AE lock) precapture
6722 metering sequence can be canceled through setting
6723 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6724 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6725 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6726 state,<wbr/> the camera device may skip reporting this state in
6727 capture result.<wbr/></p></span>
6731 </td> <!-- entry_type -->
6733 <td class="entry_description">
6734 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6737 <td class="entry_units">
6740 <td class="entry_range">
6743 <td class="entry_hal_version">
6747 <td class="entry_tags">
6751 <tr class="entries_header">
6752 <th class="th_details" colspan="6">Details</th>
6754 <tr class="entry_cont">
6755 <td class="entry_details" colspan="6">
6756 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6757 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6758 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
6759 the algorithm states to INACTIVE.<wbr/></p>
6760 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6761 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6762 seen in a result.<wbr/></p>
6763 <p>The state in the result is the state for this image (in sync with this image): if
6764 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6765 be good to use.<wbr/></p>
6766 <p>Below are state transition tables for different AE modes.<wbr/></p>
6770 <th align="center">State</th>
6771 <th align="center">Transition Cause</th>
6772 <th align="center">New State</th>
6773 <th align="center">Notes</th>
6778 <td align="center">INACTIVE</td>
6779 <td align="center"></td>
6780 <td align="center">INACTIVE</td>
6781 <td align="center">Camera device auto exposure algorithm is disabled</td>
6785 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6789 <th align="center">State</th>
6790 <th align="center">Transition Cause</th>
6791 <th align="center">New State</th>
6792 <th align="center">Notes</th>
6797 <td align="center">INACTIVE</td>
6798 <td align="center">Camera device initiates AE scan</td>
6799 <td align="center">SEARCHING</td>
6800 <td align="center">Values changing</td>
6803 <td align="center">INACTIVE</td>
6804 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6805 <td align="center">LOCKED</td>
6806 <td align="center">Values locked</td>
6809 <td align="center">SEARCHING</td>
6810 <td align="center">Camera device finishes AE scan</td>
6811 <td align="center">CONVERGED</td>
6812 <td align="center">Good values,<wbr/> not changing</td>
6815 <td align="center">SEARCHING</td>
6816 <td align="center">Camera device finishes AE scan</td>
6817 <td align="center">FLASH_<wbr/>REQUIRED</td>
6818 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6821 <td align="center">SEARCHING</td>
6822 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6823 <td align="center">LOCKED</td>
6824 <td align="center">Values locked</td>
6827 <td align="center">CONVERGED</td>
6828 <td align="center">Camera device initiates AE scan</td>
6829 <td align="center">SEARCHING</td>
6830 <td align="center">Values changing</td>
6833 <td align="center">CONVERGED</td>
6834 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6835 <td align="center">LOCKED</td>
6836 <td align="center">Values locked</td>
6839 <td align="center">FLASH_<wbr/>REQUIRED</td>
6840 <td align="center">Camera device initiates AE scan</td>
6841 <td align="center">SEARCHING</td>
6842 <td align="center">Values changing</td>
6845 <td align="center">FLASH_<wbr/>REQUIRED</td>
6846 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6847 <td align="center">LOCKED</td>
6848 <td align="center">Values locked</td>
6851 <td align="center">LOCKED</td>
6852 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6853 <td align="center">SEARCHING</td>
6854 <td align="center">Values not good after unlock</td>
6857 <td align="center">LOCKED</td>
6858 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6859 <td align="center">CONVERGED</td>
6860 <td align="center">Values good after unlock</td>
6863 <td align="center">LOCKED</td>
6864 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6865 <td align="center">FLASH_<wbr/>REQUIRED</td>
6866 <td align="center">Exposure good,<wbr/> but too dark</td>
6869 <td align="center">PRECAPTURE</td>
6870 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6871 <td align="center">CONVERGED</td>
6872 <td align="center">Ready for high-quality capture</td>
6875 <td align="center">PRECAPTURE</td>
6876 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6877 <td align="center">LOCKED</td>
6878 <td align="center">Ready for high-quality capture</td>
6881 <td align="center">LOCKED</td>
6882 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6883 <td align="center">LOCKED</td>
6884 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6887 <td align="center">LOCKED</td>
6888 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6889 <td align="center">LOCKED</td>
6890 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6893 <td align="center">Any state (excluding LOCKED)</td>
6894 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6895 <td align="center">PRECAPTURE</td>
6896 <td align="center">Start AE precapture metering sequence</td>
6899 <td align="center">Any state (excluding LOCKED)</td>
6900 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6901 <td align="center">INACTIVE</td>
6902 <td align="center">Currently active precapture metering sequence is canceled</td>
6906 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6907 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6908 can be skipped in that manner is called a transient state.<wbr/></p>
6909 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6910 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6911 transient states between two results.<wbr/> See below table for examples:</p>
6915 <th align="center">State</th>
6916 <th align="center">Transition Cause</th>
6917 <th align="center">New State</th>
6918 <th align="center">Notes</th>
6923 <td align="center">INACTIVE</td>
6924 <td align="center">Camera device finished AE scan</td>
6925 <td align="center">CONVERGED</td>
6926 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6929 <td align="center">Any state (excluding LOCKED)</td>
6930 <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>
6931 <td align="center">FLASH_<wbr/>REQUIRED</td>
6932 <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>
6935 <td align="center">Any state (excluding LOCKED)</td>
6936 <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>
6937 <td align="center">CONVERGED</td>
6938 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6941 <td align="center">Any state (excluding LOCKED)</td>
6942 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6943 <td align="center">FLASH_<wbr/>REQUIRED</td>
6944 <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>
6947 <td align="center">Any state (excluding LOCKED)</td>
6948 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6949 <td align="center">CONVERGED</td>
6950 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6953 <td align="center">CONVERGED</td>
6954 <td align="center">Camera device finished AE scan</td>
6955 <td align="center">FLASH_<wbr/>REQUIRED</td>
6956 <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>
6959 <td align="center">FLASH_<wbr/>REQUIRED</td>
6960 <td align="center">Camera device finished AE scan</td>
6961 <td align="center">CONVERGED</td>
6962 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6970 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6971 <!-- end of entry -->
6974 <tr class="entry" id="dynamic_android.control.afMode">
6975 <td class="entry_name
6977 android.<wbr/>control.<wbr/>af<wbr/>Mode
6979 <td class="entry_type">
6980 <span class="entry_type_name entry_type_name_enum">byte</span>
6982 <span class="entry_type_visibility"> [public]</span>
6985 <span class="entry_type_hwlevel">[legacy] </span>
6989 <ul class="entry_type_enum">
6991 <span class="entry_type_enum_name">OFF (v3.2)</span>
6992 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6993 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6994 application.<wbr/></p></span>
6997 <span class="entry_type_enum_name">AUTO (v3.2)</span>
6998 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6999 <p>In this mode,<wbr/> the lens does not move unless
7000 the autofocus trigger action is called.<wbr/> When that trigger
7001 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7002 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
7003 <p>Always supported if lens is not fixed focus.<wbr/></p>
7004 <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
7005 is fixed-focus.<wbr/></p>
7006 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
7007 and sets the AF state to INACTIVE.<wbr/></p></span>
7010 <span class="entry_type_enum_name">MACRO (v3.2)</span>
7011 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
7012 <p>In this mode,<wbr/> the lens does not move unless the
7013 autofocus trigger action is called.<wbr/> When that trigger is
7014 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7015 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
7016 mode is optimized for focusing on objects very close to
7017 the camera.<wbr/></p>
7018 <p>When that trigger is activated,<wbr/> AF will transition to
7019 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
7020 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
7021 position to default,<wbr/> and sets the AF state to
7022 INACTIVE.<wbr/></p></span>
7025 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
7026 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7027 position continually to attempt to provide a
7028 constantly-in-focus image stream.<wbr/></p>
7029 <p>The focusing behavior should be suitable for good quality
7030 video recording; typically this means slower focus
7031 movement and no overshoots.<wbr/> When the AF trigger is not
7032 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
7033 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
7034 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
7035 the algorithm should immediately transition into
7036 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7037 lens position until a cancel AF trigger is received.<wbr/></p>
7038 <p>Once cancel is received,<wbr/> the algorithm should transition
7039 back to INACTIVE and resume passive scan.<wbr/> Note that this
7040 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
7041 ongoing PASSIVE_<wbr/>SCAN must immediately be
7042 canceled.<wbr/></p></span>
7045 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
7046 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7047 position continually to attempt to provide a
7048 constantly-in-focus image stream.<wbr/></p>
7049 <p>The focusing behavior should be suitable for still image
7050 capture; typically this means focusing as fast as
7051 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
7052 algorithm should start in INACTIVE state,<wbr/> and then
7053 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
7054 appropriate as it attempts to maintain focus.<wbr/> When the AF
7055 trigger is activated,<wbr/> the algorithm should finish its
7056 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
7057 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7058 lens position until a cancel AF trigger is received.<wbr/></p>
7059 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
7060 should transition back to INACTIVE and then act as if it
7061 has just been started.<wbr/></p></span>
7064 <span class="entry_type_enum_name">EDOF (v3.2)</span>
7065 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
7066 <p>The camera device will produce images with an extended
7067 depth of field automatically; no special focusing
7068 operations need to be done before taking a picture.<wbr/></p>
7069 <p>AF triggers are ignored,<wbr/> and the AF state will always be
7070 INACTIVE.<wbr/></p></span>
7074 </td> <!-- entry_type -->
7076 <td class="entry_description">
7077 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
7078 mode it is set to.<wbr/></p>
7081 <td class="entry_units">
7084 <td class="entry_range">
7085 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
7088 <td class="entry_hal_version">
7092 <td class="entry_tags">
7093 <ul class="entry_tags">
7094 <li><a href="#tag_BC">BC</a></li>
7099 <tr class="entries_header">
7100 <th class="th_details" colspan="6">Details</th>
7102 <tr class="entry_cont">
7103 <td class="entry_details" colspan="6">
7104 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
7105 (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
7106 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
7107 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
7108 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>
7109 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
7110 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
7111 in result metadata.<wbr/></p>
7115 <tr class="entries_header">
7116 <th class="th_details" colspan="6">HAL Implementation Details</th>
7118 <tr class="entry_cont">
7119 <td class="entry_details" colspan="6">
7120 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
7121 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
7122 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
7123 <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
7124 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
7125 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
7126 the same focal plane remains in focus.<wbr/></p>
7127 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
7128 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
7129 (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
7130 same lock behavior as above.<wbr/></p>
7131 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
7132 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/>
7133 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
7134 manual control.<wbr/></p>
7135 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
7136 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
7137 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
7138 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
7139 that will arise on camera modules with open-loop VCMs.<wbr/></p>
7143 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7144 <!-- end of entry -->
7147 <tr class="entry" id="dynamic_android.control.afRegions">
7148 <td class="entry_name
7150 android.<wbr/>control.<wbr/>af<wbr/>Regions
7152 <td class="entry_type">
7153 <span class="entry_type_name">int32</span>
7154 <span class="entry_type_container">x</span>
7156 <span class="entry_type_array">
7159 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7166 </td> <!-- entry_type -->
7168 <td class="entry_description">
7169 <p>List of metering areas to use for auto-focus.<wbr/></p>
7172 <td class="entry_units">
7173 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7176 <td class="entry_range">
7177 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7178 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7181 <td class="entry_hal_version">
7185 <td class="entry_tags">
7186 <ul class="entry_tags">
7187 <li><a href="#tag_BC">BC</a></li>
7192 <tr class="entries_header">
7193 <th class="th_details" colspan="6">Details</th>
7195 <tr class="entry_cont">
7196 <td class="entry_details" colspan="6">
7197 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
7198 Otherwise will always be present.<wbr/></p>
7199 <p>The maximum number of focus areas supported by the device is determined by the value
7200 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
7201 <p>The coordinate system is based on the active pixel array,<wbr/>
7202 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7203 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7204 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7205 bottom-right pixel in the active pixel array.<wbr/></p>
7206 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
7207 for every pixel in the area.<wbr/> This means that a large metering area
7208 with the same weight as a smaller area will have more effect in
7209 the metering result.<wbr/> Metering areas can partially overlap and the
7210 camera device will add the weights in the overlap region.<wbr/></p>
7211 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
7212 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
7214 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7215 camera device.<wbr/></p>
7216 <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
7217 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7218 region and output only the intersection rectangle as the metering region in the result
7219 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7220 not reported in the result metadata.<wbr/></p>
7224 <tr class="entries_header">
7225 <th class="th_details" colspan="6">HAL Implementation Details</th>
7227 <tr class="entry_cont">
7228 <td class="entry_details" colspan="6">
7229 <p>The HAL level representation of MeteringRectangle[] is a
7230 int[5 * area_<wbr/>count].<wbr/>
7231 Every five elements represent a metering region of
7232 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7233 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7234 exclusive on xmax and ymax.<wbr/></p>
7238 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7239 <!-- end of entry -->
7242 <tr class="entry" id="dynamic_android.control.afTrigger">
7243 <td class="entry_name
7245 android.<wbr/>control.<wbr/>af<wbr/>Trigger
7247 <td class="entry_type">
7248 <span class="entry_type_name entry_type_name_enum">byte</span>
7250 <span class="entry_type_visibility"> [public]</span>
7253 <span class="entry_type_hwlevel">[legacy] </span>
7257 <ul class="entry_type_enum">
7259 <span class="entry_type_enum_name">IDLE (v3.2)</span>
7260 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7263 <span class="entry_type_enum_name">START (v3.2)</span>
7264 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7267 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
7268 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7269 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7273 </td> <!-- entry_type -->
7275 <td class="entry_description">
7276 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7279 <td class="entry_units">
7282 <td class="entry_range">
7285 <td class="entry_hal_version">
7289 <td class="entry_tags">
7290 <ul class="entry_tags">
7291 <li><a href="#tag_BC">BC</a></li>
7296 <tr class="entries_header">
7297 <th class="th_details" colspan="6">Details</th>
7299 <tr class="entry_cont">
7300 <td class="entry_details" colspan="6">
7301 <p>This entry is normally set to IDLE,<wbr/> or is not
7302 included at all in the request settings.<wbr/></p>
7303 <p>When included and set to START,<wbr/> the camera device will trigger the
7304 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7305 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7306 and return to its initial AF state.<wbr/></p>
7307 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7308 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7309 START for multiple captures in a row means restarting the AF operation over
7310 and over again.<wbr/></p>
7311 <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>
7312 <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>
7313 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7314 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7315 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7316 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7317 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7321 <tr class="entries_header">
7322 <th class="th_details" colspan="6">HAL Implementation Details</th>
7324 <tr class="entry_cont">
7325 <td class="entry_details" colspan="6">
7326 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7327 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
7328 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7329 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7330 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7334 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7335 <!-- end of entry -->
7338 <tr class="entry" id="dynamic_android.control.afState">
7339 <td class="entry_name
7341 android.<wbr/>control.<wbr/>af<wbr/>State
7343 <td class="entry_type">
7344 <span class="entry_type_name entry_type_name_enum">byte</span>
7346 <span class="entry_type_visibility"> [public]</span>
7349 <span class="entry_type_hwlevel">[legacy] </span>
7353 <ul class="entry_type_enum">
7355 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
7356 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7358 <p>When a camera device is opened,<wbr/> it starts in this
7359 state.<wbr/> This is a transient state,<wbr/> the camera device may
7360 skip reporting this state in capture
7361 result.<wbr/></p></span>
7364 <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
7365 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7366 camera device in a continuous autofocus mode.<wbr/></p>
7367 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7368 state,<wbr/> the camera device may skip reporting this state in
7369 capture result.<wbr/></p></span>
7372 <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
7373 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7374 restart scanning at any time.<wbr/></p>
7375 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7376 state,<wbr/> the camera device may skip reporting this state in
7377 capture result.<wbr/></p></span>
7380 <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
7381 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7382 triggered by AF trigger.<wbr/></p>
7383 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7384 state,<wbr/> the camera device may skip reporting this state in
7385 capture result.<wbr/></p></span>
7388 <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
7389 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7391 <p>This state is reached only after an explicit START AF trigger has been
7392 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7393 <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
7394 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>
7397 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
7398 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7400 <p>This state is reached only after an explicit START AF trigger has been
7401 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7402 <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
7403 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>
7406 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
7407 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7408 and may restart scanning at any time.<wbr/></p>
7409 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7410 device may skip reporting this state in capture result.<wbr/></p>
7411 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
7412 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7416 </td> <!-- entry_type -->
7418 <td class="entry_description">
7419 <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7422 <td class="entry_units">
7425 <td class="entry_range">
7428 <td class="entry_hal_version">
7432 <td class="entry_tags">
7436 <tr class="entries_header">
7437 <th class="th_details" colspan="6">Details</th>
7439 <tr class="entry_cont">
7440 <td class="entry_details" colspan="6">
7441 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7442 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7443 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
7444 the algorithm states to INACTIVE.<wbr/></p>
7445 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7446 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7447 seen in a result.<wbr/></p>
7448 <p>The state in the result is the state for this image (in sync with this image): if
7449 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7451 <p>Below are state transition tables for different AF modes.<wbr/></p>
7452 <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>
7456 <th align="center">State</th>
7457 <th align="center">Transition Cause</th>
7458 <th align="center">New State</th>
7459 <th align="center">Notes</th>
7464 <td align="center">INACTIVE</td>
7465 <td align="center"></td>
7466 <td align="center">INACTIVE</td>
7467 <td align="center">Never changes</td>
7471 <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>
7475 <th align="center">State</th>
7476 <th align="center">Transition Cause</th>
7477 <th align="center">New State</th>
7478 <th align="center">Notes</th>
7483 <td align="center">INACTIVE</td>
7484 <td align="center">AF_<wbr/>TRIGGER</td>
7485 <td align="center">ACTIVE_<wbr/>SCAN</td>
7486 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7489 <td align="center">ACTIVE_<wbr/>SCAN</td>
7490 <td align="center">AF sweep done</td>
7491 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7492 <td align="center">Focused,<wbr/> Lens now locked</td>
7495 <td align="center">ACTIVE_<wbr/>SCAN</td>
7496 <td align="center">AF sweep done</td>
7497 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7498 <td align="center">Not focused,<wbr/> Lens now locked</td>
7501 <td align="center">ACTIVE_<wbr/>SCAN</td>
7502 <td align="center">AF_<wbr/>CANCEL</td>
7503 <td align="center">INACTIVE</td>
7504 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7507 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7508 <td align="center">AF_<wbr/>CANCEL</td>
7509 <td align="center">INACTIVE</td>
7510 <td align="center">Cancel/<wbr/>reset AF</td>
7513 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7514 <td align="center">AF_<wbr/>TRIGGER</td>
7515 <td align="center">ACTIVE_<wbr/>SCAN</td>
7516 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7519 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7520 <td align="center">AF_<wbr/>CANCEL</td>
7521 <td align="center">INACTIVE</td>
7522 <td align="center">Cancel/<wbr/>reset AF</td>
7525 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7526 <td align="center">AF_<wbr/>TRIGGER</td>
7527 <td align="center">ACTIVE_<wbr/>SCAN</td>
7528 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7531 <td align="center">Any state</td>
7532 <td align="center">Mode change</td>
7533 <td align="center">INACTIVE</td>
7534 <td align="center"></td>
7538 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7539 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7540 can be skipped in that manner is called a transient state.<wbr/></p>
7541 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7542 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7543 one or more transient states between two results.<wbr/> See below table for examples:</p>
7547 <th align="center">State</th>
7548 <th align="center">Transition Cause</th>
7549 <th align="center">New State</th>
7550 <th align="center">Notes</th>
7555 <td align="center">INACTIVE</td>
7556 <td align="center">AF_<wbr/>TRIGGER</td>
7557 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7558 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7561 <td align="center">INACTIVE</td>
7562 <td align="center">AF_<wbr/>TRIGGER</td>
7563 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7564 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7567 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7568 <td align="center">AF_<wbr/>TRIGGER</td>
7569 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7570 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7573 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7574 <td align="center">AF_<wbr/>TRIGGER</td>
7575 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7576 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7580 <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>
7584 <th align="center">State</th>
7585 <th align="center">Transition Cause</th>
7586 <th align="center">New State</th>
7587 <th align="center">Notes</th>
7592 <td align="center">INACTIVE</td>
7593 <td align="center">Camera device initiates new scan</td>
7594 <td align="center">PASSIVE_<wbr/>SCAN</td>
7595 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7598 <td align="center">INACTIVE</td>
7599 <td align="center">AF_<wbr/>TRIGGER</td>
7600 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7601 <td align="center">AF state query,<wbr/> Lens now locked</td>
7604 <td align="center">PASSIVE_<wbr/>SCAN</td>
7605 <td align="center">Camera device completes current scan</td>
7606 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7607 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7610 <td align="center">PASSIVE_<wbr/>SCAN</td>
7611 <td align="center">Camera device fails current scan</td>
7612 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7613 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7616 <td align="center">PASSIVE_<wbr/>SCAN</td>
7617 <td align="center">AF_<wbr/>TRIGGER</td>
7618 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7619 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7622 <td align="center">PASSIVE_<wbr/>SCAN</td>
7623 <td align="center">AF_<wbr/>TRIGGER</td>
7624 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7625 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7628 <td align="center">PASSIVE_<wbr/>SCAN</td>
7629 <td align="center">AF_<wbr/>CANCEL</td>
7630 <td align="center">INACTIVE</td>
7631 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7634 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7635 <td align="center">Camera device initiates new scan</td>
7636 <td align="center">PASSIVE_<wbr/>SCAN</td>
7637 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7640 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7641 <td align="center">Camera device initiates new scan</td>
7642 <td align="center">PASSIVE_<wbr/>SCAN</td>
7643 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7646 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7647 <td align="center">AF_<wbr/>TRIGGER</td>
7648 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7649 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7652 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7653 <td align="center">AF_<wbr/>TRIGGER</td>
7654 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7655 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7658 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7659 <td align="center">AF_<wbr/>TRIGGER</td>
7660 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7661 <td align="center">No effect</td>
7664 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7665 <td align="center">AF_<wbr/>CANCEL</td>
7666 <td align="center">INACTIVE</td>
7667 <td align="center">Restart AF scan</td>
7670 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7671 <td align="center">AF_<wbr/>TRIGGER</td>
7672 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7673 <td align="center">No effect</td>
7676 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7677 <td align="center">AF_<wbr/>CANCEL</td>
7678 <td align="center">INACTIVE</td>
7679 <td align="center">Restart AF scan</td>
7683 <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>
7687 <th align="center">State</th>
7688 <th align="center">Transition Cause</th>
7689 <th align="center">New State</th>
7690 <th align="center">Notes</th>
7695 <td align="center">INACTIVE</td>
7696 <td align="center">Camera device initiates new scan</td>
7697 <td align="center">PASSIVE_<wbr/>SCAN</td>
7698 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7701 <td align="center">INACTIVE</td>
7702 <td align="center">AF_<wbr/>TRIGGER</td>
7703 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7704 <td align="center">AF state query,<wbr/> Lens now locked</td>
7707 <td align="center">PASSIVE_<wbr/>SCAN</td>
7708 <td align="center">Camera device completes current scan</td>
7709 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7710 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7713 <td align="center">PASSIVE_<wbr/>SCAN</td>
7714 <td align="center">Camera device fails current scan</td>
7715 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7716 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7719 <td align="center">PASSIVE_<wbr/>SCAN</td>
7720 <td align="center">AF_<wbr/>TRIGGER</td>
7721 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7722 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7725 <td align="center">PASSIVE_<wbr/>SCAN</td>
7726 <td align="center">AF_<wbr/>TRIGGER</td>
7727 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7728 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7731 <td align="center">PASSIVE_<wbr/>SCAN</td>
7732 <td align="center">AF_<wbr/>CANCEL</td>
7733 <td align="center">INACTIVE</td>
7734 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7737 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7738 <td align="center">Camera device initiates new scan</td>
7739 <td align="center">PASSIVE_<wbr/>SCAN</td>
7740 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7743 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7744 <td align="center">Camera device initiates new scan</td>
7745 <td align="center">PASSIVE_<wbr/>SCAN</td>
7746 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7749 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7750 <td align="center">AF_<wbr/>TRIGGER</td>
7751 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7752 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7755 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7756 <td align="center">AF_<wbr/>TRIGGER</td>
7757 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7758 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7761 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7762 <td align="center">AF_<wbr/>TRIGGER</td>
7763 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7764 <td align="center">No effect</td>
7767 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7768 <td align="center">AF_<wbr/>CANCEL</td>
7769 <td align="center">INACTIVE</td>
7770 <td align="center">Restart AF scan</td>
7773 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7774 <td align="center">AF_<wbr/>TRIGGER</td>
7775 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7776 <td align="center">No effect</td>
7779 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7780 <td align="center">AF_<wbr/>CANCEL</td>
7781 <td align="center">INACTIVE</td>
7782 <td align="center">Restart AF scan</td>
7786 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7787 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7788 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7789 will be evaluated in the context of the new mode in the request.<wbr/>
7790 See below table for examples:</p>
7794 <th align="center">State</th>
7795 <th align="center">Transition Cause</th>
7796 <th align="center">New State</th>
7797 <th align="center">Notes</th>
7802 <td align="center">any state</td>
7803 <td align="center">CAF-->AUTO mode switch</td>
7804 <td align="center">INACTIVE</td>
7805 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7808 <td align="center">any state</td>
7809 <td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td>
7810 <td align="center">trigger-reachable states from INACTIVE</td>
7811 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7814 <td align="center">any state</td>
7815 <td align="center">AUTO-->CAF mode switch</td>
7816 <td align="center">passively reachable states from INACTIVE</td>
7817 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7825 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7826 <!-- end of entry -->
7829 <tr class="entry" id="dynamic_android.control.afTriggerId">
7830 <td class="entry_name
7831 entry_name_deprecated
7833 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7835 <td class="entry_type">
7836 <span class="entry_type_name">int32</span>
7838 <span class="entry_type_visibility"> [system]</span>
7842 <span class="entry_type_deprecated">[deprecated] </span>
7846 </td> <!-- entry_type -->
7848 <td class="entry_description">
7849 <p>The ID sent with the latest
7850 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7853 <td class="entry_units">
7856 <td class="entry_range">
7857 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7860 <td class="entry_hal_version">
7864 <td class="entry_tags">
7868 <tr class="entries_header">
7869 <th class="th_details" colspan="6">Details</th>
7871 <tr class="entry_cont">
7872 <td class="entry_details" colspan="6">
7873 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7874 received yet by HAL.<wbr/> Always updated even if AF algorithm
7875 ignores the trigger</p>
7880 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7881 <!-- end of entry -->
7884 <tr class="entry" id="dynamic_android.control.awbLock">
7885 <td class="entry_name
7887 android.<wbr/>control.<wbr/>awb<wbr/>Lock
7889 <td class="entry_type">
7890 <span class="entry_type_name entry_type_name_enum">byte</span>
7892 <span class="entry_type_visibility"> [public as boolean]</span>
7895 <span class="entry_type_hwlevel">[legacy] </span>
7899 <ul class="entry_type_enum">
7901 <span class="entry_type_enum_name">OFF (v3.2)</span>
7902 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7903 algorithm is free to update its parameters if in AUTO
7904 mode.<wbr/></p></span>
7907 <span class="entry_type_enum_name">ON (v3.2)</span>
7908 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7909 algorithm will not update its parameters while the lock
7910 is active.<wbr/></p></span>
7914 </td> <!-- entry_type -->
7916 <td class="entry_description">
7917 <p>Whether auto-white balance (AWB) is currently locked to its
7918 latest calculated values.<wbr/></p>
7921 <td class="entry_units">
7924 <td class="entry_range">
7927 <td class="entry_hal_version">
7931 <td class="entry_tags">
7932 <ul class="entry_tags">
7933 <li><a href="#tag_BC">BC</a></li>
7938 <tr class="entries_header">
7939 <th class="th_details" colspan="6">Details</th>
7941 <tr class="entry_cont">
7942 <td class="entry_details" colspan="6">
7943 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7944 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7945 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7946 get locked do not necessarily correspond to the settings that were present in the
7947 latest capture result received from the camera device,<wbr/> since additional captures
7948 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7949 application is switching between automatic and manual control and wishes to eliminate
7950 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7952 <li>Starting in auto-AWB mode:</li>
7954 <li>Wait for the first result to be output that has the AWB locked</li>
7955 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7956 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7958 <p>Note that AWB lock is only meaningful when
7959 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7960 AWB is already fixed to a specific setting.<wbr/></p>
7961 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7966 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7967 <!-- end of entry -->
7970 <tr class="entry" id="dynamic_android.control.awbMode">
7971 <td class="entry_name
7973 android.<wbr/>control.<wbr/>awb<wbr/>Mode
7975 <td class="entry_type">
7976 <span class="entry_type_name entry_type_name_enum">byte</span>
7978 <span class="entry_type_visibility"> [public]</span>
7981 <span class="entry_type_hwlevel">[legacy] </span>
7985 <ul class="entry_type_enum">
7987 <span class="entry_type_enum_name">OFF (v3.2)</span>
7988 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7989 <p>The application-selected color transform matrix
7990 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7991 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7992 device for manual white balance control.<wbr/></p></span>
7995 <span class="entry_type_enum_name">AUTO (v3.2)</span>
7996 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7997 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7998 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7999 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8000 values used by the camera device for the transform and gains
8001 will be available in the capture result for this request.<wbr/></p></span>
8004 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
8005 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8006 the camera device uses incandescent light as the assumed scene
8007 illumination for white balance.<wbr/></p>
8008 <p>While the exact white balance transforms are up to the
8009 camera device,<wbr/> they will approximately match the CIE
8010 standard illuminant A.<wbr/></p>
8011 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8012 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8013 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8014 values used by the camera device for the transform and gains
8015 will be available in the capture result for this request.<wbr/></p></span>
8018 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
8019 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8020 the camera device uses fluorescent light as the assumed scene
8021 illumination for white balance.<wbr/></p>
8022 <p>While the exact white balance transforms are up to the
8023 camera device,<wbr/> they will approximately match the CIE
8024 standard illuminant F2.<wbr/></p>
8025 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8026 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8027 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8028 values used by the camera device for the transform and gains
8029 will be available in the capture result for this request.<wbr/></p></span>
8032 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
8033 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8034 the camera device uses warm fluorescent light as the assumed scene
8035 illumination for white balance.<wbr/></p>
8036 <p>While the exact white balance transforms are up to the
8037 camera device,<wbr/> they will approximately match the CIE
8038 standard illuminant F4.<wbr/></p>
8039 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8040 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8041 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8042 values used by the camera device for the transform and gains
8043 will be available in the capture result for this request.<wbr/></p></span>
8046 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
8047 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8048 the camera device uses daylight light as the assumed scene
8049 illumination for white balance.<wbr/></p>
8050 <p>While the exact white balance transforms are up to the
8051 camera device,<wbr/> they will approximately match the CIE
8052 standard illuminant D65.<wbr/></p>
8053 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8054 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8055 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8056 values used by the camera device for the transform and gains
8057 will be available in the capture result for this request.<wbr/></p></span>
8060 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
8061 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8062 the camera device uses cloudy daylight light as the assumed scene
8063 illumination for white balance.<wbr/></p>
8064 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8065 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8066 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8067 values used by the camera device for the transform and gains
8068 will be available in the capture result for this request.<wbr/></p></span>
8071 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
8072 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8073 the camera device uses twilight light as the assumed scene
8074 illumination for white balance.<wbr/></p>
8075 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8076 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8077 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8078 values used by the camera device for the transform and gains
8079 will be available in the capture result for this request.<wbr/></p></span>
8082 <span class="entry_type_enum_name">SHADE (v3.2)</span>
8083 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8084 the camera device uses shade light as the assumed scene
8085 illumination for white balance.<wbr/></p>
8086 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8087 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8088 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8089 values used by the camera device for the transform and gains
8090 will be available in the capture result for this request.<wbr/></p></span>
8094 </td> <!-- entry_type -->
8096 <td class="entry_description">
8097 <p>Whether auto-white balance (AWB) is currently setting the color
8098 transform fields,<wbr/> and what its illumination target
8102 <td class="entry_units">
8105 <td class="entry_range">
8106 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
8109 <td class="entry_hal_version">
8113 <td class="entry_tags">
8114 <ul class="entry_tags">
8115 <li><a href="#tag_BC">BC</a></li>
8120 <tr class="entries_header">
8121 <th class="th_details" colspan="6">Details</th>
8123 <tr class="entry_cont">
8124 <td class="entry_details" colspan="6">
8125 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
8126 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
8127 routine is enabled,<wbr/> overriding the application's selected
8128 <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
8129 <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>
8130 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
8131 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
8132 setting AE mode to OFF.<wbr/></p>
8133 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
8134 routine is disabled.<wbr/> The application manually controls the white
8135 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>
8136 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
8137 <p>When set to any other modes,<wbr/> the camera device's auto-white
8138 balance routine is disabled.<wbr/> The camera device uses each
8139 particular illumination target for white balance
8140 adjustment.<wbr/> The application's values for
8141 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
8142 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
8143 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
8148 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8149 <!-- end of entry -->
8152 <tr class="entry" id="dynamic_android.control.awbRegions">
8153 <td class="entry_name
8155 android.<wbr/>control.<wbr/>awb<wbr/>Regions
8157 <td class="entry_type">
8158 <span class="entry_type_name">int32</span>
8159 <span class="entry_type_container">x</span>
8161 <span class="entry_type_array">
8164 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
8171 </td> <!-- entry_type -->
8173 <td class="entry_description">
8174 <p>List of metering areas to use for auto-white-balance illuminant
8175 estimation.<wbr/></p>
8178 <td class="entry_units">
8179 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
8182 <td class="entry_range">
8183 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
8184 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
8187 <td class="entry_hal_version">
8191 <td class="entry_tags">
8192 <ul class="entry_tags">
8193 <li><a href="#tag_BC">BC</a></li>
8198 <tr class="entries_header">
8199 <th class="th_details" colspan="6">Details</th>
8201 <tr class="entry_cont">
8202 <td class="entry_details" colspan="6">
8203 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
8204 Otherwise will always be present.<wbr/></p>
8205 <p>The maximum number of regions supported by the device is determined by the value
8206 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
8207 <p>The coordinate system is based on the active pixel array,<wbr/>
8208 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
8209 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8210 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
8211 bottom-right pixel in the active pixel array.<wbr/></p>
8212 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
8213 for every pixel in the area.<wbr/> This means that a large metering area
8214 with the same weight as a smaller area will have more effect in
8215 the metering result.<wbr/> Metering areas can partially overlap and the
8216 camera device will add the weights in the overlap region.<wbr/></p>
8217 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
8218 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
8219 0 weight is ignored.<wbr/></p>
8220 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
8221 camera device.<wbr/></p>
8222 <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
8223 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8224 region and output only the intersection rectangle as the metering region in the result
8225 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
8226 not reported in the result metadata.<wbr/></p>
8230 <tr class="entries_header">
8231 <th class="th_details" colspan="6">HAL Implementation Details</th>
8233 <tr class="entry_cont">
8234 <td class="entry_details" colspan="6">
8235 <p>The HAL level representation of MeteringRectangle[] is a
8236 int[5 * area_<wbr/>count].<wbr/>
8237 Every five elements represent a metering region of
8238 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8239 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
8240 exclusive on xmax and ymax.<wbr/></p>
8244 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8245 <!-- end of entry -->
8248 <tr class="entry" id="dynamic_android.control.captureIntent">
8249 <td class="entry_name
8251 android.<wbr/>control.<wbr/>capture<wbr/>Intent
8253 <td class="entry_type">
8254 <span class="entry_type_name entry_type_name_enum">byte</span>
8256 <span class="entry_type_visibility"> [public]</span>
8259 <span class="entry_type_hwlevel">[legacy] </span>
8263 <ul class="entry_type_enum">
8265 <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
8266 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
8267 categories.<wbr/> The camera device will default to preview-like
8268 behavior.<wbr/></p></span>
8271 <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
8272 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
8273 <p>The precapture trigger may be used to start off a metering
8274 w/<wbr/>flash sequence.<wbr/></p></span>
8277 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
8278 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8280 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8283 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
8284 <span class="entry_type_enum_notes"><p>This request is for a video recording
8285 use case.<wbr/></p></span>
8288 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
8289 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8290 image while recording video) use case.<wbr/></p>
8291 <p>The camera device should take the highest-quality image
8292 possible (given the other settings) without disrupting the
8293 frame rate of video recording.<wbr/> </p></span>
8296 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
8297 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8298 application will stream full-resolution images and
8299 reprocess one or several later for a final
8300 capture.<wbr/></p></span>
8303 <span class="entry_type_enum_name">MANUAL (v3.2)</span>
8304 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8305 the applications want to directly control the capture parameters.<wbr/></p>
8306 <p>For example,<wbr/> the application may wish to manually control
8307 <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>
8311 </td> <!-- entry_type -->
8313 <td class="entry_description">
8314 <p>Information to the camera device 3A (auto-exposure,<wbr/>
8315 auto-focus,<wbr/> auto-white balance) routines about the purpose
8316 of this capture,<wbr/> to help the camera device to decide optimal 3A
8320 <td class="entry_units">
8323 <td class="entry_range">
8326 <td class="entry_hal_version">
8330 <td class="entry_tags">
8331 <ul class="entry_tags">
8332 <li><a href="#tag_BC">BC</a></li>
8337 <tr class="entries_header">
8338 <th class="th_details" colspan="6">Details</th>
8340 <tr class="entry_cont">
8341 <td class="entry_details" colspan="6">
8342 <p>This control (except for MANUAL) is only effective if
8343 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8344 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
8345 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
8346 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
8347 always supported.<wbr/></p>
8352 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8353 <!-- end of entry -->
8356 <tr class="entry" id="dynamic_android.control.awbState">
8357 <td class="entry_name
8359 android.<wbr/>control.<wbr/>awb<wbr/>State
8361 <td class="entry_type">
8362 <span class="entry_type_name entry_type_name_enum">byte</span>
8364 <span class="entry_type_visibility"> [public]</span>
8367 <span class="entry_type_hwlevel">[limited] </span>
8371 <ul class="entry_type_enum">
8373 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
8374 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8375 <p>When a camera device is opened,<wbr/> it starts in this
8376 state.<wbr/> This is a transient state,<wbr/> the camera device may
8377 skip reporting this state in capture
8378 result.<wbr/></p></span>
8381 <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
8382 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8383 values for the current scene.<wbr/></p>
8384 <p>This is a transient state,<wbr/> the camera device
8385 may skip reporting this state in capture result.<wbr/></p></span>
8388 <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
8389 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8390 current scene.<wbr/></p></span>
8393 <span class="entry_type_enum_name">LOCKED (v3.2)</span>
8394 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8398 </td> <!-- entry_type -->
8400 <td class="entry_description">
8401 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8404 <td class="entry_units">
8407 <td class="entry_range">
8410 <td class="entry_hal_version">
8414 <td class="entry_tags">
8418 <tr class="entries_header">
8419 <th class="th_details" colspan="6">Details</th>
8421 <tr class="entry_cont">
8422 <td class="entry_details" colspan="6">
8423 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8424 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8425 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
8426 the algorithm states to INACTIVE.<wbr/></p>
8427 <p>The camera device can do several state transitions between two results,<wbr/> if it is
8428 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8430 <p>The state in the result is the state for this image (in sync with this image): if
8431 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8432 be good to use.<wbr/></p>
8433 <p>Below are state transition tables for different AWB modes.<wbr/></p>
8434 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8438 <th align="center">State</th>
8439 <th align="center">Transition Cause</th>
8440 <th align="center">New State</th>
8441 <th align="center">Notes</th>
8446 <td align="center">INACTIVE</td>
8447 <td align="center"></td>
8448 <td align="center">INACTIVE</td>
8449 <td align="center">Camera device auto white balance algorithm is disabled</td>
8453 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8457 <th align="center">State</th>
8458 <th align="center">Transition Cause</th>
8459 <th align="center">New State</th>
8460 <th align="center">Notes</th>
8465 <td align="center">INACTIVE</td>
8466 <td align="center">Camera device initiates AWB scan</td>
8467 <td align="center">SEARCHING</td>
8468 <td align="center">Values changing</td>
8471 <td align="center">INACTIVE</td>
8472 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8473 <td align="center">LOCKED</td>
8474 <td align="center">Values locked</td>
8477 <td align="center">SEARCHING</td>
8478 <td align="center">Camera device finishes AWB scan</td>
8479 <td align="center">CONVERGED</td>
8480 <td align="center">Good values,<wbr/> not changing</td>
8483 <td align="center">SEARCHING</td>
8484 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8485 <td align="center">LOCKED</td>
8486 <td align="center">Values locked</td>
8489 <td align="center">CONVERGED</td>
8490 <td align="center">Camera device initiates AWB scan</td>
8491 <td align="center">SEARCHING</td>
8492 <td align="center">Values changing</td>
8495 <td align="center">CONVERGED</td>
8496 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8497 <td align="center">LOCKED</td>
8498 <td align="center">Values locked</td>
8501 <td align="center">LOCKED</td>
8502 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8503 <td align="center">SEARCHING</td>
8504 <td align="center">Values not good after unlock</td>
8508 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8509 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8510 can be skipped in that manner is called a transient state.<wbr/></p>
8511 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8512 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8513 transient states between two results.<wbr/> See below table for examples:</p>
8517 <th align="center">State</th>
8518 <th align="center">Transition Cause</th>
8519 <th align="center">New State</th>
8520 <th align="center">Notes</th>
8525 <td align="center">INACTIVE</td>
8526 <td align="center">Camera device finished AWB scan</td>
8527 <td align="center">CONVERGED</td>
8528 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8531 <td align="center">LOCKED</td>
8532 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8533 <td align="center">CONVERGED</td>
8534 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8542 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8543 <!-- end of entry -->
8546 <tr class="entry" id="dynamic_android.control.effectMode">
8547 <td class="entry_name
8549 android.<wbr/>control.<wbr/>effect<wbr/>Mode
8551 <td class="entry_type">
8552 <span class="entry_type_name entry_type_name_enum">byte</span>
8554 <span class="entry_type_visibility"> [public]</span>
8557 <span class="entry_type_hwlevel">[legacy] </span>
8561 <ul class="entry_type_enum">
8563 <span class="entry_type_enum_name">OFF (v3.2)</span>
8564 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8567 <span class="entry_type_enum_name">MONO (v3.2)</span>
8568 <span class="entry_type_enum_optional">[optional]</span>
8569 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8570 a single color.<wbr/></p>
8571 <p>This will typically be grayscale.<wbr/></p></span>
8574 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
8575 <span class="entry_type_enum_optional">[optional]</span>
8576 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8577 are inverted.<wbr/></p></span>
8580 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
8581 <span class="entry_type_enum_optional">[optional]</span>
8582 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8583 image is wholly or partially reversed in
8584 tone.<wbr/></p></span>
8587 <span class="entry_type_enum_name">SEPIA (v3.2)</span>
8588 <span class="entry_type_enum_optional">[optional]</span>
8589 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8590 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8593 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
8594 <span class="entry_type_enum_optional">[optional]</span>
8595 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8596 discrete regions of tone rather than a continuous
8597 gradient of tones.<wbr/></p></span>
8600 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
8601 <span class="entry_type_enum_optional">[optional]</span>
8602 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8603 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8606 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
8607 <span class="entry_type_enum_optional">[optional]</span>
8608 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8609 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8612 <span class="entry_type_enum_name">AQUA (v3.2)</span>
8613 <span class="entry_type_enum_optional">[optional]</span>
8614 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8618 </td> <!-- entry_type -->
8620 <td class="entry_description">
8621 <p>A special color effect to apply.<wbr/></p>
8624 <td class="entry_units">
8627 <td class="entry_range">
8628 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8631 <td class="entry_hal_version">
8635 <td class="entry_tags">
8636 <ul class="entry_tags">
8637 <li><a href="#tag_BC">BC</a></li>
8642 <tr class="entries_header">
8643 <th class="th_details" colspan="6">Details</th>
8645 <tr class="entry_cont">
8646 <td class="entry_details" colspan="6">
8647 <p>When this mode is set,<wbr/> a color effect will be applied
8648 to images produced by the camera device.<wbr/> The interpretation
8649 and implementation of these color effects is left to the
8650 implementor of the camera device,<wbr/> and should not be
8651 depended on to be consistent (or present) across all
8657 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8658 <!-- end of entry -->
8661 <tr class="entry" id="dynamic_android.control.mode">
8662 <td class="entry_name
8664 android.<wbr/>control.<wbr/>mode
8666 <td class="entry_type">
8667 <span class="entry_type_name entry_type_name_enum">byte</span>
8669 <span class="entry_type_visibility"> [public]</span>
8672 <span class="entry_type_hwlevel">[legacy] </span>
8676 <ul class="entry_type_enum">
8678 <span class="entry_type_enum_name">OFF (v3.2)</span>
8679 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8680 <p>All control by the device's metering and focusing (3A)
8681 routines is disabled,<wbr/> and no other settings in
8682 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8683 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8684 device to select post-processing values for processing
8685 blocks that do not allow for manual control,<wbr/> or are not
8686 exposed by the camera API.<wbr/></p>
8687 <p>However,<wbr/> the camera device's 3A routines may continue to
8688 collect statistics and update their internal state so that
8689 when control is switched to AUTO mode,<wbr/> good control values
8690 can be immediately applied.<wbr/></p></span>
8693 <span class="entry_type_enum_name">AUTO (v3.2)</span>
8694 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8695 <p>Manual control of capture parameters is disabled.<wbr/> All
8696 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8697 effect.<wbr/></p></span>
8700 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
8701 <span class="entry_type_enum_optional">[optional]</span>
8702 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8703 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8704 control.<wbr/>afMode controls; the camera device will ignore
8705 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8706 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8707 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8708 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8709 contain some modes other than DISABLED).<wbr/></p></span>
8712 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
8713 <span class="entry_type_enum_optional">[optional]</span>
8714 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8715 used by camera device background auto-exposure,<wbr/> auto-white balance and
8716 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8717 <p>Specifically,<wbr/> the 3A routines are locked to the last
8718 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8719 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8720 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8721 discarded by the camera device.<wbr/></p></span>
8725 </td> <!-- entry_type -->
8727 <td class="entry_description">
8728 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8732 <td class="entry_units">
8735 <td class="entry_range">
8736 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8739 <td class="entry_hal_version">
8743 <td class="entry_tags">
8744 <ul class="entry_tags">
8745 <li><a href="#tag_BC">BC</a></li>
8750 <tr class="entries_header">
8751 <th class="th_details" colspan="6">Details</th>
8753 <tr class="entry_cont">
8754 <td class="entry_details" colspan="6">
8755 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8756 by the camera device is disabled.<wbr/> The application must set the fields for
8757 capture parameters itself.<wbr/></p>
8758 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8759 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>
8760 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8761 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
8762 implements one of the scene mode settings (such as ACTION,<wbr/>
8763 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
8764 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8765 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8766 is that this frame will not be used by camera device background 3A statistics
8767 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8768 where the application doesn't want a 3A manual control capture to affect
8769 the subsequent auto 3A capture results.<wbr/></p>
8774 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8775 <!-- end of entry -->
8778 <tr class="entry" id="dynamic_android.control.sceneMode">
8779 <td class="entry_name
8781 android.<wbr/>control.<wbr/>scene<wbr/>Mode
8783 <td class="entry_type">
8784 <span class="entry_type_name entry_type_name_enum">byte</span>
8786 <span class="entry_type_visibility"> [public]</span>
8789 <span class="entry_type_hwlevel">[legacy] </span>
8793 <ul class="entry_type_enum">
8795 <span class="entry_type_enum_name">DISABLED (v3.2)</span>
8796 <span class="entry_type_enum_value">0</span>
8797 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8800 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
8801 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8802 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8803 auto-exposure routines.<wbr/></p>
8804 <p>If face detection statistics are disabled
8805 (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/>
8806 this should still operate correctly (but will not return
8807 face detection statistics to the framework).<wbr/></p>
8808 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8809 <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>
8810 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8813 <span class="entry_type_enum_name">ACTION (v3.2)</span>
8814 <span class="entry_type_enum_optional">[optional]</span>
8815 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8816 <p>Similar to SPORTS.<wbr/></p></span>
8819 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
8820 <span class="entry_type_enum_optional">[optional]</span>
8821 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8824 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
8825 <span class="entry_type_enum_optional">[optional]</span>
8826 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8829 <span class="entry_type_enum_name">NIGHT (v3.2)</span>
8830 <span class="entry_type_enum_optional">[optional]</span>
8831 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8834 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
8835 <span class="entry_type_enum_optional">[optional]</span>
8836 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8837 settings.<wbr/></p></span>
8840 <span class="entry_type_enum_name">THEATRE (v3.2)</span>
8841 <span class="entry_type_enum_optional">[optional]</span>
8842 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8843 remain off.<wbr/></p></span>
8846 <span class="entry_type_enum_name">BEACH (v3.2)</span>
8847 <span class="entry_type_enum_optional">[optional]</span>
8848 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8851 <span class="entry_type_enum_name">SNOW (v3.2)</span>
8852 <span class="entry_type_enum_optional">[optional]</span>
8853 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8856 <span class="entry_type_enum_name">SUNSET (v3.2)</span>
8857 <span class="entry_type_enum_optional">[optional]</span>
8858 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8861 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
8862 <span class="entry_type_enum_optional">[optional]</span>
8863 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8864 device motion (for example: due to hand shake).<wbr/></p></span>
8867 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
8868 <span class="entry_type_enum_optional">[optional]</span>
8869 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8872 <span class="entry_type_enum_name">SPORTS (v3.2)</span>
8873 <span class="entry_type_enum_optional">[optional]</span>
8874 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8875 <p>Similar to ACTION.<wbr/></p></span>
8878 <span class="entry_type_enum_name">PARTY (v3.2)</span>
8879 <span class="entry_type_enum_optional">[optional]</span>
8880 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8881 people.<wbr/></p></span>
8884 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
8885 <span class="entry_type_enum_optional">[optional]</span>
8886 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8887 is a flame.<wbr/></p></span>
8890 <span class="entry_type_enum_name">BARCODE (v3.2)</span>
8891 <span class="entry_type_enum_optional">[optional]</span>
8892 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8893 for use by camera applications that wish to read the
8894 barcode value.<wbr/></p></span>
8897 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
8898 <span class="entry_type_enum_deprecated">[deprecated]</span>
8899 <span class="entry_type_enum_optional">[optional]</span>
8900 <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>
8901 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8902 for high speed video recording.<wbr/></p>
8903 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p>
8904 <p>The supported high speed video sizes and fps ranges are specified in
8905 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8906 output frame rates,<wbr/> the application is only allowed to select video size
8907 and fps range combinations listed in this static metadata.<wbr/> The fps range
8908 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8909 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8910 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8911 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8912 and post-processing parameters is possible.<wbr/> All other controls operate the
8913 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8914 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8916 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8917 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8918 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8919 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8920 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8921 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8922 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8923 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8924 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8925 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8927 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8929 <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>
8930 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8931 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8932 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8934 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8935 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8936 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8937 the application need check if the video encoder is capable of supporting the
8938 high frame rate for a given video size,<wbr/> or it will end up with lower recording
8939 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8940 rate will be bounded by the screen refresh rate.<wbr/></p>
8941 <p>The camera device will only support up to 2 output high speed streams
8942 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8943 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8945 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8946 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8947 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>
8948 <li>The stream sizes are selected from the sizes reported by
8949 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8950 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
8952 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8953 <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/>
8954 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8955 and the returned capture result metadata will give the fps range choosen
8956 by the camera device.<wbr/></p>
8957 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8958 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8959 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8962 <span class="entry_type_enum_name">HDR (v3.2)</span>
8963 <span class="entry_type_enum_optional">[optional]</span>
8964 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8965 <p>In this scene mode,<wbr/> the camera device captures images
8966 that keep a larger range of scene illumination levels
8967 visible in the final image.<wbr/> For example,<wbr/> when taking a
8968 picture of a object in front of a bright window,<wbr/> both
8969 the object and the scene through the window may be
8970 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8971 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8972 HDR mode generally takes much longer to capture a single
8973 image,<wbr/> has no user control,<wbr/> and may have other artifacts
8974 depending on the HDR method used.<wbr/></p>
8975 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
8976 than regular captures.<wbr/></p>
8977 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8978 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8979 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8980 using a high dynamic range capture technique.<wbr/> On LEGACY
8981 devices,<wbr/> captures that target a JPEG-format output will
8982 be captured with HDR,<wbr/> and the capture intent is not
8984 <p>The HDR capture may involve the device capturing a burst
8985 of images internally and combining them into one,<wbr/> or it
8986 may involve the device using specialized high dynamic
8987 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8988 produced in response to a capture request submitted
8989 while in HDR mode.<wbr/></p>
8990 <p>Since substantial post-processing is generally needed to
8991 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
8992 outputs are supported for LIMITED/<wbr/>FULL device HDR
8993 captures,<wbr/> and only JPEG outputs are supported for LEGACY
8994 HDR captures.<wbr/> Using a RAW output for HDR capture is not
8995 supported.<wbr/></p>
8996 <p>Some devices may also support always-on HDR,<wbr/> which
8997 applies HDR processing at full frame rate.<wbr/> For these
8998 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
8999 produce an HDR output with no frame rate impact compared
9000 to normal operation,<wbr/> though the quality may be lower
9001 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
9002 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
9003 or capture intents,<wbr/> the images captured will be as if
9004 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
9007 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
9008 <span class="entry_type_enum_optional">[optional]</span>
9009 <span class="entry_type_enum_hidden">[hidden]</span>
9010 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
9011 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
9012 under low light conditions.<wbr/></p>
9013 <p>The camera device may be tuned to expose the images in a reduced
9014 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
9015 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/>
9016 the camera device auto-exposure routine tuning process may limit the actual
9017 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
9018 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
9019 low light may be under-exposed when the sensor max exposure time (bounded by the
9020 <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
9021 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
9022 camera device auto-exposure routine to increase the sensitivity up to the max
9023 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
9024 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
9025 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
9026 recommended that the application only use this scene mode when it is capable of
9027 reducing the noise level of the captured images.<wbr/></p>
9028 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9029 <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>
9030 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
9033 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
9034 <span class="entry_type_enum_optional">[optional]</span>
9035 <span class="entry_type_enum_hidden">[hidden]</span>
9036 <span class="entry_type_enum_value">100</span>
9037 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9038 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9039 customized scene modes.<wbr/></p></span>
9042 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
9043 <span class="entry_type_enum_optional">[optional]</span>
9044 <span class="entry_type_enum_hidden">[hidden]</span>
9045 <span class="entry_type_enum_value">127</span>
9046 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9047 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9048 customized scene modes.<wbr/></p></span>
9052 </td> <!-- entry_type -->
9054 <td class="entry_description">
9055 <p>Control for which scene mode is currently active.<wbr/></p>
9058 <td class="entry_units">
9061 <td class="entry_range">
9062 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
9065 <td class="entry_hal_version">
9069 <td class="entry_tags">
9070 <ul class="entry_tags">
9071 <li><a href="#tag_BC">BC</a></li>
9076 <tr class="entries_header">
9077 <th class="th_details" colspan="6">Details</th>
9079 <tr class="entry_cont">
9080 <td class="entry_details" colspan="6">
9081 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
9082 capture settings.<wbr/></p>
9083 <p>This is the mode that that is active when
9084 <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
9085 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>
9086 while in use.<wbr/></p>
9087 <p>The interpretation and implementation of these scene modes is left
9088 to the implementor of the camera device.<wbr/> Their behavior will not be
9089 consistent across all devices,<wbr/> and any given device may only implement
9090 a subset of these modes.<wbr/></p>
9094 <tr class="entries_header">
9095 <th class="th_details" colspan="6">HAL Implementation Details</th>
9097 <tr class="entry_cont">
9098 <td class="entry_details" colspan="6">
9099 <p>HAL implementations that include scene modes are expected to provide
9100 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9101 <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
9102 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
9103 <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
9104 HAL must list supported video size and fps range in
9105 <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/>
9106 if the HAL has two different sensor configurations for normal streaming mode and high
9107 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
9108 HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
9109 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
9110 <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
9111 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
9115 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9116 <!-- end of entry -->
9119 <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
9120 <td class="entry_name
9122 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
9124 <td class="entry_type">
9125 <span class="entry_type_name entry_type_name_enum">byte</span>
9127 <span class="entry_type_visibility"> [public]</span>
9130 <span class="entry_type_hwlevel">[legacy] </span>
9134 <ul class="entry_type_enum">
9136 <span class="entry_type_enum_name">OFF (v3.2)</span>
9137 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
9140 <span class="entry_type_enum_name">ON (v3.2)</span>
9141 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
9145 </td> <!-- entry_type -->
9147 <td class="entry_description">
9148 <p>Whether video stabilization is
9152 <td class="entry_units">
9155 <td class="entry_range">
9158 <td class="entry_hal_version">
9162 <td class="entry_tags">
9163 <ul class="entry_tags">
9164 <li><a href="#tag_BC">BC</a></li>
9169 <tr class="entries_header">
9170 <th class="th_details" colspan="6">Details</th>
9172 <tr class="entry_cont">
9173 <td class="entry_details" colspan="6">
9174 <p>Video stabilization automatically warps images from
9175 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
9176 <p>If enabled,<wbr/> video stabilization can modify the
9177 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
9178 <p>Switching between different video stabilization modes may take several
9179 frames to initialize,<wbr/> the camera device will report the current mode
9180 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
9181 the video stabilization modes in the first several capture results may
9182 still be "OFF",<wbr/> and it will become "ON" when the initialization is
9184 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
9185 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
9186 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
9187 the recording resolution is less than or equal to 1920 x 1080 (width less than
9188 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
9189 frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
9190 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
9191 OFF if the recording output is not stabilized,<wbr/> or if there are no output
9192 Surface types that can be stabilized.<wbr/></p>
9193 <p>If a camera device supports both this mode and OIS
9194 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
9195 produce undesirable interaction,<wbr/> so it is recommended not to enable
9196 both at the same time.<wbr/></p>
9201 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9202 <!-- end of entry -->
9205 <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
9206 <td class="entry_name
9208 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
9210 <td class="entry_type">
9211 <span class="entry_type_name">int32</span>
9213 <span class="entry_type_visibility"> [public]</span>
9220 </td> <!-- entry_type -->
9222 <td class="entry_description">
9223 <p>The amount of additional sensitivity boost applied to output images
9224 after RAW sensor data is captured.<wbr/></p>
9227 <td class="entry_units">
9228 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
9231 <td class="entry_range">
9232 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
9235 <td class="entry_hal_version">
9239 <td class="entry_tags">
9243 <tr class="entries_header">
9244 <th class="th_details" colspan="6">Details</th>
9246 <tr class="entry_cont">
9247 <td class="entry_details" colspan="6">
9248 <p>Some camera devices support additional digital sensitivity boosting in the
9249 camera processing pipeline after sensor RAW image is captured.<wbr/>
9250 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
9251 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
9252 <p>This key will be <code>null</code> for devices that do not support any RAW format
9253 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
9254 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
9255 list <code>100</code> in this key.<wbr/></p>
9256 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
9257 boost to the nearest supported value.<wbr/>
9258 The final boost value used will be available in the output capture result.<wbr/></p>
9259 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
9260 of such device will have the total sensitivity of
9261 <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>
9262 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
9263 <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
9264 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
9269 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9270 <!-- end of entry -->
9273 <tr class="entry" id="dynamic_android.control.enableZsl">
9274 <td class="entry_name
9276 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
9278 <td class="entry_type">
9279 <span class="entry_type_name entry_type_name_enum">byte</span>
9281 <span class="entry_type_visibility"> [public as boolean]</span>
9287 <ul class="entry_type_enum">
9289 <span class="entry_type_enum_name">FALSE (v3.2)</span>
9290 <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
9291 after previous requests.<wbr/></p></span>
9294 <span class="entry_type_enum_name">TRUE (v3.2)</span>
9295 <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
9296 captured before previous requests.<wbr/></p></span>
9300 </td> <!-- entry_type -->
9302 <td class="entry_description">
9303 <p>Allow camera device to enable zero-shutter-lag mode for requests with
9304 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
9307 <td class="entry_units">
9310 <td class="entry_range">
9313 <td class="entry_hal_version">
9317 <td class="entry_tags">
9321 <tr class="entries_header">
9322 <th class="th_details" colspan="6">Details</th>
9324 <tr class="entry_cont">
9325 <td class="entry_details" colspan="6">
9326 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9327 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9328 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9329 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9330 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9331 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9332 capture intents.<wbr/></p>
9333 <p>For example,<wbr/> when requests are submitted in the following order:
9334 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9335 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>
9336 <p>The output images for request B may have contents captured before the output images for
9337 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9338 request A.<wbr/></p>
9339 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9340 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9341 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9342 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9343 <code>false</code> if present.<wbr/></p>
9344 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9345 capture templates is always <code>false</code> if present.<wbr/></p>
9346 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9350 <tr class="entries_header">
9351 <th class="th_details" colspan="6">HAL Implementation Details</th>
9353 <tr class="entry_cont">
9354 <td class="entry_details" colspan="6">
9355 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9356 capture intent.<wbr/></p>
9360 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9361 <!-- end of entry -->
9364 <tr class="entry" id="dynamic_android.control.afSceneChange">
9365 <td class="entry_name
9367 android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
9369 <td class="entry_type">
9370 <span class="entry_type_name entry_type_name_enum">int32</span>
9372 <span class="entry_type_visibility"> [public]</span>
9378 <ul class="entry_type_enum">
9380 <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
9381 <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
9384 <span class="entry_type_enum_name">DETECTED (v3.3)</span>
9385 <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
9389 </td> <!-- entry_type -->
9391 <td class="entry_description">
9392 <p>Whether a significant scene change is detected within the currently-set AF
9393 region(s).<wbr/></p>
9396 <td class="entry_units">
9399 <td class="entry_range">
9402 <td class="entry_hal_version">
9406 <td class="entry_tags">
9410 <tr class="entries_header">
9411 <th class="th_details" colspan="6">Details</th>
9413 <tr class="entry_cont">
9414 <td class="entry_details" colspan="6">
9415 <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
9416 such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
9417 significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
9418 result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
9419 to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
9420 <p>afSceneChange may be DETECTED only if afMode is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>VIDEO or
9421 AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>PICTURE.<wbr/> In other AF modes,<wbr/> afSceneChange must be NOT_<wbr/>DETECTED.<wbr/></p>
9422 <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>
9427 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9428 <!-- end of entry -->
9432 <!-- end of kind -->
9435 <!-- end of section -->
9436 <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
9439 <tr><td colspan="7" class="kind">controls</td></tr>
9441 <thead class="entries_header">
9443 <th class="th_name">Property Name</th>
9444 <th class="th_type">Type</th>
9445 <th class="th_description">Description</th>
9446 <th class="th_units">Units</th>
9447 <th class="th_range">Range</th>
9448 <th class="th_hal_version">Initial HIDL HAL version</th>
9449 <th class="th_tags">Tags</th>
9464 <tr class="entry" id="controls_android.demosaic.mode">
9465 <td class="entry_name
9467 android.<wbr/>demosaic.<wbr/>mode
9469 <td class="entry_type">
9470 <span class="entry_type_name entry_type_name_enum">byte</span>
9472 <span class="entry_type_visibility"> [system]</span>
9478 <ul class="entry_type_enum">
9480 <span class="entry_type_enum_name">FAST (v3.2)</span>
9481 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9482 Bayer RAW output.<wbr/></p></span>
9485 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9486 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9487 relative to raw output.<wbr/></p></span>
9491 </td> <!-- entry_type -->
9493 <td class="entry_description">
9494 <p>Controls the quality of the demosaicing
9495 processing.<wbr/></p>
9498 <td class="entry_units">
9501 <td class="entry_range">
9504 <td class="entry_hal_version">
9508 <td class="entry_tags">
9509 <ul class="entry_tags">
9510 <li><a href="#tag_FUTURE">FUTURE</a></li>
9517 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9518 <!-- end of entry -->
9522 <!-- end of kind -->
9525 <!-- end of section -->
9526 <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
9529 <tr><td colspan="7" class="kind">controls</td></tr>
9531 <thead class="entries_header">
9533 <th class="th_name">Property Name</th>
9534 <th class="th_type">Type</th>
9535 <th class="th_description">Description</th>
9536 <th class="th_units">Units</th>
9537 <th class="th_range">Range</th>
9538 <th class="th_hal_version">Initial HIDL HAL version</th>
9539 <th class="th_tags">Tags</th>
9554 <tr class="entry" id="controls_android.edge.mode">
9555 <td class="entry_name
9557 android.<wbr/>edge.<wbr/>mode
9559 <td class="entry_type">
9560 <span class="entry_type_name entry_type_name_enum">byte</span>
9562 <span class="entry_type_visibility"> [public]</span>
9565 <span class="entry_type_hwlevel">[full] </span>
9569 <ul class="entry_type_enum">
9571 <span class="entry_type_enum_name">OFF (v3.2)</span>
9572 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9575 <span class="entry_type_enum_name">FAST (v3.2)</span>
9576 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9577 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9578 slow down frame rate relative to sensor.<wbr/></p></span>
9581 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9582 <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>
9585 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9586 <span class="entry_type_enum_optional">[optional]</span>
9587 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9588 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9589 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9590 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9591 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9592 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9593 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9594 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9595 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9596 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9597 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
9598 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9599 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9600 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9601 reasonable preview quality.<wbr/></p>
9602 <p>This mode is guaranteed to be supported by devices that support either the
9603 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9604 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9605 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9609 </td> <!-- entry_type -->
9611 <td class="entry_description">
9612 <p>Operation mode for edge
9613 enhancement.<wbr/></p>
9616 <td class="entry_units">
9619 <td class="entry_range">
9620 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9623 <td class="entry_hal_version">
9627 <td class="entry_tags">
9628 <ul class="entry_tags">
9629 <li><a href="#tag_V1">V1</a></li>
9630 <li><a href="#tag_REPROC">REPROC</a></li>
9635 <tr class="entries_header">
9636 <th class="th_details" colspan="6">Details</th>
9638 <tr class="entry_cont">
9639 <td class="entry_details" colspan="6">
9640 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9641 no enhancement will be applied by the camera device.<wbr/></p>
9642 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9643 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9644 camera device will use the highest-quality enhancement algorithms,<wbr/>
9645 even if it slows down capture rate.<wbr/> FAST means the camera device will
9646 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9647 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9648 amount of enhancement applied.<wbr/></p>
9649 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9650 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9651 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9652 edge enhancement to low-resolution streams (below maximum recording resolution) to
9653 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9654 since those will be reprocessed later if necessary.<wbr/></p>
9655 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9656 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9657 The camera device may adjust its internal edge enhancement parameters for best
9658 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>
9662 <tr class="entries_header">
9663 <th class="th_details" colspan="6">HAL Implementation Details</th>
9665 <tr class="entry_cont">
9666 <td class="entry_details" colspan="6">
9667 <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
9668 adjust the internal edge enhancement reduction parameters appropriately to get the best
9669 quality images.<wbr/></p>
9673 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9674 <!-- end of entry -->
9677 <tr class="entry" id="controls_android.edge.strength">
9678 <td class="entry_name
9680 android.<wbr/>edge.<wbr/>strength
9682 <td class="entry_type">
9683 <span class="entry_type_name">byte</span>
9685 <span class="entry_type_visibility"> [system]</span>
9692 </td> <!-- entry_type -->
9694 <td class="entry_description">
9695 <p>Control the amount of edge enhancement
9696 applied to the images</p>
9699 <td class="entry_units">
9700 1-10; 10 is maximum sharpening
9703 <td class="entry_range">
9706 <td class="entry_hal_version">
9710 <td class="entry_tags">
9711 <ul class="entry_tags">
9712 <li><a href="#tag_FUTURE">FUTURE</a></li>
9719 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9720 <!-- end of entry -->
9724 <!-- end of kind -->
9726 <tr><td colspan="7" class="kind">static</td></tr>
9728 <thead class="entries_header">
9730 <th class="th_name">Property Name</th>
9731 <th class="th_type">Type</th>
9732 <th class="th_description">Description</th>
9733 <th class="th_units">Units</th>
9734 <th class="th_range">Range</th>
9735 <th class="th_hal_version">Initial HIDL HAL version</th>
9736 <th class="th_tags">Tags</th>
9751 <tr class="entry" id="static_android.edge.availableEdgeModes">
9752 <td class="entry_name
9754 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9756 <td class="entry_type">
9757 <span class="entry_type_name">byte</span>
9758 <span class="entry_type_container">x</span>
9760 <span class="entry_type_array">
9763 <span class="entry_type_visibility"> [public as enumList]</span>
9766 <span class="entry_type_hwlevel">[full] </span>
9769 <div class="entry_type_notes">list of enums</div>
9772 </td> <!-- entry_type -->
9774 <td class="entry_description">
9775 <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
9779 <td class="entry_units">
9782 <td class="entry_range">
9783 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9786 <td class="entry_hal_version">
9790 <td class="entry_tags">
9791 <ul class="entry_tags">
9792 <li><a href="#tag_V1">V1</a></li>
9793 <li><a href="#tag_REPROC">REPROC</a></li>
9798 <tr class="entries_header">
9799 <th class="th_details" colspan="6">Details</th>
9801 <tr class="entry_cont">
9802 <td class="entry_details" colspan="6">
9803 <p>Full-capability camera devices must always support OFF; camera devices that support
9804 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9805 list FAST.<wbr/></p>
9809 <tr class="entries_header">
9810 <th class="th_details" colspan="6">HAL Implementation Details</th>
9812 <tr class="entry_cont">
9813 <td class="entry_details" colspan="6">
9814 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9815 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9816 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9817 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9821 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9822 <!-- end of entry -->
9826 <!-- end of kind -->
9828 <tr><td colspan="7" class="kind">dynamic</td></tr>
9830 <thead class="entries_header">
9832 <th class="th_name">Property Name</th>
9833 <th class="th_type">Type</th>
9834 <th class="th_description">Description</th>
9835 <th class="th_units">Units</th>
9836 <th class="th_range">Range</th>
9837 <th class="th_hal_version">Initial HIDL HAL version</th>
9838 <th class="th_tags">Tags</th>
9853 <tr class="entry" id="dynamic_android.edge.mode">
9854 <td class="entry_name
9856 android.<wbr/>edge.<wbr/>mode
9858 <td class="entry_type">
9859 <span class="entry_type_name entry_type_name_enum">byte</span>
9861 <span class="entry_type_visibility"> [public]</span>
9864 <span class="entry_type_hwlevel">[full] </span>
9868 <ul class="entry_type_enum">
9870 <span class="entry_type_enum_name">OFF (v3.2)</span>
9871 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9874 <span class="entry_type_enum_name">FAST (v3.2)</span>
9875 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9876 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9877 slow down frame rate relative to sensor.<wbr/></p></span>
9880 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9881 <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>
9884 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9885 <span class="entry_type_enum_optional">[optional]</span>
9886 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9887 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9888 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9889 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9890 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9891 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9892 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9893 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9894 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9895 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9896 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
9897 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9898 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9899 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9900 reasonable preview quality.<wbr/></p>
9901 <p>This mode is guaranteed to be supported by devices that support either the
9902 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9903 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9904 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9908 </td> <!-- entry_type -->
9910 <td class="entry_description">
9911 <p>Operation mode for edge
9912 enhancement.<wbr/></p>
9915 <td class="entry_units">
9918 <td class="entry_range">
9919 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9922 <td class="entry_hal_version">
9926 <td class="entry_tags">
9927 <ul class="entry_tags">
9928 <li><a href="#tag_V1">V1</a></li>
9929 <li><a href="#tag_REPROC">REPROC</a></li>
9934 <tr class="entries_header">
9935 <th class="th_details" colspan="6">Details</th>
9937 <tr class="entry_cont">
9938 <td class="entry_details" colspan="6">
9939 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9940 no enhancement will be applied by the camera device.<wbr/></p>
9941 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9942 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9943 camera device will use the highest-quality enhancement algorithms,<wbr/>
9944 even if it slows down capture rate.<wbr/> FAST means the camera device will
9945 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9946 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9947 amount of enhancement applied.<wbr/></p>
9948 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9949 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9950 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9951 edge enhancement to low-resolution streams (below maximum recording resolution) to
9952 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9953 since those will be reprocessed later if necessary.<wbr/></p>
9954 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9955 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9956 The camera device may adjust its internal edge enhancement parameters for best
9957 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>
9961 <tr class="entries_header">
9962 <th class="th_details" colspan="6">HAL Implementation Details</th>
9964 <tr class="entry_cont">
9965 <td class="entry_details" colspan="6">
9966 <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
9967 adjust the internal edge enhancement reduction parameters appropriately to get the best
9968 quality images.<wbr/></p>
9972 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9973 <!-- end of entry -->
9977 <!-- end of kind -->
9980 <!-- end of section -->
9981 <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
9984 <tr><td colspan="7" class="kind">controls</td></tr>
9986 <thead class="entries_header">
9988 <th class="th_name">Property Name</th>
9989 <th class="th_type">Type</th>
9990 <th class="th_description">Description</th>
9991 <th class="th_units">Units</th>
9992 <th class="th_range">Range</th>
9993 <th class="th_hal_version">Initial HIDL HAL version</th>
9994 <th class="th_tags">Tags</th>
10009 <tr class="entry" id="controls_android.flash.firingPower">
10010 <td class="entry_name
10012 android.<wbr/>flash.<wbr/>firing<wbr/>Power
10014 <td class="entry_type">
10015 <span class="entry_type_name">byte</span>
10017 <span class="entry_type_visibility"> [system]</span>
10024 </td> <!-- entry_type -->
10026 <td class="entry_description">
10027 <p>Power for flash firing/<wbr/>torch</p>
10030 <td class="entry_units">
10031 10 is max power; 0 is no flash.<wbr/> Linear
10034 <td class="entry_range">
10038 <td class="entry_hal_version">
10042 <td class="entry_tags">
10043 <ul class="entry_tags">
10044 <li><a href="#tag_FUTURE">FUTURE</a></li>
10049 <tr class="entries_header">
10050 <th class="th_details" colspan="6">Details</th>
10052 <tr class="entry_cont">
10053 <td class="entry_details" colspan="6">
10054 <p>Power for snapshot may use a different scale than
10055 for torch mode.<wbr/> Only one entry for torch mode will be
10061 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10062 <!-- end of entry -->
10065 <tr class="entry" id="controls_android.flash.firingTime">
10066 <td class="entry_name
10068 android.<wbr/>flash.<wbr/>firing<wbr/>Time
10070 <td class="entry_type">
10071 <span class="entry_type_name">int64</span>
10073 <span class="entry_type_visibility"> [system]</span>
10080 </td> <!-- entry_type -->
10082 <td class="entry_description">
10083 <p>Firing time of flash relative to start of
10087 <td class="entry_units">
10091 <td class="entry_range">
10092 <p>0-(exposure time-flash duration)</p>
10095 <td class="entry_hal_version">
10099 <td class="entry_tags">
10100 <ul class="entry_tags">
10101 <li><a href="#tag_FUTURE">FUTURE</a></li>
10106 <tr class="entries_header">
10107 <th class="th_details" colspan="6">Details</th>
10109 <tr class="entry_cont">
10110 <td class="entry_details" colspan="6">
10111 <p>Clamped to (0,<wbr/> exposure time - flash
10112 duration).<wbr/></p>
10117 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10118 <!-- end of entry -->
10121 <tr class="entry" id="controls_android.flash.mode">
10122 <td class="entry_name
10124 android.<wbr/>flash.<wbr/>mode
10126 <td class="entry_type">
10127 <span class="entry_type_name entry_type_name_enum">byte</span>
10129 <span class="entry_type_visibility"> [public]</span>
10132 <span class="entry_type_hwlevel">[legacy] </span>
10136 <ul class="entry_type_enum">
10138 <span class="entry_type_enum_name">OFF (v3.2)</span>
10139 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10142 <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10143 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10144 for this capture.<wbr/></p></span>
10147 <span class="entry_type_enum_name">TORCH (v3.2)</span>
10148 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10152 </td> <!-- entry_type -->
10154 <td class="entry_description">
10155 <p>The desired mode for for the camera device's flash control.<wbr/></p>
10158 <td class="entry_units">
10161 <td class="entry_range">
10164 <td class="entry_hal_version">
10168 <td class="entry_tags">
10169 <ul class="entry_tags">
10170 <li><a href="#tag_BC">BC</a></li>
10175 <tr class="entries_header">
10176 <th class="th_details" colspan="6">Details</th>
10178 <tr class="entry_cont">
10179 <td class="entry_details" colspan="6">
10180 <p>This control is only effective when flash unit is available
10181 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10182 <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/>
10183 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10184 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10185 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10186 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10187 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10188 control should be used along with auto-exposure (AE) precapture metering sequence
10189 (<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>
10190 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10191 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10192 <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>
10197 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10198 <!-- end of entry -->
10202 <!-- end of kind -->
10204 <tr><td colspan="7" class="kind">static</td></tr>
10206 <thead class="entries_header">
10208 <th class="th_name">Property Name</th>
10209 <th class="th_type">Type</th>
10210 <th class="th_description">Description</th>
10211 <th class="th_units">Units</th>
10212 <th class="th_range">Range</th>
10213 <th class="th_hal_version">Initial HIDL HAL version</th>
10214 <th class="th_tags">Tags</th>
10231 <tr class="entry" id="static_android.flash.info.available">
10232 <td class="entry_name
10234 android.<wbr/>flash.<wbr/>info.<wbr/>available
10236 <td class="entry_type">
10237 <span class="entry_type_name entry_type_name_enum">byte</span>
10239 <span class="entry_type_visibility"> [public as boolean]</span>
10242 <span class="entry_type_hwlevel">[legacy] </span>
10246 <ul class="entry_type_enum">
10248 <span class="entry_type_enum_name">FALSE (v3.2)</span>
10251 <span class="entry_type_enum_name">TRUE (v3.2)</span>
10255 </td> <!-- entry_type -->
10257 <td class="entry_description">
10258 <p>Whether this camera device has a
10259 flash unit.<wbr/></p>
10262 <td class="entry_units">
10265 <td class="entry_range">
10268 <td class="entry_hal_version">
10272 <td class="entry_tags">
10273 <ul class="entry_tags">
10274 <li><a href="#tag_BC">BC</a></li>
10279 <tr class="entries_header">
10280 <th class="th_details" colspan="6">Details</th>
10282 <tr class="entry_cont">
10283 <td class="entry_details" colspan="6">
10284 <p>Will be <code>false</code> if no flash is available.<wbr/></p>
10285 <p>If there is no flash unit,<wbr/> none of the flash controls do
10286 anything.<wbr/></p>
10291 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10292 <!-- end of entry -->
10295 <tr class="entry" id="static_android.flash.info.chargeDuration">
10296 <td class="entry_name
10298 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
10300 <td class="entry_type">
10301 <span class="entry_type_name">int64</span>
10303 <span class="entry_type_visibility"> [system]</span>
10310 </td> <!-- entry_type -->
10312 <td class="entry_description">
10313 <p>Time taken before flash can fire
10317 <td class="entry_units">
10321 <td class="entry_range">
10325 <td class="entry_hal_version">
10329 <td class="entry_tags">
10330 <ul class="entry_tags">
10331 <li><a href="#tag_FUTURE">FUTURE</a></li>
10336 <tr class="entries_header">
10337 <th class="th_details" colspan="6">Details</th>
10339 <tr class="entry_cont">
10340 <td class="entry_details" colspan="6">
10341 <p>1 second too long/<wbr/>too short for recharge? Should
10342 this be power-dependent?</p>
10347 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10348 <!-- end of entry -->
10354 <tr class="entry" id="static_android.flash.colorTemperature">
10355 <td class="entry_name
10357 android.<wbr/>flash.<wbr/>color<wbr/>Temperature
10359 <td class="entry_type">
10360 <span class="entry_type_name">byte</span>
10362 <span class="entry_type_visibility"> [system]</span>
10369 </td> <!-- entry_type -->
10371 <td class="entry_description">
10372 <p>The x,<wbr/>y whitepoint of the
10376 <td class="entry_units">
10380 <td class="entry_range">
10381 <p>0-1 for both</p>
10384 <td class="entry_hal_version">
10388 <td class="entry_tags">
10389 <ul class="entry_tags">
10390 <li><a href="#tag_FUTURE">FUTURE</a></li>
10397 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10398 <!-- end of entry -->
10401 <tr class="entry" id="static_android.flash.maxEnergy">
10402 <td class="entry_name
10404 android.<wbr/>flash.<wbr/>max<wbr/>Energy
10406 <td class="entry_type">
10407 <span class="entry_type_name">byte</span>
10409 <span class="entry_type_visibility"> [system]</span>
10416 </td> <!-- entry_type -->
10418 <td class="entry_description">
10419 <p>Max energy output of the flash for a full
10420 power single flash</p>
10423 <td class="entry_units">
10427 <td class="entry_range">
10431 <td class="entry_hal_version">
10435 <td class="entry_tags">
10436 <ul class="entry_tags">
10437 <li><a href="#tag_FUTURE">FUTURE</a></li>
10444 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10445 <!-- end of entry -->
10449 <!-- end of kind -->
10451 <tr><td colspan="7" class="kind">dynamic</td></tr>
10453 <thead class="entries_header">
10455 <th class="th_name">Property Name</th>
10456 <th class="th_type">Type</th>
10457 <th class="th_description">Description</th>
10458 <th class="th_units">Units</th>
10459 <th class="th_range">Range</th>
10460 <th class="th_hal_version">Initial HIDL HAL version</th>
10461 <th class="th_tags">Tags</th>
10476 <tr class="entry" id="dynamic_android.flash.firingPower">
10477 <td class="entry_name
10479 android.<wbr/>flash.<wbr/>firing<wbr/>Power
10481 <td class="entry_type">
10482 <span class="entry_type_name">byte</span>
10484 <span class="entry_type_visibility"> [system]</span>
10491 </td> <!-- entry_type -->
10493 <td class="entry_description">
10494 <p>Power for flash firing/<wbr/>torch</p>
10497 <td class="entry_units">
10498 10 is max power; 0 is no flash.<wbr/> Linear
10501 <td class="entry_range">
10505 <td class="entry_hal_version">
10509 <td class="entry_tags">
10510 <ul class="entry_tags">
10511 <li><a href="#tag_FUTURE">FUTURE</a></li>
10516 <tr class="entries_header">
10517 <th class="th_details" colspan="6">Details</th>
10519 <tr class="entry_cont">
10520 <td class="entry_details" colspan="6">
10521 <p>Power for snapshot may use a different scale than
10522 for torch mode.<wbr/> Only one entry for torch mode will be
10528 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10529 <!-- end of entry -->
10532 <tr class="entry" id="dynamic_android.flash.firingTime">
10533 <td class="entry_name
10535 android.<wbr/>flash.<wbr/>firing<wbr/>Time
10537 <td class="entry_type">
10538 <span class="entry_type_name">int64</span>
10540 <span class="entry_type_visibility"> [system]</span>
10547 </td> <!-- entry_type -->
10549 <td class="entry_description">
10550 <p>Firing time of flash relative to start of
10554 <td class="entry_units">
10558 <td class="entry_range">
10559 <p>0-(exposure time-flash duration)</p>
10562 <td class="entry_hal_version">
10566 <td class="entry_tags">
10567 <ul class="entry_tags">
10568 <li><a href="#tag_FUTURE">FUTURE</a></li>
10573 <tr class="entries_header">
10574 <th class="th_details" colspan="6">Details</th>
10576 <tr class="entry_cont">
10577 <td class="entry_details" colspan="6">
10578 <p>Clamped to (0,<wbr/> exposure time - flash
10579 duration).<wbr/></p>
10584 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10585 <!-- end of entry -->
10588 <tr class="entry" id="dynamic_android.flash.mode">
10589 <td class="entry_name
10591 android.<wbr/>flash.<wbr/>mode
10593 <td class="entry_type">
10594 <span class="entry_type_name entry_type_name_enum">byte</span>
10596 <span class="entry_type_visibility"> [public]</span>
10599 <span class="entry_type_hwlevel">[legacy] </span>
10603 <ul class="entry_type_enum">
10605 <span class="entry_type_enum_name">OFF (v3.2)</span>
10606 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10609 <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10610 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10611 for this capture.<wbr/></p></span>
10614 <span class="entry_type_enum_name">TORCH (v3.2)</span>
10615 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10619 </td> <!-- entry_type -->
10621 <td class="entry_description">
10622 <p>The desired mode for for the camera device's flash control.<wbr/></p>
10625 <td class="entry_units">
10628 <td class="entry_range">
10631 <td class="entry_hal_version">
10635 <td class="entry_tags">
10636 <ul class="entry_tags">
10637 <li><a href="#tag_BC">BC</a></li>
10642 <tr class="entries_header">
10643 <th class="th_details" colspan="6">Details</th>
10645 <tr class="entry_cont">
10646 <td class="entry_details" colspan="6">
10647 <p>This control is only effective when flash unit is available
10648 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10649 <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/>
10650 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10651 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10652 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10653 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10654 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10655 control should be used along with auto-exposure (AE) precapture metering sequence
10656 (<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>
10657 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10658 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10659 <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>
10664 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10665 <!-- end of entry -->
10668 <tr class="entry" id="dynamic_android.flash.state">
10669 <td class="entry_name
10671 android.<wbr/>flash.<wbr/>state
10673 <td class="entry_type">
10674 <span class="entry_type_name entry_type_name_enum">byte</span>
10676 <span class="entry_type_visibility"> [public]</span>
10679 <span class="entry_type_hwlevel">[limited] </span>
10683 <ul class="entry_type_enum">
10685 <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
10686 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10689 <span class="entry_type_enum_name">CHARGING (v3.2)</span>
10690 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10693 <span class="entry_type_enum_name">READY (v3.2)</span>
10694 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10697 <span class="entry_type_enum_name">FIRED (v3.2)</span>
10698 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10701 <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
10702 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10703 <p>This is usually due to the next or previous frame having
10704 the flash fire,<wbr/> and the flash spilling into this capture
10705 due to hardware limitations.<wbr/></p></span>
10709 </td> <!-- entry_type -->
10711 <td class="entry_description">
10712 <p>Current state of the flash
10716 <td class="entry_units">
10719 <td class="entry_range">
10722 <td class="entry_hal_version">
10726 <td class="entry_tags">
10730 <tr class="entries_header">
10731 <th class="th_details" colspan="6">Details</th>
10733 <tr class="entry_cont">
10734 <td class="entry_details" colspan="6">
10735 <p>When the camera device doesn't have flash unit
10736 (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/>
10737 Other states indicate the current flash status.<wbr/></p>
10738 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10740 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10741 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10742 will always return FIRED.<wbr/></li>
10743 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10744 will always return FIRED.<wbr/></li>
10746 <p>In all other conditions the state will not be available on
10747 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10752 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10753 <!-- end of entry -->
10757 <!-- end of kind -->
10760 <!-- end of section -->
10761 <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
10764 <tr><td colspan="7" class="kind">controls</td></tr>
10766 <thead class="entries_header">
10768 <th class="th_name">Property Name</th>
10769 <th class="th_type">Type</th>
10770 <th class="th_description">Description</th>
10771 <th class="th_units">Units</th>
10772 <th class="th_range">Range</th>
10773 <th class="th_hal_version">Initial HIDL HAL version</th>
10774 <th class="th_tags">Tags</th>
10789 <tr class="entry" id="controls_android.hotPixel.mode">
10790 <td class="entry_name
10792 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10794 <td class="entry_type">
10795 <span class="entry_type_name entry_type_name_enum">byte</span>
10797 <span class="entry_type_visibility"> [public]</span>
10803 <ul class="entry_type_enum">
10805 <span class="entry_type_enum_name">OFF (v3.2)</span>
10806 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10807 <p>The frame rate must not be reduced relative to sensor raw output
10808 for this option.<wbr/></p>
10809 <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>
10812 <span class="entry_type_enum_name">FAST (v3.2)</span>
10813 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10814 rate relative to sensor raw output.<wbr/></p>
10815 <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>
10818 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
10819 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10820 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10821 <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>
10825 </td> <!-- entry_type -->
10827 <td class="entry_description">
10828 <p>Operational mode for hot pixel correction.<wbr/></p>
10831 <td class="entry_units">
10834 <td class="entry_range">
10835 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10838 <td class="entry_hal_version">
10842 <td class="entry_tags">
10843 <ul class="entry_tags">
10844 <li><a href="#tag_V1">V1</a></li>
10845 <li><a href="#tag_RAW">RAW</a></li>
10850 <tr class="entries_header">
10851 <th class="th_details" colspan="6">Details</th>
10853 <tr class="entry_cont">
10854 <td class="entry_details" colspan="6">
10855 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10856 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10857 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10862 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10863 <!-- end of entry -->
10867 <!-- end of kind -->
10869 <tr><td colspan="7" class="kind">static</td></tr>
10871 <thead class="entries_header">
10873 <th class="th_name">Property Name</th>
10874 <th class="th_type">Type</th>
10875 <th class="th_description">Description</th>
10876 <th class="th_units">Units</th>
10877 <th class="th_range">Range</th>
10878 <th class="th_hal_version">Initial HIDL HAL version</th>
10879 <th class="th_tags">Tags</th>
10894 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
10895 <td class="entry_name
10897 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
10899 <td class="entry_type">
10900 <span class="entry_type_name">byte</span>
10901 <span class="entry_type_container">x</span>
10903 <span class="entry_type_array">
10906 <span class="entry_type_visibility"> [public as enumList]</span>
10911 <div class="entry_type_notes">list of enums</div>
10914 </td> <!-- entry_type -->
10916 <td class="entry_description">
10917 <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
10918 camera device.<wbr/></p>
10921 <td class="entry_units">
10924 <td class="entry_range">
10925 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10928 <td class="entry_hal_version">
10932 <td class="entry_tags">
10933 <ul class="entry_tags">
10934 <li><a href="#tag_V1">V1</a></li>
10935 <li><a href="#tag_RAW">RAW</a></li>
10940 <tr class="entries_header">
10941 <th class="th_details" colspan="6">Details</th>
10943 <tr class="entry_cont">
10944 <td class="entry_details" colspan="6">
10945 <p>FULL mode camera devices will always support FAST.<wbr/></p>
10949 <tr class="entries_header">
10950 <th class="th_details" colspan="6">HAL Implementation Details</th>
10952 <tr class="entry_cont">
10953 <td class="entry_details" colspan="6">
10954 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
10955 pixels than actual pixels on the camera sensor.<wbr/>
10956 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
10957 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
10958 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
10959 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
10963 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10964 <!-- end of entry -->
10968 <!-- end of kind -->
10970 <tr><td colspan="7" class="kind">dynamic</td></tr>
10972 <thead class="entries_header">
10974 <th class="th_name">Property Name</th>
10975 <th class="th_type">Type</th>
10976 <th class="th_description">Description</th>
10977 <th class="th_units">Units</th>
10978 <th class="th_range">Range</th>
10979 <th class="th_hal_version">Initial HIDL HAL version</th>
10980 <th class="th_tags">Tags</th>
10995 <tr class="entry" id="dynamic_android.hotPixel.mode">
10996 <td class="entry_name
10998 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
11000 <td class="entry_type">
11001 <span class="entry_type_name entry_type_name_enum">byte</span>
11003 <span class="entry_type_visibility"> [public]</span>
11009 <ul class="entry_type_enum">
11011 <span class="entry_type_enum_name">OFF (v3.2)</span>
11012 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
11013 <p>The frame rate must not be reduced relative to sensor raw output
11014 for this option.<wbr/></p>
11015 <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>
11018 <span class="entry_type_enum_name">FAST (v3.2)</span>
11019 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
11020 rate relative to sensor raw output.<wbr/></p>
11021 <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>
11024 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11025 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
11026 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
11027 <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>
11031 </td> <!-- entry_type -->
11033 <td class="entry_description">
11034 <p>Operational mode for hot pixel correction.<wbr/></p>
11037 <td class="entry_units">
11040 <td class="entry_range">
11041 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
11044 <td class="entry_hal_version">
11048 <td class="entry_tags">
11049 <ul class="entry_tags">
11050 <li><a href="#tag_V1">V1</a></li>
11051 <li><a href="#tag_RAW">RAW</a></li>
11056 <tr class="entries_header">
11057 <th class="th_details" colspan="6">Details</th>
11059 <tr class="entry_cont">
11060 <td class="entry_details" colspan="6">
11061 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
11062 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
11063 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
11068 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11069 <!-- end of entry -->
11073 <!-- end of kind -->
11076 <!-- end of section -->
11077 <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
11080 <tr><td colspan="7" class="kind">controls</td></tr>
11082 <thead class="entries_header">
11084 <th class="th_name">Property Name</th>
11085 <th class="th_type">Type</th>
11086 <th class="th_description">Description</th>
11087 <th class="th_units">Units</th>
11088 <th class="th_range">Range</th>
11089 <th class="th_hal_version">Initial HIDL HAL version</th>
11090 <th class="th_tags">Tags</th>
11105 <tr class="entry" id="controls_android.jpeg.gpsLocation">
11106 <td class="entry_name
11108 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11110 <td class="entry_type">
11111 <span class="entry_type_name">byte</span>
11113 <span class="entry_type_visibility"> [java_public as location]</span>
11115 <span class="entry_type_synthetic">[synthetic] </span>
11117 <span class="entry_type_hwlevel">[legacy] </span>
11122 </td> <!-- entry_type -->
11124 <td class="entry_description">
11125 <p>A location object to use when generating image GPS metadata.<wbr/></p>
11128 <td class="entry_units">
11131 <td class="entry_range">
11134 <td class="entry_hal_version">
11138 <td class="entry_tags">
11142 <tr class="entries_header">
11143 <th class="th_details" colspan="6">Details</th>
11145 <tr class="entry_cont">
11146 <td class="entry_details" colspan="6">
11147 <p>Setting a location object in a request will include the GPS coordinates of the location
11148 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11149 viewed by anyone who receives the JPEG image.<wbr/></p>
11154 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11155 <!-- end of entry -->
11158 <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
11159 <td class="entry_name
11161 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11163 <td class="entry_type">
11164 <span class="entry_type_name">double</span>
11165 <span class="entry_type_container">x</span>
11167 <span class="entry_type_array">
11170 <span class="entry_type_visibility"> [ndk_public]</span>
11173 <span class="entry_type_hwlevel">[legacy] </span>
11176 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11179 </td> <!-- entry_type -->
11181 <td class="entry_description">
11182 <p>GPS coordinates to include in output JPEG
11186 <td class="entry_units">
11189 <td class="entry_range">
11190 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11193 <td class="entry_hal_version">
11197 <td class="entry_tags">
11198 <ul class="entry_tags">
11199 <li><a href="#tag_BC">BC</a></li>
11206 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11207 <!-- end of entry -->
11210 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
11211 <td class="entry_name
11213 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11215 <td class="entry_type">
11216 <span class="entry_type_name">byte</span>
11218 <span class="entry_type_visibility"> [ndk_public as string]</span>
11221 <span class="entry_type_hwlevel">[legacy] </span>
11226 </td> <!-- entry_type -->
11228 <td class="entry_description">
11229 <p>32 characters describing GPS algorithm to
11230 include in EXIF.<wbr/></p>
11233 <td class="entry_units">
11234 UTF-8 null-terminated string
11237 <td class="entry_range">
11240 <td class="entry_hal_version">
11244 <td class="entry_tags">
11245 <ul class="entry_tags">
11246 <li><a href="#tag_BC">BC</a></li>
11253 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11254 <!-- end of entry -->
11257 <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
11258 <td class="entry_name
11260 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11262 <td class="entry_type">
11263 <span class="entry_type_name">int64</span>
11265 <span class="entry_type_visibility"> [ndk_public]</span>
11268 <span class="entry_type_hwlevel">[legacy] </span>
11273 </td> <!-- entry_type -->
11275 <td class="entry_description">
11276 <p>Time GPS fix was made to include in
11280 <td class="entry_units">
11281 UTC in seconds since January 1,<wbr/> 1970
11284 <td class="entry_range">
11287 <td class="entry_hal_version">
11291 <td class="entry_tags">
11292 <ul class="entry_tags">
11293 <li><a href="#tag_BC">BC</a></li>
11300 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11301 <!-- end of entry -->
11304 <tr class="entry" id="controls_android.jpeg.orientation">
11305 <td class="entry_name
11307 android.<wbr/>jpeg.<wbr/>orientation
11309 <td class="entry_type">
11310 <span class="entry_type_name">int32</span>
11312 <span class="entry_type_visibility"> [public]</span>
11315 <span class="entry_type_hwlevel">[legacy] </span>
11320 </td> <!-- entry_type -->
11322 <td class="entry_description">
11323 <p>The orientation for a JPEG image.<wbr/></p>
11326 <td class="entry_units">
11327 Degrees in multiples of 90
11330 <td class="entry_range">
11331 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11334 <td class="entry_hal_version">
11338 <td class="entry_tags">
11339 <ul class="entry_tags">
11340 <li><a href="#tag_BC">BC</a></li>
11345 <tr class="entries_header">
11346 <th class="th_details" colspan="6">Details</th>
11348 <tr class="entry_cont">
11349 <td class="entry_details" colspan="6">
11350 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11351 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11353 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11354 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11355 the thumbnail data will also be rotated.<wbr/></p>
11356 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11357 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11358 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11359 sample code may be used:</p>
11360 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11361 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11362 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11364 //<wbr/> Round device orientation to a multiple of 90
11365 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11367 //<wbr/> Reverse device orientation for front-facing cameras
11368 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11369 if (facingFront) deviceOrientation = -deviceOrientation;
11371 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11372 //<wbr/> the image upright relative to the device orientation
11373 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11375 return jpegOrientation;
11382 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11383 <!-- end of entry -->
11386 <tr class="entry" id="controls_android.jpeg.quality">
11387 <td class="entry_name
11389 android.<wbr/>jpeg.<wbr/>quality
11391 <td class="entry_type">
11392 <span class="entry_type_name">byte</span>
11394 <span class="entry_type_visibility"> [public]</span>
11397 <span class="entry_type_hwlevel">[legacy] </span>
11402 </td> <!-- entry_type -->
11404 <td class="entry_description">
11405 <p>Compression quality of the final JPEG
11409 <td class="entry_units">
11412 <td class="entry_range">
11413 <p>1-100; larger is higher quality</p>
11416 <td class="entry_hal_version">
11420 <td class="entry_tags">
11421 <ul class="entry_tags">
11422 <li><a href="#tag_BC">BC</a></li>
11427 <tr class="entries_header">
11428 <th class="th_details" colspan="6">Details</th>
11430 <tr class="entry_cont">
11431 <td class="entry_details" colspan="6">
11432 <p>85-95 is typical usage range.<wbr/></p>
11437 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11438 <!-- end of entry -->
11441 <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11442 <td class="entry_name
11444 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11446 <td class="entry_type">
11447 <span class="entry_type_name">byte</span>
11449 <span class="entry_type_visibility"> [public]</span>
11452 <span class="entry_type_hwlevel">[legacy] </span>
11457 </td> <!-- entry_type -->
11459 <td class="entry_description">
11460 <p>Compression quality of JPEG
11461 thumbnail.<wbr/></p>
11464 <td class="entry_units">
11467 <td class="entry_range">
11468 <p>1-100; larger is higher quality</p>
11471 <td class="entry_hal_version">
11475 <td class="entry_tags">
11476 <ul class="entry_tags">
11477 <li><a href="#tag_BC">BC</a></li>
11484 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11485 <!-- end of entry -->
11488 <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11489 <td class="entry_name
11491 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11493 <td class="entry_type">
11494 <span class="entry_type_name">int32</span>
11495 <span class="entry_type_container">x</span>
11497 <span class="entry_type_array">
11500 <span class="entry_type_visibility"> [public as size]</span>
11503 <span class="entry_type_hwlevel">[legacy] </span>
11508 </td> <!-- entry_type -->
11510 <td class="entry_description">
11511 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11514 <td class="entry_units">
11517 <td class="entry_range">
11518 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11521 <td class="entry_hal_version">
11525 <td class="entry_tags">
11526 <ul class="entry_tags">
11527 <li><a href="#tag_BC">BC</a></li>
11532 <tr class="entries_header">
11533 <th class="th_details" colspan="6">Details</th>
11535 <tr class="entry_cont">
11536 <td class="entry_details" colspan="6">
11537 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11538 but the captured JPEG will still be a valid image.<wbr/></p>
11539 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11540 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11541 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11542 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11543 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11544 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11545 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11546 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11547 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11548 the camera device will handle thumbnail rotation in one of the following ways:</p>
11550 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11551 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11552 <li>Rotate the jpeg and thumbnail image data and not set
11553 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11554 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11555 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11556 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11562 <tr class="entries_header">
11563 <th class="th_details" colspan="6">HAL Implementation Details</th>
11565 <tr class="entry_cont">
11566 <td class="entry_details" colspan="6">
11567 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11568 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11569 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11570 thumbnail image cropping.<wbr/></p>
11574 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11575 <!-- end of entry -->
11579 <!-- end of kind -->
11581 <tr><td colspan="7" class="kind">static</td></tr>
11583 <thead class="entries_header">
11585 <th class="th_name">Property Name</th>
11586 <th class="th_type">Type</th>
11587 <th class="th_description">Description</th>
11588 <th class="th_units">Units</th>
11589 <th class="th_range">Range</th>
11590 <th class="th_hal_version">Initial HIDL HAL version</th>
11591 <th class="th_tags">Tags</th>
11606 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11607 <td class="entry_name
11609 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11611 <td class="entry_type">
11612 <span class="entry_type_name">int32</span>
11613 <span class="entry_type_container">x</span>
11615 <span class="entry_type_array">
11618 <span class="entry_type_visibility"> [public as size]</span>
11621 <span class="entry_type_hwlevel">[legacy] </span>
11626 </td> <!-- entry_type -->
11628 <td class="entry_description">
11629 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11630 camera device.<wbr/></p>
11633 <td class="entry_units">
11636 <td class="entry_range">
11639 <td class="entry_hal_version">
11643 <td class="entry_tags">
11644 <ul class="entry_tags">
11645 <li><a href="#tag_BC">BC</a></li>
11650 <tr class="entries_header">
11651 <th class="th_details" colspan="6">Details</th>
11653 <tr class="entry_cont">
11654 <td class="entry_details" colspan="6">
11655 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11656 thumbnail should be generated.<wbr/></p>
11657 <p>Below condiditions will be satisfied for this size list:</p>
11659 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11660 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11661 <li>The aspect ratio of the largest thumbnail size will be same as the
11662 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/>
11663 The largest size is defined as the size that has the largest pixel area
11664 in a given size list.<wbr/></li>
11665 <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
11666 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11667 and vice versa.<wbr/></li>
11668 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11674 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11675 <!-- end of entry -->
11678 <tr class="entry" id="static_android.jpeg.maxSize">
11679 <td class="entry_name
11681 android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11683 <td class="entry_type">
11684 <span class="entry_type_name">int32</span>
11686 <span class="entry_type_visibility"> [system]</span>
11693 </td> <!-- entry_type -->
11695 <td class="entry_description">
11696 <p>Maximum size in bytes for the compressed
11700 <td class="entry_units">
11703 <td class="entry_range">
11704 <p>Must be large enough to fit any JPEG produced by
11708 <td class="entry_hal_version">
11712 <td class="entry_tags">
11716 <tr class="entries_header">
11717 <th class="th_details" colspan="6">Details</th>
11719 <tr class="entry_cont">
11720 <td class="entry_details" colspan="6">
11721 <p>This is used for sizing the gralloc buffers for
11727 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11728 <!-- end of entry -->
11732 <!-- end of kind -->
11734 <tr><td colspan="7" class="kind">dynamic</td></tr>
11736 <thead class="entries_header">
11738 <th class="th_name">Property Name</th>
11739 <th class="th_type">Type</th>
11740 <th class="th_description">Description</th>
11741 <th class="th_units">Units</th>
11742 <th class="th_range">Range</th>
11743 <th class="th_hal_version">Initial HIDL HAL version</th>
11744 <th class="th_tags">Tags</th>
11759 <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11760 <td class="entry_name
11762 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11764 <td class="entry_type">
11765 <span class="entry_type_name">byte</span>
11767 <span class="entry_type_visibility"> [java_public as location]</span>
11769 <span class="entry_type_synthetic">[synthetic] </span>
11771 <span class="entry_type_hwlevel">[legacy] </span>
11776 </td> <!-- entry_type -->
11778 <td class="entry_description">
11779 <p>A location object to use when generating image GPS metadata.<wbr/></p>
11782 <td class="entry_units">
11785 <td class="entry_range">
11788 <td class="entry_hal_version">
11792 <td class="entry_tags">
11796 <tr class="entries_header">
11797 <th class="th_details" colspan="6">Details</th>
11799 <tr class="entry_cont">
11800 <td class="entry_details" colspan="6">
11801 <p>Setting a location object in a request will include the GPS coordinates of the location
11802 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11803 viewed by anyone who receives the JPEG image.<wbr/></p>
11808 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11809 <!-- end of entry -->
11812 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11813 <td class="entry_name
11815 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11817 <td class="entry_type">
11818 <span class="entry_type_name">double</span>
11819 <span class="entry_type_container">x</span>
11821 <span class="entry_type_array">
11824 <span class="entry_type_visibility"> [ndk_public]</span>
11827 <span class="entry_type_hwlevel">[legacy] </span>
11830 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11833 </td> <!-- entry_type -->
11835 <td class="entry_description">
11836 <p>GPS coordinates to include in output JPEG
11840 <td class="entry_units">
11843 <td class="entry_range">
11844 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11847 <td class="entry_hal_version">
11851 <td class="entry_tags">
11852 <ul class="entry_tags">
11853 <li><a href="#tag_BC">BC</a></li>
11860 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11861 <!-- end of entry -->
11864 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11865 <td class="entry_name
11867 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11869 <td class="entry_type">
11870 <span class="entry_type_name">byte</span>
11872 <span class="entry_type_visibility"> [ndk_public as string]</span>
11875 <span class="entry_type_hwlevel">[legacy] </span>
11880 </td> <!-- entry_type -->
11882 <td class="entry_description">
11883 <p>32 characters describing GPS algorithm to
11884 include in EXIF.<wbr/></p>
11887 <td class="entry_units">
11888 UTF-8 null-terminated string
11891 <td class="entry_range">
11894 <td class="entry_hal_version">
11898 <td class="entry_tags">
11899 <ul class="entry_tags">
11900 <li><a href="#tag_BC">BC</a></li>
11907 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11908 <!-- end of entry -->
11911 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
11912 <td class="entry_name
11914 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11916 <td class="entry_type">
11917 <span class="entry_type_name">int64</span>
11919 <span class="entry_type_visibility"> [ndk_public]</span>
11922 <span class="entry_type_hwlevel">[legacy] </span>
11927 </td> <!-- entry_type -->
11929 <td class="entry_description">
11930 <p>Time GPS fix was made to include in
11934 <td class="entry_units">
11935 UTC in seconds since January 1,<wbr/> 1970
11938 <td class="entry_range">
11941 <td class="entry_hal_version">
11945 <td class="entry_tags">
11946 <ul class="entry_tags">
11947 <li><a href="#tag_BC">BC</a></li>
11954 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11955 <!-- end of entry -->
11958 <tr class="entry" id="dynamic_android.jpeg.orientation">
11959 <td class="entry_name
11961 android.<wbr/>jpeg.<wbr/>orientation
11963 <td class="entry_type">
11964 <span class="entry_type_name">int32</span>
11966 <span class="entry_type_visibility"> [public]</span>
11969 <span class="entry_type_hwlevel">[legacy] </span>
11974 </td> <!-- entry_type -->
11976 <td class="entry_description">
11977 <p>The orientation for a JPEG image.<wbr/></p>
11980 <td class="entry_units">
11981 Degrees in multiples of 90
11984 <td class="entry_range">
11985 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11988 <td class="entry_hal_version">
11992 <td class="entry_tags">
11993 <ul class="entry_tags">
11994 <li><a href="#tag_BC">BC</a></li>
11999 <tr class="entries_header">
12000 <th class="th_details" colspan="6">Details</th>
12002 <tr class="entry_cont">
12003 <td class="entry_details" colspan="6">
12004 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12005 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12007 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12008 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12009 the thumbnail data will also be rotated.<wbr/></p>
12010 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12011 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12012 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
12013 sample code may be used:</p>
12014 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12015 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12016 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12018 //<wbr/> Round device orientation to a multiple of 90
12019 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12021 //<wbr/> Reverse device orientation for front-facing cameras
12022 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12023 if (facingFront) deviceOrientation = -deviceOrientation;
12025 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12026 //<wbr/> the image upright relative to the device orientation
12027 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12029 return jpegOrientation;
12036 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12037 <!-- end of entry -->
12040 <tr class="entry" id="dynamic_android.jpeg.quality">
12041 <td class="entry_name
12043 android.<wbr/>jpeg.<wbr/>quality
12045 <td class="entry_type">
12046 <span class="entry_type_name">byte</span>
12048 <span class="entry_type_visibility"> [public]</span>
12051 <span class="entry_type_hwlevel">[legacy] </span>
12056 </td> <!-- entry_type -->
12058 <td class="entry_description">
12059 <p>Compression quality of the final JPEG
12063 <td class="entry_units">
12066 <td class="entry_range">
12067 <p>1-100; larger is higher quality</p>
12070 <td class="entry_hal_version">
12074 <td class="entry_tags">
12075 <ul class="entry_tags">
12076 <li><a href="#tag_BC">BC</a></li>
12081 <tr class="entries_header">
12082 <th class="th_details" colspan="6">Details</th>
12084 <tr class="entry_cont">
12085 <td class="entry_details" colspan="6">
12086 <p>85-95 is typical usage range.<wbr/></p>
12091 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12092 <!-- end of entry -->
12095 <tr class="entry" id="dynamic_android.jpeg.size">
12096 <td class="entry_name
12098 android.<wbr/>jpeg.<wbr/>size
12100 <td class="entry_type">
12101 <span class="entry_type_name">int32</span>
12103 <span class="entry_type_visibility"> [system]</span>
12110 </td> <!-- entry_type -->
12112 <td class="entry_description">
12113 <p>The size of the compressed JPEG image,<wbr/> in
12117 <td class="entry_units">
12120 <td class="entry_range">
12124 <td class="entry_hal_version">
12128 <td class="entry_tags">
12129 <ul class="entry_tags">
12130 <li><a href="#tag_FUTURE">FUTURE</a></li>
12135 <tr class="entries_header">
12136 <th class="th_details" colspan="6">Details</th>
12138 <tr class="entry_cont">
12139 <td class="entry_details" colspan="6">
12140 <p>If no JPEG output is produced for the request,<wbr/>
12141 this must be 0.<wbr/></p>
12142 <p>Otherwise,<wbr/> this describes the real size of the compressed
12143 JPEG image placed in the output stream.<wbr/> More specifically,<wbr/>
12144 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12145 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12146 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12147 500000 make up the real data.<wbr/></p>
12152 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12153 <!-- end of entry -->
12156 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12157 <td class="entry_name
12159 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12161 <td class="entry_type">
12162 <span class="entry_type_name">byte</span>
12164 <span class="entry_type_visibility"> [public]</span>
12167 <span class="entry_type_hwlevel">[legacy] </span>
12172 </td> <!-- entry_type -->
12174 <td class="entry_description">
12175 <p>Compression quality of JPEG
12176 thumbnail.<wbr/></p>
12179 <td class="entry_units">
12182 <td class="entry_range">
12183 <p>1-100; larger is higher quality</p>
12186 <td class="entry_hal_version">
12190 <td class="entry_tags">
12191 <ul class="entry_tags">
12192 <li><a href="#tag_BC">BC</a></li>
12199 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12200 <!-- end of entry -->
12203 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12204 <td class="entry_name
12206 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12208 <td class="entry_type">
12209 <span class="entry_type_name">int32</span>
12210 <span class="entry_type_container">x</span>
12212 <span class="entry_type_array">
12215 <span class="entry_type_visibility"> [public as size]</span>
12218 <span class="entry_type_hwlevel">[legacy] </span>
12223 </td> <!-- entry_type -->
12225 <td class="entry_description">
12226 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12229 <td class="entry_units">
12232 <td class="entry_range">
12233 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12236 <td class="entry_hal_version">
12240 <td class="entry_tags">
12241 <ul class="entry_tags">
12242 <li><a href="#tag_BC">BC</a></li>
12247 <tr class="entries_header">
12248 <th class="th_details" colspan="6">Details</th>
12250 <tr class="entry_cont">
12251 <td class="entry_details" colspan="6">
12252 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12253 but the captured JPEG will still be a valid image.<wbr/></p>
12254 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12255 should have the same aspect ratio as the main JPEG output.<wbr/></p>
12256 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12257 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12258 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
12259 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12260 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12261 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12262 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12263 the camera device will handle thumbnail rotation in one of the following ways:</p>
12265 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12266 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12267 <li>Rotate the jpeg and thumbnail image data and not set
12268 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12269 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12270 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12271 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12277 <tr class="entries_header">
12278 <th class="th_details" colspan="6">HAL Implementation Details</th>
12280 <tr class="entry_cont">
12281 <td class="entry_details" colspan="6">
12282 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12283 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
12284 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
12285 thumbnail image cropping.<wbr/></p>
12289 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12290 <!-- end of entry -->
12294 <!-- end of kind -->
12297 <!-- end of section -->
12298 <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12301 <tr><td colspan="7" class="kind">controls</td></tr>
12303 <thead class="entries_header">
12305 <th class="th_name">Property Name</th>
12306 <th class="th_type">Type</th>
12307 <th class="th_description">Description</th>
12308 <th class="th_units">Units</th>
12309 <th class="th_range">Range</th>
12310 <th class="th_hal_version">Initial HIDL HAL version</th>
12311 <th class="th_tags">Tags</th>
12326 <tr class="entry" id="controls_android.lens.aperture">
12327 <td class="entry_name
12329 android.<wbr/>lens.<wbr/>aperture
12331 <td class="entry_type">
12332 <span class="entry_type_name">float</span>
12334 <span class="entry_type_visibility"> [public]</span>
12337 <span class="entry_type_hwlevel">[full] </span>
12342 </td> <!-- entry_type -->
12344 <td class="entry_description">
12345 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12346 effective aperture diameter.<wbr/></p>
12349 <td class="entry_units">
12350 The f-number (f/<wbr/>N)
12353 <td class="entry_range">
12354 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12357 <td class="entry_hal_version">
12361 <td class="entry_tags">
12362 <ul class="entry_tags">
12363 <li><a href="#tag_V1">V1</a></li>
12368 <tr class="entries_header">
12369 <th class="th_details" colspan="6">Details</th>
12371 <tr class="entry_cont">
12372 <td class="entry_details" colspan="6">
12373 <p>Setting this value is only supported on the camera devices that have a variable
12374 aperture lens.<wbr/></p>
12375 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12376 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12377 <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>
12378 to achieve manual exposure control.<wbr/></p>
12379 <p>The requested aperture value may take several frames to reach the
12380 requested value; the camera device will report the current (intermediate)
12381 aperture size in capture result metadata while the aperture is changing.<wbr/>
12382 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>
12383 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12384 the ON modes,<wbr/> this will be overridden by the camera device
12385 auto-exposure algorithm,<wbr/> the overridden values are then provided
12386 back to the user in the corresponding result.<wbr/></p>
12391 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12392 <!-- end of entry -->
12395 <tr class="entry" id="controls_android.lens.filterDensity">
12396 <td class="entry_name
12398 android.<wbr/>lens.<wbr/>filter<wbr/>Density
12400 <td class="entry_type">
12401 <span class="entry_type_name">float</span>
12403 <span class="entry_type_visibility"> [public]</span>
12406 <span class="entry_type_hwlevel">[full] </span>
12411 </td> <!-- entry_type -->
12413 <td class="entry_description">
12414 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12417 <td class="entry_units">
12418 Exposure Value (EV)
12421 <td class="entry_range">
12422 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12425 <td class="entry_hal_version">
12429 <td class="entry_tags">
12430 <ul class="entry_tags">
12431 <li><a href="#tag_V1">V1</a></li>
12436 <tr class="entries_header">
12437 <th class="th_details" colspan="6">Details</th>
12439 <tr class="entry_cont">
12440 <td class="entry_details" colspan="6">
12441 <p>This control will not be supported on most camera devices.<wbr/></p>
12442 <p>Lens filters are typically used to lower the amount of light the
12443 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12444 step is the standard logarithmic representation,<wbr/> which are
12445 non-negative,<wbr/> and inversely proportional to the amount of light
12446 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
12447 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12448 mean that the filter is set to reduce incoming light by two stops
12449 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12450 <p>It may take several frames before the lens filter density changes
12451 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12452 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12457 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12458 <!-- end of entry -->
12461 <tr class="entry" id="controls_android.lens.focalLength">
12462 <td class="entry_name
12464 android.<wbr/>lens.<wbr/>focal<wbr/>Length
12466 <td class="entry_type">
12467 <span class="entry_type_name">float</span>
12469 <span class="entry_type_visibility"> [public]</span>
12472 <span class="entry_type_hwlevel">[legacy] </span>
12477 </td> <!-- entry_type -->
12479 <td class="entry_description">
12480 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12483 <td class="entry_units">
12487 <td class="entry_range">
12488 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12491 <td class="entry_hal_version">
12495 <td class="entry_tags">
12496 <ul class="entry_tags">
12497 <li><a href="#tag_V1">V1</a></li>
12502 <tr class="entries_header">
12503 <th class="th_details" colspan="6">Details</th>
12505 <tr class="entry_cont">
12506 <td class="entry_details" colspan="6">
12507 <p>This setting controls the physical focal length of the camera
12508 device's lens.<wbr/> Changing the focal length changes the field of
12509 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12510 <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
12511 setting won't be applied instantaneously,<wbr/> and it may take several
12512 frames before the lens can change to the requested focal length.<wbr/>
12513 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12514 be set to MOVING.<wbr/></p>
12515 <p>Optical zoom will not be supported on most devices.<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.focusDistance">
12525 <td class="entry_name
12527 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
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">[full] </span>
12540 </td> <!-- entry_type -->
12542 <td class="entry_description">
12543 <p>Desired distance to plane of sharpest focus,<wbr/>
12544 measured from frontmost surface of the lens.<wbr/></p>
12547 <td class="entry_units">
12548 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12551 <td class="entry_range">
12555 <td class="entry_hal_version">
12559 <td class="entry_tags">
12560 <ul class="entry_tags">
12561 <li><a href="#tag_BC">BC</a></li>
12562 <li><a href="#tag_V1">V1</a></li>
12567 <tr class="entries_header">
12568 <th class="th_details" colspan="6">Details</th>
12570 <tr class="entry_cont">
12571 <td class="entry_details" colspan="6">
12572 <p>This control can be used for setting manual focus,<wbr/> on devices that support
12573 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12574 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12575 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12576 <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>
12577 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12578 instantaneously,<wbr/> and it may take several frames before the lens
12579 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12580 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12581 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12582 for infinity focus.<wbr/></p>
12587 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12588 <!-- end of entry -->
12591 <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12592 <td class="entry_name
12594 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12596 <td class="entry_type">
12597 <span class="entry_type_name entry_type_name_enum">byte</span>
12599 <span class="entry_type_visibility"> [public]</span>
12602 <span class="entry_type_hwlevel">[limited] </span>
12606 <ul class="entry_type_enum">
12608 <span class="entry_type_enum_name">OFF (v3.2)</span>
12609 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12612 <span class="entry_type_enum_name">ON (v3.2)</span>
12613 <span class="entry_type_enum_optional">[optional]</span>
12614 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12618 </td> <!-- entry_type -->
12620 <td class="entry_description">
12621 <p>Sets whether the camera device uses optical image stabilization (OIS)
12622 when capturing images.<wbr/></p>
12625 <td class="entry_units">
12628 <td class="entry_range">
12629 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12632 <td class="entry_hal_version">
12636 <td class="entry_tags">
12637 <ul class="entry_tags">
12638 <li><a href="#tag_V1">V1</a></li>
12643 <tr class="entries_header">
12644 <th class="th_details" colspan="6">Details</th>
12646 <tr class="entry_cont">
12647 <td class="entry_details" colspan="6">
12648 <p>OIS is used to compensate for motion blur due to small
12649 movements of the camera during capture.<wbr/> Unlike digital image
12650 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12651 makes use of mechanical elements to stabilize the camera
12652 sensor,<wbr/> and thus allows for longer exposure times before
12653 camera shake becomes apparent.<wbr/></p>
12654 <p>Switching between different optical stabilization modes may take several
12655 frames to initialize,<wbr/> the camera device will report the current mode in
12656 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12657 optical stabilization modes in the first several capture results may still
12658 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12659 <p>If a camera device supports both OIS and digital image stabilization
12660 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12661 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12662 <p>Not all devices will support OIS; see
12663 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12664 available controls.<wbr/></p>
12669 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12670 <!-- end of entry -->
12674 <!-- end of kind -->
12676 <tr><td colspan="7" class="kind">static</td></tr>
12678 <thead class="entries_header">
12680 <th class="th_name">Property Name</th>
12681 <th class="th_type">Type</th>
12682 <th class="th_description">Description</th>
12683 <th class="th_units">Units</th>
12684 <th class="th_range">Range</th>
12685 <th class="th_hal_version">Initial HIDL HAL version</th>
12686 <th class="th_tags">Tags</th>
12703 <tr class="entry" id="static_android.lens.info.availableApertures">
12704 <td class="entry_name
12706 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12708 <td class="entry_type">
12709 <span class="entry_type_name">float</span>
12710 <span class="entry_type_container">x</span>
12712 <span class="entry_type_array">
12715 <span class="entry_type_visibility"> [public]</span>
12718 <span class="entry_type_hwlevel">[full] </span>
12723 </td> <!-- entry_type -->
12725 <td class="entry_description">
12726 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12727 supported by this camera device.<wbr/></p>
12730 <td class="entry_units">
12731 The aperture f-number
12734 <td class="entry_range">
12737 <td class="entry_hal_version">
12741 <td class="entry_tags">
12742 <ul class="entry_tags">
12743 <li><a href="#tag_V1">V1</a></li>
12748 <tr class="entries_header">
12749 <th class="th_details" colspan="6">Details</th>
12751 <tr class="entry_cont">
12752 <td class="entry_details" colspan="6">
12753 <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12754 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12755 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12756 in this list will be sorted in ascending order.<wbr/></p>
12761 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12762 <!-- end of entry -->
12765 <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12766 <td class="entry_name
12768 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12770 <td class="entry_type">
12771 <span class="entry_type_name">float</span>
12772 <span class="entry_type_container">x</span>
12774 <span class="entry_type_array">
12777 <span class="entry_type_visibility"> [public]</span>
12780 <span class="entry_type_hwlevel">[full] </span>
12785 </td> <!-- entry_type -->
12787 <td class="entry_description">
12788 <p>List of neutral density filter values for
12789 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12792 <td class="entry_units">
12793 Exposure value (EV)
12796 <td class="entry_range">
12797 <p>Values are >= 0</p>
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 a neutral density filter is not supported by this camera device,<wbr/>
12817 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12818 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12823 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12824 <!-- end of entry -->
12827 <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12828 <td class="entry_name
12830 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12832 <td class="entry_type">
12833 <span class="entry_type_name">float</span>
12834 <span class="entry_type_container">x</span>
12836 <span class="entry_type_array">
12839 <span class="entry_type_visibility"> [public]</span>
12842 <span class="entry_type_hwlevel">[legacy] </span>
12845 <div class="entry_type_notes">The list of available focal lengths</div>
12848 </td> <!-- entry_type -->
12850 <td class="entry_description">
12851 <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
12855 <td class="entry_units">
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_BC">BC</a></li>
12870 <li><a href="#tag_V1">V1</a></li>
12875 <tr class="entries_header">
12876 <th class="th_details" colspan="6">Details</th>
12878 <tr class="entry_cont">
12879 <td class="entry_details" colspan="6">
12880 <p>If optical zoom is not supported,<wbr/> this list will only contain
12881 a single value corresponding to the fixed focal length of the
12882 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12883 by the camera device,<wbr/> in ascending order.<wbr/></p>
12888 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12889 <!-- end of entry -->
12892 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
12893 <td class="entry_name
12895 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
12897 <td class="entry_type">
12898 <span class="entry_type_name">byte</span>
12899 <span class="entry_type_container">x</span>
12901 <span class="entry_type_array">
12904 <span class="entry_type_visibility"> [public as enumList]</span>
12907 <span class="entry_type_hwlevel">[limited] </span>
12910 <div class="entry_type_notes">list of enums</div>
12913 </td> <!-- entry_type -->
12915 <td class="entry_description">
12916 <p>List of optical image stabilization (OIS) modes for
12917 <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>
12920 <td class="entry_units">
12923 <td class="entry_range">
12924 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
12927 <td class="entry_hal_version">
12931 <td class="entry_tags">
12932 <ul class="entry_tags">
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 OIS is not supported by a given camera device,<wbr/> this list will
12944 contain only OFF.<wbr/></p>
12949 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12950 <!-- end of entry -->
12953 <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
12954 <td class="entry_name
12956 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
12958 <td class="entry_type">
12959 <span class="entry_type_name">float</span>
12961 <span class="entry_type_visibility"> [public]</span>
12964 <span class="entry_type_hwlevel">[limited] </span>
12969 </td> <!-- entry_type -->
12971 <td class="entry_description">
12972 <p>Hyperfocal distance for this lens.<wbr/></p>
12975 <td class="entry_units">
12976 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12979 <td class="entry_range">
12980 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
12981 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>
12984 <td class="entry_hal_version">
12988 <td class="entry_tags">
12992 <tr class="entries_header">
12993 <th class="th_details" colspan="6">Details</th>
12995 <tr class="entry_cont">
12996 <td class="entry_details" colspan="6">
12997 <p>If the lens is not fixed focus,<wbr/> the camera device will report this
12998 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>
13003 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13004 <!-- end of entry -->
13007 <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13008 <td class="entry_name
13010 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13012 <td class="entry_type">
13013 <span class="entry_type_name">float</span>
13015 <span class="entry_type_visibility"> [public]</span>
13018 <span class="entry_type_hwlevel">[limited] </span>
13023 </td> <!-- entry_type -->
13025 <td class="entry_description">
13026 <p>Shortest distance from frontmost surface
13027 of the lens that can be brought into sharp focus.<wbr/></p>
13030 <td class="entry_units">
13031 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13034 <td class="entry_range">
13038 <td class="entry_hal_version">
13042 <td class="entry_tags">
13043 <ul class="entry_tags">
13044 <li><a href="#tag_V1">V1</a></li>
13049 <tr class="entries_header">
13050 <th class="th_details" colspan="6">Details</th>
13052 <tr class="entry_cont">
13053 <td class="entry_details" colspan="6">
13054 <p>If the lens is fixed-focus,<wbr/> this will be
13059 <tr class="entries_header">
13060 <th class="th_details" colspan="6">HAL Implementation Details</th>
13062 <tr class="entry_cont">
13063 <td class="entry_details" colspan="6">
13064 <p>Mandatory for FULL devices; LIMITED devices
13065 must always set this value to 0 for fixed-focus; and may omit
13066 the minimum focus distance otherwise.<wbr/></p>
13067 <p>This field is also mandatory for all devices advertising
13068 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13072 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13073 <!-- end of entry -->
13076 <tr class="entry" id="static_android.lens.info.shadingMapSize">
13077 <td class="entry_name
13079 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13081 <td class="entry_type">
13082 <span class="entry_type_name">int32</span>
13083 <span class="entry_type_container">x</span>
13085 <span class="entry_type_array">
13088 <span class="entry_type_visibility"> [ndk_public as size]</span>
13091 <span class="entry_type_hwlevel">[full] </span>
13094 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13097 </td> <!-- entry_type -->
13099 <td class="entry_description">
13100 <p>Dimensions of lens shading map.<wbr/></p>
13103 <td class="entry_units">
13106 <td class="entry_range">
13107 <p>Both values >= 1</p>
13110 <td class="entry_hal_version">
13114 <td class="entry_tags">
13115 <ul class="entry_tags">
13116 <li><a href="#tag_V1">V1</a></li>
13121 <tr class="entries_header">
13122 <th class="th_details" colspan="6">Details</th>
13124 <tr class="entry_cont">
13125 <td class="entry_details" colspan="6">
13126 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13127 must be smaller than 64x64.<wbr/></p>
13132 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13133 <!-- end of entry -->
13136 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13137 <td class="entry_name
13139 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13141 <td class="entry_type">
13142 <span class="entry_type_name entry_type_name_enum">byte</span>
13144 <span class="entry_type_visibility"> [public]</span>
13147 <span class="entry_type_hwlevel">[limited] </span>
13151 <ul class="entry_type_enum">
13153 <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
13154 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13155 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13156 <p>Setting the lens to the same focus distance on separate occasions may
13157 result in a different real focus distance,<wbr/> depending on factors such
13158 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13159 and the device temperature.<wbr/> The focus distance value will still be
13160 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
13161 represents the farthest focus.<wbr/></p></span>
13164 <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
13165 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13166 <p>However,<wbr/> setting the lens to the same focus distance
13167 on separate occasions may result in a different real
13168 focus distance,<wbr/> depending on factors such as the
13169 orientation of the device,<wbr/> the age of the focusing
13170 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13173 <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
13174 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13175 is calibrated.<wbr/></p>
13176 <p>The lens mechanism is calibrated so that setting the
13177 same focus distance is repeatable on multiple
13178 occasions with good accuracy,<wbr/> and the focus distance
13179 corresponds to the real physical distance to the plane
13180 of best focus.<wbr/></p></span>
13184 </td> <!-- entry_type -->
13186 <td class="entry_description">
13187 <p>The lens focus distance calibration quality.<wbr/></p>
13190 <td class="entry_units">
13193 <td class="entry_range">
13196 <td class="entry_hal_version">
13200 <td class="entry_tags">
13201 <ul class="entry_tags">
13202 <li><a href="#tag_V1">V1</a></li>
13207 <tr class="entries_header">
13208 <th class="th_details" colspan="6">Details</th>
13210 <tr class="entry_cont">
13211 <td class="entry_details" colspan="6">
13212 <p>The lens focus distance calibration quality determines the reliability of
13213 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13214 <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
13215 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13216 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13217 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13218 and increasing positive numbers represent focusing closer and closer
13219 to the camera device.<wbr/> The focus distance control also uses diopters
13220 on these devices.<wbr/></p>
13221 <p>UNCALIBRATED devices do not use units that are directly comparable
13222 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13223 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13224 nearest focus the device can achieve.<wbr/></p>
13228 <tr class="entries_header">
13229 <th class="th_details" colspan="6">HAL Implementation Details</th>
13231 <tr class="entry_cont">
13232 <td class="entry_details" colspan="6">
13233 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13234 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13235 and the lens focus distance is set to 0 diopters
13236 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13237 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13238 lens some time to move; during the move the lens state should be MOVING and
13239 the output diopter value should be changing toward 0.<wbr/></p>
13243 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13244 <!-- end of entry -->
13250 <tr class="entry" id="static_android.lens.facing">
13251 <td class="entry_name
13253 android.<wbr/>lens.<wbr/>facing
13255 <td class="entry_type">
13256 <span class="entry_type_name entry_type_name_enum">byte</span>
13258 <span class="entry_type_visibility"> [public]</span>
13261 <span class="entry_type_hwlevel">[legacy] </span>
13265 <ul class="entry_type_enum">
13267 <span class="entry_type_enum_name">FRONT (v3.2)</span>
13268 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13271 <span class="entry_type_enum_name">BACK (v3.2)</span>
13272 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13275 <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
13276 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13277 device's screen.<wbr/></p></span>
13281 </td> <!-- entry_type -->
13283 <td class="entry_description">
13284 <p>Direction the camera faces relative to
13285 device screen.<wbr/></p>
13288 <td class="entry_units">
13291 <td class="entry_range">
13294 <td class="entry_hal_version">
13298 <td class="entry_tags">
13304 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13305 <!-- end of entry -->
13308 <tr class="entry" id="static_android.lens.poseRotation">
13309 <td class="entry_name
13311 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13313 <td class="entry_type">
13314 <span class="entry_type_name">float</span>
13315 <span class="entry_type_container">x</span>
13317 <span class="entry_type_array">
13320 <span class="entry_type_visibility"> [public]</span>
13327 </td> <!-- entry_type -->
13329 <td class="entry_description">
13330 <p>The orientation of the camera relative to the sensor
13331 coordinate system.<wbr/></p>
13334 <td class="entry_units">
13336 Quaternion coefficients
13340 <td class="entry_range">
13343 <td class="entry_hal_version">
13347 <td class="entry_tags">
13348 <ul class="entry_tags">
13349 <li><a href="#tag_DEPTH">DEPTH</a></li>
13354 <tr class="entries_header">
13355 <th class="th_details" colspan="6">Details</th>
13357 <tr class="entry_cont">
13358 <td class="entry_details" colspan="6">
13359 <p>The four coefficients that describe the quaternion
13360 rotation from the Android sensor coordinate system to a
13361 camera-aligned coordinate system where the X-axis is
13362 aligned with the long side of the image sensor,<wbr/> the Y-axis
13363 is aligned with the short side of the image sensor,<wbr/> and
13364 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13365 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13366 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13367 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13368 <pre><code> theta = 2 * acos(w)
13369 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13370 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13371 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13373 <p>To create a 3x3 rotation matrix that applies the rotation
13374 defined by this quaternion,<wbr/> the following matrix can be
13376 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
13377 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
13378 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13380 <p>This matrix can then be used to apply the rotation to a
13381 column vector point with</p>
13382 <p><code>p' = Rp</code></p>
13383 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13384 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13389 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13390 <!-- end of entry -->
13393 <tr class="entry" id="static_android.lens.poseTranslation">
13394 <td class="entry_name
13396 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13398 <td class="entry_type">
13399 <span class="entry_type_name">float</span>
13400 <span class="entry_type_container">x</span>
13402 <span class="entry_type_array">
13405 <span class="entry_type_visibility"> [public]</span>
13412 </td> <!-- entry_type -->
13414 <td class="entry_description">
13415 <p>Position of the camera optical center.<wbr/></p>
13418 <td class="entry_units">
13422 <td class="entry_range">
13425 <td class="entry_hal_version">
13429 <td class="entry_tags">
13430 <ul class="entry_tags">
13431 <li><a href="#tag_DEPTH">DEPTH</a></li>
13436 <tr class="entries_header">
13437 <th class="th_details" colspan="6">Details</th>
13439 <tr class="entry_cont">
13440 <td class="entry_details" colspan="6">
13441 <p>The position of the camera device's lens optical center,<wbr/>
13442 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
13443 optical center of the largest camera device facing in the
13444 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
13445 axes</a>.<wbr/> Note that only the axis definitions are shared with
13446 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
13447 <p>If this device is the largest or only camera device with a
13448 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
13449 camera device with a lens optical center located 3 cm from
13450 the main sensor along the +X axis (to the right from the
13451 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13452 <p>To transform a pixel coordinates between two cameras
13453 facing the same direction,<wbr/> first the source camera
13454 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then
13455 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
13456 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
13457 of the source camera,<wbr/> the translation of the source camera
13458 relative to the destination camera,<wbr/> the
13459 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
13460 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13461 of the destination camera.<wbr/> This obtains a
13462 radial-distortion-free coordinate in the destination
13463 camera pixel coordinates.<wbr/></p>
13464 <p>To compare this against a real image from the destination
13465 camera,<wbr/> the destination camera image then needs to be
13466 corrected for radial distortion before comparison or
13467 sampling.<wbr/></p>
13472 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13473 <!-- end of entry -->
13476 <tr class="entry" id="static_android.lens.intrinsicCalibration">
13477 <td class="entry_name
13479 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13481 <td class="entry_type">
13482 <span class="entry_type_name">float</span>
13483 <span class="entry_type_container">x</span>
13485 <span class="entry_type_array">
13488 <span class="entry_type_visibility"> [public]</span>
13495 </td> <!-- entry_type -->
13497 <td class="entry_description">
13498 <p>The parameters for this camera device's intrinsic
13499 calibration.<wbr/></p>
13502 <td class="entry_units">
13505 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13506 coordinate system.<wbr/>
13510 <td class="entry_range">
13513 <td class="entry_hal_version">
13517 <td class="entry_tags">
13518 <ul class="entry_tags">
13519 <li><a href="#tag_DEPTH">DEPTH</a></li>
13524 <tr class="entries_header">
13525 <th class="th_details" colspan="6">Details</th>
13527 <tr class="entry_cont">
13528 <td class="entry_details" colspan="6">
13529 <p>The five calibration parameters that describe the
13530 transform from camera-centric 3D coordinates to sensor
13531 pixel coordinates:</p>
13532 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13534 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13535 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13536 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13537 being aligned with the lens plane.<wbr/></p>
13538 <p>These are typically used within a transformation matrix K:</p>
13539 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
13540 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13543 <p>which can then be combined with the camera pose rotation
13544 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13545 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13546 complete transform from world coordinates to pixel
13548 <pre><code>P = [ K 0 * [ R t
13551 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13552 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13553 coordinate system,<wbr/> and with the mapping including the
13554 homogeneous division by z:</p>
13555 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13556 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13558 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13559 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13560 (depth) in pixel coordinates.<wbr/></p>
13561 <p>Note that the coordinate system for this transform is the
13562 <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/>
13563 where <code>(0,<wbr/>0)</code> is the top-left of the
13564 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13565 intrinsic calibration transforms have been applied to a
13566 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13567 transform needs to be applied,<wbr/> and the result adjusted to
13568 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13569 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13570 activeArraySize rectangle),<wbr/> to determine the final pixel
13571 coordinate of the world point for processed (non-RAW)
13572 output buffers.<wbr/></p>
13577 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13578 <!-- end of entry -->
13581 <tr class="entry" id="static_android.lens.radialDistortion">
13582 <td class="entry_name
13584 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13586 <td class="entry_type">
13587 <span class="entry_type_name">float</span>
13588 <span class="entry_type_container">x</span>
13590 <span class="entry_type_array">
13593 <span class="entry_type_visibility"> [public]</span>
13600 </td> <!-- entry_type -->
13602 <td class="entry_description">
13603 <p>The correction coefficients to correct for this camera device's
13604 radial and tangential lens distortion.<wbr/></p>
13607 <td class="entry_units">
13609 Unitless coefficients.<wbr/>
13613 <td class="entry_range">
13616 <td class="entry_hal_version">
13620 <td class="entry_tags">
13621 <ul class="entry_tags">
13622 <li><a href="#tag_DEPTH">DEPTH</a></li>
13627 <tr class="entries_header">
13628 <th class="th_details" colspan="6">Details</th>
13630 <tr class="entry_cont">
13631 <td class="entry_details" colspan="6">
13632 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13633 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13634 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13635 lens's geometric distortion with the mapping equations:</p>
13636 <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 ) +
13637 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13638 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13639 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13641 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13642 input image that correspond to the pixel values in the
13643 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13644 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13646 <p>The pixel coordinates are defined in a normalized
13647 coordinate system related to the
13648 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13649 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
13650 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13651 of both x and y coordinates are normalized to be 1 at the
13652 edge further from the optical center,<wbr/> so the range
13653 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
13654 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13655 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13656 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
13657 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13662 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13663 <!-- end of entry -->
13667 <!-- end of kind -->
13669 <tr><td colspan="7" class="kind">dynamic</td></tr>
13671 <thead class="entries_header">
13673 <th class="th_name">Property Name</th>
13674 <th class="th_type">Type</th>
13675 <th class="th_description">Description</th>
13676 <th class="th_units">Units</th>
13677 <th class="th_range">Range</th>
13678 <th class="th_hal_version">Initial HIDL HAL version</th>
13679 <th class="th_tags">Tags</th>
13694 <tr class="entry" id="dynamic_android.lens.aperture">
13695 <td class="entry_name
13697 android.<wbr/>lens.<wbr/>aperture
13699 <td class="entry_type">
13700 <span class="entry_type_name">float</span>
13702 <span class="entry_type_visibility"> [public]</span>
13705 <span class="entry_type_hwlevel">[full] </span>
13710 </td> <!-- entry_type -->
13712 <td class="entry_description">
13713 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13714 effective aperture diameter.<wbr/></p>
13717 <td class="entry_units">
13718 The f-number (f/<wbr/>N)
13721 <td class="entry_range">
13722 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13725 <td class="entry_hal_version">
13729 <td class="entry_tags">
13730 <ul class="entry_tags">
13731 <li><a href="#tag_V1">V1</a></li>
13736 <tr class="entries_header">
13737 <th class="th_details" colspan="6">Details</th>
13739 <tr class="entry_cont">
13740 <td class="entry_details" colspan="6">
13741 <p>Setting this value is only supported on the camera devices that have a variable
13742 aperture lens.<wbr/></p>
13743 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
13744 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
13745 <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>
13746 to achieve manual exposure control.<wbr/></p>
13747 <p>The requested aperture value may take several frames to reach the
13748 requested value; the camera device will report the current (intermediate)
13749 aperture size in capture result metadata while the aperture is changing.<wbr/>
13750 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>
13751 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
13752 the ON modes,<wbr/> this will be overridden by the camera device
13753 auto-exposure algorithm,<wbr/> the overridden values are then provided
13754 back to the user in the corresponding result.<wbr/></p>
13759 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13760 <!-- end of entry -->
13763 <tr class="entry" id="dynamic_android.lens.filterDensity">
13764 <td class="entry_name
13766 android.<wbr/>lens.<wbr/>filter<wbr/>Density
13768 <td class="entry_type">
13769 <span class="entry_type_name">float</span>
13771 <span class="entry_type_visibility"> [public]</span>
13774 <span class="entry_type_hwlevel">[full] </span>
13779 </td> <!-- entry_type -->
13781 <td class="entry_description">
13782 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
13785 <td class="entry_units">
13786 Exposure Value (EV)
13789 <td class="entry_range">
13790 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
13793 <td class="entry_hal_version">
13797 <td class="entry_tags">
13798 <ul class="entry_tags">
13799 <li><a href="#tag_V1">V1</a></li>
13804 <tr class="entries_header">
13805 <th class="th_details" colspan="6">Details</th>
13807 <tr class="entry_cont">
13808 <td class="entry_details" colspan="6">
13809 <p>This control will not be supported on most camera devices.<wbr/></p>
13810 <p>Lens filters are typically used to lower the amount of light the
13811 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
13812 step is the standard logarithmic representation,<wbr/> which are
13813 non-negative,<wbr/> and inversely proportional to the amount of light
13814 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
13815 in no reduction of the incoming light,<wbr/> and setting this to 2 would
13816 mean that the filter is set to reduce incoming light by two stops
13817 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
13818 <p>It may take several frames before the lens filter density changes
13819 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
13820 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
13825 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13826 <!-- end of entry -->
13829 <tr class="entry" id="dynamic_android.lens.focalLength">
13830 <td class="entry_name
13832 android.<wbr/>lens.<wbr/>focal<wbr/>Length
13834 <td class="entry_type">
13835 <span class="entry_type_name">float</span>
13837 <span class="entry_type_visibility"> [public]</span>
13840 <span class="entry_type_hwlevel">[legacy] </span>
13845 </td> <!-- entry_type -->
13847 <td class="entry_description">
13848 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
13851 <td class="entry_units">
13855 <td class="entry_range">
13856 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
13859 <td class="entry_hal_version">
13863 <td class="entry_tags">
13864 <ul class="entry_tags">
13865 <li><a href="#tag_BC">BC</a></li>
13870 <tr class="entries_header">
13871 <th class="th_details" colspan="6">Details</th>
13873 <tr class="entry_cont">
13874 <td class="entry_details" colspan="6">
13875 <p>This setting controls the physical focal length of the camera
13876 device's lens.<wbr/> Changing the focal length changes the field of
13877 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
13878 <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
13879 setting won't be applied instantaneously,<wbr/> and it may take several
13880 frames before the lens can change to the requested focal length.<wbr/>
13881 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
13882 be set to MOVING.<wbr/></p>
13883 <p>Optical zoom will not be supported on most devices.<wbr/></p>
13888 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13889 <!-- end of entry -->
13892 <tr class="entry" id="dynamic_android.lens.focusDistance">
13893 <td class="entry_name
13895 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
13897 <td class="entry_type">
13898 <span class="entry_type_name">float</span>
13900 <span class="entry_type_visibility"> [public]</span>
13903 <span class="entry_type_hwlevel">[full] </span>
13908 </td> <!-- entry_type -->
13910 <td class="entry_description">
13911 <p>Desired distance to plane of sharpest focus,<wbr/>
13912 measured from frontmost surface of the lens.<wbr/></p>
13915 <td class="entry_units">
13916 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13919 <td class="entry_range">
13923 <td class="entry_hal_version">
13927 <td class="entry_tags">
13928 <ul class="entry_tags">
13929 <li><a href="#tag_BC">BC</a></li>
13934 <tr class="entries_header">
13935 <th class="th_details" colspan="6">Details</th>
13937 <tr class="entry_cont">
13938 <td class="entry_details" colspan="6">
13939 <p>Should be zero for fixed-focus cameras</p>
13944 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13945 <!-- end of entry -->
13948 <tr class="entry" id="dynamic_android.lens.focusRange">
13949 <td class="entry_name
13951 android.<wbr/>lens.<wbr/>focus<wbr/>Range
13953 <td class="entry_type">
13954 <span class="entry_type_name">float</span>
13955 <span class="entry_type_container">x</span>
13957 <span class="entry_type_array">
13960 <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
13963 <span class="entry_type_hwlevel">[limited] </span>
13966 <div class="entry_type_notes">Range of scene distances that are in focus</div>
13969 </td> <!-- entry_type -->
13971 <td class="entry_description">
13972 <p>The range of scene distances that are in
13973 sharp focus (depth of field).<wbr/></p>
13976 <td class="entry_units">
13977 A pair of focus distances in diopters: (near,<wbr/>
13978 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
13981 <td class="entry_range">
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>If variable focus not supported,<wbr/> can still report
14002 fixed depth of field range</p>
14007 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14008 <!-- end of entry -->
14011 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14012 <td class="entry_name
14014 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14016 <td class="entry_type">
14017 <span class="entry_type_name entry_type_name_enum">byte</span>
14019 <span class="entry_type_visibility"> [public]</span>
14022 <span class="entry_type_hwlevel">[limited] </span>
14026 <ul class="entry_type_enum">
14028 <span class="entry_type_enum_name">OFF (v3.2)</span>
14029 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14032 <span class="entry_type_enum_name">ON (v3.2)</span>
14033 <span class="entry_type_enum_optional">[optional]</span>
14034 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14038 </td> <!-- entry_type -->
14040 <td class="entry_description">
14041 <p>Sets whether the camera device uses optical image stabilization (OIS)
14042 when capturing images.<wbr/></p>
14045 <td class="entry_units">
14048 <td class="entry_range">
14049 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14052 <td class="entry_hal_version">
14056 <td class="entry_tags">
14057 <ul class="entry_tags">
14058 <li><a href="#tag_V1">V1</a></li>
14063 <tr class="entries_header">
14064 <th class="th_details" colspan="6">Details</th>
14066 <tr class="entry_cont">
14067 <td class="entry_details" colspan="6">
14068 <p>OIS is used to compensate for motion blur due to small
14069 movements of the camera during capture.<wbr/> Unlike digital image
14070 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14071 makes use of mechanical elements to stabilize the camera
14072 sensor,<wbr/> and thus allows for longer exposure times before
14073 camera shake becomes apparent.<wbr/></p>
14074 <p>Switching between different optical stabilization modes may take several
14075 frames to initialize,<wbr/> the camera device will report the current mode in
14076 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14077 optical stabilization modes in the first several capture results may still
14078 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14079 <p>If a camera device supports both OIS and digital image stabilization
14080 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14081 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14082 <p>Not all devices will support OIS; see
14083 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14084 available controls.<wbr/></p>
14089 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14090 <!-- end of entry -->
14093 <tr class="entry" id="dynamic_android.lens.state">
14094 <td class="entry_name
14096 android.<wbr/>lens.<wbr/>state
14098 <td class="entry_type">
14099 <span class="entry_type_name entry_type_name_enum">byte</span>
14101 <span class="entry_type_visibility"> [public]</span>
14104 <span class="entry_type_hwlevel">[limited] </span>
14108 <ul class="entry_type_enum">
14110 <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
14111 <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/>
14112 <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>
14115 <span class="entry_type_enum_name">MOVING (v3.2)</span>
14116 <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14117 (<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/>
14118 <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
14119 currently changing.<wbr/></p></span>
14123 </td> <!-- entry_type -->
14125 <td class="entry_description">
14126 <p>Current lens status.<wbr/></p>
14129 <td class="entry_units">
14132 <td class="entry_range">
14135 <td class="entry_hal_version">
14139 <td class="entry_tags">
14140 <ul class="entry_tags">
14141 <li><a href="#tag_V1">V1</a></li>
14146 <tr class="entries_header">
14147 <th class="th_details" colspan="6">Details</th>
14149 <tr class="entry_cont">
14150 <td class="entry_details" colspan="6">
14151 <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/>
14152 <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/>
14153 they may take several frames to reach the requested values.<wbr/> This state indicates
14154 the current status of the lens parameters.<wbr/></p>
14155 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14156 either because the parameters are all fixed,<wbr/> or because the lens has had enough
14157 time to reach the most recently-requested values.<wbr/>
14158 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14160 <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
14161 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14162 <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/>
14163 which means the optical zoom is not supported.<wbr/></li>
14164 <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>
14165 <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>
14167 <p>Then this state will always be STATIONARY.<wbr/></p>
14168 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14169 is changing.<wbr/></p>
14174 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14175 <!-- end of entry -->
14178 <tr class="entry" id="dynamic_android.lens.poseRotation">
14179 <td class="entry_name
14181 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14183 <td class="entry_type">
14184 <span class="entry_type_name">float</span>
14185 <span class="entry_type_container">x</span>
14187 <span class="entry_type_array">
14190 <span class="entry_type_visibility"> [public]</span>
14197 </td> <!-- entry_type -->
14199 <td class="entry_description">
14200 <p>The orientation of the camera relative to the sensor
14201 coordinate system.<wbr/></p>
14204 <td class="entry_units">
14206 Quaternion coefficients
14210 <td class="entry_range">
14213 <td class="entry_hal_version">
14217 <td class="entry_tags">
14218 <ul class="entry_tags">
14219 <li><a href="#tag_DEPTH">DEPTH</a></li>
14224 <tr class="entries_header">
14225 <th class="th_details" colspan="6">Details</th>
14227 <tr class="entry_cont">
14228 <td class="entry_details" colspan="6">
14229 <p>The four coefficients that describe the quaternion
14230 rotation from the Android sensor coordinate system to a
14231 camera-aligned coordinate system where the X-axis is
14232 aligned with the long side of the image sensor,<wbr/> the Y-axis
14233 is aligned with the short side of the image sensor,<wbr/> and
14234 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14235 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14236 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14237 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14238 <pre><code> theta = 2 * acos(w)
14239 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14240 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14241 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14243 <p>To create a 3x3 rotation matrix that applies the rotation
14244 defined by this quaternion,<wbr/> the following matrix can be
14246 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
14247 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
14248 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14250 <p>This matrix can then be used to apply the rotation to a
14251 column vector point with</p>
14252 <p><code>p' = Rp</code></p>
14253 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14254 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14259 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14260 <!-- end of entry -->
14263 <tr class="entry" id="dynamic_android.lens.poseTranslation">
14264 <td class="entry_name
14266 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14268 <td class="entry_type">
14269 <span class="entry_type_name">float</span>
14270 <span class="entry_type_container">x</span>
14272 <span class="entry_type_array">
14275 <span class="entry_type_visibility"> [public]</span>
14282 </td> <!-- entry_type -->
14284 <td class="entry_description">
14285 <p>Position of the camera optical center.<wbr/></p>
14288 <td class="entry_units">
14292 <td class="entry_range">
14295 <td class="entry_hal_version">
14299 <td class="entry_tags">
14300 <ul class="entry_tags">
14301 <li><a href="#tag_DEPTH">DEPTH</a></li>
14306 <tr class="entries_header">
14307 <th class="th_details" colspan="6">Details</th>
14309 <tr class="entry_cont">
14310 <td class="entry_details" colspan="6">
14311 <p>The position of the camera device's lens optical center,<wbr/>
14312 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
14313 optical center of the largest camera device facing in the
14314 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
14315 axes</a>.<wbr/> Note that only the axis definitions are shared with
14316 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
14317 <p>If this device is the largest or only camera device with a
14318 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
14319 camera device with a lens optical center located 3 cm from
14320 the main sensor along the +X axis (to the right from the
14321 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
14322 <p>To transform a pixel coordinates between two cameras
14323 facing the same direction,<wbr/> first the source camera
14324 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then
14325 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
14326 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
14327 of the source camera,<wbr/> the translation of the source camera
14328 relative to the destination camera,<wbr/> the
14329 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
14330 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
14331 of the destination camera.<wbr/> This obtains a
14332 radial-distortion-free coordinate in the destination
14333 camera pixel coordinates.<wbr/></p>
14334 <p>To compare this against a real image from the destination
14335 camera,<wbr/> the destination camera image then needs to be
14336 corrected for radial distortion before comparison or
14337 sampling.<wbr/></p>
14342 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14343 <!-- end of entry -->
14346 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14347 <td class="entry_name
14349 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14351 <td class="entry_type">
14352 <span class="entry_type_name">float</span>
14353 <span class="entry_type_container">x</span>
14355 <span class="entry_type_array">
14358 <span class="entry_type_visibility"> [public]</span>
14365 </td> <!-- entry_type -->
14367 <td class="entry_description">
14368 <p>The parameters for this camera device's intrinsic
14369 calibration.<wbr/></p>
14372 <td class="entry_units">
14375 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14376 coordinate system.<wbr/>
14380 <td class="entry_range">
14383 <td class="entry_hal_version">
14387 <td class="entry_tags">
14388 <ul class="entry_tags">
14389 <li><a href="#tag_DEPTH">DEPTH</a></li>
14394 <tr class="entries_header">
14395 <th class="th_details" colspan="6">Details</th>
14397 <tr class="entry_cont">
14398 <td class="entry_details" colspan="6">
14399 <p>The five calibration parameters that describe the
14400 transform from camera-centric 3D coordinates to sensor
14401 pixel coordinates:</p>
14402 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14404 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14405 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14406 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14407 being aligned with the lens plane.<wbr/></p>
14408 <p>These are typically used within a transformation matrix K:</p>
14409 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
14410 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14413 <p>which can then be combined with the camera pose rotation
14414 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14415 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
14416 complete transform from world coordinates to pixel
14418 <pre><code>P = [ K 0 * [ R t
14421 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
14422 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14423 coordinate system,<wbr/> and with the mapping including the
14424 homogeneous division by z:</p>
14425 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14426 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14428 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14429 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14430 (depth) in pixel coordinates.<wbr/></p>
14431 <p>Note that the coordinate system for this transform is the
14432 <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/>
14433 where <code>(0,<wbr/>0)</code> is the top-left of the
14434 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14435 intrinsic calibration transforms have been applied to a
14436 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
14437 transform needs to be applied,<wbr/> and the result adjusted to
14438 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14439 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14440 activeArraySize rectangle),<wbr/> to determine the final pixel
14441 coordinate of the world point for processed (non-RAW)
14442 output buffers.<wbr/></p>
14447 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14448 <!-- end of entry -->
14451 <tr class="entry" id="dynamic_android.lens.radialDistortion">
14452 <td class="entry_name
14454 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
14456 <td class="entry_type">
14457 <span class="entry_type_name">float</span>
14458 <span class="entry_type_container">x</span>
14460 <span class="entry_type_array">
14463 <span class="entry_type_visibility"> [public]</span>
14470 </td> <!-- entry_type -->
14472 <td class="entry_description">
14473 <p>The correction coefficients to correct for this camera device's
14474 radial and tangential lens distortion.<wbr/></p>
14477 <td class="entry_units">
14479 Unitless coefficients.<wbr/>
14483 <td class="entry_range">
14486 <td class="entry_hal_version">
14490 <td class="entry_tags">
14491 <ul class="entry_tags">
14492 <li><a href="#tag_DEPTH">DEPTH</a></li>
14497 <tr class="entries_header">
14498 <th class="th_details" colspan="6">Details</th>
14500 <tr class="entry_cont">
14501 <td class="entry_details" colspan="6">
14502 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14503 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14504 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14505 lens's geometric distortion with the mapping equations:</p>
14506 <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 ) +
14507 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14508 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14509 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14511 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14512 input image that correspond to the pixel values in the
14513 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14514 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14516 <p>The pixel coordinates are defined in a normalized
14517 coordinate system related to the
14518 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14519 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
14520 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14521 of both x and y coordinates are normalized to be 1 at the
14522 edge further from the optical center,<wbr/> so the range
14523 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
14524 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14525 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14526 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
14527 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14532 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14533 <!-- end of entry -->
14537 <!-- end of kind -->
14540 <!-- end of section -->
14541 <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
14544 <tr><td colspan="7" class="kind">controls</td></tr>
14546 <thead class="entries_header">
14548 <th class="th_name">Property Name</th>
14549 <th class="th_type">Type</th>
14550 <th class="th_description">Description</th>
14551 <th class="th_units">Units</th>
14552 <th class="th_range">Range</th>
14553 <th class="th_hal_version">Initial HIDL HAL version</th>
14554 <th class="th_tags">Tags</th>
14569 <tr class="entry" id="controls_android.noiseReduction.mode">
14570 <td class="entry_name
14572 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14574 <td class="entry_type">
14575 <span class="entry_type_name entry_type_name_enum">byte</span>
14577 <span class="entry_type_visibility"> [public]</span>
14580 <span class="entry_type_hwlevel">[full] </span>
14584 <ul class="entry_type_enum">
14586 <span class="entry_type_enum_name">OFF (v3.2)</span>
14587 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14590 <span class="entry_type_enum_name">FAST (v3.2)</span>
14591 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14592 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14593 relative to sensor.<wbr/></p></span>
14596 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
14597 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14598 rate relative to sensor output.<wbr/></p></span>
14601 <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
14602 <span class="entry_type_enum_optional">[optional]</span>
14603 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14604 sensor output.<wbr/> </p></span>
14607 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
14608 <span class="entry_type_enum_optional">[optional]</span>
14609 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14610 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>)
14611 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14612 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14613 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14614 and the quality is equal to or better than FAST (since it is only applied to
14615 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14616 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14617 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14618 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14619 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
14620 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14621 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14622 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14623 applied for reasonable preview quality.<wbr/></p>
14624 <p>This mode is guaranteed to be supported by devices that support either the
14625 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14626 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14627 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14631 </td> <!-- entry_type -->
14633 <td class="entry_description">
14634 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14637 <td class="entry_units">
14640 <td class="entry_range">
14641 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14644 <td class="entry_hal_version">
14648 <td class="entry_tags">
14649 <ul class="entry_tags">
14650 <li><a href="#tag_V1">V1</a></li>
14651 <li><a href="#tag_REPROC">REPROC</a></li>
14656 <tr class="entries_header">
14657 <th class="th_details" colspan="6">Details</th>
14659 <tr class="entry_cont">
14660 <td class="entry_details" colspan="6">
14661 <p>The noise reduction algorithm attempts to improve image quality by removing
14662 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14663 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14664 YUV domain.<wbr/></p>
14665 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14666 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14667 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14668 <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>
14669 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14670 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14671 will use the highest-quality noise filtering algorithms,<wbr/>
14672 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14673 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14674 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14675 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14676 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14677 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14678 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14679 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14680 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14681 those will be reprocessed later if necessary.<wbr/></p>
14682 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14683 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14684 may adjust the noise reduction parameters for best image quality based on the
14685 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14689 <tr class="entries_header">
14690 <th class="th_details" colspan="6">HAL Implementation Details</th>
14692 <tr class="entry_cont">
14693 <td class="entry_details" colspan="6">
14694 <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
14695 adjust the internal noise reduction parameters appropriately to get the best quality
14700 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14701 <!-- end of entry -->
14704 <tr class="entry" id="controls_android.noiseReduction.strength">
14705 <td class="entry_name
14707 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
14709 <td class="entry_type">
14710 <span class="entry_type_name">byte</span>
14712 <span class="entry_type_visibility"> [system]</span>
14719 </td> <!-- entry_type -->
14721 <td class="entry_description">
14722 <p>Control the amount of noise reduction
14723 applied to the images</p>
14726 <td class="entry_units">
14727 1-10; 10 is max noise reduction
14730 <td class="entry_range">
14734 <td class="entry_hal_version">
14738 <td class="entry_tags">
14739 <ul class="entry_tags">
14740 <li><a href="#tag_FUTURE">FUTURE</a></li>
14747 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14748 <!-- end of entry -->
14752 <!-- end of kind -->
14754 <tr><td colspan="7" class="kind">static</td></tr>
14756 <thead class="entries_header">
14758 <th class="th_name">Property Name</th>
14759 <th class="th_type">Type</th>
14760 <th class="th_description">Description</th>
14761 <th class="th_units">Units</th>
14762 <th class="th_range">Range</th>
14763 <th class="th_hal_version">Initial HIDL HAL version</th>
14764 <th class="th_tags">Tags</th>
14779 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
14780 <td class="entry_name
14782 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
14784 <td class="entry_type">
14785 <span class="entry_type_name">byte</span>
14786 <span class="entry_type_container">x</span>
14788 <span class="entry_type_array">
14791 <span class="entry_type_visibility"> [public as enumList]</span>
14794 <span class="entry_type_hwlevel">[limited] </span>
14797 <div class="entry_type_notes">list of enums</div>
14800 </td> <!-- entry_type -->
14802 <td class="entry_description">
14803 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
14804 by this camera device.<wbr/></p>
14807 <td class="entry_units">
14810 <td class="entry_range">
14811 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
14814 <td class="entry_hal_version">
14818 <td class="entry_tags">
14819 <ul class="entry_tags">
14820 <li><a href="#tag_V1">V1</a></li>
14821 <li><a href="#tag_REPROC">REPROC</a></li>
14826 <tr class="entries_header">
14827 <th class="th_details" colspan="6">Details</th>
14829 <tr class="entry_cont">
14830 <td class="entry_details" colspan="6">
14831 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
14832 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
14833 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
14834 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
14838 <tr class="entries_header">
14839 <th class="th_details" colspan="6">HAL Implementation Details</th>
14841 <tr class="entry_cont">
14842 <td class="entry_details" colspan="6">
14843 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
14844 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
14845 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
14846 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
14850 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14851 <!-- end of entry -->
14855 <!-- end of kind -->
14857 <tr><td colspan="7" class="kind">dynamic</td></tr>
14859 <thead class="entries_header">
14861 <th class="th_name">Property Name</th>
14862 <th class="th_type">Type</th>
14863 <th class="th_description">Description</th>
14864 <th class="th_units">Units</th>
14865 <th class="th_range">Range</th>
14866 <th class="th_hal_version">Initial HIDL HAL version</th>
14867 <th class="th_tags">Tags</th>
14882 <tr class="entry" id="dynamic_android.noiseReduction.mode">
14883 <td class="entry_name
14885 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14887 <td class="entry_type">
14888 <span class="entry_type_name entry_type_name_enum">byte</span>
14890 <span class="entry_type_visibility"> [public]</span>
14893 <span class="entry_type_hwlevel">[full] </span>
14897 <ul class="entry_type_enum">
14899 <span class="entry_type_enum_name">OFF (v3.2)</span>
14900 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14903 <span class="entry_type_enum_name">FAST (v3.2)</span>
14904 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14905 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14906 relative to sensor.<wbr/></p></span>
14909 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
14910 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14911 rate relative to sensor output.<wbr/></p></span>
14914 <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
14915 <span class="entry_type_enum_optional">[optional]</span>
14916 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14917 sensor output.<wbr/> </p></span>
14920 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
14921 <span class="entry_type_enum_optional">[optional]</span>
14922 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14923 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>)
14924 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14925 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14926 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14927 and the quality is equal to or better than FAST (since it is only applied to
14928 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14929 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14930 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14931 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14932 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
14933 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14934 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14935 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14936 applied for reasonable preview quality.<wbr/></p>
14937 <p>This mode is guaranteed to be supported by devices that support either the
14938 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14939 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14940 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14944 </td> <!-- entry_type -->
14946 <td class="entry_description">
14947 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14950 <td class="entry_units">
14953 <td class="entry_range">
14954 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14957 <td class="entry_hal_version">
14961 <td class="entry_tags">
14962 <ul class="entry_tags">
14963 <li><a href="#tag_V1">V1</a></li>
14964 <li><a href="#tag_REPROC">REPROC</a></li>
14969 <tr class="entries_header">
14970 <th class="th_details" colspan="6">Details</th>
14972 <tr class="entry_cont">
14973 <td class="entry_details" colspan="6">
14974 <p>The noise reduction algorithm attempts to improve image quality by removing
14975 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14976 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14977 YUV domain.<wbr/></p>
14978 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14979 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14980 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14981 <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>
14982 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14983 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14984 will use the highest-quality noise filtering algorithms,<wbr/>
14985 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14986 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14987 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14988 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14989 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14990 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14991 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14992 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14993 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14994 those will be reprocessed later if necessary.<wbr/></p>
14995 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14996 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14997 may adjust the noise reduction parameters for best image quality based on the
14998 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15002 <tr class="entries_header">
15003 <th class="th_details" colspan="6">HAL Implementation Details</th>
15005 <tr class="entry_cont">
15006 <td class="entry_details" colspan="6">
15007 <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
15008 adjust the internal noise reduction parameters appropriately to get the best quality
15013 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15014 <!-- end of entry -->
15018 <!-- end of kind -->
15021 <!-- end of section -->
15022 <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15025 <tr><td colspan="7" class="kind">static</td></tr>
15027 <thead class="entries_header">
15029 <th class="th_name">Property Name</th>
15030 <th class="th_type">Type</th>
15031 <th class="th_description">Description</th>
15032 <th class="th_units">Units</th>
15033 <th class="th_range">Range</th>
15034 <th class="th_hal_version">Initial HIDL HAL version</th>
15035 <th class="th_tags">Tags</th>
15050 <tr class="entry" id="static_android.quirks.meteringCropRegion">
15051 <td class="entry_name
15052 entry_name_deprecated
15054 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15056 <td class="entry_type">
15057 <span class="entry_type_name">byte</span>
15059 <span class="entry_type_visibility"> [system]</span>
15063 <span class="entry_type_deprecated">[deprecated] </span>
15067 </td> <!-- entry_type -->
15069 <td class="entry_description">
15070 <p>If set to 1,<wbr/> the camera service does not
15071 scale 'normalized' coordinates with respect to the crop
15072 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15073 and output (face rectangles).<wbr/></p>
15076 <td class="entry_units">
15079 <td class="entry_range">
15080 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15083 <td class="entry_hal_version">
15087 <td class="entry_tags">
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>Normalized coordinates refer to those in the
15097 (-1000,<wbr/>1000) range mentioned in the
15098 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15099 <p>HAL implementations should instead always use and emit
15100 sensor array-relative coordinates for all region data.<wbr/> Does
15101 not need to be listed in static metadata.<wbr/> Support will be
15102 removed in future versions of camera service.<wbr/></p>
15107 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15108 <!-- end of entry -->
15111 <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15112 <td class="entry_name
15113 entry_name_deprecated
15115 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15117 <td class="entry_type">
15118 <span class="entry_type_name">byte</span>
15120 <span class="entry_type_visibility"> [system]</span>
15124 <span class="entry_type_deprecated">[deprecated] </span>
15128 </td> <!-- entry_type -->
15130 <td class="entry_description">
15131 <p>If set to 1,<wbr/> then the camera service always
15132 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15136 <td class="entry_units">
15139 <td class="entry_range">
15140 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15143 <td class="entry_hal_version">
15147 <td class="entry_tags">
15151 <tr class="entries_header">
15152 <th class="th_details" colspan="6">Details</th>
15154 <tr class="entry_cont">
15155 <td class="entry_details" colspan="6">
15156 <p>HAL implementations should implement AF trigger
15157 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15158 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15159 not need to be listed in static metadata.<wbr/> Support will be
15160 removed in future versions of camera service</p>
15165 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15166 <!-- end of entry -->
15169 <tr class="entry" id="static_android.quirks.useZslFormat">
15170 <td class="entry_name
15171 entry_name_deprecated
15173 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15175 <td class="entry_type">
15176 <span class="entry_type_name">byte</span>
15178 <span class="entry_type_visibility"> [system]</span>
15182 <span class="entry_type_deprecated">[deprecated] </span>
15186 </td> <!-- entry_type -->
15188 <td class="entry_description">
15189 <p>If set to 1,<wbr/> the camera service uses
15190 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15191 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15192 shutter lag stream</p>
15195 <td class="entry_units">
15198 <td class="entry_range">
15199 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15202 <td class="entry_hal_version">
15206 <td class="entry_tags">
15210 <tr class="entries_header">
15211 <th class="th_details" colspan="6">Details</th>
15213 <tr class="entry_cont">
15214 <td class="entry_details" colspan="6">
15215 <p>HAL implementations should use gralloc usage flags
15216 to determine that a stream will be used for
15217 zero-shutter-lag,<wbr/> instead of relying on an explicit
15218 format setting.<wbr/> Does not need to be listed in static
15219 metadata.<wbr/> Support will be removed in future versions of
15220 camera service.<wbr/></p>
15225 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15226 <!-- end of entry -->
15229 <tr class="entry" id="static_android.quirks.usePartialResult">
15230 <td class="entry_name
15231 entry_name_deprecated
15233 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15235 <td class="entry_type">
15236 <span class="entry_type_name">byte</span>
15238 <span class="entry_type_visibility"> [hidden]</span>
15242 <span class="entry_type_deprecated">[deprecated] </span>
15246 </td> <!-- entry_type -->
15248 <td class="entry_description">
15249 <p>If set to 1,<wbr/> the HAL will always split result
15250 metadata for a single capture into multiple buffers,<wbr/>
15251 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15254 <td class="entry_units">
15257 <td class="entry_range">
15258 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15261 <td class="entry_hal_version">
15265 <td class="entry_tags">
15269 <tr class="entries_header">
15270 <th class="th_details" colspan="6">Details</th>
15272 <tr class="entry_cont">
15273 <td class="entry_details" colspan="6">
15274 <p>Does not need to be listed in static
15275 metadata.<wbr/> Support for partial results will be reworked in
15276 future versions of camera service.<wbr/> This quirk will stop
15277 working at that point; DO NOT USE without careful
15278 consideration of future support.<wbr/></p>
15282 <tr class="entries_header">
15283 <th class="th_details" colspan="6">HAL Implementation Details</th>
15285 <tr class="entry_cont">
15286 <td class="entry_details" colspan="6">
15287 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15288 for information on how to implement partial results.<wbr/></p>
15292 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15293 <!-- end of entry -->
15297 <!-- end of kind -->
15299 <tr><td colspan="7" class="kind">dynamic</td></tr>
15301 <thead class="entries_header">
15303 <th class="th_name">Property Name</th>
15304 <th class="th_type">Type</th>
15305 <th class="th_description">Description</th>
15306 <th class="th_units">Units</th>
15307 <th class="th_range">Range</th>
15308 <th class="th_hal_version">Initial HIDL HAL version</th>
15309 <th class="th_tags">Tags</th>
15324 <tr class="entry" id="dynamic_android.quirks.partialResult">
15325 <td class="entry_name
15326 entry_name_deprecated
15328 android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15330 <td class="entry_type">
15331 <span class="entry_type_name entry_type_name_enum">byte</span>
15333 <span class="entry_type_visibility"> [hidden as boolean]</span>
15337 <span class="entry_type_deprecated">[deprecated] </span>
15340 <ul class="entry_type_enum">
15342 <span class="entry_type_enum_name">FINAL (v3.2)</span>
15343 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15344 for this capture.<wbr/></p></span>
15347 <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
15348 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15349 capture.<wbr/> More result buffers for this capture will be sent
15350 by the camera device,<wbr/> the last of which will be marked
15351 FINAL.<wbr/></p></span>
15355 </td> <!-- entry_type -->
15357 <td class="entry_description">
15358 <p>Whether a result given to the framework is the
15359 final one for the capture,<wbr/> or only a partial that contains a
15360 subset of the full set of dynamic metadata
15364 <td class="entry_units">
15367 <td class="entry_range">
15368 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15369 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
15372 <td class="entry_hal_version">
15376 <td class="entry_tags">
15380 <tr class="entries_header">
15381 <th class="th_details" colspan="6">Details</th>
15383 <tr class="entry_cont">
15384 <td class="entry_details" colspan="6">
15385 <p>The entries in the result metadata buffers for a
15386 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
15387 FINAL buffers must retain FIFO ordering relative to the
15388 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
15389 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
15390 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
15391 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
15392 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
15393 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
15397 <tr class="entries_header">
15398 <th class="th_details" colspan="6">HAL Implementation Details</th>
15400 <tr class="entry_cont">
15401 <td class="entry_details" colspan="6">
15402 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15403 for information on how to implement partial results.<wbr/></p>
15407 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15408 <!-- end of entry -->
15412 <!-- end of kind -->
15415 <!-- end of section -->
15416 <tr><td colspan="7" id="section_request" class="section">request</td></tr>
15419 <tr><td colspan="7" class="kind">controls</td></tr>
15421 <thead class="entries_header">
15423 <th class="th_name">Property Name</th>
15424 <th class="th_type">Type</th>
15425 <th class="th_description">Description</th>
15426 <th class="th_units">Units</th>
15427 <th class="th_range">Range</th>
15428 <th class="th_hal_version">Initial HIDL HAL version</th>
15429 <th class="th_tags">Tags</th>
15444 <tr class="entry" id="controls_android.request.frameCount">
15445 <td class="entry_name
15446 entry_name_deprecated
15448 android.<wbr/>request.<wbr/>frame<wbr/>Count
15450 <td class="entry_type">
15451 <span class="entry_type_name">int32</span>
15453 <span class="entry_type_visibility"> [system]</span>
15457 <span class="entry_type_deprecated">[deprecated] </span>
15461 </td> <!-- entry_type -->
15463 <td class="entry_description">
15464 <p>A frame counter set by the framework.<wbr/> Must
15465 be maintained unchanged in output frame.<wbr/> This value monotonically
15466 increases with every new result (that is,<wbr/> each new result has a unique
15467 frameCount value).<wbr/></p>
15470 <td class="entry_units">
15471 incrementing integer
15474 <td class="entry_range">
15475 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15476 <p>Any int.<wbr/></p>
15479 <td class="entry_hal_version">
15483 <td class="entry_tags">
15489 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15490 <!-- end of entry -->
15493 <tr class="entry" id="controls_android.request.id">
15494 <td class="entry_name
15496 android.<wbr/>request.<wbr/>id
15498 <td class="entry_type">
15499 <span class="entry_type_name">int32</span>
15501 <span class="entry_type_visibility"> [hidden]</span>
15508 </td> <!-- entry_type -->
15510 <td class="entry_description">
15511 <p>An application-specified ID for the current
15512 request.<wbr/> Must be maintained unchanged in output
15516 <td class="entry_units">
15517 arbitrary integer assigned by application
15520 <td class="entry_range">
15524 <td class="entry_hal_version">
15528 <td class="entry_tags">
15529 <ul class="entry_tags">
15530 <li><a href="#tag_V1">V1</a></li>
15537 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15538 <!-- end of entry -->
15541 <tr class="entry" id="controls_android.request.inputStreams">
15542 <td class="entry_name
15543 entry_name_deprecated
15545 android.<wbr/>request.<wbr/>input<wbr/>Streams
15547 <td class="entry_type">
15548 <span class="entry_type_name">int32</span>
15549 <span class="entry_type_container">x</span>
15551 <span class="entry_type_array">
15554 <span class="entry_type_visibility"> [system]</span>
15558 <span class="entry_type_deprecated">[deprecated] </span>
15562 </td> <!-- entry_type -->
15564 <td class="entry_description">
15565 <p>List which camera reprocess stream is used
15566 for the source of reprocessing data.<wbr/></p>
15569 <td class="entry_units">
15570 List of camera reprocess stream IDs
15573 <td class="entry_range">
15574 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15575 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
15578 <td class="entry_hal_version">
15582 <td class="entry_tags">
15583 <ul class="entry_tags">
15584 <li><a href="#tag_HAL2">HAL2</a></li>
15589 <tr class="entries_header">
15590 <th class="th_details" colspan="6">Details</th>
15592 <tr class="entry_cont">
15593 <td class="entry_details" colspan="6">
15594 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
15595 REPROCESS.<wbr/> Ignored otherwise</p>
15600 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15601 <!-- end of entry -->
15604 <tr class="entry" id="controls_android.request.metadataMode">
15605 <td class="entry_name
15607 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15609 <td class="entry_type">
15610 <span class="entry_type_name entry_type_name_enum">byte</span>
15612 <span class="entry_type_visibility"> [system]</span>
15618 <ul class="entry_type_enum">
15620 <span class="entry_type_enum_name">NONE (v3.2)</span>
15621 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15622 for application-bound buffer data.<wbr/> If no
15623 application-bound streams exist,<wbr/> no frame should be
15624 placed in the output frame queue.<wbr/> If such streams
15625 exist,<wbr/> a frame should be placed on the output queue
15626 with null metadata but with the necessary output buffer
15627 information.<wbr/> Timestamp information should still be
15628 included with any output stream buffers</p></span>
15631 <span class="entry_type_enum_name">FULL (v3.2)</span>
15632 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15633 only be produced if they are separately
15638 </td> <!-- entry_type -->
15640 <td class="entry_description">
15641 <p>How much metadata to produce on
15645 <td class="entry_units">
15648 <td class="entry_range">
15651 <td class="entry_hal_version">
15655 <td class="entry_tags">
15656 <ul class="entry_tags">
15657 <li><a href="#tag_FUTURE">FUTURE</a></li>
15664 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15665 <!-- end of entry -->
15668 <tr class="entry" id="controls_android.request.outputStreams">
15669 <td class="entry_name
15670 entry_name_deprecated
15672 android.<wbr/>request.<wbr/>output<wbr/>Streams
15674 <td class="entry_type">
15675 <span class="entry_type_name">int32</span>
15676 <span class="entry_type_container">x</span>
15678 <span class="entry_type_array">
15681 <span class="entry_type_visibility"> [system]</span>
15685 <span class="entry_type_deprecated">[deprecated] </span>
15689 </td> <!-- entry_type -->
15691 <td class="entry_description">
15692 <p>Lists which camera output streams image data
15693 from this capture must be sent to</p>
15696 <td class="entry_units">
15697 List of camera stream IDs
15700 <td class="entry_range">
15701 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15702 <p>List must only include streams that have been
15706 <td class="entry_hal_version">
15710 <td class="entry_tags">
15711 <ul class="entry_tags">
15712 <li><a href="#tag_HAL2">HAL2</a></li>
15717 <tr class="entries_header">
15718 <th class="th_details" colspan="6">Details</th>
15720 <tr class="entry_cont">
15721 <td class="entry_details" colspan="6">
15722 <p>If no output streams are listed,<wbr/> then the image
15723 data should simply be discarded.<wbr/> The image data must
15724 still be captured for metadata and statistics production,<wbr/>
15725 and the lens and flash must operate as requested.<wbr/></p>
15730 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15731 <!-- end of entry -->
15734 <tr class="entry" id="controls_android.request.type">
15735 <td class="entry_name
15736 entry_name_deprecated
15738 android.<wbr/>request.<wbr/>type
15740 <td class="entry_type">
15741 <span class="entry_type_name entry_type_name_enum">byte</span>
15743 <span class="entry_type_visibility"> [system]</span>
15747 <span class="entry_type_deprecated">[deprecated] </span>
15750 <ul class="entry_type_enum">
15752 <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
15753 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
15754 and process it according to the
15755 settings</p></span>
15758 <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
15759 <span class="entry_type_enum_notes"><p>Process previously captured data; the
15760 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
15761 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
15762 needed for reprocessing with [RP]</p></span>
15766 </td> <!-- entry_type -->
15768 <td class="entry_description">
15769 <p>The type of the request; either CAPTURE or
15770 REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
15773 <td class="entry_units">
15776 <td class="entry_range">
15777 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15780 <td class="entry_hal_version">
15784 <td class="entry_tags">
15785 <ul class="entry_tags">
15786 <li><a href="#tag_HAL2">HAL2</a></li>
15793 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15794 <!-- end of entry -->
15798 <!-- end of kind -->
15800 <tr><td colspan="7" class="kind">static</td></tr>
15802 <thead class="entries_header">
15804 <th class="th_name">Property Name</th>
15805 <th class="th_type">Type</th>
15806 <th class="th_description">Description</th>
15807 <th class="th_units">Units</th>
15808 <th class="th_range">Range</th>
15809 <th class="th_hal_version">Initial HIDL HAL version</th>
15810 <th class="th_tags">Tags</th>
15825 <tr class="entry" id="static_android.request.maxNumOutputStreams">
15826 <td class="entry_name
15828 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
15830 <td class="entry_type">
15831 <span class="entry_type_name">int32</span>
15832 <span class="entry_type_container">x</span>
15834 <span class="entry_type_array">
15837 <span class="entry_type_visibility"> [ndk_public]</span>
15840 <span class="entry_type_hwlevel">[legacy] </span>
15845 </td> <!-- entry_type -->
15847 <td class="entry_description">
15848 <p>The maximum numbers of different types of output streams
15849 that can be configured and used simultaneously by a camera device.<wbr/></p>
15852 <td class="entry_units">
15855 <td class="entry_range">
15856 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p>
15857 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p>
15858 <p>For processed (but not stalling) format streams,<wbr/> >= 3
15859 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15860 >= 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>
15863 <td class="entry_hal_version">
15867 <td class="entry_tags">
15868 <ul class="entry_tags">
15869 <li><a href="#tag_BC">BC</a></li>
15874 <tr class="entries_header">
15875 <th class="th_details" colspan="6">Details</th>
15877 <tr class="entry_cont">
15878 <td class="entry_details" colspan="6">
15879 <p>This is a 3 element tuple that contains the max number of output simultaneous
15880 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
15881 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
15882 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
15883 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>
15884 <p>This lists the upper bound of the number of output streams supported by
15885 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15886 CPU resources that will consume more power.<wbr/> The image format for an output stream can
15887 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
15888 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
15889 into the 3 stream types as below:</p>
15891 <li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/>
15892 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
15893 <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
15894 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
15895 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> Typically
15896 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
15897 <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>
15903 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15904 <!-- end of entry -->
15907 <tr class="entry" id="static_android.request.maxNumOutputRaw">
15908 <td class="entry_name
15910 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
15912 <td class="entry_type">
15913 <span class="entry_type_name">int32</span>
15915 <span class="entry_type_visibility"> [java_public]</span>
15917 <span class="entry_type_synthetic">[synthetic] </span>
15919 <span class="entry_type_hwlevel">[legacy] </span>
15924 </td> <!-- entry_type -->
15926 <td class="entry_description">
15927 <p>The maximum numbers of different types of output streams
15928 that can be configured and used simultaneously by a camera device
15929 for any <code>RAW</code> formats.<wbr/></p>
15932 <td class="entry_units">
15935 <td class="entry_range">
15939 <td class="entry_hal_version">
15943 <td class="entry_tags">
15947 <tr class="entries_header">
15948 <th class="th_details" colspan="6">Details</th>
15950 <tr class="entry_cont">
15951 <td class="entry_details" colspan="6">
15952 <p>This value contains the max number of output simultaneous
15953 streams from the raw sensor.<wbr/></p>
15954 <p>This lists the upper bound of the number of output streams supported by
15955 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15956 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15957 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>
15958 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
15960 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
15961 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
15962 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
15964 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
15965 never support raw streams.<wbr/></p>
15970 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15971 <!-- end of entry -->
15974 <tr class="entry" id="static_android.request.maxNumOutputProc">
15975 <td class="entry_name
15977 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
15979 <td class="entry_type">
15980 <span class="entry_type_name">int32</span>
15982 <span class="entry_type_visibility"> [java_public]</span>
15984 <span class="entry_type_synthetic">[synthetic] </span>
15986 <span class="entry_type_hwlevel">[legacy] </span>
15991 </td> <!-- entry_type -->
15993 <td class="entry_description">
15994 <p>The maximum numbers of different types of output streams
15995 that can be configured and used simultaneously by a camera device
15996 for any processed (but not-stalling) formats.<wbr/></p>
15999 <td class="entry_units">
16002 <td class="entry_range">
16004 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16005 >= 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>
16008 <td class="entry_hal_version">
16012 <td class="entry_tags">
16016 <tr class="entries_header">
16017 <th class="th_details" colspan="6">Details</th>
16019 <tr class="entry_cont">
16020 <td class="entry_details" colspan="6">
16021 <p>This value contains the max number of output simultaneous
16022 streams for any processed (but not-stalling) formats.<wbr/></p>
16023 <p>This lists the upper bound of the number of output streams supported by
16024 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16025 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16026 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>
16027 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16030 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16031 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16032 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16033 <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>
16035 <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
16036 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16037 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16042 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16043 <!-- end of entry -->
16046 <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16047 <td class="entry_name
16049 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16051 <td class="entry_type">
16052 <span class="entry_type_name">int32</span>
16054 <span class="entry_type_visibility"> [java_public]</span>
16056 <span class="entry_type_synthetic">[synthetic] </span>
16058 <span class="entry_type_hwlevel">[legacy] </span>
16063 </td> <!-- entry_type -->
16065 <td class="entry_description">
16066 <p>The maximum numbers of different types of output streams
16067 that can be configured and used simultaneously by a camera device
16068 for any processed (and stalling) formats.<wbr/></p>
16071 <td class="entry_units">
16074 <td class="entry_range">
16078 <td class="entry_hal_version">
16082 <td class="entry_tags">
16086 <tr class="entries_header">
16087 <th class="th_details" colspan="6">Details</th>
16089 <tr class="entry_cont">
16090 <td class="entry_details" colspan="6">
16091 <p>This value contains the max number of output simultaneous
16092 streams for any processed (but not-stalling) formats.<wbr/></p>
16093 <p>This lists the upper bound of the number of output streams supported by
16094 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16095 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16096 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>
16097 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16098 > 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>
16099 <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
16100 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16101 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16106 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16107 <!-- end of entry -->
16110 <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16111 <td class="entry_name
16112 entry_name_deprecated
16114 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16116 <td class="entry_type">
16117 <span class="entry_type_name">int32</span>
16118 <span class="entry_type_container">x</span>
16120 <span class="entry_type_array">
16123 <span class="entry_type_visibility"> [system]</span>
16127 <span class="entry_type_deprecated">[deprecated] </span>
16131 </td> <!-- entry_type -->
16133 <td class="entry_description">
16134 <p>How many reprocessing streams of any type
16135 can be allocated at the same time.<wbr/></p>
16138 <td class="entry_units">
16141 <td class="entry_range">
16142 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16146 <td class="entry_hal_version">
16150 <td class="entry_tags">
16151 <ul class="entry_tags">
16152 <li><a href="#tag_HAL2">HAL2</a></li>
16157 <tr class="entries_header">
16158 <th class="th_details" colspan="6">Details</th>
16160 <tr class="entry_cont">
16161 <td class="entry_details" colspan="6">
16162 <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16163 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16168 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16169 <!-- end of entry -->
16172 <tr class="entry" id="static_android.request.maxNumInputStreams">
16173 <td class="entry_name
16175 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16177 <td class="entry_type">
16178 <span class="entry_type_name">int32</span>
16180 <span class="entry_type_visibility"> [java_public]</span>
16183 <span class="entry_type_hwlevel">[full] </span>
16188 </td> <!-- entry_type -->
16190 <td class="entry_description">
16191 <p>The maximum numbers of any type of input streams
16192 that can be configured and used simultaneously by a camera device.<wbr/></p>
16195 <td class="entry_units">
16198 <td class="entry_range">
16199 <p>0 or 1.<wbr/></p>
16202 <td class="entry_hal_version">
16206 <td class="entry_tags">
16207 <ul class="entry_tags">
16208 <li><a href="#tag_REPROC">REPROC</a></li>
16213 <tr class="entries_header">
16214 <th class="th_details" colspan="6">Details</th>
16216 <tr class="entry_cont">
16217 <td class="entry_details" colspan="6">
16218 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16219 <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
16220 input stream,<wbr/> there must be at least one output stream configured to to receive the
16221 reprocessed images.<wbr/></p>
16222 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16223 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16224 new sensor image will not be captured.<wbr/></p>
16225 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16226 stream image format will be PRIVATE,<wbr/> the associated output stream image format
16227 should be JPEG.<wbr/></p>
16231 <tr class="entries_header">
16232 <th class="th_details" colspan="6">HAL Implementation Details</th>
16234 <tr class="entry_cont">
16235 <td class="entry_details" colspan="6">
16236 <p>For the reprocessing flow and controls,<wbr/> see
16237 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16241 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16242 <!-- end of entry -->
16245 <tr class="entry" id="static_android.request.pipelineMaxDepth">
16246 <td class="entry_name
16248 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16250 <td class="entry_type">
16251 <span class="entry_type_name">byte</span>
16253 <span class="entry_type_visibility"> [public]</span>
16256 <span class="entry_type_hwlevel">[legacy] </span>
16261 </td> <!-- entry_type -->
16263 <td class="entry_description">
16264 <p>Specifies the number of maximum pipeline stages a frame
16265 has to go through from when it's exposed to when it's available
16266 to the framework.<wbr/></p>
16269 <td class="entry_units">
16272 <td class="entry_range">
16275 <td class="entry_hal_version">
16279 <td class="entry_tags">
16283 <tr class="entries_header">
16284 <th class="th_details" colspan="6">Details</th>
16286 <tr class="entry_cont">
16287 <td class="entry_details" colspan="6">
16288 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16289 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16290 its own stages to do custom HW processing.<wbr/> Further stages may be
16291 added by SW processing.<wbr/></p>
16292 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16293 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16294 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16295 the max pipeline depth.<wbr/></p>
16296 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
16297 X frame intervals.<wbr/></p>
16298 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16299 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16303 <tr class="entries_header">
16304 <th class="th_details" colspan="6">HAL Implementation Details</th>
16306 <tr class="entry_cont">
16307 <td class="entry_details" colspan="6">
16308 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16309 max batch sizes may be larger than 1.<wbr/></p>
16313 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16314 <!-- end of entry -->
16317 <tr class="entry" id="static_android.request.partialResultCount">
16318 <td class="entry_name
16320 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16322 <td class="entry_type">
16323 <span class="entry_type_name">int32</span>
16325 <span class="entry_type_visibility"> [public]</span>
16332 </td> <!-- entry_type -->
16334 <td class="entry_description">
16335 <p>Defines how many sub-components
16336 a result will be composed of.<wbr/></p>
16339 <td class="entry_units">
16342 <td class="entry_range">
16346 <td class="entry_hal_version">
16350 <td class="entry_tags">
16354 <tr class="entries_header">
16355 <th class="th_details" colspan="6">Details</th>
16357 <tr class="entry_cont">
16358 <td class="entry_details" colspan="6">
16359 <p>In order to combat the pipeline latency,<wbr/> partial results
16360 may be delivered to the application layer from the camera device as
16361 soon as they are available.<wbr/></p>
16362 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
16363 results are not supported,<wbr/> and only the final TotalCaptureResult will
16364 be produced by the camera device.<wbr/></p>
16365 <p>A typical use case for this might be: after requesting an
16366 auto-focus (AF) lock the new AF state might be available 50%
16367 of the way through the pipeline.<wbr/> The camera device could
16368 then immediately dispatch this state via a partial result to
16369 the application,<wbr/> and the rest of the metadata via later
16370 partial results.<wbr/></p>
16375 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16376 <!-- end of entry -->
16379 <tr class="entry" id="static_android.request.availableCapabilities">
16380 <td class="entry_name
16382 android.<wbr/>request.<wbr/>available<wbr/>Capabilities
16384 <td class="entry_type">
16385 <span class="entry_type_name entry_type_name_enum">byte</span>
16386 <span class="entry_type_container">x</span>
16388 <span class="entry_type_array">
16391 <span class="entry_type_visibility"> [public]</span>
16394 <span class="entry_type_hwlevel">[legacy] </span>
16398 <ul class="entry_type_enum">
16400 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
16401 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
16402 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
16403 supports.<wbr/></p>
16404 <p>This capability is listed by all normal devices,<wbr/> and
16405 indicates that the camera device has a feature set
16406 that's comparable to the baseline requirements for the
16407 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
16408 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
16409 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
16410 not standard color output.<wbr/></p></span>
16413 <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
16414 <span class="entry_type_enum_optional">[optional]</span>
16415 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
16416 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
16417 The camera device supports basic manual control of the sensor image
16418 acquisition related stages.<wbr/> This means the following controls are
16419 guaranteed to be supported:</p>
16421 <li>Manual frame duration control<ul>
16422 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
16423 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
16426 <li>Manual exposure control<ul>
16427 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16428 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
16431 <li>Manual sensitivity control<ul>
16432 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16433 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
16436 <li>Manual lens control (if the lens is adjustable)<ul>
16437 <li>android.<wbr/>lens.<wbr/>*</li>
16440 <li>Manual flash control (if a flash unit is present)<ul>
16441 <li>android.<wbr/>flash.<wbr/>*</li>
16444 <li>Manual black level locking<ul>
16445 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
16448 <li>Auto exposure lock<ul>
16449 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16453 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
16454 device will accurately report the values applied by 3A in the
16456 <p>A given camera device may also support additional manual sensor controls,<wbr/>
16457 but this capability only covers the above list of controls.<wbr/></p>
16458 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
16459 additionally return a min frame duration that is greater than
16460 zero for each supported size-format combination.<wbr/></p></span>
16463 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
16464 <span class="entry_type_enum_optional">[optional]</span>
16465 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
16466 The camera device supports basic manual control of the image post-processing
16467 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
16470 <p>Manual tonemap control</p>
16472 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
16473 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
16474 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
16475 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
16476 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
16480 <p>Manual white balance control</p>
16482 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
16483 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
16486 <li>Manual lens shading map control<ul>
16487 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
16488 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
16489 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
16490 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
16493 <li>Manual aberration correction control (if aberration correction is supported)<ul>
16494 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
16495 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
16498 <li>Auto white balance lock<ul>
16499 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16503 <p>If auto white balance is enabled,<wbr/> then the camera device
16504 will accurately report the values applied by AWB in the result.<wbr/></p>
16505 <p>A given camera device may also support additional post-processing
16506 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
16509 <span class="entry_type_enum_name">RAW (v3.2)</span>
16510 <span class="entry_type_enum_optional">[optional]</span>
16511 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
16512 metadata for interpreting them.<wbr/></p>
16513 <p>Devices supporting the RAW capability allow both for
16514 saving DNG files,<wbr/> and for direct application processing of
16515 raw sensor images.<wbr/></p>
16517 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
16518 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
16519 will match either the value in
16520 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16521 <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>
16522 <li>All DNG-related optional metadata entries are provided
16523 by the camera device.<wbr/></li>
16527 <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
16528 <span class="entry_type_enum_optional">[optional]</span>
16529 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
16531 <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>
16532 <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/>
16533 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
16534 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>
16535 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16536 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>
16537 <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>
16538 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
16539 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16540 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
16541 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
16542 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16543 <li>The maximum available resolution for PRIVATE streams
16544 (both input/<wbr/>output) will match the maximum available
16545 resolution of JPEG streams.<wbr/></li>
16546 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16547 <li>Only below controls are effective for reprocessing requests and
16548 will be present in capture results,<wbr/> other controls in reprocess
16549 requests will be ignored by the camera device.<wbr/><ul>
16550 <li>android.<wbr/>jpeg.<wbr/>*</li>
16551 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16552 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16555 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16556 <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>
16560 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
16561 <span class="entry_type_enum_optional">[optional]</span>
16562 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
16563 the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows
16564 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
16565 <p>The values reported for the following controls are guaranteed to be available
16566 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
16568 <li>Exposure control<ul>
16569 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16572 <li>Sensitivity control<ul>
16573 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16576 <li>Lens controls (if the lens is adjustable)<ul>
16577 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
16578 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
16582 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
16583 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
16586 <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
16587 <span class="entry_type_enum_optional">[optional]</span>
16588 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per
16589 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
16590 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames
16591 per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
16592 resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
16595 <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
16596 <span class="entry_type_enum_optional">[optional]</span>
16597 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
16598 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
16601 <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>
16602 <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
16603 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>
16604 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16605 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>
16606 <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>
16607 <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
16608 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16609 <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
16610 <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>
16611 <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
16612 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
16613 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16614 <li>Only the below controls are effective for reprocessing requests and will be present
16615 in capture results.<wbr/> The reprocess requests are from the original capture results
16616 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
16617 reprocess requests will be ignored by the camera device.<wbr/><ul>
16618 <li>android.<wbr/>jpeg.<wbr/>*</li>
16619 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16620 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16621 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
16624 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16625 <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>
16629 <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
16630 <span class="entry_type_enum_optional">[optional]</span>
16631 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
16632 <p>This capability requires the camera device to support the following:</p>
16634 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
16635 an output format.<wbr/></li>
16636 <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
16637 optionally supported as an output format.<wbr/></li>
16638 <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
16639 list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
16640 and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
16641 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16642 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16643 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16644 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
16647 <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>
16648 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
16649 normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
16652 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
16653 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
16654 should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
16655 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
16656 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
16657 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
16658 rate,<wbr/> including depth stall time.<wbr/></p></span>
16661 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
16662 <span class="entry_type_enum_optional">[optional]</span>
16663 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) use
16664 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
16665 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>
16666 <p>A camera device can still support high speed video streaming by advertising the high
16667 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
16668 normal capture request per frame control and synchronization requirements will apply
16669 to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
16670 describes the capability of a specialized operating mode with many limitations (see
16671 below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
16672 <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/>
16673 To get desired output frame rates,<wbr/> the application is only allowed to select video
16674 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
16675 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>
16676 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
16677 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
16678 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
16679 and post-processing parameters is possible.<wbr/> All other controls operate the
16680 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
16681 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
16683 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
16684 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
16685 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16686 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16687 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
16688 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
16689 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
16690 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
16691 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
16692 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
16694 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
16696 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
16697 work since aeMode is ON)</li>
16698 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
16699 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
16700 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
16702 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
16703 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
16704 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
16705 the application need check if the video encoder is capable of supporting the
16706 high frame rate for a given video size,<wbr/> or it will end up with lower recording
16707 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
16708 rate will be bounded by the screen refresh rate.<wbr/></p>
16709 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
16710 (preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
16711 if all of below conditions are true:</p>
16713 <li>The application creates a camera capture session with no more than 2 surfaces via
16714 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
16715 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
16716 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>
16717 <li>The stream sizes are selected from the sizes reported by
16718 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
16719 <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>
16721 <p>When above conditions are NOT satistied,<wbr/>
16722 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
16723 will fail.<wbr/></p>
16724 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
16725 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
16726 the application avoids unnecessary maximum target FPS changes as much as possible
16727 during high speed streaming.<wbr/></p></span>
16731 </td> <!-- entry_type -->
16733 <td class="entry_description">
16734 <p>List of capabilities that this camera device
16735 advertises as fully supporting.<wbr/></p>
16738 <td class="entry_units">
16741 <td class="entry_range">
16744 <td class="entry_hal_version">
16748 <td class="entry_tags">
16752 <tr class="entries_header">
16753 <th class="th_details" colspan="6">Details</th>
16755 <tr class="entry_cont">
16756 <td class="entry_details" colspan="6">
16757 <p>A capability is a contract that the camera device makes in order
16758 to be able to satisfy one or more use cases.<wbr/></p>
16759 <p>Listing a capability guarantees that the whole set of features
16760 required to support a common use will all be available.<wbr/></p>
16761 <p>Using a subset of the functionality provided by an unsupported
16762 capability may be possible on a specific camera device implementation;
16763 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
16764 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
16765 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
16766 <p>The following capabilities are guaranteed to be available on
16767 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
16769 <li>MANUAL_<wbr/>SENSOR</li>
16770 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
16772 <p>Other capabilities may be available on either FULL or LIMITED
16773 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
16777 <tr class="entries_header">
16778 <th class="th_details" colspan="6">HAL Implementation Details</th>
16780 <tr class="entry_cont">
16781 <td class="entry_details" colspan="6">
16782 <p>Additional constraint details per-capability will be available
16783 in the Compatibility Test Suite.<wbr/></p>
16784 <p>Minimum baseline requirements required for the
16785 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
16786 Instead refer to "BC" tags and the camera CTS tests in the
16787 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
16788 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
16789 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
16790 request and the result in order to be considered to be
16791 capability-compliant.<wbr/></p>
16792 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
16793 then exposure time must be configurable via the request <em>and</em>
16794 the actual exposure applied must be available via
16795 the result.<wbr/></p>
16796 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
16797 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
16798 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
16799 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
16800 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
16801 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
16802 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
16803 YUV_<wbr/>REPROCESSING capability must support the
16804 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
16805 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
16806 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
16807 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
16808 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
16809 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
16810 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
16811 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
16816 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16817 <!-- end of entry -->
16820 <tr class="entry" id="static_android.request.availableRequestKeys">
16821 <td class="entry_name
16823 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
16825 <td class="entry_type">
16826 <span class="entry_type_name">int32</span>
16827 <span class="entry_type_container">x</span>
16829 <span class="entry_type_array">
16832 <span class="entry_type_visibility"> [ndk_public]</span>
16835 <span class="entry_type_hwlevel">[legacy] </span>
16840 </td> <!-- entry_type -->
16842 <td class="entry_description">
16843 <p>A list of all keys that the camera device has available
16844 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
16847 <td class="entry_units">
16850 <td class="entry_range">
16853 <td class="entry_hal_version">
16857 <td class="entry_tags">
16861 <tr class="entries_header">
16862 <th class="th_details" colspan="6">Details</th>
16864 <tr class="entry_cont">
16865 <td class="entry_details" colspan="6">
16866 <p>Attempting to set a key into a CaptureRequest that is not
16867 listed here will result in an invalid request and will be rejected
16868 by the camera device.<wbr/></p>
16869 <p>This field can be used to query the feature set of a camera device
16870 at a more granular level than capabilities.<wbr/> This is especially
16871 important for optional keys that are not listed under any capability
16872 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16876 <tr class="entries_header">
16877 <th class="th_details" colspan="6">HAL Implementation Details</th>
16879 <tr class="entry_cont">
16880 <td class="entry_details" colspan="6">
16881 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
16882 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
16883 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16884 vendor extensions API and not against this field.<wbr/></p>
16885 <p>The HAL must not consume any request tags that are not listed either
16886 here or in the vendor tag list.<wbr/></p>
16887 <p>The public camera2 API will always make the vendor tags visible
16889 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
16893 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16894 <!-- end of entry -->
16897 <tr class="entry" id="static_android.request.availableResultKeys">
16898 <td class="entry_name
16900 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
16902 <td class="entry_type">
16903 <span class="entry_type_name">int32</span>
16904 <span class="entry_type_container">x</span>
16906 <span class="entry_type_array">
16909 <span class="entry_type_visibility"> [ndk_public]</span>
16912 <span class="entry_type_hwlevel">[legacy] </span>
16917 </td> <!-- entry_type -->
16919 <td class="entry_description">
16920 <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>
16923 <td class="entry_units">
16926 <td class="entry_range">
16929 <td class="entry_hal_version">
16933 <td class="entry_tags">
16937 <tr class="entries_header">
16938 <th class="th_details" colspan="6">Details</th>
16940 <tr class="entry_cont">
16941 <td class="entry_details" colspan="6">
16942 <p>Attempting to get a key from a CaptureResult that is not
16943 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
16944 a CaptureResult that is listed here will generally never return a <code>null</code>
16946 <p>The following keys may return <code>null</code> unless they are enabled:</p>
16948 <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>
16950 <p>(Those sometimes-null keys will nevertheless be listed here
16951 if they are available.<wbr/>)</p>
16952 <p>This field can be used to query the feature set of a camera device
16953 at a more granular level than capabilities.<wbr/> This is especially
16954 important for optional keys that are not listed under any capability
16955 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16959 <tr class="entries_header">
16960 <th class="th_details" colspan="6">HAL Implementation Details</th>
16962 <tr class="entry_cont">
16963 <td class="entry_details" colspan="6">
16964 <p>Tags listed here must always have an entry in the result metadata,<wbr/>
16965 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
16966 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
16967 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
16968 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
16969 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16970 vendor extensions API and not against this field.<wbr/></p>
16971 <p>The HAL must not produce any result tags that are not listed either
16972 here or in the vendor tag list.<wbr/></p>
16973 <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>
16977 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16978 <!-- end of entry -->
16981 <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
16982 <td class="entry_name
16984 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
16986 <td class="entry_type">
16987 <span class="entry_type_name">int32</span>
16988 <span class="entry_type_container">x</span>
16990 <span class="entry_type_array">
16993 <span class="entry_type_visibility"> [ndk_public]</span>
16996 <span class="entry_type_hwlevel">[legacy] </span>
17001 </td> <!-- entry_type -->
17003 <td class="entry_description">
17004 <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>
17007 <td class="entry_units">
17010 <td class="entry_range">
17013 <td class="entry_hal_version">
17017 <td class="entry_tags">
17021 <tr class="entries_header">
17022 <th class="th_details" colspan="6">Details</th>
17024 <tr class="entry_cont">
17025 <td class="entry_details" colspan="6">
17026 <p>This entry follows the same rules as
17027 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17028 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17033 <tr class="entries_header">
17034 <th class="th_details" colspan="6">HAL Implementation Details</th>
17036 <tr class="entry_cont">
17037 <td class="entry_details" colspan="6">
17038 <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17039 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17040 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17041 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17042 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17043 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17044 vendor extensions API and not against this field.<wbr/></p>
17045 <p>The HAL must not have any tags in its static info that are not listed
17046 either here or in the vendor tag list.<wbr/></p>
17047 <p>The public camera2 API will always make the vendor tags visible
17048 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17052 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17053 <!-- end of entry -->
17056 <tr class="entry" id="static_android.request.availableSessionKeys">
17057 <td class="entry_name
17059 android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17061 <td class="entry_type">
17062 <span class="entry_type_name">int32</span>
17063 <span class="entry_type_container">x</span>
17065 <span class="entry_type_array">
17068 <span class="entry_type_visibility"> [ndk_public]</span>
17071 <span class="entry_type_hwlevel">[legacy] </span>
17076 </td> <!-- entry_type -->
17078 <td class="entry_description">
17079 <p>A subset of the available request keys that the camera device
17080 can pass as part of the capture session initialization.<wbr/></p>
17083 <td class="entry_units">
17086 <td class="entry_range">
17089 <td class="entry_hal_version">
17093 <td class="entry_tags">
17097 <tr class="entries_header">
17098 <th class="th_details" colspan="6">Details</th>
17100 <tr class="entry_cont">
17101 <td class="entry_details" colspan="6">
17102 <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17103 contains a list of keys that are difficult to apply per-frame and
17104 can result in unexpected delays when modified during the capture session
17105 lifetime.<wbr/> Typical examples include parameters that require a
17106 time-consuming hardware re-configuration or internal camera pipeline
17107 change.<wbr/> For performance reasons we advise clients to pass their initial
17109 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>i
17110 Once the camera capture session is enabled it is also recommended to avoid
17111 changing them from their initial values set in
17112 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17113 Control over session parameters can still be exerted in capture requests
17114 but clients should be aware and expect delays during their application.<wbr/>
17115 An example usage scenario could look like this:</p>
17117 <li>The camera client starts by quering the session parameter key list via
17118 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17119 <li>Before triggering the capture session create sequence,<wbr/> a capture request
17121 <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17122 using an appropriate template matching the particular use case.<wbr/></li>
17123 <li>The client should go over the list of session parameters and check
17124 whether some of the keys listed matches with the parameters that
17125 they intend to modify as part of the first capture request.<wbr/></li>
17126 <li>If there is no such match,<wbr/> the capture request can be passed
17128 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17129 <li>If matches do exist,<wbr/> the client should update the respective values
17130 and pass the request to
17131 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17132 <li>After the capture session initialization completes the session parameter
17133 key list can continue to serve as reference when posting or updating
17134 further requests.<wbr/> As mentioned above further changes to session
17135 parameters should ideally be avoided,<wbr/> if updates are necessary
17136 however clients could expect a delay/<wbr/>glitch during the
17137 parameter switch.<wbr/></li>
17142 <tr class="entries_header">
17143 <th class="th_details" colspan="6">HAL Implementation Details</th>
17145 <tr class="entry_cont">
17146 <td class="entry_details" colspan="6">
17147 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17148 use the extensions C api (refer to
17149 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
17150 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17151 vendor extensions API and not against this field.<wbr/></p>
17152 <p>The HAL must not consume any request tags in the session parameters that
17153 are not listed either here or in the vendor tag list.<wbr/></p>
17154 <p>The public camera2 API will always make the vendor tags visible
17156 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
17160 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17161 <!-- end of entry -->
17165 <!-- end of kind -->
17167 <tr><td colspan="7" class="kind">dynamic</td></tr>
17169 <thead class="entries_header">
17171 <th class="th_name">Property Name</th>
17172 <th class="th_type">Type</th>
17173 <th class="th_description">Description</th>
17174 <th class="th_units">Units</th>
17175 <th class="th_range">Range</th>
17176 <th class="th_hal_version">Initial HIDL HAL version</th>
17177 <th class="th_tags">Tags</th>
17192 <tr class="entry" id="dynamic_android.request.frameCount">
17193 <td class="entry_name
17194 entry_name_deprecated
17196 android.<wbr/>request.<wbr/>frame<wbr/>Count
17198 <td class="entry_type">
17199 <span class="entry_type_name">int32</span>
17201 <span class="entry_type_visibility"> [hidden]</span>
17205 <span class="entry_type_deprecated">[deprecated] </span>
17209 </td> <!-- entry_type -->
17211 <td class="entry_description">
17212 <p>A frame counter set by the framework.<wbr/> This value monotonically
17213 increases with every new result (that is,<wbr/> each new result has a unique
17214 frameCount value).<wbr/></p>
17217 <td class="entry_units">
17221 <td class="entry_range">
17222 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17226 <td class="entry_hal_version">
17230 <td class="entry_tags">
17234 <tr class="entries_header">
17235 <th class="th_details" colspan="6">Details</th>
17237 <tr class="entry_cont">
17238 <td class="entry_details" colspan="6">
17239 <p>Reset on release()</p>
17244 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17245 <!-- end of entry -->
17248 <tr class="entry" id="dynamic_android.request.id">
17249 <td class="entry_name
17251 android.<wbr/>request.<wbr/>id
17253 <td class="entry_type">
17254 <span class="entry_type_name">int32</span>
17256 <span class="entry_type_visibility"> [hidden]</span>
17263 </td> <!-- entry_type -->
17265 <td class="entry_description">
17266 <p>An application-specified ID for the current
17267 request.<wbr/> Must be maintained unchanged in output
17271 <td class="entry_units">
17272 arbitrary integer assigned by application
17275 <td class="entry_range">
17279 <td class="entry_hal_version">
17283 <td class="entry_tags">
17284 <ul class="entry_tags">
17285 <li><a href="#tag_V1">V1</a></li>
17292 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17293 <!-- end of entry -->
17296 <tr class="entry" id="dynamic_android.request.metadataMode">
17297 <td class="entry_name
17299 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17301 <td class="entry_type">
17302 <span class="entry_type_name entry_type_name_enum">byte</span>
17304 <span class="entry_type_visibility"> [system]</span>
17310 <ul class="entry_type_enum">
17312 <span class="entry_type_enum_name">NONE (v3.2)</span>
17313 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17314 for application-bound buffer data.<wbr/> If no
17315 application-bound streams exist,<wbr/> no frame should be
17316 placed in the output frame queue.<wbr/> If such streams
17317 exist,<wbr/> a frame should be placed on the output queue
17318 with null metadata but with the necessary output buffer
17319 information.<wbr/> Timestamp information should still be
17320 included with any output stream buffers</p></span>
17323 <span class="entry_type_enum_name">FULL (v3.2)</span>
17324 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17325 only be produced if they are separately
17330 </td> <!-- entry_type -->
17332 <td class="entry_description">
17333 <p>How much metadata to produce on
17337 <td class="entry_units">
17340 <td class="entry_range">
17343 <td class="entry_hal_version">
17347 <td class="entry_tags">
17348 <ul class="entry_tags">
17349 <li><a href="#tag_FUTURE">FUTURE</a></li>
17356 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17357 <!-- end of entry -->
17360 <tr class="entry" id="dynamic_android.request.outputStreams">
17361 <td class="entry_name
17362 entry_name_deprecated
17364 android.<wbr/>request.<wbr/>output<wbr/>Streams
17366 <td class="entry_type">
17367 <span class="entry_type_name">int32</span>
17368 <span class="entry_type_container">x</span>
17370 <span class="entry_type_array">
17373 <span class="entry_type_visibility"> [system]</span>
17377 <span class="entry_type_deprecated">[deprecated] </span>
17381 </td> <!-- entry_type -->
17383 <td class="entry_description">
17384 <p>Lists which camera output streams image data
17385 from this capture must be sent to</p>
17388 <td class="entry_units">
17389 List of camera stream IDs
17392 <td class="entry_range">
17393 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17394 <p>List must only include streams that have been
17398 <td class="entry_hal_version">
17402 <td class="entry_tags">
17403 <ul class="entry_tags">
17404 <li><a href="#tag_HAL2">HAL2</a></li>
17409 <tr class="entries_header">
17410 <th class="th_details" colspan="6">Details</th>
17412 <tr class="entry_cont">
17413 <td class="entry_details" colspan="6">
17414 <p>If no output streams are listed,<wbr/> then the image
17415 data should simply be discarded.<wbr/> The image data must
17416 still be captured for metadata and statistics production,<wbr/>
17417 and the lens and flash must operate as requested.<wbr/></p>
17422 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17423 <!-- end of entry -->
17426 <tr class="entry" id="dynamic_android.request.pipelineDepth">
17427 <td class="entry_name
17429 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17431 <td class="entry_type">
17432 <span class="entry_type_name">byte</span>
17434 <span class="entry_type_visibility"> [public]</span>
17437 <span class="entry_type_hwlevel">[legacy] </span>
17442 </td> <!-- entry_type -->
17444 <td class="entry_description">
17445 <p>Specifies the number of pipeline stages the frame went
17446 through from when it was exposed to when the final completed result
17447 was available to the framework.<wbr/></p>
17450 <td class="entry_units">
17453 <td class="entry_range">
17454 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17457 <td class="entry_hal_version">
17461 <td class="entry_tags">
17465 <tr class="entries_header">
17466 <th class="th_details" colspan="6">Details</th>
17468 <tr class="entry_cont">
17469 <td class="entry_details" colspan="6">
17470 <p>Depending on what settings are used in the request,<wbr/> and
17471 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17472 and some pipeline stages skipped.<wbr/></p>
17473 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17477 <tr class="entries_header">
17478 <th class="th_details" colspan="6">HAL Implementation Details</th>
17480 <tr class="entry_cont">
17481 <td class="entry_details" colspan="6">
17482 <p>This value must always represent the accurate count of how many
17483 pipeline stages were actually used.<wbr/></p>
17487 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17488 <!-- end of entry -->
17492 <!-- end of kind -->
17495 <!-- end of section -->
17496 <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
17499 <tr><td colspan="7" class="kind">controls</td></tr>
17501 <thead class="entries_header">
17503 <th class="th_name">Property Name</th>
17504 <th class="th_type">Type</th>
17505 <th class="th_description">Description</th>
17506 <th class="th_units">Units</th>
17507 <th class="th_range">Range</th>
17508 <th class="th_hal_version">Initial HIDL HAL version</th>
17509 <th class="th_tags">Tags</th>
17524 <tr class="entry" id="controls_android.scaler.cropRegion">
17525 <td class="entry_name
17527 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17529 <td class="entry_type">
17530 <span class="entry_type_name">int32</span>
17531 <span class="entry_type_container">x</span>
17533 <span class="entry_type_array">
17536 <span class="entry_type_visibility"> [public as rectangle]</span>
17539 <span class="entry_type_hwlevel">[legacy] </span>
17544 </td> <!-- entry_type -->
17546 <td class="entry_description">
17547 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17550 <td class="entry_units">
17551 Pixel coordinates relative to
17552 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17555 <td class="entry_range">
17558 <td class="entry_hal_version">
17562 <td class="entry_tags">
17563 <ul class="entry_tags">
17564 <li><a href="#tag_BC">BC</a></li>
17569 <tr class="entries_header">
17570 <th class="th_details" colspan="6">Details</th>
17572 <tr class="entry_cont">
17573 <td class="entry_details" colspan="6">
17574 <p>This control can be used to implement digital zoom.<wbr/></p>
17575 <p>The crop region coordinate system is based off
17576 <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
17577 top-left corner of the sensor active array.<wbr/></p>
17578 <p>Output streams use this rectangle to produce their output,<wbr/>
17579 cropping to a smaller region if necessary to maintain the
17580 stream's aspect ratio,<wbr/> then scaling the sensor input to
17581 match the output's configured resolution.<wbr/></p>
17582 <p>The crop region is applied after the RAW to other color
17583 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17584 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17585 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17586 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
17587 be done to maximize the final pixel area of the stream.<wbr/></p>
17588 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17589 ratio,<wbr/> then 4:3 streams will use the exact crop
17590 region.<wbr/> 16:9 streams will further crop vertically
17591 (letterbox).<wbr/></p>
17592 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17593 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17594 streams will match exactly.<wbr/> These additional crops will
17595 be centered within the crop region.<wbr/></p>
17596 <p>The width and height of the crop region cannot
17597 be set to be smaller than
17598 <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
17599 <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>
17600 <p>The camera device may adjust the crop region to account
17601 for rounding and other hardware requirements; the final
17602 crop region used will be included in the output capture
17607 <tr class="entries_header">
17608 <th class="th_details" colspan="6">HAL Implementation Details</th>
17610 <tr class="entry_cont">
17611 <td class="entry_details" colspan="6">
17612 <p>The output streams must maintain square pixels at all
17613 times,<wbr/> no matter what the relative aspect ratios of the
17614 crop region and the stream are.<wbr/> Negative values for
17615 corner are allowed for raw output if full pixel array is
17616 larger than active pixel array.<wbr/> Width and height may be
17617 rounded to nearest larger supportable width,<wbr/> especially
17618 for raw output,<wbr/> where only a few fixed scales may be
17619 possible.<wbr/></p>
17620 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
17621 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
17624 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
17625 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
17626 <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>
17628 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
17629 cropped pixel area by (tx,<wbr/> ty),<wbr/>
17630 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
17631 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
17632 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
17633 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
17634 <li>Scale the width and height of requested cropRegion with scaling factor of
17635 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
17636 respectively.<wbr/>
17637 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
17638 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
17639 follow the general cropping rule for this new cropRegion and effective active
17640 array size.<wbr/></li>
17644 <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/>
17645 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
17646 The reported cropRegion may be slightly different with the requested cropRegion since
17647 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
17648 hardware limitations.<wbr/></p>
17651 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17655 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17656 <!-- end of entry -->
17660 <!-- end of kind -->
17662 <tr><td colspan="7" class="kind">static</td></tr>
17664 <thead class="entries_header">
17666 <th class="th_name">Property Name</th>
17667 <th class="th_type">Type</th>
17668 <th class="th_description">Description</th>
17669 <th class="th_units">Units</th>
17670 <th class="th_range">Range</th>
17671 <th class="th_hal_version">Initial HIDL HAL version</th>
17672 <th class="th_tags">Tags</th>
17687 <tr class="entry" id="static_android.scaler.availableFormats">
17688 <td class="entry_name
17689 entry_name_deprecated
17691 android.<wbr/>scaler.<wbr/>available<wbr/>Formats
17693 <td class="entry_type">
17694 <span class="entry_type_name entry_type_name_enum">int32</span>
17695 <span class="entry_type_container">x</span>
17697 <span class="entry_type_array">
17700 <span class="entry_type_visibility"> [hidden as imageFormat]</span>
17704 <span class="entry_type_deprecated">[deprecated] </span>
17707 <ul class="entry_type_enum">
17709 <span class="entry_type_enum_name">RAW16 (v3.2)</span>
17710 <span class="entry_type_enum_optional">[optional]</span>
17711 <span class="entry_type_enum_value">0x20</span>
17712 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
17713 buffers with 16-bit pixels.<wbr/></p>
17714 <p>Buffers of this format are typically expected to have a
17715 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
17716 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
17717 CFAs that are not representable by a format in
17718 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
17719 use this format.<wbr/></p>
17720 <p>Buffers of this format will also follow the constraints given for
17721 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
17722 <p>This format is intended to give users access to the full contents
17723 of the buffers coming directly from the image sensor prior to any
17724 cropping or scaling operations,<wbr/> and all coordinate systems for
17725 metadata used for this format are relative to the size of the
17726 active region of the image sensor before any geometric distortion
17727 correction has been applied (i.<wbr/>e.<wbr/>
17728 <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
17729 dimensions for this format are limited to the full dimensions of
17730 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
17731 <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
17732 only supported output size).<wbr/></p>
17733 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
17734 the full set of performance guarantees.<wbr/></p></span>
17737 <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
17738 <span class="entry_type_enum_optional">[optional]</span>
17739 <span class="entry_type_enum_value">0x24</span>
17740 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
17741 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
17742 as referred in public API) is a format for raw image buffers
17743 coming from an image sensor.<wbr/></p>
17744 <p>The actual structure of buffers of this format is
17745 platform-specific,<wbr/> but must follow several constraints:</p>
17747 <li>No image post-processing operations may have been applied to
17748 buffers of this type.<wbr/> These buffers contain raw image data coming
17749 directly from the image sensor.<wbr/></li>
17750 <li>If a buffer of this format is passed to the camera device for
17751 reprocessing,<wbr/> the resulting images will be identical to the images
17752 produced if the buffer had come directly from the sensor and was
17753 processed with the same settings.<wbr/></li>
17755 <p>The intended use for this format is to allow access to the native
17756 raw format buffers coming directly from the camera sensor without
17757 any additional conversions or decrease in framerate.<wbr/></p>
17758 <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
17759 performance guarantees.<wbr/></p></span>
17762 <span class="entry_type_enum_name">YV12 (v3.2)</span>
17763 <span class="entry_type_enum_optional">[optional]</span>
17764 <span class="entry_type_enum_value">0x32315659</span>
17765 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
17768 <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
17769 <span class="entry_type_enum_optional">[optional]</span>
17770 <span class="entry_type_enum_value">0x11</span>
17771 <span class="entry_type_enum_notes"><p>NV21</p></span>
17774 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
17775 <span class="entry_type_enum_value">0x22</span>
17776 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
17779 <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
17780 <span class="entry_type_enum_value">0x23</span>
17781 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
17784 <span class="entry_type_enum_name">BLOB (v3.2)</span>
17785 <span class="entry_type_enum_value">0x21</span>
17786 <span class="entry_type_enum_notes"><p>JPEG format</p></span>
17790 </td> <!-- entry_type -->
17792 <td class="entry_description">
17793 <p>The list of image formats that are supported by this
17794 camera device for output streams.<wbr/></p>
17797 <td class="entry_units">
17800 <td class="entry_range">
17801 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17804 <td class="entry_hal_version">
17808 <td class="entry_tags">
17809 <ul class="entry_tags">
17810 <li><a href="#tag_BC">BC</a></li>
17815 <tr class="entries_header">
17816 <th class="th_details" colspan="6">Details</th>
17818 <tr class="entry_cont">
17819 <td class="entry_details" colspan="6">
17820 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
17821 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
17825 <tr class="entries_header">
17826 <th class="th_details" colspan="6">HAL Implementation Details</th>
17828 <tr class="entry_cont">
17829 <td class="entry_details" colspan="6">
17830 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
17831 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
17832 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
17833 gralloc module will select a format based on the usage flags provided
17834 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
17835 usually used by preview and recording streams,<wbr/> where the application doesn't
17836 need access the image data.<wbr/></p>
17837 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
17838 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
17839 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
17840 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
17841 recommended that any information used by the camera device when
17842 processing images is fully expressed by the result metadata
17843 for that image buffer.<wbr/></p>
17847 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17848 <!-- end of entry -->
17851 <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
17852 <td class="entry_name
17853 entry_name_deprecated
17855 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
17857 <td class="entry_type">
17858 <span class="entry_type_name">int64</span>
17859 <span class="entry_type_container">x</span>
17861 <span class="entry_type_array">
17864 <span class="entry_type_visibility"> [hidden]</span>
17868 <span class="entry_type_deprecated">[deprecated] </span>
17872 </td> <!-- entry_type -->
17874 <td class="entry_description">
17875 <p>The minimum frame duration that is supported
17876 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
17879 <td class="entry_units">
17883 <td class="entry_range">
17884 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17885 <p>TODO: Remove property.<wbr/></p>
17888 <td class="entry_hal_version">
17892 <td class="entry_tags">
17893 <ul class="entry_tags">
17894 <li><a href="#tag_BC">BC</a></li>
17899 <tr class="entries_header">
17900 <th class="th_details" colspan="6">Details</th>
17902 <tr class="entry_cont">
17903 <td class="entry_details" colspan="6">
17904 <p>This corresponds to the minimum steady-state frame duration when only
17905 that JPEG stream is active and captured in a burst,<wbr/> with all
17906 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
17907 <p>When multiple streams are configured,<wbr/> the minimum
17908 frame duration will be >= max(individual stream min
17914 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17915 <!-- end of entry -->
17918 <tr class="entry" id="static_android.scaler.availableJpegSizes">
17919 <td class="entry_name
17920 entry_name_deprecated
17922 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
17924 <td class="entry_type">
17925 <span class="entry_type_name">int32</span>
17926 <span class="entry_type_container">x</span>
17928 <span class="entry_type_array">
17931 <span class="entry_type_visibility"> [hidden as size]</span>
17935 <span class="entry_type_deprecated">[deprecated] </span>
17939 </td> <!-- entry_type -->
17941 <td class="entry_description">
17942 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
17945 <td class="entry_units">
17948 <td class="entry_range">
17949 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17950 <p>TODO: Remove property.<wbr/></p>
17953 <td class="entry_hal_version">
17957 <td class="entry_tags">
17958 <ul class="entry_tags">
17959 <li><a href="#tag_BC">BC</a></li>
17964 <tr class="entries_header">
17965 <th class="th_details" colspan="6">Details</th>
17967 <tr class="entry_cont">
17968 <td class="entry_details" colspan="6">
17969 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
17970 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>
17974 <tr class="entries_header">
17975 <th class="th_details" colspan="6">HAL Implementation Details</th>
17977 <tr class="entry_cont">
17978 <td class="entry_details" colspan="6">
17979 <p>The HAL must include sensor maximum resolution
17980 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
17981 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
17985 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17986 <!-- end of entry -->
17989 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
17990 <td class="entry_name
17992 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
17994 <td class="entry_type">
17995 <span class="entry_type_name">float</span>
17997 <span class="entry_type_visibility"> [public]</span>
18000 <span class="entry_type_hwlevel">[legacy] </span>
18005 </td> <!-- entry_type -->
18007 <td class="entry_description">
18008 <p>The maximum ratio between both active area width
18009 and crop region width,<wbr/> and active area height and
18010 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18013 <td class="entry_units">
18017 <td class="entry_range">
18021 <td class="entry_hal_version">
18025 <td class="entry_tags">
18026 <ul class="entry_tags">
18027 <li><a href="#tag_BC">BC</a></li>
18032 <tr class="entries_header">
18033 <th class="th_details" colspan="6">Details</th>
18035 <tr class="entry_cont">
18036 <td class="entry_details" colspan="6">
18037 <p>This represents the maximum amount of zooming possible by
18038 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
18039 window size.<wbr/></p>
18040 <p>Crop regions that have a width or height that is smaller
18041 than this ratio allows will be rounded up to the minimum
18042 allowed size by the camera device.<wbr/></p>
18047 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18048 <!-- end of entry -->
18051 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
18052 <td class="entry_name
18053 entry_name_deprecated
18055 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
18057 <td class="entry_type">
18058 <span class="entry_type_name">int64</span>
18059 <span class="entry_type_container">x</span>
18061 <span class="entry_type_array">
18064 <span class="entry_type_visibility"> [hidden]</span>
18068 <span class="entry_type_deprecated">[deprecated] </span>
18072 </td> <!-- entry_type -->
18074 <td class="entry_description">
18075 <p>For each available processed output size (defined in
18076 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
18077 minimum supportable frame duration for that size.<wbr/></p>
18080 <td class="entry_units">
18084 <td class="entry_range">
18085 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18088 <td class="entry_hal_version">
18092 <td class="entry_tags">
18093 <ul class="entry_tags">
18094 <li><a href="#tag_BC">BC</a></li>
18099 <tr class="entries_header">
18100 <th class="th_details" colspan="6">Details</th>
18102 <tr class="entry_cont">
18103 <td class="entry_details" colspan="6">
18104 <p>This should correspond to the frame duration when only that processed
18105 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18106 set to FAST.<wbr/></p>
18107 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
18108 be >= max(individual stream min durations).<wbr/></p>
18113 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18114 <!-- end of entry -->
18117 <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18118 <td class="entry_name
18119 entry_name_deprecated
18121 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18123 <td class="entry_type">
18124 <span class="entry_type_name">int32</span>
18125 <span class="entry_type_container">x</span>
18127 <span class="entry_type_array">
18130 <span class="entry_type_visibility"> [hidden as size]</span>
18134 <span class="entry_type_deprecated">[deprecated] </span>
18138 </td> <!-- entry_type -->
18140 <td class="entry_description">
18141 <p>The resolutions available for use with
18142 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18143 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18144 encoders.<wbr/></p>
18147 <td class="entry_units">
18150 <td class="entry_range">
18151 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18154 <td class="entry_hal_version">
18158 <td class="entry_tags">
18159 <ul class="entry_tags">
18160 <li><a href="#tag_BC">BC</a></li>
18165 <tr class="entries_header">
18166 <th class="th_details" colspan="6">Details</th>
18168 <tr class="entry_cont">
18169 <td class="entry_details" colspan="6">
18170 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18171 <p>For a given use case,<wbr/> the actual maximum supported resolution
18172 may be lower than what is listed here,<wbr/> depending on the destination
18173 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18174 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18175 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18176 can provide.<wbr/></p>
18177 <p>Please reference the documentation for the image data destination to
18178 check if it limits the maximum size for image data.<wbr/></p>
18182 <tr class="entries_header">
18183 <th class="th_details" colspan="6">HAL Implementation Details</th>
18185 <tr class="entry_cont">
18186 <td class="entry_details" colspan="6">
18187 <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/>
18188 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>
18189 and each below resolution if it is smaller than or equal to the sensor
18190 maximum resolution (if they are not listed in JPEG sizes already):</p>
18192 <li>240p (320 x 240)</li>
18193 <li>480p (640 x 480)</li>
18194 <li>720p (1280 x 720)</li>
18195 <li>1080p (1920 x 1080)</li>
18197 <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/>
18198 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18202 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18203 <!-- end of entry -->
18206 <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18207 <td class="entry_name
18208 entry_name_deprecated
18210 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18212 <td class="entry_type">
18213 <span class="entry_type_name">int64</span>
18214 <span class="entry_type_container">x</span>
18216 <span class="entry_type_array">
18219 <span class="entry_type_visibility"> [system]</span>
18223 <span class="entry_type_deprecated">[deprecated] </span>
18227 </td> <!-- entry_type -->
18229 <td class="entry_description">
18230 <p>For each available raw output size (defined in
18231 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18232 supportable frame duration for that size.<wbr/></p>
18235 <td class="entry_units">
18239 <td class="entry_range">
18240 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18243 <td class="entry_hal_version">
18247 <td class="entry_tags">
18248 <ul class="entry_tags">
18249 <li><a href="#tag_BC">BC</a></li>
18254 <tr class="entries_header">
18255 <th class="th_details" colspan="6">Details</th>
18257 <tr class="entry_cont">
18258 <td class="entry_details" colspan="6">
18259 <p>Should correspond to the frame duration when only the raw stream is
18261 <p>When multiple streams are configured,<wbr/> the minimum
18262 frame duration will be >= max(individual stream min
18268 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18269 <!-- end of entry -->
18272 <tr class="entry" id="static_android.scaler.availableRawSizes">
18273 <td class="entry_name
18274 entry_name_deprecated
18276 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18278 <td class="entry_type">
18279 <span class="entry_type_name">int32</span>
18280 <span class="entry_type_container">x</span>
18282 <span class="entry_type_array">
18285 <span class="entry_type_visibility"> [system as size]</span>
18289 <span class="entry_type_deprecated">[deprecated] </span>
18293 </td> <!-- entry_type -->
18295 <td class="entry_description">
18296 <p>The resolutions available for use with raw
18297 sensor output streams,<wbr/> listed as width,<wbr/>
18301 <td class="entry_units">
18304 <td class="entry_range">
18305 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18308 <td class="entry_hal_version">
18312 <td class="entry_tags">
18318 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18319 <!-- end of entry -->
18322 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18323 <td class="entry_name
18325 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18327 <td class="entry_type">
18328 <span class="entry_type_name">int32</span>
18330 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18337 </td> <!-- entry_type -->
18339 <td class="entry_description">
18340 <p>The mapping of image formats that are supported by this
18341 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18344 <td class="entry_units">
18347 <td class="entry_range">
18350 <td class="entry_hal_version">
18354 <td class="entry_tags">
18355 <ul class="entry_tags">
18356 <li><a href="#tag_REPROC">REPROC</a></li>
18361 <tr class="entries_header">
18362 <th class="th_details" colspan="6">Details</th>
18364 <tr class="entry_cont">
18365 <td class="entry_details" colspan="6">
18366 <p>All camera devices with at least 1
18367 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18368 available input format.<wbr/></p>
18369 <p>The camera device will support the following map of formats,<wbr/>
18370 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18374 <th align="left">Input Format</th>
18375 <th align="left">Output Format</th>
18376 <th align="left">Capability</th>
18381 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18382 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18383 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18386 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18387 <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>
18388 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18391 <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>
18392 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18393 <td align="left">YUV_<wbr/>REPROCESSING</td>
18396 <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>
18397 <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>
18398 <td align="left">YUV_<wbr/>REPROCESSING</td>
18402 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A
18403 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18404 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18405 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18406 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>
18407 <p>Attempting to configure an input stream with output streams not
18408 listed as available in this map is not valid.<wbr/></p>
18412 <tr class="entries_header">
18413 <th class="th_details" colspan="6">HAL Implementation Details</th>
18415 <tr class="entry_cont">
18416 <td class="entry_details" colspan="6">
18417 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18418 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18419 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18420 the actual format by using the gralloc usage flags.<wbr/>
18421 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18422 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18423 See camera3.<wbr/>h for more details.<wbr/></p>
18424 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18425 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18426 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18427 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18428 <p>A code sample to read/<wbr/>write this encoding (with a device that
18429 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18430 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18431 <pre><code>//<wbr/> reading
18432 int32_<wbr/>t* contents = &entry.<wbr/>i32[0];
18433 for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) {
18434 int32_<wbr/>t format = contents[i++];
18435 int32_<wbr/>t length = contents[i++];
18436 int32_<wbr/>t output_<wbr/>formats[length];
18437 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/>
18438 length * sizeof(int32_<wbr/>t));
18442 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18443 int32_<wbr/>t[] contents = {
18444 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18445 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18447 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/>
18448 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry);
18450 <p>If the HAL claims to support any of the capabilities listed in the
18451 above details,<wbr/> then it must also support all the input-output
18452 combinations listed for that capability.<wbr/> It can optionally support
18453 additional formats if it so chooses.<wbr/></p>
18457 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18458 <!-- end of entry -->
18461 <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18462 <td class="entry_name
18464 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18466 <td class="entry_type">
18467 <span class="entry_type_name entry_type_name_enum">int32</span>
18468 <span class="entry_type_container">x</span>
18470 <span class="entry_type_array">
18473 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18476 <span class="entry_type_hwlevel">[legacy] </span>
18480 <ul class="entry_type_enum">
18482 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
18485 <span class="entry_type_enum_name">INPUT (v3.2)</span>
18489 </td> <!-- entry_type -->
18491 <td class="entry_description">
18492 <p>The available stream configurations that this
18493 camera device supports
18494 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
18497 <td class="entry_units">
18500 <td class="entry_range">
18503 <td class="entry_hal_version">
18507 <td class="entry_tags">
18511 <tr class="entries_header">
18512 <th class="th_details" colspan="6">Details</th>
18514 <tr class="entry_cont">
18515 <td class="entry_details" colspan="6">
18516 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
18518 <p>For a given use case,<wbr/> the actual maximum supported resolution
18519 may be lower than what is listed here,<wbr/> depending on the destination
18520 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18521 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18522 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18523 can provide.<wbr/></p>
18524 <p>Please reference the documentation for the image data destination to
18525 check if it limits the maximum size for image data.<wbr/></p>
18526 <p>Not all output formats may be supported in a configuration with
18527 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18528 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18529 <p>The following table describes the minimum required output stream
18530 configurations based on the hardware level
18531 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
18535 <th align="center">Format</th>
18536 <th align="center">Size</th>
18537 <th align="center">Hardware Level</th>
18538 <th align="center">Notes</th>
18543 <td align="center">JPEG</td>
18544 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
18545 <td align="center">Any</td>
18546 <td align="center"></td>
18549 <td align="center">JPEG</td>
18550 <td align="center">1920x1080 (1080p)</td>
18551 <td align="center">Any</td>
18552 <td align="center">if 1080p <= activeArraySize</td>
18555 <td align="center">JPEG</td>
18556 <td align="center">1280x720 (720)</td>
18557 <td align="center">Any</td>
18558 <td align="center">if 720p <= activeArraySize</td>
18561 <td align="center">JPEG</td>
18562 <td align="center">640x480 (480p)</td>
18563 <td align="center">Any</td>
18564 <td align="center">if 480p <= activeArraySize</td>
18567 <td align="center">JPEG</td>
18568 <td align="center">320x240 (240p)</td>
18569 <td align="center">Any</td>
18570 <td align="center">if 240p <= activeArraySize</td>
18573 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18574 <td align="center">all output sizes available for JPEG</td>
18575 <td align="center">FULL</td>
18576 <td align="center"></td>
18579 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18580 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18581 <td align="center">LIMITED</td>
18582 <td align="center"></td>
18585 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
18586 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18587 <td align="center">Any</td>
18588 <td align="center"></td>
18592 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
18593 mandatory stream configurations on a per-capability basis.<wbr/></p>
18597 <tr class="entries_header">
18598 <th class="th_details" colspan="6">HAL Implementation Details</th>
18600 <tr class="entry_cont">
18601 <td class="entry_details" colspan="6">
18602 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18603 of sensor maximum resolution for JPEG formats (regardless of hardware
18605 <p>(The following is a rewording of the above required table):</p>
18606 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18608 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18609 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18610 (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/>
18611 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18612 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18613 the dimensions being a multiple of 16.<wbr/></li>
18615 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18616 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
18617 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18618 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18619 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18620 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18621 3264x2448.<wbr/></p>
18622 <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/>
18623 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18624 here as output streams.<wbr/></p>
18625 <p>It must also include each below resolution if it is smaller than or
18626 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18627 formats),<wbr/> as output streams:</p>
18629 <li>240p (320 x 240)</li>
18630 <li>480p (640 x 480)</li>
18631 <li>720p (1280 x 720)</li>
18632 <li>1080p (1920 x 1080)</li>
18634 <p>For LIMITED capability devices
18635 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18636 the HAL only has to list up to the maximum video size
18637 supported by the device.<wbr/></p>
18638 <p>Regardless of hardware level,<wbr/> every output resolution available for
18639 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18640 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18642 <li>availableFormats</li>
18643 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18648 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18649 <!-- end of entry -->
18652 <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
18653 <td class="entry_name
18655 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
18657 <td class="entry_type">
18658 <span class="entry_type_name">int64</span>
18659 <span class="entry_type_container">x</span>
18661 <span class="entry_type_array">
18664 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18667 <span class="entry_type_hwlevel">[legacy] </span>
18672 </td> <!-- entry_type -->
18674 <td class="entry_description">
18675 <p>This lists the minimum frame duration for each
18676 format/<wbr/>size combination.<wbr/></p>
18679 <td class="entry_units">
18680 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18683 <td class="entry_range">
18686 <td class="entry_hal_version">
18690 <td class="entry_tags">
18691 <ul class="entry_tags">
18692 <li><a href="#tag_V1">V1</a></li>
18697 <tr class="entries_header">
18698 <th class="th_details" colspan="6">Details</th>
18700 <tr class="entry_cont">
18701 <td class="entry_details" colspan="6">
18702 <p>This should correspond to the frame duration when only that
18703 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18704 set to either OFF or FAST.<wbr/></p>
18705 <p>When multiple streams are used in a request,<wbr/> the minimum frame
18706 duration will be max(individual stream min durations).<wbr/></p>
18707 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
18708 is the same regardless of whether the stream is input or output.<wbr/></p>
18709 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
18710 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
18711 calculating the max frame rate.<wbr/></p>
18716 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18717 <!-- end of entry -->
18720 <tr class="entry" id="static_android.scaler.availableStallDurations">
18721 <td class="entry_name
18723 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
18725 <td class="entry_type">
18726 <span class="entry_type_name">int64</span>
18727 <span class="entry_type_container">x</span>
18729 <span class="entry_type_array">
18732 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18735 <span class="entry_type_hwlevel">[legacy] </span>
18740 </td> <!-- entry_type -->
18742 <td class="entry_description">
18743 <p>This lists the maximum stall duration for each
18744 output format/<wbr/>size combination.<wbr/></p>
18747 <td class="entry_units">
18748 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18751 <td class="entry_range">
18754 <td class="entry_hal_version">
18758 <td class="entry_tags">
18759 <ul class="entry_tags">
18760 <li><a href="#tag_V1">V1</a></li>
18765 <tr class="entries_header">
18766 <th class="th_details" colspan="6">Details</th>
18768 <tr class="entry_cont">
18769 <td class="entry_details" colspan="6">
18770 <p>A stall duration is how much extra time would get added
18771 to the normal minimum frame duration for a repeating request
18772 that has streams with non-zero stall.<wbr/></p>
18773 <p>For example,<wbr/> consider JPEG captures which have the following
18774 characteristics:</p>
18776 <li>JPEG streams act like processed YUV streams in requests for which
18777 they are not included; in requests in which they are directly
18778 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
18779 JPEG stream requires the underlying YUV data to always be ready for
18780 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
18781 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
18782 <li>The JPEG processor can run concurrently to the rest of the camera
18783 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
18785 <p>In other words,<wbr/> using a repeating YUV request would result
18786 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
18787 JPEG request is submitted periodically,<wbr/> the frame rate will stay
18788 at 30 FPS (as long as we wait for the previous JPEG to return each
18789 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
18790 the frame rate will drop from 30 FPS.<wbr/></p>
18791 <p>In general,<wbr/> submitting a new request with a non-0 stall time
18792 stream will <em>not</em> cause a frame rate drop unless there are still
18793 outstanding buffers for that stream from previous requests.<wbr/></p>
18794 <p>Submitting a repeating request with streams (call this <code>S</code>)
18795 is the same as setting the minimum frame duration from
18796 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
18797 the maximum stall duration for <code>S</code>.<wbr/></p>
18798 <p>If interleaving requests with and without a stall duration,<wbr/>
18799 a request will stall by the maximum of the remaining times
18800 for each can-stall stream with outstanding buffers.<wbr/></p>
18801 <p>This means that a stalling request will not have an exposure start
18802 until the stall has completed.<wbr/></p>
18803 <p>This should correspond to the stall duration when only that stream is
18804 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
18805 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
18806 effectively results in an indeterminate stall duration for all
18807 streams in a request (the regular stall calculation rules are
18808 ignored).<wbr/></p>
18809 <p>The following formats may always have a stall duration:</p>
18811 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
18812 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
18814 <p>The following formats will never have a stall duration:</p>
18816 <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>
18817 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
18818 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
18820 <p>All other formats may or may not have an allowed stall duration on
18821 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
18822 for more details.<wbr/></p>
18823 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
18824 calculating the max frame rate (absent stalls).<wbr/></p>
18828 <tr class="entries_header">
18829 <th class="th_details" colspan="6">HAL Implementation Details</th>
18831 <tr class="entry_cont">
18832 <td class="entry_details" colspan="6">
18833 <p>If possible,<wbr/> it is recommended that all non-JPEG formats
18834 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
18835 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
18839 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18840 <!-- end of entry -->
18843 <tr class="entry" id="static_android.scaler.streamConfigurationMap">
18844 <td class="entry_name
18846 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
18848 <td class="entry_type">
18849 <span class="entry_type_name">int32</span>
18851 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
18853 <span class="entry_type_synthetic">[synthetic] </span>
18855 <span class="entry_type_hwlevel">[legacy] </span>
18860 </td> <!-- entry_type -->
18862 <td class="entry_description">
18863 <p>The available stream configurations that this
18864 camera device supports; also includes the minimum frame durations
18865 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
18868 <td class="entry_units">
18871 <td class="entry_range">
18874 <td class="entry_hal_version">
18878 <td class="entry_tags">
18882 <tr class="entries_header">
18883 <th class="th_details" colspan="6">Details</th>
18885 <tr class="entry_cont">
18886 <td class="entry_details" colspan="6">
18887 <p>All camera devices will support sensor maximum resolution (defined by
18888 <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>
18889 <p>For a given use case,<wbr/> the actual maximum supported resolution
18890 may be lower than what is listed here,<wbr/> depending on the destination
18891 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18892 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18893 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18894 can provide.<wbr/></p>
18895 <p>Please reference the documentation for the image data destination to
18896 check if it limits the maximum size for image data.<wbr/></p>
18897 <p>The following table describes the minimum required output stream
18898 configurations based on the hardware level
18899 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
18903 <th align="center">Format</th>
18904 <th align="center">Size</th>
18905 <th align="center">Hardware Level</th>
18906 <th align="center">Notes</th>
18911 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18912 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
18913 <td align="center">Any</td>
18914 <td align="center"></td>
18917 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18918 <td align="center">1920x1080 (1080p)</td>
18919 <td align="center">Any</td>
18920 <td align="center">if 1080p <= activeArraySize</td>
18923 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18924 <td align="center">1280x720 (720p)</td>
18925 <td align="center">Any</td>
18926 <td align="center">if 720p <= activeArraySize</td>
18929 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18930 <td align="center">640x480 (480p)</td>
18931 <td align="center">Any</td>
18932 <td align="center">if 480p <= activeArraySize</td>
18935 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18936 <td align="center">320x240 (240p)</td>
18937 <td align="center">Any</td>
18938 <td align="center">if 240p <= activeArraySize</td>
18941 <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>
18942 <td align="center">all output sizes available for JPEG</td>
18943 <td align="center">FULL</td>
18944 <td align="center"></td>
18947 <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>
18948 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18949 <td align="center">LIMITED</td>
18950 <td align="center"></td>
18953 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18954 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18955 <td align="center">Any</td>
18956 <td align="center"></td>
18960 <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
18961 stream configurations on a per-capability basis.<wbr/></p>
18962 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18964 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18965 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18966 (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/>
18967 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18968 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18969 the dimensions being a multiple of 16.<wbr/>
18970 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18971 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
18972 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18973 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18974 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18975 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18976 3264x2448.<wbr/></li>
18981 <tr class="entries_header">
18982 <th class="th_details" colspan="6">HAL Implementation Details</th>
18984 <tr class="entry_cont">
18985 <td class="entry_details" colspan="6">
18986 <p>Do not set this property directly
18987 (it is synthetic and will not be available at the HAL layer);
18988 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
18989 <p>Not all output formats may be supported in a configuration with
18990 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18991 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18992 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18993 of sensor maximum resolution for JPEG formats (regardless of hardware
18995 <p>(The following is a rewording of the above required table):</p>
18996 <p>The HAL must include sensor maximum resolution (defined by
18997 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
18998 <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/>
18999 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19000 here as output streams.<wbr/></p>
19001 <p>It must also include each below resolution if it is smaller than or
19002 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19003 formats),<wbr/> as output streams:</p>
19005 <li>240p (320 x 240)</li>
19006 <li>480p (640 x 480)</li>
19007 <li>720p (1280 x 720)</li>
19008 <li>1080p (1920 x 1080)</li>
19010 <p>For LIMITED capability devices
19011 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19012 the HAL only has to list up to the maximum video size
19013 supported by the device.<wbr/></p>
19014 <p>Regardless of hardware level,<wbr/> every output resolution available for
19015 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19016 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19018 <li>availableFormats</li>
19019 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19024 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19025 <!-- end of entry -->
19028 <tr class="entry" id="static_android.scaler.croppingType">
19029 <td class="entry_name
19031 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
19033 <td class="entry_type">
19034 <span class="entry_type_name entry_type_name_enum">byte</span>
19036 <span class="entry_type_visibility"> [public]</span>
19039 <span class="entry_type_hwlevel">[legacy] </span>
19043 <ul class="entry_type_enum">
19045 <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
19046 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
19049 <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
19050 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
19054 </td> <!-- entry_type -->
19056 <td class="entry_description">
19057 <p>The crop type that this camera device supports.<wbr/></p>
19060 <td class="entry_units">
19063 <td class="entry_range">
19066 <td class="entry_hal_version">
19070 <td class="entry_tags">
19074 <tr class="entries_header">
19075 <th class="th_details" colspan="6">Details</th>
19077 <tr class="entry_cont">
19078 <td class="entry_details" colspan="6">
19079 <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
19080 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
19081 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>)
19082 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
19083 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19084 <p>Camera devices that support FREEFORM cropping will support any crop region that
19085 is inside of the active array.<wbr/> The camera device will apply the same crop region and
19086 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>
19087 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
19092 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19093 <!-- end of entry -->
19097 <!-- end of kind -->
19099 <tr><td colspan="7" class="kind">dynamic</td></tr>
19101 <thead class="entries_header">
19103 <th class="th_name">Property Name</th>
19104 <th class="th_type">Type</th>
19105 <th class="th_description">Description</th>
19106 <th class="th_units">Units</th>
19107 <th class="th_range">Range</th>
19108 <th class="th_hal_version">Initial HIDL HAL version</th>
19109 <th class="th_tags">Tags</th>
19124 <tr class="entry" id="dynamic_android.scaler.cropRegion">
19125 <td class="entry_name
19127 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19129 <td class="entry_type">
19130 <span class="entry_type_name">int32</span>
19131 <span class="entry_type_container">x</span>
19133 <span class="entry_type_array">
19136 <span class="entry_type_visibility"> [public as rectangle]</span>
19139 <span class="entry_type_hwlevel">[legacy] </span>
19144 </td> <!-- entry_type -->
19146 <td class="entry_description">
19147 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19150 <td class="entry_units">
19151 Pixel coordinates relative to
19152 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19155 <td class="entry_range">
19158 <td class="entry_hal_version">
19162 <td class="entry_tags">
19163 <ul class="entry_tags">
19164 <li><a href="#tag_BC">BC</a></li>
19169 <tr class="entries_header">
19170 <th class="th_details" colspan="6">Details</th>
19172 <tr class="entry_cont">
19173 <td class="entry_details" colspan="6">
19174 <p>This control can be used to implement digital zoom.<wbr/></p>
19175 <p>The crop region coordinate system is based off
19176 <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
19177 top-left corner of the sensor active array.<wbr/></p>
19178 <p>Output streams use this rectangle to produce their output,<wbr/>
19179 cropping to a smaller region if necessary to maintain the
19180 stream's aspect ratio,<wbr/> then scaling the sensor input to
19181 match the output's configured resolution.<wbr/></p>
19182 <p>The crop region is applied after the RAW to other color
19183 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19184 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19185 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19186 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19187 be done to maximize the final pixel area of the stream.<wbr/></p>
19188 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19189 ratio,<wbr/> then 4:3 streams will use the exact crop
19190 region.<wbr/> 16:9 streams will further crop vertically
19191 (letterbox).<wbr/></p>
19192 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19193 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19194 streams will match exactly.<wbr/> These additional crops will
19195 be centered within the crop region.<wbr/></p>
19196 <p>The width and height of the crop region cannot
19197 be set to be smaller than
19198 <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
19199 <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>
19200 <p>The camera device may adjust the crop region to account
19201 for rounding and other hardware requirements; the final
19202 crop region used will be included in the output capture
19207 <tr class="entries_header">
19208 <th class="th_details" colspan="6">HAL Implementation Details</th>
19210 <tr class="entry_cont">
19211 <td class="entry_details" colspan="6">
19212 <p>The output streams must maintain square pixels at all
19213 times,<wbr/> no matter what the relative aspect ratios of the
19214 crop region and the stream are.<wbr/> Negative values for
19215 corner are allowed for raw output if full pixel array is
19216 larger than active pixel array.<wbr/> Width and height may be
19217 rounded to nearest larger supportable width,<wbr/> especially
19218 for raw output,<wbr/> where only a few fixed scales may be
19219 possible.<wbr/></p>
19220 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19221 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19224 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19225 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19226 <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>
19228 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19229 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19230 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19231 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19232 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19233 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19234 <li>Scale the width and height of requested cropRegion with scaling factor of
19235 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
19236 respectively.<wbr/>
19237 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19238 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19239 follow the general cropping rule for this new cropRegion and effective active
19240 array size.<wbr/></li>
19244 <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/>
19245 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19246 The reported cropRegion may be slightly different with the requested cropRegion since
19247 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19248 hardware limitations.<wbr/></p>
19251 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19255 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19256 <!-- end of entry -->
19260 <!-- end of kind -->
19263 <!-- end of section -->
19264 <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19267 <tr><td colspan="7" class="kind">controls</td></tr>
19269 <thead class="entries_header">
19271 <th class="th_name">Property Name</th>
19272 <th class="th_type">Type</th>
19273 <th class="th_description">Description</th>
19274 <th class="th_units">Units</th>
19275 <th class="th_range">Range</th>
19276 <th class="th_hal_version">Initial HIDL HAL version</th>
19277 <th class="th_tags">Tags</th>
19292 <tr class="entry" id="controls_android.sensor.exposureTime">
19293 <td class="entry_name
19295 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19297 <td class="entry_type">
19298 <span class="entry_type_name">int64</span>
19300 <span class="entry_type_visibility"> [public]</span>
19303 <span class="entry_type_hwlevel">[full] </span>
19308 </td> <!-- entry_type -->
19310 <td class="entry_description">
19311 <p>Duration each pixel is exposed to
19315 <td class="entry_units">
19319 <td class="entry_range">
19320 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19323 <td class="entry_hal_version">
19327 <td class="entry_tags">
19328 <ul class="entry_tags">
19329 <li><a href="#tag_V1">V1</a></li>
19334 <tr class="entries_header">
19335 <th class="th_details" colspan="6">Details</th>
19337 <tr class="entry_cont">
19338 <td class="entry_details" colspan="6">
19339 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19340 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19341 The final exposure time used will be available in the output capture result.<wbr/></p>
19342 <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
19343 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19348 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19349 <!-- end of entry -->
19352 <tr class="entry" id="controls_android.sensor.frameDuration">
19353 <td class="entry_name
19355 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19357 <td class="entry_type">
19358 <span class="entry_type_name">int64</span>
19360 <span class="entry_type_visibility"> [public]</span>
19363 <span class="entry_type_hwlevel">[full] </span>
19368 </td> <!-- entry_type -->
19370 <td class="entry_description">
19371 <p>Duration from start of frame exposure to
19372 start of next frame exposure.<wbr/></p>
19375 <td class="entry_units">
19379 <td class="entry_range">
19380 <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/>
19381 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19384 <td class="entry_hal_version">
19388 <td class="entry_tags">
19389 <ul class="entry_tags">
19390 <li><a href="#tag_V1">V1</a></li>
19395 <tr class="entries_header">
19396 <th class="th_details" colspan="6">Details</th>
19398 <tr class="entry_cont">
19399 <td class="entry_details" colspan="6">
19400 <p>The maximum frame rate that can be supported by a camera subsystem is
19401 a function of many factors:</p>
19403 <li>Requested resolutions of output image streams</li>
19404 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19405 <li>The bandwidth of the imager interface</li>
19406 <li>The bandwidth of the various ISP processing blocks</li>
19408 <p>Since these factors can vary greatly between different ISPs and
19409 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19410 restrictions with as simple a model as possible.<wbr/></p>
19411 <p>The model presented has the following characteristics:</p>
19413 <li>The image sensor is always configured to output the smallest
19414 resolution possible given the application's requested output stream
19415 sizes.<wbr/> The smallest resolution is defined as being at least as large
19416 as the largest requested output stream size; the camera pipeline must
19417 never digitally upsample sensor data when the crop region covers the
19418 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19419 resolutions are configured,<wbr/> the sensor can provide a higher frame
19421 <li>Since any request may use any or all the currently configured
19422 output streams,<wbr/> the sensor and ISP must be configured to support
19423 scaling a single capture to all the streams at the same time.<wbr/> This
19424 means the camera pipeline must be ready to produce the largest
19425 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
19426 frame rate of a given configured stream set is governed only by the
19427 largest requested stream resolution.<wbr/></li>
19428 <li>Using more than one output stream in a request does not affect the
19429 frame duration.<wbr/></li>
19430 <li>Certain format-streams may need to do additional background processing
19431 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19432 can run concurrently to the rest of the camera pipeline,<wbr/> but
19433 cannot process more than 1 capture at a time.<wbr/></li>
19435 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19436 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19437 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19438 possible for a given stream configuration.<wbr/></p>
19439 <p>Specifically,<wbr/> the application can use the following rules to
19440 determine the minimum frame duration it can request from the camera
19443 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19444 <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>
19445 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19446 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19447 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>
19449 <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>
19450 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19451 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19452 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19453 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19454 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19455 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19456 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19457 <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>
19458 <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
19459 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19463 <tr class="entries_header">
19464 <th class="th_details" colspan="6">HAL Implementation Details</th>
19466 <tr class="entry_cont">
19467 <td class="entry_details" colspan="6">
19468 <p>For more details about stalling,<wbr/> see
19469 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19473 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19474 <!-- end of entry -->
19477 <tr class="entry" id="controls_android.sensor.sensitivity">
19478 <td class="entry_name
19480 android.<wbr/>sensor.<wbr/>sensitivity
19482 <td class="entry_type">
19483 <span class="entry_type_name">int32</span>
19485 <span class="entry_type_visibility"> [public]</span>
19488 <span class="entry_type_hwlevel">[full] </span>
19493 </td> <!-- entry_type -->
19495 <td class="entry_description">
19496 <p>The amount of gain applied to sensor data
19497 before processing.<wbr/></p>
19500 <td class="entry_units">
19501 ISO arithmetic units
19504 <td class="entry_range">
19505 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
19508 <td class="entry_hal_version">
19512 <td class="entry_tags">
19513 <ul class="entry_tags">
19514 <li><a href="#tag_V1">V1</a></li>
19519 <tr class="entries_header">
19520 <th class="th_details" colspan="6">Details</th>
19522 <tr class="entry_cont">
19523 <td class="entry_details" colspan="6">
19524 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
19525 as defined in ISO 12232:2006.<wbr/></p>
19526 <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
19527 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
19528 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
19529 <p>If the camera device cannot apply the exact sensitivity
19530 requested,<wbr/> it will reduce the gain to the nearest supported
19531 value.<wbr/> The final sensitivity used will be available in the
19532 output capture result.<wbr/></p>
19533 <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
19534 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19538 <tr class="entries_header">
19539 <th class="th_details" colspan="6">HAL Implementation Details</th>
19541 <tr class="entry_cont">
19542 <td class="entry_details" colspan="6">
19543 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
19547 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19548 <!-- end of entry -->
19551 <tr class="entry" id="controls_android.sensor.testPatternData">
19552 <td class="entry_name
19554 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
19556 <td class="entry_type">
19557 <span class="entry_type_name">int32</span>
19558 <span class="entry_type_container">x</span>
19560 <span class="entry_type_array">
19563 <span class="entry_type_visibility"> [public]</span>
19570 </td> <!-- entry_type -->
19572 <td class="entry_description">
19573 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
19574 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
19577 <td class="entry_units">
19580 <td class="entry_range">
19583 <td class="entry_hal_version">
19587 <td class="entry_tags">
19591 <tr class="entries_header">
19592 <th class="th_details" colspan="6">Details</th>
19594 <tr class="entry_cont">
19595 <td class="entry_details" colspan="6">
19596 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
19597 The camera device then uses the most significant X bits
19598 that correspond to how many bits are in its Bayer raw sensor
19600 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
19601 10 most significant bits from each color channel.<wbr/></p>
19605 <tr class="entries_header">
19606 <th class="th_details" colspan="6">HAL Implementation Details</th>
19608 <tr class="entry_cont">
19609 <td class="entry_details" colspan="6">
19614 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19615 <!-- end of entry -->
19618 <tr class="entry" id="controls_android.sensor.testPatternMode">
19619 <td class="entry_name
19621 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
19623 <td class="entry_type">
19624 <span class="entry_type_name entry_type_name_enum">int32</span>
19626 <span class="entry_type_visibility"> [public]</span>
19632 <ul class="entry_type_enum">
19634 <span class="entry_type_enum_name">OFF (v3.2)</span>
19635 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
19636 device returns captures from the image sensor.<wbr/></p>
19637 <p>This is the default if the key is not set.<wbr/></p></span>
19640 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
19641 <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
19642 respective color channel provided in
19643 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
19644 <p>For example:</p>
19645 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19647 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
19648 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19650 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
19651 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
19654 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
19655 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
19656 <p>The vertical bars (left-to-right) are as follows:</p>
19658 <li>100% white</li>
19667 <p>In general the image would look like the following:</p>
19668 <pre><code>W Y C G M R B K
19673 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19674 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19675 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19677 (B = Blue,<wbr/> K = Black)
19679 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
19680 When this is not possible,<wbr/> the bar size should be rounded
19681 down to the nearest integer and the pattern can repeat
19682 on the right side.<wbr/></p>
19683 <p>Each bar's height must always take up the full sensor
19684 pixel array height.<wbr/></p>
19685 <p>Each pixel in this test pattern must be set to either
19686 0% intensity or 100% intensity.<wbr/></p></span>
19689 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
19690 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
19691 each bar should start at its specified color at the top,<wbr/>
19692 and fade to gray at the bottom.<wbr/></p>
19693 <p>Furthermore each bar is further subdivided into a left and
19694 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
19695 and the right half should have a quantized gradient.<wbr/></p>
19696 <p>In particular,<wbr/> the right half's should consist of blocks of the
19697 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
19698 <p>The least significant bits in the quantized gradient should
19699 be copied from the most significant bits of the smooth gradient.<wbr/></p>
19700 <p>The height of each bar should always be a multiple of 128.<wbr/>
19701 When this is not the case,<wbr/> the pattern should repeat at the bottom
19702 of the image.<wbr/></p></span>
19705 <span class="entry_type_enum_name">PN9 (v3.2)</span>
19706 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
19707 generated from a PN9 512-bit sequence (typically implemented
19708 in hardware with a linear feedback shift register).<wbr/></p>
19709 <p>The generator should be reset at the beginning of each frame,<wbr/>
19710 and thus each subsequent raw frame with this test pattern should
19711 be exactly the same as the last.<wbr/></p></span>
19714 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
19715 <span class="entry_type_enum_value">256</span>
19716 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
19717 available only on this camera device are at least this numeric
19719 <p>All of the custom test patterns will be static
19720 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
19724 </td> <!-- entry_type -->
19726 <td class="entry_description">
19727 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
19728 doing a real exposure from the camera.<wbr/></p>
19731 <td class="entry_units">
19734 <td class="entry_range">
19735 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
19738 <td class="entry_hal_version">
19742 <td class="entry_tags">
19746 <tr class="entries_header">
19747 <th class="th_details" colspan="6">Details</th>
19749 <tr class="entry_cont">
19750 <td class="entry_details" colspan="6">
19751 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
19752 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
19753 work as normal.<wbr/></p>
19754 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
19755 occur (and that the test pattern remain unmodified,<wbr/> since the flash
19756 would not actually affect it).<wbr/></p>
19757 <p>Defaults to OFF.<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">
19766 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
19767 <p>The HAL may choose to substitute test patterns from the sensor
19768 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
19769 indistinguishable to the ISP whether the data came from the
19770 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
19774 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19775 <!-- end of entry -->
19779 <!-- end of kind -->
19781 <tr><td colspan="7" class="kind">static</td></tr>
19783 <thead class="entries_header">
19785 <th class="th_name">Property Name</th>
19786 <th class="th_type">Type</th>
19787 <th class="th_description">Description</th>
19788 <th class="th_units">Units</th>
19789 <th class="th_range">Range</th>
19790 <th class="th_hal_version">Initial HIDL HAL version</th>
19791 <th class="th_tags">Tags</th>
19808 <tr class="entry" id="static_android.sensor.info.activeArraySize">
19809 <td class="entry_name
19811 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19813 <td class="entry_type">
19814 <span class="entry_type_name">int32</span>
19815 <span class="entry_type_container">x</span>
19817 <span class="entry_type_array">
19820 <span class="entry_type_visibility"> [public as rectangle]</span>
19823 <span class="entry_type_hwlevel">[legacy] </span>
19826 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19829 </td> <!-- entry_type -->
19831 <td class="entry_description">
19832 <p>The area of the image sensor which corresponds to active pixels after any geometric
19833 distortion correction has been applied.<wbr/></p>
19836 <td class="entry_units">
19837 Pixel coordinates on the image sensor
19840 <td class="entry_range">
19843 <td class="entry_hal_version">
19847 <td class="entry_tags">
19848 <ul class="entry_tags">
19849 <li><a href="#tag_RAW">RAW</a></li>
19854 <tr class="entries_header">
19855 <th class="th_details" colspan="6">Details</th>
19857 <tr class="entry_cont">
19858 <td class="entry_details" colspan="6">
19859 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
19860 the region that actually receives light from the scene) after any geometric correction
19861 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
19862 image output formats aside from the raw formats.<wbr/></p>
19863 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
19864 the full pixel array,<wbr/> and the size of the full pixel array is given by
19865 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19866 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
19867 <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
19868 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
19869 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
19870 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
19871 resulting in scaling or cropping may have been applied.<wbr/></p>
19875 <tr class="entries_header">
19876 <th class="th_details" colspan="6">HAL Implementation Details</th>
19878 <tr class="entry_cont">
19879 <td class="entry_details" colspan="6">
19880 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
19881 >= <code>(0,<wbr/>0)</code>.<wbr/>
19882 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>
19886 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19887 <!-- end of entry -->
19890 <tr class="entry" id="static_android.sensor.info.sensitivityRange">
19891 <td class="entry_name
19893 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
19895 <td class="entry_type">
19896 <span class="entry_type_name">int32</span>
19897 <span class="entry_type_container">x</span>
19899 <span class="entry_type_array">
19902 <span class="entry_type_visibility"> [public as rangeInt]</span>
19905 <span class="entry_type_hwlevel">[full] </span>
19908 <div class="entry_type_notes">Range of supported sensitivities</div>
19911 </td> <!-- entry_type -->
19913 <td class="entry_description">
19914 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
19915 camera device.<wbr/></p>
19918 <td class="entry_units">
19921 <td class="entry_range">
19922 <p>Min <= 100,<wbr/> Max >= 800</p>
19925 <td class="entry_hal_version">
19929 <td class="entry_tags">
19930 <ul class="entry_tags">
19931 <li><a href="#tag_BC">BC</a></li>
19932 <li><a href="#tag_V1">V1</a></li>
19937 <tr class="entries_header">
19938 <th class="th_details" colspan="6">Details</th>
19940 <tr class="entry_cont">
19941 <td class="entry_details" colspan="6">
19942 <p>The values are the standard ISO sensitivity values,<wbr/>
19943 as defined in ISO 12232:2006.<wbr/></p>
19948 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19949 <!-- end of entry -->
19952 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
19953 <td class="entry_name
19955 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
19957 <td class="entry_type">
19958 <span class="entry_type_name entry_type_name_enum">byte</span>
19960 <span class="entry_type_visibility"> [public]</span>
19963 <span class="entry_type_hwlevel">[full] </span>
19967 <ul class="entry_type_enum">
19969 <span class="entry_type_enum_name">RGGB (v3.2)</span>
19972 <span class="entry_type_enum_name">GRBG (v3.2)</span>
19975 <span class="entry_type_enum_name">GBRG (v3.2)</span>
19978 <span class="entry_type_enum_name">BGGR (v3.2)</span>
19981 <span class="entry_type_enum_name">RGB (v3.2)</span>
19982 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
19983 values for each pixel,<wbr/> instead of just 1 16-bit value
19984 per pixel.<wbr/></p></span>
19988 </td> <!-- entry_type -->
19990 <td class="entry_description">
19991 <p>The arrangement of color filters on sensor;
19992 represents the colors in the top-left 2x2 section of
19993 the sensor,<wbr/> in reading order.<wbr/></p>
19996 <td class="entry_units">
19999 <td class="entry_range">
20002 <td class="entry_hal_version">
20006 <td class="entry_tags">
20007 <ul class="entry_tags">
20008 <li><a href="#tag_RAW">RAW</a></li>
20015 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20016 <!-- end of entry -->
20019 <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
20020 <td class="entry_name
20022 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
20024 <td class="entry_type">
20025 <span class="entry_type_name">int64</span>
20026 <span class="entry_type_container">x</span>
20028 <span class="entry_type_array">
20031 <span class="entry_type_visibility"> [public as rangeLong]</span>
20034 <span class="entry_type_hwlevel">[full] </span>
20037 <div class="entry_type_notes">nanoseconds</div>
20040 </td> <!-- entry_type -->
20042 <td class="entry_description">
20043 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
20044 by this camera device.<wbr/></p>
20047 <td class="entry_units">
20051 <td class="entry_range">
20052 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
20053 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20054 the maximum exposure time will be greater than 100ms.<wbr/></p>
20057 <td class="entry_hal_version">
20061 <td class="entry_tags">
20062 <ul class="entry_tags">
20063 <li><a href="#tag_V1">V1</a></li>
20069 <tr class="entries_header">
20070 <th class="th_details" colspan="6">HAL Implementation Details</th>
20072 <tr class="entry_cont">
20073 <td class="entry_details" colspan="6">
20074 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20075 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
20080 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20081 <!-- end of entry -->
20084 <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
20085 <td class="entry_name
20087 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
20089 <td class="entry_type">
20090 <span class="entry_type_name">int64</span>
20092 <span class="entry_type_visibility"> [public]</span>
20095 <span class="entry_type_hwlevel">[full] </span>
20100 </td> <!-- entry_type -->
20102 <td class="entry_description">
20103 <p>The maximum possible frame duration (minimum frame rate) for
20104 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
20107 <td class="entry_units">
20111 <td class="entry_range">
20112 <p>For FULL capability devices
20113 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20116 <td class="entry_hal_version">
20120 <td class="entry_tags">
20121 <ul class="entry_tags">
20122 <li><a href="#tag_V1">V1</a></li>
20127 <tr class="entries_header">
20128 <th class="th_details" colspan="6">Details</th>
20130 <tr class="entry_cont">
20131 <td class="entry_details" colspan="6">
20132 <p>Attempting to use frame durations beyond the maximum will result in the frame
20133 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20134 durations.<wbr/></p>
20135 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20136 for the minimum frame duration values.<wbr/></p>
20140 <tr class="entries_header">
20141 <th class="th_details" colspan="6">HAL Implementation Details</th>
20143 <tr class="entry_cont">
20144 <td class="entry_details" colspan="6">
20145 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20146 The maximum of the range SHOULD be at least
20147 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20148 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20149 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20150 value (since exposure time overrides frame duration).<wbr/></p>
20151 <p>Available minimum frame durations for JPEG must be no greater
20152 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20153 minimum frame durations (for that respective size).<wbr/></p>
20154 <p>Since JPEG processing is considered offline and can take longer than
20155 a single uncompressed capture,<wbr/> refer to
20156 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20157 for details about encoding this scenario.<wbr/></p>
20161 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20162 <!-- end of entry -->
20165 <tr class="entry" id="static_android.sensor.info.physicalSize">
20166 <td class="entry_name
20168 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20170 <td class="entry_type">
20171 <span class="entry_type_name">float</span>
20172 <span class="entry_type_container">x</span>
20174 <span class="entry_type_array">
20177 <span class="entry_type_visibility"> [public as sizeF]</span>
20180 <span class="entry_type_hwlevel">[legacy] </span>
20183 <div class="entry_type_notes">width x height</div>
20186 </td> <!-- entry_type -->
20188 <td class="entry_description">
20189 <p>The physical dimensions of the full pixel
20193 <td class="entry_units">
20197 <td class="entry_range">
20200 <td class="entry_hal_version">
20204 <td class="entry_tags">
20205 <ul class="entry_tags">
20206 <li><a href="#tag_V1">V1</a></li>
20207 <li><a href="#tag_BC">BC</a></li>
20212 <tr class="entries_header">
20213 <th class="th_details" colspan="6">Details</th>
20215 <tr class="entry_cont">
20216 <td class="entry_details" colspan="6">
20217 <p>This is the physical size of the sensor pixel
20218 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20222 <tr class="entries_header">
20223 <th class="th_details" colspan="6">HAL Implementation Details</th>
20225 <tr class="entry_cont">
20226 <td class="entry_details" colspan="6">
20227 <p>Needed for FOV calculation for old API</p>
20231 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20232 <!-- end of entry -->
20235 <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20236 <td class="entry_name
20238 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20240 <td class="entry_type">
20241 <span class="entry_type_name">int32</span>
20242 <span class="entry_type_container">x</span>
20244 <span class="entry_type_array">
20247 <span class="entry_type_visibility"> [public as size]</span>
20250 <span class="entry_type_hwlevel">[legacy] </span>
20255 </td> <!-- entry_type -->
20257 <td class="entry_description">
20258 <p>Dimensions of the full pixel array,<wbr/> possibly
20259 including black calibration pixels.<wbr/></p>
20262 <td class="entry_units">
20266 <td class="entry_range">
20269 <td class="entry_hal_version">
20273 <td class="entry_tags">
20274 <ul class="entry_tags">
20275 <li><a href="#tag_RAW">RAW</a></li>
20276 <li><a href="#tag_BC">BC</a></li>
20281 <tr class="entries_header">
20282 <th class="th_details" colspan="6">Details</th>
20284 <tr class="entry_cont">
20285 <td class="entry_details" colspan="6">
20286 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20287 <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
20288 the raw buffers produced by this sensor.<wbr/></p>
20289 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20290 <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
20291 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20292 (this depends on whether or not the image sensor returns buffers containing pixels that
20293 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20294 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20295 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
20296 defines the rectangle of active pixels that will be included in processed image
20302 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20303 <!-- end of entry -->
20306 <tr class="entry" id="static_android.sensor.info.whiteLevel">
20307 <td class="entry_name
20309 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20311 <td class="entry_type">
20312 <span class="entry_type_name">int32</span>
20314 <span class="entry_type_visibility"> [public]</span>
20321 </td> <!-- entry_type -->
20323 <td class="entry_description">
20324 <p>Maximum raw value output by sensor.<wbr/></p>
20327 <td class="entry_units">
20330 <td class="entry_range">
20331 <p>> 255 (8-bit output)</p>
20334 <td class="entry_hal_version">
20338 <td class="entry_tags">
20339 <ul class="entry_tags">
20340 <li><a href="#tag_RAW">RAW</a></li>
20345 <tr class="entries_header">
20346 <th class="th_details" colspan="6">Details</th>
20348 <tr class="entry_cont">
20349 <td class="entry_details" colspan="6">
20350 <p>This specifies the fully-saturated encoding level for the raw
20351 sample values from the sensor.<wbr/> This is typically caused by the
20352 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20353 each channel is specified by the offset in the
20354 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20355 <p>The white level is typically determined either by sensor bit depth
20356 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20357 becomes too non-linear to be useful.<wbr/> The default value for this is
20358 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20359 <p>The white level values of captured images may vary for different
20360 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20361 represents a coarse approximation for such case.<wbr/> It is recommended
20362 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20363 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
20367 <tr class="entries_header">
20368 <th class="th_details" colspan="6">HAL Implementation Details</th>
20370 <tr class="entry_cont">
20371 <td class="entry_details" colspan="6">
20372 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
20373 so the value for linear sensors should not be significantly lower
20374 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20378 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20379 <!-- end of entry -->
20382 <tr class="entry" id="static_android.sensor.info.timestampSource">
20383 <td class="entry_name
20385 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20387 <td class="entry_type">
20388 <span class="entry_type_name entry_type_name_enum">byte</span>
20390 <span class="entry_type_visibility"> [public]</span>
20393 <span class="entry_type_hwlevel">[legacy] </span>
20397 <ul class="entry_type_enum">
20399 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
20400 <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/>
20401 but can not be compared to timestamps from other subsystems
20402 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20403 camera devices in the same system.<wbr/> Timestamps between streams and results for
20404 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20405 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20408 <span class="entry_type_enum_name">REALTIME (v3.2)</span>
20409 <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
20410 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20411 and they can be compared to other timestamps using that base.<wbr/></p></span>
20415 </td> <!-- entry_type -->
20417 <td class="entry_description">
20418 <p>The time base source for sensor capture start timestamps.<wbr/></p>
20421 <td class="entry_units">
20424 <td class="entry_range">
20427 <td class="entry_hal_version">
20431 <td class="entry_tags">
20432 <ul class="entry_tags">
20433 <li><a href="#tag_V1">V1</a></li>
20438 <tr class="entries_header">
20439 <th class="th_details" colspan="6">Details</th>
20441 <tr class="entry_cont">
20442 <td class="entry_details" colspan="6">
20443 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20444 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20445 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20446 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20450 <tr class="entries_header">
20451 <th class="th_details" colspan="6">HAL Implementation Details</th>
20453 <tr class="entry_cont">
20454 <td class="entry_details" colspan="6">
20455 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20456 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20457 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20458 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20459 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20460 recording might suffer unexpected behavior.<wbr/></p>
20461 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20462 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20466 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20467 <!-- end of entry -->
20470 <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20471 <td class="entry_name
20473 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20475 <td class="entry_type">
20476 <span class="entry_type_name entry_type_name_enum">byte</span>
20478 <span class="entry_type_visibility"> [public as boolean]</span>
20484 <ul class="entry_type_enum">
20486 <span class="entry_type_enum_name">FALSE (v3.2)</span>
20489 <span class="entry_type_enum_name">TRUE (v3.2)</span>
20493 </td> <!-- entry_type -->
20495 <td class="entry_description">
20496 <p>Whether the RAW images output from this camera device are subject to
20497 lens shading correction.<wbr/></p>
20500 <td class="entry_units">
20503 <td class="entry_range">
20506 <td class="entry_hal_version">
20510 <td class="entry_tags">
20514 <tr class="entries_header">
20515 <th class="th_details" colspan="6">Details</th>
20517 <tr class="entry_cont">
20518 <td class="entry_details" colspan="6">
20519 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
20520 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
20521 not be adjusted for lens shading correction.<wbr/>
20522 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>
20523 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
20524 Devices with RAW capability will always report this information in this key.<wbr/></p>
20529 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20530 <!-- end of entry -->
20533 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
20534 <td class="entry_name
20536 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
20538 <td class="entry_type">
20539 <span class="entry_type_name">int32</span>
20540 <span class="entry_type_container">x</span>
20542 <span class="entry_type_array">
20545 <span class="entry_type_visibility"> [public as rectangle]</span>
20548 <span class="entry_type_hwlevel">[legacy] </span>
20551 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20554 </td> <!-- entry_type -->
20556 <td class="entry_description">
20557 <p>The area of the image sensor which corresponds to active pixels prior to the
20558 application of any geometric distortion correction.<wbr/></p>
20561 <td class="entry_units">
20562 Pixel coordinates on the image sensor
20565 <td class="entry_range">
20568 <td class="entry_hal_version">
20572 <td class="entry_tags">
20573 <ul class="entry_tags">
20574 <li><a href="#tag_RAW">RAW</a></li>
20579 <tr class="entries_header">
20580 <th class="th_details" colspan="6">Details</th>
20582 <tr class="entry_cont">
20583 <td class="entry_details" colspan="6">
20584 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20585 the region that actually receives light from the scene) before any geometric correction
20586 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
20587 raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
20588 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
20589 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
20590 <p>The size of this region determines the maximum field of view and the maximum number of
20591 pixels that an image from this sensor can contain,<wbr/> prior to the application of
20592 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
20593 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>
20594 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
20595 can be calculated by applying the geometric distortion correction fields to this
20596 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>
20597 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
20598 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/>
20599 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
20600 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
20602 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
20603 <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
20604 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
20605 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
20606 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
20607 buffers is defined relative to the top,<wbr/> left of the
20608 <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>
20609 <li>If the resulting corrected pixel coordinate is within the region given in
20610 <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
20611 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
20612 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
20614 <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>
20615 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/>
20616 <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
20617 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
20618 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
20619 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)
20620 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
20621 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20622 <p>The currently supported fields that correct for geometric distortion are:</p>
20624 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
20626 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
20627 as the post-distortion-corrected rectangle given in
20628 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20629 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20630 the full pixel array,<wbr/> and the size of the full pixel array is given by
20631 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20632 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
20633 full array may include black calibration pixels or other inactive regions.<wbr/></p>
20637 <tr class="entries_header">
20638 <th class="th_details" colspan="6">HAL Implementation Details</th>
20640 <tr class="entry_cont">
20641 <td class="entry_details" colspan="6">
20642 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20643 >= <code>(0,<wbr/>0)</code>.<wbr/>
20644 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>
20645 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
20646 the same as the post-correction active array region given in
20647 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20651 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20652 <!-- end of entry -->
20658 <tr class="entry" id="static_android.sensor.referenceIlluminant1">
20659 <td class="entry_name
20661 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
20663 <td class="entry_type">
20664 <span class="entry_type_name entry_type_name_enum">byte</span>
20666 <span class="entry_type_visibility"> [public]</span>
20672 <ul class="entry_type_enum">
20674 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
20675 <span class="entry_type_enum_value">1</span>
20678 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
20679 <span class="entry_type_enum_value">2</span>
20682 <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
20683 <span class="entry_type_enum_value">3</span>
20684 <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
20687 <span class="entry_type_enum_name">FLASH (v3.2)</span>
20688 <span class="entry_type_enum_value">4</span>
20691 <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
20692 <span class="entry_type_enum_value">9</span>
20695 <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
20696 <span class="entry_type_enum_value">10</span>
20699 <span class="entry_type_enum_name">SHADE (v3.2)</span>
20700 <span class="entry_type_enum_value">11</span>
20703 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
20704 <span class="entry_type_enum_value">12</span>
20705 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
20708 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
20709 <span class="entry_type_enum_value">13</span>
20710 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
20713 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
20714 <span class="entry_type_enum_value">14</span>
20715 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
20718 <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
20719 <span class="entry_type_enum_value">15</span>
20720 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
20723 <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
20724 <span class="entry_type_enum_value">17</span>
20727 <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
20728 <span class="entry_type_enum_value">18</span>
20731 <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
20732 <span class="entry_type_enum_value">19</span>
20735 <span class="entry_type_enum_name">D55 (v3.2)</span>
20736 <span class="entry_type_enum_value">20</span>
20739 <span class="entry_type_enum_name">D65 (v3.2)</span>
20740 <span class="entry_type_enum_value">21</span>
20743 <span class="entry_type_enum_name">D75 (v3.2)</span>
20744 <span class="entry_type_enum_value">22</span>
20747 <span class="entry_type_enum_name">D50 (v3.2)</span>
20748 <span class="entry_type_enum_value">23</span>
20751 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
20752 <span class="entry_type_enum_value">24</span>
20756 </td> <!-- entry_type -->
20758 <td class="entry_description">
20759 <p>The standard reference illuminant used as the scene light source when
20760 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
20761 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
20762 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
20765 <td class="entry_units">
20768 <td class="entry_range">
20771 <td class="entry_hal_version">
20775 <td class="entry_tags">
20776 <ul class="entry_tags">
20777 <li><a href="#tag_RAW">RAW</a></li>
20782 <tr class="entries_header">
20783 <th class="th_details" colspan="6">Details</th>
20785 <tr class="entry_cont">
20786 <td class="entry_details" colspan="6">
20787 <p>The values in this key correspond to the values defined for the
20788 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
20789 that are often used calibrating camera devices.<wbr/></p>
20790 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
20791 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
20792 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
20793 <p>Some devices may choose to provide a second set of calibration
20794 information for improved quality,<wbr/> including
20795 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
20799 <tr class="entries_header">
20800 <th class="th_details" colspan="6">HAL Implementation Details</th>
20802 <tr class="entry_cont">
20803 <td class="entry_details" colspan="6">
20804 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
20805 and corresponding matrices must be present to support the RAW capability
20806 and DNG output.<wbr/></p>
20807 <p>When producing raw images with a color profile that has only been
20808 calibrated against a single light source,<wbr/> it is valid to omit
20809 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
20810 <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/>
20811 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
20812 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
20813 chosen so that it is representative of typical scene lighting.<wbr/> In
20814 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
20815 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
20816 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
20817 chosen to represent the typical range of scene lighting conditions.<wbr/>
20818 In general,<wbr/> low color temperature illuminant such as Standard-A will
20819 be chosen for the first reference illuminant and a higher color
20820 temperature illuminant such as D65 will be chosen for the second
20821 reference illuminant.<wbr/></p>
20825 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20826 <!-- end of entry -->
20829 <tr class="entry" id="static_android.sensor.referenceIlluminant2">
20830 <td class="entry_name
20832 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
20834 <td class="entry_type">
20835 <span class="entry_type_name">byte</span>
20837 <span class="entry_type_visibility"> [public]</span>
20844 </td> <!-- entry_type -->
20846 <td class="entry_description">
20847 <p>The standard reference illuminant used as the scene light source when
20848 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
20849 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
20850 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
20853 <td class="entry_units">
20856 <td class="entry_range">
20857 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
20860 <td class="entry_hal_version">
20864 <td class="entry_tags">
20865 <ul class="entry_tags">
20866 <li><a href="#tag_RAW">RAW</a></li>
20871 <tr class="entries_header">
20872 <th class="th_details" colspan="6">Details</th>
20874 <tr class="entry_cont">
20875 <td class="entry_details" colspan="6">
20876 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
20877 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
20878 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
20879 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
20884 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20885 <!-- end of entry -->
20888 <tr class="entry" id="static_android.sensor.calibrationTransform1">
20889 <td class="entry_name
20891 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
20893 <td class="entry_type">
20894 <span class="entry_type_name">rational</span>
20895 <span class="entry_type_container">x</span>
20897 <span class="entry_type_array">
20900 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20905 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20908 </td> <!-- entry_type -->
20910 <td class="entry_description">
20911 <p>A per-device calibration transform matrix that maps from the
20912 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
20915 <td class="entry_units">
20918 <td class="entry_range">
20921 <td class="entry_hal_version">
20925 <td class="entry_tags">
20926 <ul class="entry_tags">
20927 <li><a href="#tag_RAW">RAW</a></li>
20932 <tr class="entries_header">
20933 <th class="th_details" colspan="6">Details</th>
20935 <tr class="entry_cont">
20936 <td class="entry_details" colspan="6">
20937 <p>This matrix is used to correct for per-device variations in the
20938 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
20939 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20940 contains a per-device calibration transform that maps colors
20941 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
20942 colorspace) into this camera device's native sensor color
20943 space under the first reference illuminant
20944 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
20949 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20950 <!-- end of entry -->
20953 <tr class="entry" id="static_android.sensor.calibrationTransform2">
20954 <td class="entry_name
20956 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
20958 <td class="entry_type">
20959 <span class="entry_type_name">rational</span>
20960 <span class="entry_type_container">x</span>
20962 <span class="entry_type_array">
20965 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20970 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20973 </td> <!-- entry_type -->
20975 <td class="entry_description">
20976 <p>A per-device calibration transform matrix that maps from the
20977 reference sensor colorspace to the actual device sensor colorspace
20978 (this is the colorspace of the raw buffer data).<wbr/></p>
20981 <td class="entry_units">
20984 <td class="entry_range">
20987 <td class="entry_hal_version">
20991 <td class="entry_tags">
20992 <ul class="entry_tags">
20993 <li><a href="#tag_RAW">RAW</a></li>
20998 <tr class="entries_header">
20999 <th class="th_details" colspan="6">Details</th>
21001 <tr class="entry_cont">
21002 <td class="entry_details" colspan="6">
21003 <p>This matrix is used to correct for per-device variations in the
21004 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21005 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21006 contains a per-device calibration transform that maps colors
21007 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21008 colorspace) into this camera device's native sensor color
21009 space under the second reference illuminant
21010 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21011 <p>This matrix will only be present if the second reference
21012 illuminant is present.<wbr/></p>
21017 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21018 <!-- end of entry -->
21021 <tr class="entry" id="static_android.sensor.colorTransform1">
21022 <td class="entry_name
21024 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
21026 <td class="entry_type">
21027 <span class="entry_type_name">rational</span>
21028 <span class="entry_type_container">x</span>
21030 <span class="entry_type_array">
21033 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21038 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21041 </td> <!-- entry_type -->
21043 <td class="entry_description">
21044 <p>A matrix that transforms color values from CIE XYZ color space to
21045 reference sensor color space.<wbr/></p>
21048 <td class="entry_units">
21051 <td class="entry_range">
21054 <td class="entry_hal_version">
21058 <td class="entry_tags">
21059 <ul class="entry_tags">
21060 <li><a href="#tag_RAW">RAW</a></li>
21065 <tr class="entries_header">
21066 <th class="th_details" colspan="6">Details</th>
21068 <tr class="entry_cont">
21069 <td class="entry_details" colspan="6">
21070 <p>This matrix is used to convert from the standard CIE XYZ color
21071 space to the reference sensor colorspace,<wbr/> and is used when processing
21072 raw buffer data.<wbr/></p>
21073 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21074 contains a color transform matrix that maps colors from the CIE
21075 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21076 "golden module" colorspace) under the first reference illuminant
21077 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21078 <p>The white points chosen in both the reference sensor color space
21079 and the CIE XYZ colorspace when calculating this transform will
21080 match the standard white point for the first reference illuminant
21081 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21086 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21087 <!-- end of entry -->
21090 <tr class="entry" id="static_android.sensor.colorTransform2">
21091 <td class="entry_name
21093 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
21095 <td class="entry_type">
21096 <span class="entry_type_name">rational</span>
21097 <span class="entry_type_container">x</span>
21099 <span class="entry_type_array">
21102 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21107 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21110 </td> <!-- entry_type -->
21112 <td class="entry_description">
21113 <p>A matrix that transforms color values from CIE XYZ color space to
21114 reference sensor color space.<wbr/></p>
21117 <td class="entry_units">
21120 <td class="entry_range">
21123 <td class="entry_hal_version">
21127 <td class="entry_tags">
21128 <ul class="entry_tags">
21129 <li><a href="#tag_RAW">RAW</a></li>
21134 <tr class="entries_header">
21135 <th class="th_details" colspan="6">Details</th>
21137 <tr class="entry_cont">
21138 <td class="entry_details" colspan="6">
21139 <p>This matrix is used to convert from the standard CIE XYZ color
21140 space to the reference sensor colorspace,<wbr/> and is used when processing
21141 raw buffer data.<wbr/></p>
21142 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21143 contains a color transform matrix that maps colors from the CIE
21144 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21145 "golden module" colorspace) under the second reference illuminant
21146 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21147 <p>The white points chosen in both the reference sensor color space
21148 and the CIE XYZ colorspace when calculating this transform will
21149 match the standard white point for the second reference illuminant
21150 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21151 <p>This matrix will only be present if the second reference
21152 illuminant is present.<wbr/></p>
21157 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21158 <!-- end of entry -->
21161 <tr class="entry" id="static_android.sensor.forwardMatrix1">
21162 <td class="entry_name
21164 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21166 <td class="entry_type">
21167 <span class="entry_type_name">rational</span>
21168 <span class="entry_type_container">x</span>
21170 <span class="entry_type_array">
21173 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21178 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21181 </td> <!-- entry_type -->
21183 <td class="entry_description">
21184 <p>A matrix that transforms white balanced camera colors from the reference
21185 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21188 <td class="entry_units">
21191 <td class="entry_range">
21194 <td class="entry_hal_version">
21198 <td class="entry_tags">
21199 <ul class="entry_tags">
21200 <li><a href="#tag_RAW">RAW</a></li>
21205 <tr class="entries_header">
21206 <th class="th_details" colspan="6">Details</th>
21208 <tr class="entry_cont">
21209 <td class="entry_details" colspan="6">
21210 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21211 is used when processing raw buffer data.<wbr/></p>
21212 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21213 a color transform matrix that maps white balanced colors from the
21214 reference sensor color space to the CIE XYZ color space with a D50 white
21216 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21217 this matrix is chosen so that the standard white point for this reference
21218 illuminant in the reference sensor colorspace is mapped to D50 in the
21219 CIE XYZ colorspace.<wbr/></p>
21224 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21225 <!-- end of entry -->
21228 <tr class="entry" id="static_android.sensor.forwardMatrix2">
21229 <td class="entry_name
21231 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21233 <td class="entry_type">
21234 <span class="entry_type_name">rational</span>
21235 <span class="entry_type_container">x</span>
21237 <span class="entry_type_array">
21240 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21245 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21248 </td> <!-- entry_type -->
21250 <td class="entry_description">
21251 <p>A matrix that transforms white balanced camera colors from the reference
21252 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21255 <td class="entry_units">
21258 <td class="entry_range">
21261 <td class="entry_hal_version">
21265 <td class="entry_tags">
21266 <ul class="entry_tags">
21267 <li><a href="#tag_RAW">RAW</a></li>
21272 <tr class="entries_header">
21273 <th class="th_details" colspan="6">Details</th>
21275 <tr class="entry_cont">
21276 <td class="entry_details" colspan="6">
21277 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21278 is used when processing raw buffer data.<wbr/></p>
21279 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21280 a color transform matrix that maps white balanced colors from the
21281 reference sensor color space to the CIE XYZ color space with a D50 white
21283 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21284 this matrix is chosen so that the standard white point for this reference
21285 illuminant in the reference sensor colorspace is mapped to D50 in the
21286 CIE XYZ colorspace.<wbr/></p>
21287 <p>This matrix will only be present if the second reference
21288 illuminant is present.<wbr/></p>
21293 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21294 <!-- end of entry -->
21297 <tr class="entry" id="static_android.sensor.baseGainFactor">
21298 <td class="entry_name
21300 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21302 <td class="entry_type">
21303 <span class="entry_type_name">rational</span>
21305 <span class="entry_type_visibility"> [system]</span>
21312 </td> <!-- entry_type -->
21314 <td class="entry_description">
21315 <p>Gain factor from electrons to raw units when
21319 <td class="entry_units">
21322 <td class="entry_range">
21325 <td class="entry_hal_version">
21329 <td class="entry_tags">
21330 <ul class="entry_tags">
21331 <li><a href="#tag_FUTURE">FUTURE</a></li>
21338 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21339 <!-- end of entry -->
21342 <tr class="entry" id="static_android.sensor.blackLevelPattern">
21343 <td class="entry_name
21345 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21347 <td class="entry_type">
21348 <span class="entry_type_name">int32</span>
21349 <span class="entry_type_container">x</span>
21351 <span class="entry_type_array">
21354 <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21359 <div class="entry_type_notes">2x2 raw count block</div>
21362 </td> <!-- entry_type -->
21364 <td class="entry_description">
21365 <p>A fixed black level offset for each of the color filter arrangement
21366 (CFA) mosaic channels.<wbr/></p>
21369 <td class="entry_units">
21372 <td class="entry_range">
21373 <p>>= 0 for each.<wbr/></p>
21376 <td class="entry_hal_version">
21380 <td class="entry_tags">
21381 <ul class="entry_tags">
21382 <li><a href="#tag_RAW">RAW</a></li>
21387 <tr class="entries_header">
21388 <th class="th_details" colspan="6">Details</th>
21390 <tr class="entry_cont">
21391 <td class="entry_details" colspan="6">
21392 <p>This key specifies the zero light value for each of the CFA mosaic
21393 channels in the camera sensor.<wbr/> The maximal value output by the
21394 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>
21395 <p>The values are given in the same order as channels listed for the CFA
21396 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
21397 nth value given corresponds to the black level offset for the nth
21398 color channel listed in the CFA.<wbr/></p>
21399 <p>The black level values of captured images may vary for different
21400 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21401 represents a coarse approximation for such case.<wbr/> It is recommended to
21402 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21403 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21404 supported by the camera device,<wbr/> which provides more accurate black
21405 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21406 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21407 level values for each frame.<wbr/></p>
21411 <tr class="entries_header">
21412 <th class="th_details" colspan="6">HAL Implementation Details</th>
21414 <tr class="entry_cont">
21415 <td class="entry_details" colspan="6">
21416 <p>The values are given in row-column scan order,<wbr/> with the first value
21417 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21421 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21422 <!-- end of entry -->
21425 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21426 <td class="entry_name
21428 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21430 <td class="entry_type">
21431 <span class="entry_type_name">int32</span>
21433 <span class="entry_type_visibility"> [public]</span>
21436 <span class="entry_type_hwlevel">[full] </span>
21441 </td> <!-- entry_type -->
21443 <td class="entry_description">
21444 <p>Maximum sensitivity that is implemented
21445 purely through analog gain.<wbr/></p>
21448 <td class="entry_units">
21451 <td class="entry_range">
21454 <td class="entry_hal_version">
21458 <td class="entry_tags">
21459 <ul class="entry_tags">
21460 <li><a href="#tag_V1">V1</a></li>
21461 <li><a href="#tag_FULL">FULL</a></li>
21466 <tr class="entries_header">
21467 <th class="th_details" colspan="6">Details</th>
21469 <tr class="entry_cont">
21470 <td class="entry_details" colspan="6">
21471 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21472 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21473 values above this,<wbr/> the gain applied can be a mix of analog and
21479 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21480 <!-- end of entry -->
21483 <tr class="entry" id="static_android.sensor.orientation">
21484 <td class="entry_name
21486 android.<wbr/>sensor.<wbr/>orientation
21488 <td class="entry_type">
21489 <span class="entry_type_name">int32</span>
21491 <span class="entry_type_visibility"> [public]</span>
21494 <span class="entry_type_hwlevel">[legacy] </span>
21499 </td> <!-- entry_type -->
21501 <td class="entry_description">
21502 <p>Clockwise angle through which the output image needs to be rotated to be
21503 upright on the device screen in its native orientation.<wbr/></p>
21506 <td class="entry_units">
21507 Degrees of clockwise rotation; always a multiple of
21511 <td class="entry_range">
21512 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
21515 <td class="entry_hal_version">
21519 <td class="entry_tags">
21520 <ul class="entry_tags">
21521 <li><a href="#tag_BC">BC</a></li>
21526 <tr class="entries_header">
21527 <th class="th_details" colspan="6">Details</th>
21529 <tr class="entry_cont">
21530 <td class="entry_details" colspan="6">
21531 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
21532 the sensor's coordinate system.<wbr/></p>
21537 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21538 <!-- end of entry -->
21541 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
21542 <td class="entry_name
21544 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
21546 <td class="entry_type">
21547 <span class="entry_type_name">int32</span>
21548 <span class="entry_type_container">x</span>
21550 <span class="entry_type_array">
21553 <span class="entry_type_visibility"> [system]</span>
21558 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
21561 </td> <!-- entry_type -->
21563 <td class="entry_description">
21564 <p>The number of input samples for each dimension of
21565 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
21568 <td class="entry_units">
21571 <td class="entry_range">
21572 <p>Hue >= 1,<wbr/>
21573 Saturation >= 2,<wbr/>
21577 <td class="entry_hal_version">
21581 <td class="entry_tags">
21582 <ul class="entry_tags">
21583 <li><a href="#tag_RAW">RAW</a></li>
21588 <tr class="entries_header">
21589 <th class="th_details" colspan="6">Details</th>
21591 <tr class="entry_cont">
21592 <td class="entry_details" colspan="6">
21593 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
21594 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
21595 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
21601 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21602 <!-- end of entry -->
21605 <tr class="entry" id="static_android.sensor.availableTestPatternModes">
21606 <td class="entry_name
21608 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
21610 <td class="entry_type">
21611 <span class="entry_type_name">int32</span>
21612 <span class="entry_type_container">x</span>
21614 <span class="entry_type_array">
21617 <span class="entry_type_visibility"> [public]</span>
21622 <div class="entry_type_notes">list of enums</div>
21625 </td> <!-- entry_type -->
21627 <td class="entry_description">
21628 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
21629 supported by this camera device.<wbr/></p>
21632 <td class="entry_units">
21635 <td class="entry_range">
21636 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
21639 <td class="entry_hal_version">
21643 <td class="entry_tags">
21647 <tr class="entries_header">
21648 <th class="th_details" colspan="6">Details</th>
21650 <tr class="entry_cont">
21651 <td class="entry_details" colspan="6">
21652 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
21656 <tr class="entries_header">
21657 <th class="th_details" colspan="6">HAL Implementation Details</th>
21659 <tr class="entry_cont">
21660 <td class="entry_details" colspan="6">
21661 <p>All custom modes must be >= CUSTOM1.<wbr/></p>
21665 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21666 <!-- end of entry -->
21669 <tr class="entry" id="static_android.sensor.opticalBlackRegions">
21670 <td class="entry_name
21672 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
21674 <td class="entry_type">
21675 <span class="entry_type_name">int32</span>
21676 <span class="entry_type_container">x</span>
21678 <span class="entry_type_array">
21681 <span class="entry_type_visibility"> [public as rectangle]</span>
21688 </td> <!-- entry_type -->
21690 <td class="entry_description">
21691 <p>List of disjoint rectangles indicating the sensor
21692 optically shielded black pixel regions.<wbr/></p>
21695 <td class="entry_units">
21698 <td class="entry_range">
21701 <td class="entry_hal_version">
21705 <td class="entry_tags">
21709 <tr class="entries_header">
21710 <th class="th_details" colspan="6">Details</th>
21712 <tr class="entry_cont">
21713 <td class="entry_details" colspan="6">
21714 <p>In most camera sensors,<wbr/> the active array is surrounded by some
21715 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
21716 provides a reliable black reference for black level compensation
21717 in active array region.<wbr/></p>
21718 <p>This key provides a list of disjoint rectangles specifying the
21719 regions of optically shielded (with metal shield) black pixel
21720 regions if the camera device is capable of reading out these black
21721 pixels in the output raw images.<wbr/> In comparison to the fixed black
21722 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
21723 may provide a more accurate way for the application to calculate
21724 black level of each captured raw images.<wbr/></p>
21725 <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
21726 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
21730 <tr class="entries_header">
21731 <th class="th_details" colspan="6">HAL Implementation Details</th>
21733 <tr class="entry_cont">
21734 <td class="entry_details" colspan="6">
21735 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
21736 must be >= (0,<wbr/>0) and <=
21737 <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
21738 <= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be
21739 outside the region reported by
21740 <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>
21741 <p>The HAL must report minimal number of disjoint regions for the
21742 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
21743 be covered by one rectangle,<wbr/> the HAL must not split this region into
21744 multiple rectangles.<wbr/></p>
21748 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21749 <!-- end of entry -->
21752 <tr class="entry" id="static_android.sensor.opaqueRawSize">
21753 <td class="entry_name
21755 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
21757 <td class="entry_type">
21758 <span class="entry_type_name">int32</span>
21759 <span class="entry_type_container">x</span>
21761 <span class="entry_type_array">
21764 <span class="entry_type_visibility"> [system]</span>
21771 </td> <!-- entry_type -->
21773 <td class="entry_description">
21774 <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
21777 <td class="entry_units">
21780 <td class="entry_range">
21781 <p>Must be large enough to fit the opaque RAW of corresponding size produced by
21785 <td class="entry_hal_version">
21789 <td class="entry_tags">
21793 <tr class="entries_header">
21794 <th class="th_details" colspan="6">Details</th>
21796 <tr class="entry_cont">
21797 <td class="entry_details" colspan="6">
21798 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
21799 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
21800 All RAW_<wbr/>OPAQUE output stream configuration listed in
21801 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
21802 this key.<wbr/></p>
21806 <tr class="entries_header">
21807 <th class="th_details" colspan="6">HAL Implementation Details</th>
21809 <tr class="entry_cont">
21810 <td class="entry_details" colspan="6">
21811 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
21812 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
21813 key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
21814 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
21815 between rows.<wbr/></p>
21819 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21820 <!-- end of entry -->
21824 <!-- end of kind -->
21826 <tr><td colspan="7" class="kind">dynamic</td></tr>
21828 <thead class="entries_header">
21830 <th class="th_name">Property Name</th>
21831 <th class="th_type">Type</th>
21832 <th class="th_description">Description</th>
21833 <th class="th_units">Units</th>
21834 <th class="th_range">Range</th>
21835 <th class="th_hal_version">Initial HIDL HAL version</th>
21836 <th class="th_tags">Tags</th>
21851 <tr class="entry" id="dynamic_android.sensor.exposureTime">
21852 <td class="entry_name
21854 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
21856 <td class="entry_type">
21857 <span class="entry_type_name">int64</span>
21859 <span class="entry_type_visibility"> [public]</span>
21862 <span class="entry_type_hwlevel">[full] </span>
21867 </td> <!-- entry_type -->
21869 <td class="entry_description">
21870 <p>Duration each pixel is exposed to
21874 <td class="entry_units">
21878 <td class="entry_range">
21879 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
21882 <td class="entry_hal_version">
21886 <td class="entry_tags">
21887 <ul class="entry_tags">
21888 <li><a href="#tag_V1">V1</a></li>
21893 <tr class="entries_header">
21894 <th class="th_details" colspan="6">Details</th>
21896 <tr class="entry_cont">
21897 <td class="entry_details" colspan="6">
21898 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
21899 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
21900 The final exposure time used will be available in the output capture result.<wbr/></p>
21901 <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
21902 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
21907 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21908 <!-- end of entry -->
21911 <tr class="entry" id="dynamic_android.sensor.frameDuration">
21912 <td class="entry_name
21914 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
21916 <td class="entry_type">
21917 <span class="entry_type_name">int64</span>
21919 <span class="entry_type_visibility"> [public]</span>
21922 <span class="entry_type_hwlevel">[full] </span>
21927 </td> <!-- entry_type -->
21929 <td class="entry_description">
21930 <p>Duration from start of frame exposure to
21931 start of next frame exposure.<wbr/></p>
21934 <td class="entry_units">
21938 <td class="entry_range">
21939 <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/>
21940 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
21943 <td class="entry_hal_version">
21947 <td class="entry_tags">
21948 <ul class="entry_tags">
21949 <li><a href="#tag_V1">V1</a></li>
21954 <tr class="entries_header">
21955 <th class="th_details" colspan="6">Details</th>
21957 <tr class="entry_cont">
21958 <td class="entry_details" colspan="6">
21959 <p>The maximum frame rate that can be supported by a camera subsystem is
21960 a function of many factors:</p>
21962 <li>Requested resolutions of output image streams</li>
21963 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
21964 <li>The bandwidth of the imager interface</li>
21965 <li>The bandwidth of the various ISP processing blocks</li>
21967 <p>Since these factors can vary greatly between different ISPs and
21968 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
21969 restrictions with as simple a model as possible.<wbr/></p>
21970 <p>The model presented has the following characteristics:</p>
21972 <li>The image sensor is always configured to output the smallest
21973 resolution possible given the application's requested output stream
21974 sizes.<wbr/> The smallest resolution is defined as being at least as large
21975 as the largest requested output stream size; the camera pipeline must
21976 never digitally upsample sensor data when the crop region covers the
21977 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
21978 resolutions are configured,<wbr/> the sensor can provide a higher frame
21980 <li>Since any request may use any or all the currently configured
21981 output streams,<wbr/> the sensor and ISP must be configured to support
21982 scaling a single capture to all the streams at the same time.<wbr/> This
21983 means the camera pipeline must be ready to produce the largest
21984 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
21985 frame rate of a given configured stream set is governed only by the
21986 largest requested stream resolution.<wbr/></li>
21987 <li>Using more than one output stream in a request does not affect the
21988 frame duration.<wbr/></li>
21989 <li>Certain format-streams may need to do additional background processing
21990 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
21991 can run concurrently to the rest of the camera pipeline,<wbr/> but
21992 cannot process more than 1 capture at a time.<wbr/></li>
21994 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
21995 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
21996 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
21997 possible for a given stream configuration.<wbr/></p>
21998 <p>Specifically,<wbr/> the application can use the following rules to
21999 determine the minimum frame duration it can request from the camera
22002 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
22003 <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>
22004 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
22005 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
22006 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>
22008 <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>
22009 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
22010 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
22011 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
22012 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
22013 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
22014 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
22015 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
22016 <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>
22017 <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
22018 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22022 <tr class="entries_header">
22023 <th class="th_details" colspan="6">HAL Implementation Details</th>
22025 <tr class="entry_cont">
22026 <td class="entry_details" colspan="6">
22027 <p>For more details about stalling,<wbr/> see
22028 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
22032 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22033 <!-- end of entry -->
22036 <tr class="entry" id="dynamic_android.sensor.sensitivity">
22037 <td class="entry_name
22039 android.<wbr/>sensor.<wbr/>sensitivity
22041 <td class="entry_type">
22042 <span class="entry_type_name">int32</span>
22044 <span class="entry_type_visibility"> [public]</span>
22047 <span class="entry_type_hwlevel">[full] </span>
22052 </td> <!-- entry_type -->
22054 <td class="entry_description">
22055 <p>The amount of gain applied to sensor data
22056 before processing.<wbr/></p>
22059 <td class="entry_units">
22060 ISO arithmetic units
22063 <td class="entry_range">
22064 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
22067 <td class="entry_hal_version">
22071 <td class="entry_tags">
22072 <ul class="entry_tags">
22073 <li><a href="#tag_V1">V1</a></li>
22078 <tr class="entries_header">
22079 <th class="th_details" colspan="6">Details</th>
22081 <tr class="entry_cont">
22082 <td class="entry_details" colspan="6">
22083 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
22084 as defined in ISO 12232:2006.<wbr/></p>
22085 <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
22086 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
22087 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
22088 <p>If the camera device cannot apply the exact sensitivity
22089 requested,<wbr/> it will reduce the gain to the nearest supported
22090 value.<wbr/> The final sensitivity used will be available in the
22091 output capture result.<wbr/></p>
22092 <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
22093 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22097 <tr class="entries_header">
22098 <th class="th_details" colspan="6">HAL Implementation Details</th>
22100 <tr class="entry_cont">
22101 <td class="entry_details" colspan="6">
22102 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
22106 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22107 <!-- end of entry -->
22110 <tr class="entry" id="dynamic_android.sensor.timestamp">
22111 <td class="entry_name
22113 android.<wbr/>sensor.<wbr/>timestamp
22115 <td class="entry_type">
22116 <span class="entry_type_name">int64</span>
22118 <span class="entry_type_visibility"> [public]</span>
22121 <span class="entry_type_hwlevel">[legacy] </span>
22126 </td> <!-- entry_type -->
22128 <td class="entry_description">
22129 <p>Time at start of exposure of first
22130 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22133 <td class="entry_units">
22137 <td class="entry_range">
22141 <td class="entry_hal_version">
22145 <td class="entry_tags">
22146 <ul class="entry_tags">
22147 <li><a href="#tag_BC">BC</a></li>
22152 <tr class="entries_header">
22153 <th class="th_details" colspan="6">Details</th>
22155 <tr class="entry_cont">
22156 <td class="entry_details" colspan="6">
22157 <p>The timestamps are also included in all image
22158 buffers produced for the same capture,<wbr/> and will be identical
22159 on all the outputs.<wbr/></p>
22160 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22161 the timestamps measure time since an unspecified starting point,<wbr/>
22162 and are monotonically increasing.<wbr/> They can be compared with the
22163 timestamps for other captures from the same camera device,<wbr/> but are
22164 not guaranteed to be comparable to any other time source.<wbr/></p>
22165 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22166 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
22167 be compared to other timestamps from other subsystems that
22168 are using that base.<wbr/></p>
22169 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22170 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22171 timestamp</a> in the TotalCaptureResult that was used to create the
22172 reprocess capture request.<wbr/></p>
22176 <tr class="entries_header">
22177 <th class="th_details" colspan="6">HAL Implementation Details</th>
22179 <tr class="entry_cont">
22180 <td class="entry_details" colspan="6">
22181 <p>All timestamps must be in reference to the kernel's
22182 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22183 time spent asleep.<wbr/> This allows for synchronization with
22184 sensors that continue to operate while the system is
22185 otherwise asleep.<wbr/></p>
22186 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22187 The timestamp must be synchronized with the timestamps from other
22188 sensor subsystems that are using the same timebase.<wbr/></p>
22189 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22190 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22191 capture request.<wbr/></p>
22195 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22196 <!-- end of entry -->
22199 <tr class="entry" id="dynamic_android.sensor.temperature">
22200 <td class="entry_name
22202 android.<wbr/>sensor.<wbr/>temperature
22204 <td class="entry_type">
22205 <span class="entry_type_name">float</span>
22207 <span class="entry_type_visibility"> [system]</span>
22214 </td> <!-- entry_type -->
22216 <td class="entry_description">
22217 <p>The temperature of the sensor,<wbr/> sampled at the time
22218 exposure began for this frame.<wbr/></p>
22219 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22220 somewhere close to it.<wbr/></p>
22223 <td class="entry_units">
22227 <td class="entry_range">
22228 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22231 <td class="entry_hal_version">
22235 <td class="entry_tags">
22236 <ul class="entry_tags">
22237 <li><a href="#tag_FUTURE">FUTURE</a></li>
22244 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22245 <!-- end of entry -->
22248 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22249 <td class="entry_name
22251 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22253 <td class="entry_type">
22254 <span class="entry_type_name">rational</span>
22255 <span class="entry_type_container">x</span>
22257 <span class="entry_type_array">
22260 <span class="entry_type_visibility"> [public]</span>
22267 </td> <!-- entry_type -->
22269 <td class="entry_description">
22270 <p>The estimated camera neutral color in the native sensor colorspace at
22271 the time of capture.<wbr/></p>
22274 <td class="entry_units">
22277 <td class="entry_range">
22280 <td class="entry_hal_version">
22284 <td class="entry_tags">
22285 <ul class="entry_tags">
22286 <li><a href="#tag_RAW">RAW</a></li>
22291 <tr class="entries_header">
22292 <th class="th_details" colspan="6">Details</th>
22294 <tr class="entry_cont">
22295 <td class="entry_details" colspan="6">
22296 <p>This value gives the neutral color point encoded as an RGB value in the
22297 native sensor color space.<wbr/> The neutral color point indicates the
22298 currently estimated white point of the scene illumination.<wbr/> It can be
22299 used to interpolate between the provided color transforms when
22300 processing raw sensor data.<wbr/></p>
22301 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22306 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22307 <!-- end of entry -->
22310 <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22311 <td class="entry_name
22313 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22315 <td class="entry_type">
22316 <span class="entry_type_name">double</span>
22317 <span class="entry_type_container">x</span>
22319 <span class="entry_type_array">
22322 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22327 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22330 </td> <!-- entry_type -->
22332 <td class="entry_description">
22333 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22336 <td class="entry_units">
22339 <td class="entry_range">
22342 <td class="entry_hal_version">
22346 <td class="entry_tags">
22347 <ul class="entry_tags">
22348 <li><a href="#tag_RAW">RAW</a></li>
22353 <tr class="entries_header">
22354 <th class="th_details" colspan="6">Details</th>
22356 <tr class="entry_cont">
22357 <td class="entry_details" colspan="6">
22358 <p>This key contains two noise model coefficients for each CFA channel
22359 corresponding to the sensor amplification (S) and sensor readout
22360 noise (O).<wbr/> These are given as pairs of coefficients for each channel
22361 in the same order as channels listed for the CFA layout key
22362 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is
22363 represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where
22364 the first member of the Pair at index n is the S coefficient and the
22365 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22366 <p>These coefficients are used in a two parameter noise model to describe
22367 the amount of noise present in the image for each CFA channel.<wbr/> The
22368 noise model used here is:</p>
22369 <p>N(x) = sqrt(Sx + O)</p>
22370 <p>Where x represents the recorded signal of a CFA channel normalized to
22371 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22372 that channel.<wbr/></p>
22373 <p>A more detailed description of the noise model can be found in the
22374 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22378 <tr class="entries_header">
22379 <th class="th_details" colspan="6">HAL Implementation Details</th>
22381 <tr class="entry_cont">
22382 <td class="entry_details" colspan="6">
22383 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22384 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22385 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22386 channel,<wbr/> etc.<wbr/></p>
22390 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22391 <!-- end of entry -->
22394 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22395 <td class="entry_name
22397 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22399 <td class="entry_type">
22400 <span class="entry_type_name">float</span>
22401 <span class="entry_type_container">x</span>
22403 <span class="entry_type_array">
22404 hue_samples x saturation_samples x value_samples x 3
22406 <span class="entry_type_visibility"> [system]</span>
22411 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22414 </td> <!-- entry_type -->
22416 <td class="entry_description">
22417 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22418 for each pixel.<wbr/></p>
22421 <td class="entry_units">
22423 The hue shift is given in degrees; saturation and value scale factors are
22424 unitless and are between 0 and 1 inclusive
22428 <td class="entry_range">
22431 <td class="entry_hal_version">
22435 <td class="entry_tags">
22436 <ul class="entry_tags">
22437 <li><a href="#tag_RAW">RAW</a></li>
22442 <tr class="entries_header">
22443 <th class="th_details" colspan="6">Details</th>
22445 <tr class="entry_cont">
22446 <td class="entry_details" colspan="6">
22447 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22448 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22449 <p>Each entry of this map contains three floats corresponding to the
22450 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22451 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22452 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22453 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22454 inner loop.<wbr/> All zero input saturation entries are required to have a
22455 value scale factor of 1.<wbr/>0.<wbr/></p>
22460 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22461 <!-- end of entry -->
22464 <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22465 <td class="entry_name
22467 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22469 <td class="entry_type">
22470 <span class="entry_type_name">float</span>
22471 <span class="entry_type_container">x</span>
22473 <span class="entry_type_array">
22476 <span class="entry_type_visibility"> [system]</span>
22481 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22484 </td> <!-- entry_type -->
22486 <td class="entry_description">
22487 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
22490 <td class="entry_units">
22493 <td class="entry_range">
22494 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
22495 <code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
22496 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
22499 <td class="entry_hal_version">
22503 <td class="entry_tags">
22504 <ul class="entry_tags">
22505 <li><a href="#tag_RAW">RAW</a></li>
22510 <tr class="entries_header">
22511 <th class="th_details" colspan="6">Details</th>
22513 <tr class="entry_cont">
22514 <td class="entry_details" colspan="6">
22515 <p>This key contains a default tone curve that can be applied while
22516 processing the image as a starting point for user adjustments.<wbr/>
22517 The curve is specified as a list of value pairs in linear gamma.<wbr/>
22518 The curve is interpolated using a cubic spline.<wbr/></p>
22523 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22524 <!-- end of entry -->
22527 <tr class="entry" id="dynamic_android.sensor.greenSplit">
22528 <td class="entry_name
22530 android.<wbr/>sensor.<wbr/>green<wbr/>Split
22532 <td class="entry_type">
22533 <span class="entry_type_name">float</span>
22535 <span class="entry_type_visibility"> [public]</span>
22542 </td> <!-- entry_type -->
22544 <td class="entry_description">
22545 <p>The worst-case divergence between Bayer green channels.<wbr/></p>
22548 <td class="entry_units">
22551 <td class="entry_range">
22555 <td class="entry_hal_version">
22559 <td class="entry_tags">
22560 <ul class="entry_tags">
22561 <li><a href="#tag_RAW">RAW</a></li>
22566 <tr class="entries_header">
22567 <th class="th_details" colspan="6">Details</th>
22569 <tr class="entry_cont">
22570 <td class="entry_details" colspan="6">
22571 <p>This value is an estimate of the worst case split between the
22572 Bayer green channels in the red and blue rows in the sensor color
22573 filter array.<wbr/></p>
22574 <p>The green split is calculated as follows:</p>
22576 <li>A 5x5 pixel (or larger) window W within the active sensor array is
22577 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
22578 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window
22579 chosen is implementation defined,<wbr/> and should be chosen to provide a
22580 green split estimate that is both representative of the entire image
22581 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
22582 <li>The arithmetic mean of the green channels from the red
22583 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
22584 <li>The arithmetic mean of the green channels from the blue
22585 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
22586 <li>The maximum ratio R of the two means is computed as follows:
22587 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
22589 <p>The ratio R is the green split divergence reported for this property,<wbr/>
22590 which represents how much the green channels differ in the mosaic
22591 pattern.<wbr/> This value is typically used to determine the treatment of
22592 the green mosaic channels when demosaicing.<wbr/></p>
22593 <p>The green split value can be roughly interpreted as follows:</p>
22595 <li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li>
22596 <li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software
22597 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
22598 <li>R > 1.<wbr/>20 will require strong software correction to produce
22599 a usuable image (>20% divergence).<wbr/></li>
22604 <tr class="entries_header">
22605 <th class="th_details" colspan="6">HAL Implementation Details</th>
22607 <tr class="entry_cont">
22608 <td class="entry_details" colspan="6">
22609 <p>The green split given may be a static value based on prior
22610 characterization of the camera sensor using the green split
22611 calculation method given here over a large,<wbr/> representative,<wbr/> sample
22612 set of images.<wbr/> Other methods of calculation that produce equivalent
22613 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
22617 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22618 <!-- end of entry -->
22621 <tr class="entry" id="dynamic_android.sensor.testPatternData">
22622 <td class="entry_name
22624 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
22626 <td class="entry_type">
22627 <span class="entry_type_name">int32</span>
22628 <span class="entry_type_container">x</span>
22630 <span class="entry_type_array">
22633 <span class="entry_type_visibility"> [public]</span>
22640 </td> <!-- entry_type -->
22642 <td class="entry_description">
22643 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
22644 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
22647 <td class="entry_units">
22650 <td class="entry_range">
22653 <td class="entry_hal_version">
22657 <td class="entry_tags">
22661 <tr class="entries_header">
22662 <th class="th_details" colspan="6">Details</th>
22664 <tr class="entry_cont">
22665 <td class="entry_details" colspan="6">
22666 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
22667 The camera device then uses the most significant X bits
22668 that correspond to how many bits are in its Bayer raw sensor
22670 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
22671 10 most significant bits from each color channel.<wbr/></p>
22675 <tr class="entries_header">
22676 <th class="th_details" colspan="6">HAL Implementation Details</th>
22678 <tr class="entry_cont">
22679 <td class="entry_details" colspan="6">
22684 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22685 <!-- end of entry -->
22688 <tr class="entry" id="dynamic_android.sensor.testPatternMode">
22689 <td class="entry_name
22691 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
22693 <td class="entry_type">
22694 <span class="entry_type_name entry_type_name_enum">int32</span>
22696 <span class="entry_type_visibility"> [public]</span>
22702 <ul class="entry_type_enum">
22704 <span class="entry_type_enum_name">OFF (v3.2)</span>
22705 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
22706 device returns captures from the image sensor.<wbr/></p>
22707 <p>This is the default if the key is not set.<wbr/></p></span>
22710 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
22711 <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
22712 respective color channel provided in
22713 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
22714 <p>For example:</p>
22715 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22717 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
22718 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22720 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
22721 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
22724 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
22725 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
22726 <p>The vertical bars (left-to-right) are as follows:</p>
22728 <li>100% white</li>
22737 <p>In general the image would look like the following:</p>
22738 <pre><code>W Y C G M R B K
22743 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22744 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22745 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22747 (B = Blue,<wbr/> K = Black)
22749 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
22750 When this is not possible,<wbr/> the bar size should be rounded
22751 down to the nearest integer and the pattern can repeat
22752 on the right side.<wbr/></p>
22753 <p>Each bar's height must always take up the full sensor
22754 pixel array height.<wbr/></p>
22755 <p>Each pixel in this test pattern must be set to either
22756 0% intensity or 100% intensity.<wbr/></p></span>
22759 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
22760 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
22761 each bar should start at its specified color at the top,<wbr/>
22762 and fade to gray at the bottom.<wbr/></p>
22763 <p>Furthermore each bar is further subdivided into a left and
22764 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
22765 and the right half should have a quantized gradient.<wbr/></p>
22766 <p>In particular,<wbr/> the right half's should consist of blocks of the
22767 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
22768 <p>The least significant bits in the quantized gradient should
22769 be copied from the most significant bits of the smooth gradient.<wbr/></p>
22770 <p>The height of each bar should always be a multiple of 128.<wbr/>
22771 When this is not the case,<wbr/> the pattern should repeat at the bottom
22772 of the image.<wbr/></p></span>
22775 <span class="entry_type_enum_name">PN9 (v3.2)</span>
22776 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
22777 generated from a PN9 512-bit sequence (typically implemented
22778 in hardware with a linear feedback shift register).<wbr/></p>
22779 <p>The generator should be reset at the beginning of each frame,<wbr/>
22780 and thus each subsequent raw frame with this test pattern should
22781 be exactly the same as the last.<wbr/></p></span>
22784 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
22785 <span class="entry_type_enum_value">256</span>
22786 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
22787 available only on this camera device are at least this numeric
22789 <p>All of the custom test patterns will be static
22790 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
22794 </td> <!-- entry_type -->
22796 <td class="entry_description">
22797 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
22798 doing a real exposure from the camera.<wbr/></p>
22801 <td class="entry_units">
22804 <td class="entry_range">
22805 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
22808 <td class="entry_hal_version">
22812 <td class="entry_tags">
22816 <tr class="entries_header">
22817 <th class="th_details" colspan="6">Details</th>
22819 <tr class="entry_cont">
22820 <td class="entry_details" colspan="6">
22821 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
22822 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
22823 work as normal.<wbr/></p>
22824 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
22825 occur (and that the test pattern remain unmodified,<wbr/> since the flash
22826 would not actually affect it).<wbr/></p>
22827 <p>Defaults to OFF.<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">
22836 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
22837 <p>The HAL may choose to substitute test patterns from the sensor
22838 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
22839 indistinguishable to the ISP whether the data came from the
22840 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
22844 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22845 <!-- end of entry -->
22848 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
22849 <td class="entry_name
22851 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
22853 <td class="entry_type">
22854 <span class="entry_type_name">int64</span>
22856 <span class="entry_type_visibility"> [public]</span>
22859 <span class="entry_type_hwlevel">[limited] </span>
22864 </td> <!-- entry_type -->
22866 <td class="entry_description">
22867 <p>Duration between the start of first row exposure
22868 and the start of last row exposure.<wbr/></p>
22871 <td class="entry_units">
22875 <td class="entry_range">
22876 <p>>= 0 and <
22877 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
22880 <td class="entry_hal_version">
22884 <td class="entry_tags">
22885 <ul class="entry_tags">
22886 <li><a href="#tag_V1">V1</a></li>
22891 <tr class="entries_header">
22892 <th class="th_details" colspan="6">Details</th>
22894 <tr class="entry_cont">
22895 <td class="entry_details" colspan="6">
22896 <p>This is the exposure time skew between the first and last
22897 row exposure start times.<wbr/> The first row and the last row are
22898 the first and last rows inside of the
22899 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
22900 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
22901 to the frame readout time.<wbr/></p>
22905 <tr class="entries_header">
22906 <th class="th_details" colspan="6">HAL Implementation Details</th>
22908 <tr class="entry_cont">
22909 <td class="entry_details" colspan="6">
22910 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
22911 exposure at the same time.<wbr/></p>
22915 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22916 <!-- end of entry -->
22919 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
22920 <td class="entry_name
22922 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
22924 <td class="entry_type">
22925 <span class="entry_type_name">float</span>
22926 <span class="entry_type_container">x</span>
22928 <span class="entry_type_array">
22931 <span class="entry_type_visibility"> [public]</span>
22936 <div class="entry_type_notes">2x2 raw count block</div>
22939 </td> <!-- entry_type -->
22941 <td class="entry_description">
22942 <p>A per-frame dynamic black level offset for each of the color filter
22943 arrangement (CFA) mosaic channels.<wbr/></p>
22946 <td class="entry_units">
22949 <td class="entry_range">
22950 <p>>= 0 for each.<wbr/></p>
22953 <td class="entry_hal_version">
22957 <td class="entry_tags">
22958 <ul class="entry_tags">
22959 <li><a href="#tag_RAW">RAW</a></li>
22964 <tr class="entries_header">
22965 <th class="th_details" colspan="6">Details</th>
22967 <tr class="entry_cont">
22968 <td class="entry_details" colspan="6">
22969 <p>Camera sensor black levels may vary dramatically for different
22970 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
22971 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
22972 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
22973 camera device internal pipeline relies on reliable black level values
22974 to process the raw images appropriately.<wbr/> To get the best image
22975 quality,<wbr/> the camera device may choose to estimate the per frame black
22976 level values either based on optically shielded black regions
22977 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
22978 <p>This key reports the camera device estimated per-frame zero light
22979 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
22980 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
22981 approximation of the actual black level values.<wbr/> This value is the
22982 black level used in camera device internal image processing pipeline
22983 and generally more accurate than the fixed black level values.<wbr/>
22984 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
22985 may not be as accurate as the black level values calculated from the
22986 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
22987 <p>The values are given in the same order as channels listed for the CFA
22988 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
22989 nth value given corresponds to the black level offset for the nth
22990 color channel listed in the CFA.<wbr/></p>
22991 <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
22992 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
22996 <tr class="entries_header">
22997 <th class="th_details" colspan="6">HAL Implementation Details</th>
22999 <tr class="entry_cont">
23000 <td class="entry_details" colspan="6">
23001 <p>The values are given in row-column scan order,<wbr/> with the first value
23002 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
23006 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23007 <!-- end of entry -->
23010 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
23011 <td class="entry_name
23013 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
23015 <td class="entry_type">
23016 <span class="entry_type_name">int32</span>
23018 <span class="entry_type_visibility"> [public]</span>
23025 </td> <!-- entry_type -->
23027 <td class="entry_description">
23028 <p>Maximum raw value output by sensor for this frame.<wbr/></p>
23031 <td class="entry_units">
23034 <td class="entry_range">
23038 <td class="entry_hal_version">
23042 <td class="entry_tags">
23043 <ul class="entry_tags">
23044 <li><a href="#tag_RAW">RAW</a></li>
23049 <tr class="entries_header">
23050 <th class="th_details" colspan="6">Details</th>
23052 <tr class="entry_cont">
23053 <td class="entry_details" colspan="6">
23054 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
23055 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
23056 level will change accordingly.<wbr/> This key is similar to
23057 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
23058 estimated white level for each frame.<wbr/></p>
23059 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
23060 available or the camera device advertises this key via
23061 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
23065 <tr class="entries_header">
23066 <th class="th_details" colspan="6">HAL Implementation Details</th>
23068 <tr class="entry_cont">
23069 <td class="entry_details" colspan="6">
23070 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
23071 so the value for linear sensors should not be significantly lower
23072 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
23076 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23077 <!-- end of entry -->
23081 <!-- end of kind -->
23084 <!-- end of section -->
23085 <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
23088 <tr><td colspan="7" class="kind">controls</td></tr>
23090 <thead class="entries_header">
23092 <th class="th_name">Property Name</th>
23093 <th class="th_type">Type</th>
23094 <th class="th_description">Description</th>
23095 <th class="th_units">Units</th>
23096 <th class="th_range">Range</th>
23097 <th class="th_hal_version">Initial HIDL HAL version</th>
23098 <th class="th_tags">Tags</th>
23113 <tr class="entry" id="controls_android.shading.mode">
23114 <td class="entry_name
23116 android.<wbr/>shading.<wbr/>mode
23118 <td class="entry_type">
23119 <span class="entry_type_name entry_type_name_enum">byte</span>
23121 <span class="entry_type_visibility"> [public]</span>
23124 <span class="entry_type_hwlevel">[full] </span>
23128 <ul class="entry_type_enum">
23130 <span class="entry_type_enum_name">OFF (v3.2)</span>
23131 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23134 <span class="entry_type_enum_name">FAST (v3.2)</span>
23135 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23136 frame rate relative to sensor raw output</p></span>
23139 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23140 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23141 cost of possibly reduced frame rate.<wbr/></p></span>
23145 </td> <!-- entry_type -->
23147 <td class="entry_description">
23148 <p>Quality of lens shading correction applied
23149 to the image data.<wbr/></p>
23152 <td class="entry_units">
23155 <td class="entry_range">
23156 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23159 <td class="entry_hal_version">
23163 <td class="entry_tags">
23167 <tr class="entries_header">
23168 <th class="th_details" colspan="6">Details</th>
23170 <tr class="entry_cont">
23171 <td class="entry_details" colspan="6">
23172 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23173 camera device,<wbr/> and an identity lens shading map data will be provided
23174 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
23175 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23176 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
23177 map shown below:</p>
23178 <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/>
23179 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/>
23180 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/>
23181 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/>
23182 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/>
23183 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 ]
23185 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23186 device.<wbr/> Applications can request lens shading map data by setting
23187 <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
23188 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
23189 data will be the one applied by the camera device for this capture request.<wbr/></p>
23190 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23191 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23192 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>
23193 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23194 to be converged before using the returned shading map data.<wbr/></p>
23199 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23200 <!-- end of entry -->
23203 <tr class="entry" id="controls_android.shading.strength">
23204 <td class="entry_name
23206 android.<wbr/>shading.<wbr/>strength
23208 <td class="entry_type">
23209 <span class="entry_type_name">byte</span>
23211 <span class="entry_type_visibility"> [system]</span>
23218 </td> <!-- entry_type -->
23220 <td class="entry_description">
23221 <p>Control the amount of shading correction
23222 applied to the images</p>
23225 <td class="entry_units">
23226 unitless: 1-10; 10 is full shading
23230 <td class="entry_range">
23233 <td class="entry_hal_version">
23237 <td class="entry_tags">
23238 <ul class="entry_tags">
23239 <li><a href="#tag_FUTURE">FUTURE</a></li>
23246 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23247 <!-- end of entry -->
23251 <!-- end of kind -->
23253 <tr><td colspan="7" class="kind">dynamic</td></tr>
23255 <thead class="entries_header">
23257 <th class="th_name">Property Name</th>
23258 <th class="th_type">Type</th>
23259 <th class="th_description">Description</th>
23260 <th class="th_units">Units</th>
23261 <th class="th_range">Range</th>
23262 <th class="th_hal_version">Initial HIDL HAL version</th>
23263 <th class="th_tags">Tags</th>
23278 <tr class="entry" id="dynamic_android.shading.mode">
23279 <td class="entry_name
23281 android.<wbr/>shading.<wbr/>mode
23283 <td class="entry_type">
23284 <span class="entry_type_name entry_type_name_enum">byte</span>
23286 <span class="entry_type_visibility"> [public]</span>
23289 <span class="entry_type_hwlevel">[full] </span>
23293 <ul class="entry_type_enum">
23295 <span class="entry_type_enum_name">OFF (v3.2)</span>
23296 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23299 <span class="entry_type_enum_name">FAST (v3.2)</span>
23300 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23301 frame rate relative to sensor raw output</p></span>
23304 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23305 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23306 cost of possibly reduced frame rate.<wbr/></p></span>
23310 </td> <!-- entry_type -->
23312 <td class="entry_description">
23313 <p>Quality of lens shading correction applied
23314 to the image data.<wbr/></p>
23317 <td class="entry_units">
23320 <td class="entry_range">
23321 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23324 <td class="entry_hal_version">
23328 <td class="entry_tags">
23332 <tr class="entries_header">
23333 <th class="th_details" colspan="6">Details</th>
23335 <tr class="entry_cont">
23336 <td class="entry_details" colspan="6">
23337 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23338 camera device,<wbr/> and an identity lens shading map data will be provided
23339 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
23340 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23341 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
23342 map shown below:</p>
23343 <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/>
23344 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/>
23345 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/>
23346 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/>
23347 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/>
23348 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 ]
23350 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23351 device.<wbr/> Applications can request lens shading map data by setting
23352 <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
23353 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
23354 data will be the one applied by the camera device for this capture request.<wbr/></p>
23355 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23356 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23357 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>
23358 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23359 to be converged before using the returned shading map data.<wbr/></p>
23364 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23365 <!-- end of entry -->
23369 <!-- end of kind -->
23371 <tr><td colspan="7" class="kind">static</td></tr>
23373 <thead class="entries_header">
23375 <th class="th_name">Property Name</th>
23376 <th class="th_type">Type</th>
23377 <th class="th_description">Description</th>
23378 <th class="th_units">Units</th>
23379 <th class="th_range">Range</th>
23380 <th class="th_hal_version">Initial HIDL HAL version</th>
23381 <th class="th_tags">Tags</th>
23396 <tr class="entry" id="static_android.shading.availableModes">
23397 <td class="entry_name
23399 android.<wbr/>shading.<wbr/>available<wbr/>Modes
23401 <td class="entry_type">
23402 <span class="entry_type_name">byte</span>
23403 <span class="entry_type_container">x</span>
23405 <span class="entry_type_array">
23408 <span class="entry_type_visibility"> [public as enumList]</span>
23411 <span class="entry_type_hwlevel">[legacy] </span>
23414 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23417 </td> <!-- entry_type -->
23419 <td class="entry_description">
23420 <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>
23423 <td class="entry_units">
23426 <td class="entry_range">
23427 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23430 <td class="entry_hal_version">
23434 <td class="entry_tags">
23438 <tr class="entries_header">
23439 <th class="th_details" colspan="6">Details</th>
23441 <tr class="entry_cont">
23442 <td class="entry_details" colspan="6">
23443 <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23444 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23445 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23446 LEGACY devices will always only support FAST mode.<wbr/></p>
23450 <tr class="entries_header">
23451 <th class="th_details" colspan="6">HAL Implementation Details</th>
23453 <tr class="entry_cont">
23454 <td class="entry_details" colspan="6">
23455 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23456 available on the camera device,<wbr/> but the underlying implementation can be the same for
23457 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23458 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23462 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23463 <!-- end of entry -->
23467 <!-- end of kind -->
23470 <!-- end of section -->
23471 <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23474 <tr><td colspan="7" class="kind">controls</td></tr>
23476 <thead class="entries_header">
23478 <th class="th_name">Property Name</th>
23479 <th class="th_type">Type</th>
23480 <th class="th_description">Description</th>
23481 <th class="th_units">Units</th>
23482 <th class="th_range">Range</th>
23483 <th class="th_hal_version">Initial HIDL HAL version</th>
23484 <th class="th_tags">Tags</th>
23499 <tr class="entry" id="controls_android.statistics.faceDetectMode">
23500 <td class="entry_name
23502 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23504 <td class="entry_type">
23505 <span class="entry_type_name entry_type_name_enum">byte</span>
23507 <span class="entry_type_visibility"> [public]</span>
23510 <span class="entry_type_hwlevel">[legacy] </span>
23514 <ul class="entry_type_enum">
23516 <span class="entry_type_enum_name">OFF (v3.2)</span>
23517 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23518 results.<wbr/></p></span>
23521 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
23522 <span class="entry_type_enum_optional">[optional]</span>
23523 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
23526 <span class="entry_type_enum_name">FULL (v3.2)</span>
23527 <span class="entry_type_enum_optional">[optional]</span>
23528 <span class="entry_type_enum_notes"><p>Return all face
23529 metadata.<wbr/></p>
23530 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
23534 </td> <!-- entry_type -->
23536 <td class="entry_description">
23537 <p>Operating mode for the face detector
23541 <td class="entry_units">
23544 <td class="entry_range">
23545 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
23548 <td class="entry_hal_version">
23552 <td class="entry_tags">
23553 <ul class="entry_tags">
23554 <li><a href="#tag_BC">BC</a></li>
23559 <tr class="entries_header">
23560 <th class="th_details" colspan="6">Details</th>
23562 <tr class="entry_cont">
23563 <td class="entry_details" colspan="6">
23564 <p>Whether face detection is enabled,<wbr/> and whether it
23565 should output just the basic fields or the full set of
23570 <tr class="entries_header">
23571 <th class="th_details" colspan="6">HAL Implementation Details</th>
23573 <tr class="entry_cont">
23574 <td class="entry_details" colspan="6">
23575 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
23576 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
23577 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
23578 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
23582 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23583 <!-- end of entry -->
23586 <tr class="entry" id="controls_android.statistics.histogramMode">
23587 <td class="entry_name
23589 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23591 <td class="entry_type">
23592 <span class="entry_type_name entry_type_name_enum">byte</span>
23594 <span class="entry_type_visibility"> [system as boolean]</span>
23600 <ul class="entry_type_enum">
23602 <span class="entry_type_enum_name">OFF (v3.2)</span>
23605 <span class="entry_type_enum_name">ON (v3.2)</span>
23609 </td> <!-- entry_type -->
23611 <td class="entry_description">
23612 <p>Operating mode for histogram
23616 <td class="entry_units">
23619 <td class="entry_range">
23622 <td class="entry_hal_version">
23626 <td class="entry_tags">
23627 <ul class="entry_tags">
23628 <li><a href="#tag_FUTURE">FUTURE</a></li>
23635 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23636 <!-- end of entry -->
23639 <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
23640 <td class="entry_name
23642 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23644 <td class="entry_type">
23645 <span class="entry_type_name entry_type_name_enum">byte</span>
23647 <span class="entry_type_visibility"> [system as boolean]</span>
23653 <ul class="entry_type_enum">
23655 <span class="entry_type_enum_name">OFF (v3.2)</span>
23658 <span class="entry_type_enum_name">ON (v3.2)</span>
23662 </td> <!-- entry_type -->
23664 <td class="entry_description">
23665 <p>Operating mode for sharpness map
23669 <td class="entry_units">
23672 <td class="entry_range">
23675 <td class="entry_hal_version">
23679 <td class="entry_tags">
23680 <ul class="entry_tags">
23681 <li><a href="#tag_FUTURE">FUTURE</a></li>
23688 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23689 <!-- end of entry -->
23692 <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
23693 <td class="entry_name
23695 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23697 <td class="entry_type">
23698 <span class="entry_type_name entry_type_name_enum">byte</span>
23700 <span class="entry_type_visibility"> [public as boolean]</span>
23706 <ul class="entry_type_enum">
23708 <span class="entry_type_enum_name">OFF (v3.2)</span>
23709 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23712 <span class="entry_type_enum_name">ON (v3.2)</span>
23713 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23717 </td> <!-- entry_type -->
23719 <td class="entry_description">
23720 <p>Operating mode for hot pixel map generation.<wbr/></p>
23723 <td class="entry_units">
23726 <td class="entry_range">
23727 <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>
23730 <td class="entry_hal_version">
23734 <td class="entry_tags">
23735 <ul class="entry_tags">
23736 <li><a href="#tag_V1">V1</a></li>
23737 <li><a href="#tag_RAW">RAW</a></li>
23742 <tr class="entries_header">
23743 <th class="th_details" colspan="6">Details</th>
23745 <tr class="entry_cont">
23746 <td class="entry_details" colspan="6">
23747 <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/>
23748 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
23753 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23754 <!-- end of entry -->
23757 <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
23758 <td class="entry_name
23760 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
23762 <td class="entry_type">
23763 <span class="entry_type_name entry_type_name_enum">byte</span>
23765 <span class="entry_type_visibility"> [public]</span>
23768 <span class="entry_type_hwlevel">[full] </span>
23772 <ul class="entry_type_enum">
23774 <span class="entry_type_enum_name">OFF (v3.2)</span>
23775 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
23778 <span class="entry_type_enum_name">ON (v3.2)</span>
23779 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
23783 </td> <!-- entry_type -->
23785 <td class="entry_description">
23786 <p>Whether the camera device will output the lens
23787 shading map in output result metadata.<wbr/></p>
23790 <td class="entry_units">
23793 <td class="entry_range">
23794 <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>
23797 <td class="entry_hal_version">
23801 <td class="entry_tags">
23802 <ul class="entry_tags">
23803 <li><a href="#tag_RAW">RAW</a></li>
23808 <tr class="entries_header">
23809 <th class="th_details" colspan="6">Details</th>
23811 <tr class="entry_cont">
23812 <td class="entry_details" colspan="6">
23813 <p>When set to ON,<wbr/>
23814 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
23815 the output result metadata.<wbr/></p>
23816 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
23821 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23822 <!-- end of entry -->
23826 <!-- end of kind -->
23828 <tr><td colspan="7" class="kind">static</td></tr>
23830 <thead class="entries_header">
23832 <th class="th_name">Property Name</th>
23833 <th class="th_type">Type</th>
23834 <th class="th_description">Description</th>
23835 <th class="th_units">Units</th>
23836 <th class="th_range">Range</th>
23837 <th class="th_hal_version">Initial HIDL HAL version</th>
23838 <th class="th_tags">Tags</th>
23855 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
23856 <td class="entry_name
23858 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
23860 <td class="entry_type">
23861 <span class="entry_type_name">byte</span>
23862 <span class="entry_type_container">x</span>
23864 <span class="entry_type_array">
23867 <span class="entry_type_visibility"> [public as enumList]</span>
23870 <span class="entry_type_hwlevel">[legacy] </span>
23873 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
23876 </td> <!-- entry_type -->
23878 <td class="entry_description">
23879 <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
23880 supported by this camera device.<wbr/></p>
23883 <td class="entry_units">
23886 <td class="entry_range">
23887 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
23890 <td class="entry_hal_version">
23894 <td class="entry_tags">
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>OFF is always supported.<wbr/></p>
23908 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23909 <!-- end of entry -->
23912 <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
23913 <td class="entry_name
23915 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
23917 <td class="entry_type">
23918 <span class="entry_type_name">int32</span>
23920 <span class="entry_type_visibility"> [system]</span>
23927 </td> <!-- entry_type -->
23929 <td class="entry_description">
23930 <p>Number of histogram buckets
23934 <td class="entry_units">
23937 <td class="entry_range">
23941 <td class="entry_hal_version">
23945 <td class="entry_tags">
23946 <ul class="entry_tags">
23947 <li><a href="#tag_FUTURE">FUTURE</a></li>
23954 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23955 <!-- end of entry -->
23958 <tr class="entry" id="static_android.statistics.info.maxFaceCount">
23959 <td class="entry_name
23961 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
23963 <td class="entry_type">
23964 <span class="entry_type_name">int32</span>
23966 <span class="entry_type_visibility"> [public]</span>
23969 <span class="entry_type_hwlevel">[legacy] </span>
23974 </td> <!-- entry_type -->
23976 <td class="entry_description">
23977 <p>The maximum number of simultaneously detectable
23981 <td class="entry_units">
23984 <td class="entry_range">
23985 <p>0 for cameras without available face detection; otherwise:
23986 <code>>=4</code> for LIMITED or FULL hwlevel devices or
23987 <code>>0</code> for LEGACY devices.<wbr/></p>
23990 <td class="entry_hal_version">
23994 <td class="entry_tags">
23995 <ul class="entry_tags">
23996 <li><a href="#tag_BC">BC</a></li>
24003 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24004 <!-- end of entry -->
24007 <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
24008 <td class="entry_name
24010 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
24012 <td class="entry_type">
24013 <span class="entry_type_name">int32</span>
24015 <span class="entry_type_visibility"> [system]</span>
24022 </td> <!-- entry_type -->
24024 <td class="entry_description">
24025 <p>Maximum value possible for a histogram
24029 <td class="entry_units">
24032 <td class="entry_range">
24035 <td class="entry_hal_version">
24039 <td class="entry_tags">
24040 <ul class="entry_tags">
24041 <li><a href="#tag_FUTURE">FUTURE</a></li>
24048 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24049 <!-- end of entry -->
24052 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
24053 <td class="entry_name
24055 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
24057 <td class="entry_type">
24058 <span class="entry_type_name">int32</span>
24060 <span class="entry_type_visibility"> [system]</span>
24067 </td> <!-- entry_type -->
24069 <td class="entry_description">
24070 <p>Maximum value possible for a sharpness map
24074 <td class="entry_units">
24077 <td class="entry_range">
24080 <td class="entry_hal_version">
24084 <td class="entry_tags">
24085 <ul class="entry_tags">
24086 <li><a href="#tag_FUTURE">FUTURE</a></li>
24093 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24094 <!-- end of entry -->
24097 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
24098 <td class="entry_name
24100 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
24102 <td class="entry_type">
24103 <span class="entry_type_name">int32</span>
24104 <span class="entry_type_container">x</span>
24106 <span class="entry_type_array">
24109 <span class="entry_type_visibility"> [system as size]</span>
24114 <div class="entry_type_notes">width x height</div>
24117 </td> <!-- entry_type -->
24119 <td class="entry_description">
24120 <p>Dimensions of the sharpness
24124 <td class="entry_units">
24127 <td class="entry_range">
24128 <p>Must be at least 32 x 32</p>
24131 <td class="entry_hal_version">
24135 <td class="entry_tags">
24136 <ul class="entry_tags">
24137 <li><a href="#tag_FUTURE">FUTURE</a></li>
24144 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24145 <!-- end of entry -->
24148 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24149 <td class="entry_name
24151 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24153 <td class="entry_type">
24154 <span class="entry_type_name">byte</span>
24155 <span class="entry_type_container">x</span>
24157 <span class="entry_type_array">
24160 <span class="entry_type_visibility"> [public as boolean]</span>
24165 <div class="entry_type_notes">list of enums</div>
24168 </td> <!-- entry_type -->
24170 <td class="entry_description">
24171 <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
24172 supported by this camera device.<wbr/></p>
24175 <td class="entry_units">
24178 <td class="entry_range">
24179 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24182 <td class="entry_hal_version">
24186 <td class="entry_tags">
24187 <ul class="entry_tags">
24188 <li><a href="#tag_V1">V1</a></li>
24189 <li><a href="#tag_RAW">RAW</a></li>
24194 <tr class="entries_header">
24195 <th class="th_details" colspan="6">Details</th>
24197 <tr class="entry_cont">
24198 <td class="entry_details" colspan="6">
24199 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24200 <code>false</code>.<wbr/></p>
24201 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24206 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24207 <!-- end of entry -->
24210 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24211 <td class="entry_name
24213 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24215 <td class="entry_type">
24216 <span class="entry_type_name">byte</span>
24217 <span class="entry_type_container">x</span>
24219 <span class="entry_type_array">
24222 <span class="entry_type_visibility"> [public as enumList]</span>
24227 <div class="entry_type_notes">list of enums</div>
24230 </td> <!-- entry_type -->
24232 <td class="entry_description">
24233 <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
24234 are supported by this camera device.<wbr/></p>
24237 <td class="entry_units">
24240 <td class="entry_range">
24241 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24244 <td class="entry_hal_version">
24248 <td class="entry_tags">
24252 <tr class="entries_header">
24253 <th class="th_details" colspan="6">Details</th>
24255 <tr class="entry_cont">
24256 <td class="entry_details" colspan="6">
24257 <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24258 contain only OFF.<wbr/></p>
24259 <p>ON is always supported on devices with the RAW capability.<wbr/>
24260 LEGACY mode devices will always only support OFF.<wbr/></p>
24265 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24266 <!-- end of entry -->
24273 <!-- end of kind -->
24275 <tr><td colspan="7" class="kind">dynamic</td></tr>
24277 <thead class="entries_header">
24279 <th class="th_name">Property Name</th>
24280 <th class="th_type">Type</th>
24281 <th class="th_description">Description</th>
24282 <th class="th_units">Units</th>
24283 <th class="th_range">Range</th>
24284 <th class="th_hal_version">Initial HIDL HAL version</th>
24285 <th class="th_tags">Tags</th>
24300 <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24301 <td class="entry_name
24303 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24305 <td class="entry_type">
24306 <span class="entry_type_name entry_type_name_enum">byte</span>
24308 <span class="entry_type_visibility"> [public]</span>
24311 <span class="entry_type_hwlevel">[legacy] </span>
24315 <ul class="entry_type_enum">
24317 <span class="entry_type_enum_name">OFF (v3.2)</span>
24318 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24319 results.<wbr/></p></span>
24322 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24323 <span class="entry_type_enum_optional">[optional]</span>
24324 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24327 <span class="entry_type_enum_name">FULL (v3.2)</span>
24328 <span class="entry_type_enum_optional">[optional]</span>
24329 <span class="entry_type_enum_notes"><p>Return all face
24330 metadata.<wbr/></p>
24331 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24335 </td> <!-- entry_type -->
24337 <td class="entry_description">
24338 <p>Operating mode for the face detector
24342 <td class="entry_units">
24345 <td class="entry_range">
24346 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24349 <td class="entry_hal_version">
24353 <td class="entry_tags">
24354 <ul class="entry_tags">
24355 <li><a href="#tag_BC">BC</a></li>
24360 <tr class="entries_header">
24361 <th class="th_details" colspan="6">Details</th>
24363 <tr class="entry_cont">
24364 <td class="entry_details" colspan="6">
24365 <p>Whether face detection is enabled,<wbr/> and whether it
24366 should output just the basic fields or the full set of
24371 <tr class="entries_header">
24372 <th class="th_details" colspan="6">HAL Implementation Details</th>
24374 <tr class="entry_cont">
24375 <td class="entry_details" colspan="6">
24376 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24377 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24378 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24379 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24383 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24384 <!-- end of entry -->
24387 <tr class="entry" id="dynamic_android.statistics.faceIds">
24388 <td class="entry_name
24390 android.<wbr/>statistics.<wbr/>face<wbr/>Ids
24392 <td class="entry_type">
24393 <span class="entry_type_name">int32</span>
24394 <span class="entry_type_container">x</span>
24396 <span class="entry_type_array">
24399 <span class="entry_type_visibility"> [ndk_public]</span>
24402 <span class="entry_type_hwlevel">[legacy] </span>
24407 </td> <!-- entry_type -->
24409 <td class="entry_description">
24410 <p>List of unique IDs for detected faces.<wbr/></p>
24413 <td class="entry_units">
24416 <td class="entry_range">
24419 <td class="entry_hal_version">
24423 <td class="entry_tags">
24424 <ul class="entry_tags">
24425 <li><a href="#tag_BC">BC</a></li>
24430 <tr class="entries_header">
24431 <th class="th_details" colspan="6">Details</th>
24433 <tr class="entry_cont">
24434 <td class="entry_details" colspan="6">
24435 <p>Each detected face is given a unique ID that is valid for as long as the face is visible
24436 to the camera device.<wbr/> A face that leaves the field of view and later returns may be
24437 assigned a new ID.<wbr/></p>
24438 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24443 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24444 <!-- end of entry -->
24447 <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
24448 <td class="entry_name
24450 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
24452 <td class="entry_type">
24453 <span class="entry_type_name">int32</span>
24454 <span class="entry_type_container">x</span>
24456 <span class="entry_type_array">
24459 <span class="entry_type_visibility"> [ndk_public]</span>
24462 <span class="entry_type_hwlevel">[legacy] </span>
24465 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
24468 </td> <!-- entry_type -->
24470 <td class="entry_description">
24471 <p>List of landmarks for detected
24475 <td class="entry_units">
24478 <td class="entry_range">
24481 <td class="entry_hal_version">
24485 <td class="entry_tags">
24486 <ul class="entry_tags">
24487 <li><a href="#tag_BC">BC</a></li>
24492 <tr class="entries_header">
24493 <th class="th_details" colspan="6">Details</th>
24495 <tr class="entry_cont">
24496 <td class="entry_details" colspan="6">
24497 <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
24498 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24499 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24504 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24505 <!-- end of entry -->
24508 <tr class="entry" id="dynamic_android.statistics.faceRectangles">
24509 <td class="entry_name
24511 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
24513 <td class="entry_type">
24514 <span class="entry_type_name">int32</span>
24515 <span class="entry_type_container">x</span>
24517 <span class="entry_type_array">
24520 <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
24523 <span class="entry_type_hwlevel">[legacy] </span>
24526 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
24529 </td> <!-- entry_type -->
24531 <td class="entry_description">
24532 <p>List of the bounding rectangles for detected
24536 <td class="entry_units">
24539 <td class="entry_range">
24542 <td class="entry_hal_version">
24546 <td class="entry_tags">
24547 <ul class="entry_tags">
24548 <li><a href="#tag_BC">BC</a></li>
24553 <tr class="entries_header">
24554 <th class="th_details" colspan="6">Details</th>
24556 <tr class="entry_cont">
24557 <td class="entry_details" colspan="6">
24558 <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
24559 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24560 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
24565 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24566 <!-- end of entry -->
24569 <tr class="entry" id="dynamic_android.statistics.faceScores">
24570 <td class="entry_name
24572 android.<wbr/>statistics.<wbr/>face<wbr/>Scores
24574 <td class="entry_type">
24575 <span class="entry_type_name">byte</span>
24576 <span class="entry_type_container">x</span>
24578 <span class="entry_type_array">
24581 <span class="entry_type_visibility"> [ndk_public]</span>
24584 <span class="entry_type_hwlevel">[legacy] </span>
24589 </td> <!-- entry_type -->
24591 <td class="entry_description">
24592 <p>List of the face confidence scores for
24596 <td class="entry_units">
24599 <td class="entry_range">
24603 <td class="entry_hal_version">
24607 <td class="entry_tags">
24608 <ul class="entry_tags">
24609 <li><a href="#tag_BC">BC</a></li>
24614 <tr class="entries_header">
24615 <th class="th_details" colspan="6">Details</th>
24617 <tr class="entry_cont">
24618 <td class="entry_details" colspan="6">
24619 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
24623 <tr class="entries_header">
24624 <th class="th_details" colspan="6">HAL Implementation Details</th>
24626 <tr class="entry_cont">
24627 <td class="entry_details" colspan="6">
24628 <p>The value should be meaningful (for example,<wbr/> setting 100 at
24629 all times is illegal).<wbr/></p>
24633 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24634 <!-- end of entry -->
24637 <tr class="entry" id="dynamic_android.statistics.faces">
24638 <td class="entry_name
24640 android.<wbr/>statistics.<wbr/>faces
24642 <td class="entry_type">
24643 <span class="entry_type_name">int32</span>
24644 <span class="entry_type_container">x</span>
24646 <span class="entry_type_array">
24649 <span class="entry_type_visibility"> [java_public as face]</span>
24651 <span class="entry_type_synthetic">[synthetic] </span>
24653 <span class="entry_type_hwlevel">[legacy] </span>
24658 </td> <!-- entry_type -->
24660 <td class="entry_description">
24661 <p>List of the faces detected through camera face detection
24662 in this capture.<wbr/></p>
24665 <td class="entry_units">
24668 <td class="entry_range">
24671 <td class="entry_hal_version">
24675 <td class="entry_tags">
24679 <tr class="entries_header">
24680 <th class="th_details" colspan="6">Details</th>
24682 <tr class="entry_cont">
24683 <td class="entry_details" colspan="6">
24684 <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>
24689 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24690 <!-- end of entry -->
24693 <tr class="entry" id="dynamic_android.statistics.histogram">
24694 <td class="entry_name
24696 android.<wbr/>statistics.<wbr/>histogram
24698 <td class="entry_type">
24699 <span class="entry_type_name">int32</span>
24700 <span class="entry_type_container">x</span>
24702 <span class="entry_type_array">
24705 <span class="entry_type_visibility"> [system]</span>
24710 <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>
24713 </td> <!-- entry_type -->
24715 <td class="entry_description">
24716 <p>A 3-channel histogram based on the raw
24720 <td class="entry_units">
24723 <td class="entry_range">
24726 <td class="entry_hal_version">
24730 <td class="entry_tags">
24731 <ul class="entry_tags">
24732 <li><a href="#tag_FUTURE">FUTURE</a></li>
24737 <tr class="entries_header">
24738 <th class="th_details" colspan="6">Details</th>
24740 <tr class="entry_cont">
24741 <td class="entry_details" colspan="6">
24742 <p>The k'th bucket (0-based) covers the input range
24743 (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/>
24744 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
24745 supported,<wbr/> all channels should have the same data</p>
24750 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24751 <!-- end of entry -->
24754 <tr class="entry" id="dynamic_android.statistics.histogramMode">
24755 <td class="entry_name
24757 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
24759 <td class="entry_type">
24760 <span class="entry_type_name entry_type_name_enum">byte</span>
24762 <span class="entry_type_visibility"> [system as boolean]</span>
24768 <ul class="entry_type_enum">
24770 <span class="entry_type_enum_name">OFF (v3.2)</span>
24773 <span class="entry_type_enum_name">ON (v3.2)</span>
24777 </td> <!-- entry_type -->
24779 <td class="entry_description">
24780 <p>Operating mode for histogram
24784 <td class="entry_units">
24787 <td class="entry_range">
24790 <td class="entry_hal_version">
24794 <td class="entry_tags">
24795 <ul class="entry_tags">
24796 <li><a href="#tag_FUTURE">FUTURE</a></li>
24803 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24804 <!-- end of entry -->
24807 <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
24808 <td class="entry_name
24810 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
24812 <td class="entry_type">
24813 <span class="entry_type_name">int32</span>
24814 <span class="entry_type_container">x</span>
24816 <span class="entry_type_array">
24819 <span class="entry_type_visibility"> [system]</span>
24824 <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>
24827 </td> <!-- entry_type -->
24829 <td class="entry_description">
24830 <p>A 3-channel sharpness map,<wbr/> based on the raw
24834 <td class="entry_units">
24837 <td class="entry_range">
24840 <td class="entry_hal_version">
24844 <td class="entry_tags">
24845 <ul class="entry_tags">
24846 <li><a href="#tag_FUTURE">FUTURE</a></li>
24851 <tr class="entries_header">
24852 <th class="th_details" colspan="6">Details</th>
24854 <tr class="entry_cont">
24855 <td class="entry_details" colspan="6">
24856 <p>If only a monochrome sharpness map is supported,<wbr/>
24857 all channels should have the same data</p>
24862 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24863 <!-- end of entry -->
24866 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
24867 <td class="entry_name
24869 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
24871 <td class="entry_type">
24872 <span class="entry_type_name entry_type_name_enum">byte</span>
24874 <span class="entry_type_visibility"> [system as boolean]</span>
24880 <ul class="entry_type_enum">
24882 <span class="entry_type_enum_name">OFF (v3.2)</span>
24885 <span class="entry_type_enum_name">ON (v3.2)</span>
24889 </td> <!-- entry_type -->
24891 <td class="entry_description">
24892 <p>Operating mode for sharpness map
24896 <td class="entry_units">
24899 <td class="entry_range">
24902 <td class="entry_hal_version">
24906 <td class="entry_tags">
24907 <ul class="entry_tags">
24908 <li><a href="#tag_FUTURE">FUTURE</a></li>
24915 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24916 <!-- end of entry -->
24919 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
24920 <td class="entry_name
24922 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
24924 <td class="entry_type">
24925 <span class="entry_type_name">byte</span>
24927 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
24930 <span class="entry_type_hwlevel">[full] </span>
24935 </td> <!-- entry_type -->
24937 <td class="entry_description">
24938 <p>The shading map is a low-resolution floating-point map
24939 that lists the coefficients used to correct for vignetting,<wbr/> for each
24940 Bayer color channel.<wbr/></p>
24943 <td class="entry_units">
24946 <td class="entry_range">
24947 <p>Each gain factor is >= 1</p>
24950 <td class="entry_hal_version">
24954 <td class="entry_tags">
24958 <tr class="entries_header">
24959 <th class="th_details" colspan="6">Details</th>
24961 <tr class="entry_cont">
24962 <td class="entry_details" colspan="6">
24963 <p>The map provided here is the same map that is used by the camera device to
24964 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
24965 <p>When there is no lens shading correction applied to RAW
24966 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
24967 false),<wbr/> this map is the complete lens shading correction
24968 map; when there is some lens shading correction applied to
24969 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
24970 correction map that needs to be applied to get shading
24971 corrected images that match the camera device's output for
24972 non-RAW formats.<wbr/></p>
24973 <p>For a complete shading correction map,<wbr/> the least shaded
24974 section of the image will have a gain factor of 1; all
24975 other sections will have gains above 1.<wbr/></p>
24976 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
24977 will take into account the colorCorrection settings.<wbr/></p>
24978 <p>The shading map is for the entire active pixel array,<wbr/> and is not
24979 affected by the crop region specified in the request.<wbr/> Each shading map
24980 entry is the value of the shading compensation map over a specific
24981 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
24982 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
24983 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
24984 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
24985 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
24986 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
24987 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
24988 The shading map is stored in a fully interleaved format.<wbr/></p>
24989 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
24990 and will be smaller than 64x64.<wbr/></p>
24991 <p>As an example,<wbr/> given a very small map defined as:</p>
24992 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
24994 [ 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/>
24995 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/>
24996 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/>
24997 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/>
24998 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/>
24999 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 ]
25001 <p>The low-resolution scaling map images for each channel are
25002 (displayed using nearest-neighbor interpolation):</p>
25003 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25004 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25005 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25006 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25007 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25008 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
25009 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25014 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25015 <!-- end of entry -->
25018 <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
25019 <td class="entry_name
25021 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
25023 <td class="entry_type">
25024 <span class="entry_type_name">float</span>
25025 <span class="entry_type_container">x</span>
25027 <span class="entry_type_array">
25030 <span class="entry_type_visibility"> [ndk_public]</span>
25033 <span class="entry_type_hwlevel">[full] </span>
25036 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
25039 </td> <!-- entry_type -->
25041 <td class="entry_description">
25042 <p>The shading map is a low-resolution floating-point map
25043 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
25044 for each Bayer color channel of RAW image data.<wbr/></p>
25047 <td class="entry_units">
25050 <td class="entry_range">
25051 <p>Each gain factor is >= 1</p>
25054 <td class="entry_hal_version">
25058 <td class="entry_tags">
25062 <tr class="entries_header">
25063 <th class="th_details" colspan="6">Details</th>
25065 <tr class="entry_cont">
25066 <td class="entry_details" colspan="6">
25067 <p>The map provided here is the same map that is used by the camera device to
25068 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25069 <p>When there is no lens shading correction applied to RAW
25070 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25071 false),<wbr/> this map is the complete lens shading correction
25072 map; when there is some lens shading correction applied to
25073 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
25074 correction map that needs to be applied to get shading
25075 corrected images that match the camera device's output for
25076 non-RAW formats.<wbr/></p>
25077 <p>For a complete shading correction map,<wbr/> the least shaded
25078 section of the image will have a gain factor of 1; all
25079 other sections will have gains above 1.<wbr/></p>
25080 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25081 will take into account the colorCorrection settings.<wbr/></p>
25082 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25083 affected by the crop region specified in the request.<wbr/> Each shading map
25084 entry is the value of the shading compensation map over a specific
25085 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
25086 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25087 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25088 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25089 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25090 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25091 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25092 The shading map is stored in a fully interleaved format,<wbr/> and its size
25093 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>
25094 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25095 and will be smaller than 64x64.<wbr/></p>
25096 <p>As an example,<wbr/> given a very small map defined as:</p>
25097 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
25098 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
25099 [ 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/>
25100 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/>
25101 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/>
25102 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/>
25103 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/>
25104 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 ]
25106 <p>The low-resolution scaling map images for each channel are
25107 (displayed using nearest-neighbor interpolation):</p>
25108 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25109 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25110 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25111 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25112 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25113 image of a gray wall (using bicubic interpolation for visual quality)
25114 as captured by the sensor gives:</p>
25115 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25116 <p>Note that the RAW image data might be subject to lens shading
25117 correction not reported on this map.<wbr/> Query
25118 <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
25119 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>
25120 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25121 correction.<wbr/> In the case full lens shading correction is applied to RAW
25122 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25123 In other words,<wbr/> the map reported in this key is the remaining lens shading
25124 that needs to be applied on the RAW image to get images without lens shading
25125 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
25130 <tr class="entries_header">
25131 <th class="th_details" colspan="6">HAL Implementation Details</th>
25133 <tr class="entry_cont">
25134 <td class="entry_details" colspan="6">
25135 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25136 When AE and AWB are in AUTO modes
25137 (<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
25138 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25139 AE or AWB are in manual mode
25140 (<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
25141 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25142 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25143 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25147 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25148 <!-- end of entry -->
25151 <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25152 <td class="entry_name
25153 entry_name_deprecated
25155 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25157 <td class="entry_type">
25158 <span class="entry_type_name">float</span>
25159 <span class="entry_type_container">x</span>
25161 <span class="entry_type_array">
25164 <span class="entry_type_visibility"> [hidden]</span>
25168 <span class="entry_type_deprecated">[deprecated] </span>
25170 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25173 </td> <!-- entry_type -->
25175 <td class="entry_description">
25176 <p>The best-fit color channel gains calculated
25177 by the camera device's statistics units for the current output frame.<wbr/></p>
25180 <td class="entry_units">
25183 <td class="entry_range">
25184 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25187 <td class="entry_hal_version">
25191 <td class="entry_tags">
25195 <tr class="entries_header">
25196 <th class="th_details" colspan="6">Details</th>
25198 <tr class="entry_cont">
25199 <td class="entry_details" colspan="6">
25200 <p>This may be different than the gains used for this frame,<wbr/>
25201 since statistics processing on data from a new frame
25202 typically completes after the transform has already been
25203 applied to that frame.<wbr/></p>
25204 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25205 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25206 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25207 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25212 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25213 <!-- end of entry -->
25216 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25217 <td class="entry_name
25218 entry_name_deprecated
25220 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25222 <td class="entry_type">
25223 <span class="entry_type_name">rational</span>
25224 <span class="entry_type_container">x</span>
25226 <span class="entry_type_array">
25229 <span class="entry_type_visibility"> [hidden]</span>
25233 <span class="entry_type_deprecated">[deprecated] </span>
25235 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25238 </td> <!-- entry_type -->
25240 <td class="entry_description">
25241 <p>The best-fit color transform matrix estimate
25242 calculated by the camera device's statistics units for the current
25243 output frame.<wbr/></p>
25246 <td class="entry_units">
25249 <td class="entry_range">
25250 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25253 <td class="entry_hal_version">
25257 <td class="entry_tags">
25261 <tr class="entries_header">
25262 <th class="th_details" colspan="6">Details</th>
25264 <tr class="entry_cont">
25265 <td class="entry_details" colspan="6">
25266 <p>The camera device will provide the estimate from its
25267 statistics unit on the white balance transforms to use
25268 for the next frame.<wbr/> These are the values the camera device believes
25269 are the best fit for the current output frame.<wbr/> This may
25270 be different than the transform used for this frame,<wbr/> since
25271 statistics processing on data from a new frame typically
25272 completes after the transform has already been applied to
25273 that frame.<wbr/></p>
25274 <p>These estimates must be provided for all frames,<wbr/> even if
25275 capture settings and color transforms are set by the application.<wbr/></p>
25276 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25277 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25282 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25283 <!-- end of entry -->
25286 <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25287 <td class="entry_name
25289 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25291 <td class="entry_type">
25292 <span class="entry_type_name entry_type_name_enum">byte</span>
25294 <span class="entry_type_visibility"> [public]</span>
25297 <span class="entry_type_hwlevel">[full] </span>
25301 <ul class="entry_type_enum">
25303 <span class="entry_type_enum_name">NONE (v3.2)</span>
25304 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25305 in the current scene.<wbr/></p></span>
25308 <span class="entry_type_enum_name">50HZ (v3.2)</span>
25309 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25310 in the current scene.<wbr/></p></span>
25313 <span class="entry_type_enum_name">60HZ (v3.2)</span>
25314 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25315 in the current scene.<wbr/></p></span>
25319 </td> <!-- entry_type -->
25321 <td class="entry_description">
25322 <p>The camera device estimated scene illumination lighting
25323 frequency.<wbr/></p>
25326 <td class="entry_units">
25329 <td class="entry_range">
25332 <td class="entry_hal_version">
25336 <td class="entry_tags">
25340 <tr class="entries_header">
25341 <th class="th_details" colspan="6">Details</th>
25343 <tr class="entry_cont">
25344 <td class="entry_details" colspan="6">
25345 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25346 that depends on the local utility power standards.<wbr/> This flicker must be
25347 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25348 The camera device uses this entry to tell the application what the scene
25349 illuminant frequency is.<wbr/></p>
25350 <p>When manual exposure control is enabled
25351 (<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> ==
25352 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25353 antibanding,<wbr/> and the application can ensure it selects
25354 exposure times that do not cause banding issues by looking
25355 into this metadata field.<wbr/> See
25356 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25357 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25362 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25363 <!-- end of entry -->
25366 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25367 <td class="entry_name
25369 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25371 <td class="entry_type">
25372 <span class="entry_type_name entry_type_name_enum">byte</span>
25374 <span class="entry_type_visibility"> [public as boolean]</span>
25380 <ul class="entry_type_enum">
25382 <span class="entry_type_enum_name">OFF (v3.2)</span>
25383 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
25386 <span class="entry_type_enum_name">ON (v3.2)</span>
25387 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
25391 </td> <!-- entry_type -->
25393 <td class="entry_description">
25394 <p>Operating mode for hot pixel map generation.<wbr/></p>
25397 <td class="entry_units">
25400 <td class="entry_range">
25401 <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>
25404 <td class="entry_hal_version">
25408 <td class="entry_tags">
25409 <ul class="entry_tags">
25410 <li><a href="#tag_V1">V1</a></li>
25411 <li><a href="#tag_RAW">RAW</a></li>
25416 <tr class="entries_header">
25417 <th class="th_details" colspan="6">Details</th>
25419 <tr class="entry_cont">
25420 <td class="entry_details" colspan="6">
25421 <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/>
25422 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
25427 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25428 <!-- end of entry -->
25431 <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
25432 <td class="entry_name
25434 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
25436 <td class="entry_type">
25437 <span class="entry_type_name">int32</span>
25438 <span class="entry_type_container">x</span>
25440 <span class="entry_type_array">
25443 <span class="entry_type_visibility"> [public as point]</span>
25448 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
25451 </td> <!-- entry_type -->
25453 <td class="entry_description">
25454 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
25457 <td class="entry_units">
25460 <td class="entry_range">
25461 <p>n <= number of pixels on the sensor.<wbr/>
25462 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
25463 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25466 <td class="entry_hal_version">
25470 <td class="entry_tags">
25471 <ul class="entry_tags">
25472 <li><a href="#tag_V1">V1</a></li>
25473 <li><a href="#tag_RAW">RAW</a></li>
25478 <tr class="entries_header">
25479 <th class="th_details" colspan="6">Details</th>
25481 <tr class="entry_cont">
25482 <td class="entry_details" colspan="6">
25483 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
25484 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
25485 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
25486 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/>
25487 This may include hot pixels that lie outside of the active array
25488 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25492 <tr class="entries_header">
25493 <th class="th_details" colspan="6">HAL Implementation Details</th>
25495 <tr class="entry_cont">
25496 <td class="entry_details" colspan="6">
25497 <p>A hotpixel map contains the coordinates of pixels on the camera
25498 sensor that do report valid values (usually due to defects in
25499 the camera sensor).<wbr/> This includes pixels that are stuck at certain
25500 values,<wbr/> or have a response that does not accuractly encode the
25501 incoming light from the scene.<wbr/></p>
25502 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
25503 pixels than actual pixels on the camera sensor.<wbr/></p>
25507 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25508 <!-- end of entry -->
25511 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
25512 <td class="entry_name
25514 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
25516 <td class="entry_type">
25517 <span class="entry_type_name entry_type_name_enum">byte</span>
25519 <span class="entry_type_visibility"> [public]</span>
25522 <span class="entry_type_hwlevel">[full] </span>
25526 <ul class="entry_type_enum">
25528 <span class="entry_type_enum_name">OFF (v3.2)</span>
25529 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
25532 <span class="entry_type_enum_name">ON (v3.2)</span>
25533 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
25537 </td> <!-- entry_type -->
25539 <td class="entry_description">
25540 <p>Whether the camera device will output the lens
25541 shading map in output result metadata.<wbr/></p>
25544 <td class="entry_units">
25547 <td class="entry_range">
25548 <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>
25551 <td class="entry_hal_version">
25555 <td class="entry_tags">
25556 <ul class="entry_tags">
25557 <li><a href="#tag_RAW">RAW</a></li>
25562 <tr class="entries_header">
25563 <th class="th_details" colspan="6">Details</th>
25565 <tr class="entry_cont">
25566 <td class="entry_details" colspan="6">
25567 <p>When set to ON,<wbr/>
25568 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
25569 the output result metadata.<wbr/></p>
25570 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
25575 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25576 <!-- end of entry -->
25580 <!-- end of kind -->
25583 <!-- end of section -->
25584 <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
25587 <tr><td colspan="7" class="kind">controls</td></tr>
25589 <thead class="entries_header">
25591 <th class="th_name">Property Name</th>
25592 <th class="th_type">Type</th>
25593 <th class="th_description">Description</th>
25594 <th class="th_units">Units</th>
25595 <th class="th_range">Range</th>
25596 <th class="th_hal_version">Initial HIDL HAL version</th>
25597 <th class="th_tags">Tags</th>
25612 <tr class="entry" id="controls_android.tonemap.curveBlue">
25613 <td class="entry_name
25615 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
25617 <td class="entry_type">
25618 <span class="entry_type_name">float</span>
25619 <span class="entry_type_container">x</span>
25621 <span class="entry_type_array">
25624 <span class="entry_type_visibility"> [ndk_public]</span>
25627 <span class="entry_type_hwlevel">[full] </span>
25630 <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>
25633 </td> <!-- entry_type -->
25635 <td class="entry_description">
25636 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
25637 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25638 CONTRAST_<wbr/>CURVE.<wbr/></p>
25641 <td class="entry_units">
25644 <td class="entry_range">
25647 <td class="entry_hal_version">
25651 <td class="entry_tags">
25655 <tr class="entries_header">
25656 <th class="th_details" colspan="6">Details</th>
25658 <tr class="entry_cont">
25659 <td class="entry_details" colspan="6">
25660 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25665 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25666 <!-- end of entry -->
25669 <tr class="entry" id="controls_android.tonemap.curveGreen">
25670 <td class="entry_name
25672 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
25674 <td class="entry_type">
25675 <span class="entry_type_name">float</span>
25676 <span class="entry_type_container">x</span>
25678 <span class="entry_type_array">
25681 <span class="entry_type_visibility"> [ndk_public]</span>
25684 <span class="entry_type_hwlevel">[full] </span>
25687 <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>
25690 </td> <!-- entry_type -->
25692 <td class="entry_description">
25693 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
25694 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25695 CONTRAST_<wbr/>CURVE.<wbr/></p>
25698 <td class="entry_units">
25701 <td class="entry_range">
25704 <td class="entry_hal_version">
25708 <td class="entry_tags">
25712 <tr class="entries_header">
25713 <th class="th_details" colspan="6">Details</th>
25715 <tr class="entry_cont">
25716 <td class="entry_details" colspan="6">
25717 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25722 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25723 <!-- end of entry -->
25726 <tr class="entry" id="controls_android.tonemap.curveRed">
25727 <td class="entry_name
25729 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
25731 <td class="entry_type">
25732 <span class="entry_type_name">float</span>
25733 <span class="entry_type_container">x</span>
25735 <span class="entry_type_array">
25738 <span class="entry_type_visibility"> [ndk_public]</span>
25741 <span class="entry_type_hwlevel">[full] </span>
25744 <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>
25747 </td> <!-- entry_type -->
25749 <td class="entry_description">
25750 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
25751 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25752 CONTRAST_<wbr/>CURVE.<wbr/></p>
25755 <td class="entry_units">
25758 <td class="entry_range">
25759 <p>0-1 on both input and output coordinates,<wbr/> normalized
25760 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
25763 <td class="entry_hal_version">
25767 <td class="entry_tags">
25771 <tr class="entries_header">
25772 <th class="th_details" colspan="6">Details</th>
25774 <tr class="entry_cont">
25775 <td class="entry_details" colspan="6">
25776 <p>Each channel's curve is defined by an array of control points:</p>
25777 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
25778 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
25779 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25780 <p>These are sorted in order of increasing <code>Pin</code>; it is
25781 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25782 define a complete mapping.<wbr/> For input values between control points,<wbr/>
25783 the camera device must linearly interpolate between the control
25785 <p>Each curve can have an independent number of points,<wbr/> and the number
25786 of points can be less than max (that is,<wbr/> the request doesn't have to
25787 always provide a curve with number of points equivalent to
25788 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25789 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
25790 only specify the red channel and the precision is limited to 4
25791 digits,<wbr/> for conciseness.<wbr/></p>
25792 <p>Linear mapping:</p>
25793 <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 ]
25795 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25796 <p>Invert mapping:</p>
25797 <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 ]
25799 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25800 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25801 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25802 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/>
25803 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/>
25804 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/>
25805 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 ]
25807 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25808 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25809 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25810 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/>
25811 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/>
25812 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/>
25813 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 ]
25815 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25819 <tr class="entries_header">
25820 <th class="th_details" colspan="6">HAL Implementation Details</th>
25822 <tr class="entry_cont">
25823 <td class="entry_details" colspan="6">
25824 <p>For good quality of mapping,<wbr/> at least 128 control points are
25825 preferred.<wbr/></p>
25826 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
25827 control points used as are available.<wbr/></p>
25831 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25832 <!-- end of entry -->
25835 <tr class="entry" id="controls_android.tonemap.curve">
25836 <td class="entry_name
25838 android.<wbr/>tonemap.<wbr/>curve
25840 <td class="entry_type">
25841 <span class="entry_type_name">float</span>
25843 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
25845 <span class="entry_type_synthetic">[synthetic] </span>
25847 <span class="entry_type_hwlevel">[full] </span>
25852 </td> <!-- entry_type -->
25854 <td class="entry_description">
25855 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
25856 is CONTRAST_<wbr/>CURVE.<wbr/></p>
25859 <td class="entry_units">
25862 <td class="entry_range">
25865 <td class="entry_hal_version">
25869 <td class="entry_tags">
25873 <tr class="entries_header">
25874 <th class="th_details" colspan="6">Details</th>
25876 <tr class="entry_cont">
25877 <td class="entry_details" colspan="6">
25878 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
25879 channels respectively.<wbr/> The following example uses the red channel as an
25880 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
25881 Each channel's curve is defined by an array of control points:</p>
25882 <pre><code>curveRed =
25883 [ 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) ]
25884 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25885 <p>These are sorted in order of increasing <code>Pin</code>; it is always
25886 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25887 define a complete mapping.<wbr/> For input values between control points,<wbr/>
25888 the camera device must linearly interpolate between the control
25890 <p>Each curve can have an independent number of points,<wbr/> and the number
25891 of points can be less than max (that is,<wbr/> the request doesn't have to
25892 always provide a curve with number of points equivalent to
25893 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25894 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
25895 only specify the red channel and the precision is limited to 4
25896 digits,<wbr/> for conciseness.<wbr/></p>
25897 <p>Linear mapping:</p>
25898 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
25900 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25901 <p>Invert mapping:</p>
25902 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
25904 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25905 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25906 <pre><code>curveRed = [
25907 (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/>
25908 (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/>
25909 (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/>
25910 (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) ]
25912 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25913 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25914 <pre><code>curveRed = [
25915 (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/>
25916 (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/>
25917 (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/>
25918 (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) ]
25920 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25924 <tr class="entries_header">
25925 <th class="th_details" colspan="6">HAL Implementation Details</th>
25927 <tr class="entry_cont">
25928 <td class="entry_details" colspan="6">
25929 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
25930 curveBlue entries.<wbr/></p>
25934 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25935 <!-- end of entry -->
25938 <tr class="entry" id="controls_android.tonemap.mode">
25939 <td class="entry_name
25941 android.<wbr/>tonemap.<wbr/>mode
25943 <td class="entry_type">
25944 <span class="entry_type_name entry_type_name_enum">byte</span>
25946 <span class="entry_type_visibility"> [public]</span>
25949 <span class="entry_type_hwlevel">[full] </span>
25953 <ul class="entry_type_enum">
25955 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
25956 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
25957 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
25958 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25959 for applying the tonemapping curve specified by
25960 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
25961 <p>Must not slow down frame rate relative to raw
25962 sensor output.<wbr/></p></span>
25965 <span class="entry_type_enum_name">FAST (v3.2)</span>
25966 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
25967 reducing frame rate compared to raw sensor output.<wbr/></p></span>
25970 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
25971 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
25972 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
25975 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
25976 <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
25977 tonemapping.<wbr/></p>
25978 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25979 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
25980 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25983 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
25984 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
25985 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
25986 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25987 for applying the tonemapping curve specified by
25988 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
25989 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25993 </td> <!-- entry_type -->
25995 <td class="entry_description">
25996 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
25999 <td class="entry_units">
26002 <td class="entry_range">
26003 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26006 <td class="entry_hal_version">
26010 <td class="entry_tags">
26014 <tr class="entries_header">
26015 <th class="th_details" colspan="6">Details</th>
26017 <tr class="entry_cont">
26018 <td class="entry_details" colspan="6">
26019 <p>When switching to an application-defined contrast curve by setting
26020 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26021 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26022 mapping from input high-bit-depth pixel value to the output
26023 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
26024 and output may change depending on the camera pipeline,<wbr/> the values
26025 are specified by normalized floating-point numbers.<wbr/></p>
26026 <p>More-complex color mapping operations such as 3D color look-up
26027 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26028 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26029 CONTRAST_<wbr/>CURVE.<wbr/></p>
26030 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26031 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26032 These values are always available,<wbr/> and as close as possible to the
26033 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26034 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26035 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26036 roughly the same.<wbr/></p>
26041 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26042 <!-- end of entry -->
26045 <tr class="entry" id="controls_android.tonemap.gamma">
26046 <td class="entry_name
26048 android.<wbr/>tonemap.<wbr/>gamma
26050 <td class="entry_type">
26051 <span class="entry_type_name">float</span>
26053 <span class="entry_type_visibility"> [public]</span>
26060 </td> <!-- entry_type -->
26062 <td class="entry_description">
26063 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26064 GAMMA_<wbr/>VALUE</p>
26067 <td class="entry_units">
26070 <td class="entry_range">
26073 <td class="entry_hal_version">
26077 <td class="entry_tags">
26081 <tr class="entries_header">
26082 <th class="th_details" colspan="6">Details</th>
26084 <tr class="entry_cont">
26085 <td class="entry_details" colspan="6">
26086 <p>The tonemap curve will be defined the following formula:
26087 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26088 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26089 pow is the power function and gamma is the gamma value specified by this
26091 <p>The same curve will be applied to all color channels.<wbr/> The camera device
26092 may clip the input gamma value to its supported range.<wbr/> The actual applied
26093 value will be returned in capture result.<wbr/></p>
26094 <p>The valid range of gamma value varies on different devices,<wbr/> but values
26095 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
26100 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26101 <!-- end of entry -->
26104 <tr class="entry" id="controls_android.tonemap.presetCurve">
26105 <td class="entry_name
26107 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
26109 <td class="entry_type">
26110 <span class="entry_type_name entry_type_name_enum">byte</span>
26112 <span class="entry_type_visibility"> [public]</span>
26118 <ul class="entry_type_enum">
26120 <span class="entry_type_enum_name">SRGB (v3.2)</span>
26121 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
26124 <span class="entry_type_enum_name">REC709 (v3.2)</span>
26125 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
26129 </td> <!-- entry_type -->
26131 <td class="entry_description">
26132 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26133 PRESET_<wbr/>CURVE</p>
26136 <td class="entry_units">
26139 <td class="entry_range">
26142 <td class="entry_hal_version">
26146 <td class="entry_tags">
26150 <tr class="entries_header">
26151 <th class="th_details" colspan="6">Details</th>
26153 <tr class="entry_cont">
26154 <td class="entry_details" colspan="6">
26155 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
26156 <p>sRGB (approximated by 16 control points):</p>
26157 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26158 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
26159 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
26160 <p>Note that above figures show a 16 control points approximation of preset
26161 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
26166 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26167 <!-- end of entry -->
26171 <!-- end of kind -->
26173 <tr><td colspan="7" class="kind">static</td></tr>
26175 <thead class="entries_header">
26177 <th class="th_name">Property Name</th>
26178 <th class="th_type">Type</th>
26179 <th class="th_description">Description</th>
26180 <th class="th_units">Units</th>
26181 <th class="th_range">Range</th>
26182 <th class="th_hal_version">Initial HIDL HAL version</th>
26183 <th class="th_tags">Tags</th>
26198 <tr class="entry" id="static_android.tonemap.maxCurvePoints">
26199 <td class="entry_name
26201 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
26203 <td class="entry_type">
26204 <span class="entry_type_name">int32</span>
26206 <span class="entry_type_visibility"> [public]</span>
26209 <span class="entry_type_hwlevel">[full] </span>
26214 </td> <!-- entry_type -->
26216 <td class="entry_description">
26217 <p>Maximum number of supported points in the
26218 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26221 <td class="entry_units">
26224 <td class="entry_range">
26227 <td class="entry_hal_version">
26231 <td class="entry_tags">
26235 <tr class="entries_header">
26236 <th class="th_details" colspan="6">Details</th>
26238 <tr class="entry_cont">
26239 <td class="entry_details" colspan="6">
26240 <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
26241 less than this maximum,<wbr/> the camera device will resample the curve to its internal
26242 representation,<wbr/> using linear interpolation.<wbr/></p>
26243 <p>The output curves in the result metadata may have a different number
26244 of points than the input curves,<wbr/> and will represent the actual
26245 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
26249 <tr class="entries_header">
26250 <th class="th_details" colspan="6">HAL Implementation Details</th>
26252 <tr class="entry_cont">
26253 <td class="entry_details" colspan="6">
26254 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
26258 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26259 <!-- end of entry -->
26262 <tr class="entry" id="static_android.tonemap.availableToneMapModes">
26263 <td class="entry_name
26265 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
26267 <td class="entry_type">
26268 <span class="entry_type_name">byte</span>
26269 <span class="entry_type_container">x</span>
26271 <span class="entry_type_array">
26274 <span class="entry_type_visibility"> [public as enumList]</span>
26277 <span class="entry_type_hwlevel">[full] </span>
26280 <div class="entry_type_notes">list of enums</div>
26283 </td> <!-- entry_type -->
26285 <td class="entry_description">
26286 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
26290 <td class="entry_units">
26293 <td class="entry_range">
26294 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
26297 <td class="entry_hal_version">
26301 <td class="entry_tags">
26305 <tr class="entries_header">
26306 <th class="th_details" colspan="6">Details</th>
26308 <tr class="entry_cont">
26309 <td class="entry_details" colspan="6">
26310 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
26311 at least one of below mode combinations:</p>
26313 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26314 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26316 <p>This includes all FULL level devices.<wbr/></p>
26320 <tr class="entries_header">
26321 <th class="th_details" colspan="6">HAL Implementation Details</th>
26323 <tr class="entry_cont">
26324 <td class="entry_details" colspan="6">
26325 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
26326 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
26327 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
26328 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
26332 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26333 <!-- end of entry -->
26337 <!-- end of kind -->
26339 <tr><td colspan="7" class="kind">dynamic</td></tr>
26341 <thead class="entries_header">
26343 <th class="th_name">Property Name</th>
26344 <th class="th_type">Type</th>
26345 <th class="th_description">Description</th>
26346 <th class="th_units">Units</th>
26347 <th class="th_range">Range</th>
26348 <th class="th_hal_version">Initial HIDL HAL version</th>
26349 <th class="th_tags">Tags</th>
26364 <tr class="entry" id="dynamic_android.tonemap.curveBlue">
26365 <td class="entry_name
26367 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26369 <td class="entry_type">
26370 <span class="entry_type_name">float</span>
26371 <span class="entry_type_container">x</span>
26373 <span class="entry_type_array">
26376 <span class="entry_type_visibility"> [ndk_public]</span>
26379 <span class="entry_type_hwlevel">[full] </span>
26382 <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>
26385 </td> <!-- entry_type -->
26387 <td class="entry_description">
26388 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26389 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26390 CONTRAST_<wbr/>CURVE.<wbr/></p>
26393 <td class="entry_units">
26396 <td class="entry_range">
26399 <td class="entry_hal_version">
26403 <td class="entry_tags">
26407 <tr class="entries_header">
26408 <th class="th_details" colspan="6">Details</th>
26410 <tr class="entry_cont">
26411 <td class="entry_details" colspan="6">
26412 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26417 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26418 <!-- end of entry -->
26421 <tr class="entry" id="dynamic_android.tonemap.curveGreen">
26422 <td class="entry_name
26424 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26426 <td class="entry_type">
26427 <span class="entry_type_name">float</span>
26428 <span class="entry_type_container">x</span>
26430 <span class="entry_type_array">
26433 <span class="entry_type_visibility"> [ndk_public]</span>
26436 <span class="entry_type_hwlevel">[full] </span>
26439 <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>
26442 </td> <!-- entry_type -->
26444 <td class="entry_description">
26445 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26446 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26447 CONTRAST_<wbr/>CURVE.<wbr/></p>
26450 <td class="entry_units">
26453 <td class="entry_range">
26456 <td class="entry_hal_version">
26460 <td class="entry_tags">
26464 <tr class="entries_header">
26465 <th class="th_details" colspan="6">Details</th>
26467 <tr class="entry_cont">
26468 <td class="entry_details" colspan="6">
26469 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26474 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26475 <!-- end of entry -->
26478 <tr class="entry" id="dynamic_android.tonemap.curveRed">
26479 <td class="entry_name
26481 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26483 <td class="entry_type">
26484 <span class="entry_type_name">float</span>
26485 <span class="entry_type_container">x</span>
26487 <span class="entry_type_array">
26490 <span class="entry_type_visibility"> [ndk_public]</span>
26493 <span class="entry_type_hwlevel">[full] </span>
26496 <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>
26499 </td> <!-- entry_type -->
26501 <td class="entry_description">
26502 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26503 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26504 CONTRAST_<wbr/>CURVE.<wbr/></p>
26507 <td class="entry_units">
26510 <td class="entry_range">
26511 <p>0-1 on both input and output coordinates,<wbr/> normalized
26512 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26515 <td class="entry_hal_version">
26519 <td class="entry_tags">
26523 <tr class="entries_header">
26524 <th class="th_details" colspan="6">Details</th>
26526 <tr class="entry_cont">
26527 <td class="entry_details" colspan="6">
26528 <p>Each channel's curve is defined by an array of control points:</p>
26529 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26530 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26531 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26532 <p>These are sorted in order of increasing <code>Pin</code>; it is
26533 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26534 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26535 the camera device must linearly interpolate between the control
26537 <p>Each curve can have an independent number of points,<wbr/> and the number
26538 of points can be less than max (that is,<wbr/> the request doesn't have to
26539 always provide a curve with number of points equivalent to
26540 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26541 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26542 only specify the red channel and the precision is limited to 4
26543 digits,<wbr/> for conciseness.<wbr/></p>
26544 <p>Linear mapping:</p>
26545 <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 ]
26547 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26548 <p>Invert mapping:</p>
26549 <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 ]
26551 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26552 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26553 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26554 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/>
26555 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/>
26556 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/>
26557 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 ]
26559 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26560 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26561 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26562 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/>
26563 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/>
26564 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/>
26565 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 ]
26567 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26571 <tr class="entries_header">
26572 <th class="th_details" colspan="6">HAL Implementation Details</th>
26574 <tr class="entry_cont">
26575 <td class="entry_details" colspan="6">
26576 <p>For good quality of mapping,<wbr/> at least 128 control points are
26577 preferred.<wbr/></p>
26578 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26579 control points used as are available.<wbr/></p>
26583 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26584 <!-- end of entry -->
26587 <tr class="entry" id="dynamic_android.tonemap.curve">
26588 <td class="entry_name
26590 android.<wbr/>tonemap.<wbr/>curve
26592 <td class="entry_type">
26593 <span class="entry_type_name">float</span>
26595 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26597 <span class="entry_type_synthetic">[synthetic] </span>
26599 <span class="entry_type_hwlevel">[full] </span>
26604 </td> <!-- entry_type -->
26606 <td class="entry_description">
26607 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26608 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26611 <td class="entry_units">
26614 <td class="entry_range">
26617 <td class="entry_hal_version">
26621 <td class="entry_tags">
26625 <tr class="entries_header">
26626 <th class="th_details" colspan="6">Details</th>
26628 <tr class="entry_cont">
26629 <td class="entry_details" colspan="6">
26630 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26631 channels respectively.<wbr/> The following example uses the red channel as an
26632 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26633 Each channel's curve is defined by an array of control points:</p>
26634 <pre><code>curveRed =
26635 [ 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) ]
26636 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26637 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26638 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26639 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26640 the camera device must linearly interpolate between the control
26642 <p>Each curve can have an independent number of points,<wbr/> and the number
26643 of points can be less than max (that is,<wbr/> the request doesn't have to
26644 always provide a curve with number of points equivalent to
26645 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26646 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26647 only specify the red channel and the precision is limited to 4
26648 digits,<wbr/> for conciseness.<wbr/></p>
26649 <p>Linear mapping:</p>
26650 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26652 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26653 <p>Invert mapping:</p>
26654 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26656 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26657 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26658 <pre><code>curveRed = [
26659 (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/>
26660 (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/>
26661 (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/>
26662 (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) ]
26664 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26665 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26666 <pre><code>curveRed = [
26667 (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/>
26668 (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/>
26669 (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/>
26670 (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) ]
26672 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26676 <tr class="entries_header">
26677 <th class="th_details" colspan="6">HAL Implementation Details</th>
26679 <tr class="entry_cont">
26680 <td class="entry_details" colspan="6">
26681 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26682 curveBlue entries.<wbr/></p>
26686 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26687 <!-- end of entry -->
26690 <tr class="entry" id="dynamic_android.tonemap.mode">
26691 <td class="entry_name
26693 android.<wbr/>tonemap.<wbr/>mode
26695 <td class="entry_type">
26696 <span class="entry_type_name entry_type_name_enum">byte</span>
26698 <span class="entry_type_visibility"> [public]</span>
26701 <span class="entry_type_hwlevel">[full] </span>
26705 <ul class="entry_type_enum">
26707 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
26708 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26709 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26710 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26711 for applying the tonemapping curve specified by
26712 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26713 <p>Must not slow down frame rate relative to raw
26714 sensor output.<wbr/></p></span>
26717 <span class="entry_type_enum_name">FAST (v3.2)</span>
26718 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26719 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26722 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
26723 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26724 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26727 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
26728 <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
26729 tonemapping.<wbr/></p>
26730 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26731 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26732 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26735 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
26736 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26737 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26738 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26739 for applying the tonemapping curve specified by
26740 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26741 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26745 </td> <!-- entry_type -->
26747 <td class="entry_description">
26748 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26751 <td class="entry_units">
26754 <td class="entry_range">
26755 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26758 <td class="entry_hal_version">
26762 <td class="entry_tags">
26766 <tr class="entries_header">
26767 <th class="th_details" colspan="6">Details</th>
26769 <tr class="entry_cont">
26770 <td class="entry_details" colspan="6">
26771 <p>When switching to an application-defined contrast curve by setting
26772 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26773 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26774 mapping from input high-bit-depth pixel value to the output
26775 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
26776 and output may change depending on the camera pipeline,<wbr/> the values
26777 are specified by normalized floating-point numbers.<wbr/></p>
26778 <p>More-complex color mapping operations such as 3D color look-up
26779 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26780 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26781 CONTRAST_<wbr/>CURVE.<wbr/></p>
26782 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26783 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26784 These values are always available,<wbr/> and as close as possible to the
26785 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26786 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26787 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26788 roughly the same.<wbr/></p>
26793 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26794 <!-- end of entry -->
26797 <tr class="entry" id="dynamic_android.tonemap.gamma">
26798 <td class="entry_name
26800 android.<wbr/>tonemap.<wbr/>gamma
26802 <td class="entry_type">
26803 <span class="entry_type_name">float</span>
26805 <span class="entry_type_visibility"> [public]</span>
26812 </td> <!-- entry_type -->
26814 <td class="entry_description">
26815 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26816 GAMMA_<wbr/>VALUE</p>
26819 <td class="entry_units">
26822 <td class="entry_range">
26825 <td class="entry_hal_version">
26829 <td class="entry_tags">
26833 <tr class="entries_header">
26834 <th class="th_details" colspan="6">Details</th>
26836 <tr class="entry_cont">
26837 <td class="entry_details" colspan="6">
26838 <p>The tonemap curve will be defined the following formula:
26839 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26840 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26841 pow is the power function and gamma is the gamma value specified by this
26843 <p>The same curve will be applied to all color channels.<wbr/> The camera device
26844 may clip the input gamma value to its supported range.<wbr/> The actual applied
26845 value will be returned in capture result.<wbr/></p>
26846 <p>The valid range of gamma value varies on different devices,<wbr/> but values
26847 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
26852 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26853 <!-- end of entry -->
26856 <tr class="entry" id="dynamic_android.tonemap.presetCurve">
26857 <td class="entry_name
26859 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
26861 <td class="entry_type">
26862 <span class="entry_type_name entry_type_name_enum">byte</span>
26864 <span class="entry_type_visibility"> [public]</span>
26870 <ul class="entry_type_enum">
26872 <span class="entry_type_enum_name">SRGB (v3.2)</span>
26873 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
26876 <span class="entry_type_enum_name">REC709 (v3.2)</span>
26877 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
26881 </td> <!-- entry_type -->
26883 <td class="entry_description">
26884 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26885 PRESET_<wbr/>CURVE</p>
26888 <td class="entry_units">
26891 <td class="entry_range">
26894 <td class="entry_hal_version">
26898 <td class="entry_tags">
26902 <tr class="entries_header">
26903 <th class="th_details" colspan="6">Details</th>
26905 <tr class="entry_cont">
26906 <td class="entry_details" colspan="6">
26907 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
26908 <p>sRGB (approximated by 16 control points):</p>
26909 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26910 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
26911 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
26912 <p>Note that above figures show a 16 control points approximation of preset
26913 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
26918 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26919 <!-- end of entry -->
26923 <!-- end of kind -->
26926 <!-- end of section -->
26927 <tr><td colspan="7" id="section_led" class="section">led</td></tr>
26930 <tr><td colspan="7" class="kind">controls</td></tr>
26932 <thead class="entries_header">
26934 <th class="th_name">Property Name</th>
26935 <th class="th_type">Type</th>
26936 <th class="th_description">Description</th>
26937 <th class="th_units">Units</th>
26938 <th class="th_range">Range</th>
26939 <th class="th_hal_version">Initial HIDL HAL version</th>
26940 <th class="th_tags">Tags</th>
26955 <tr class="entry" id="controls_android.led.transmit">
26956 <td class="entry_name
26958 android.<wbr/>led.<wbr/>transmit
26960 <td class="entry_type">
26961 <span class="entry_type_name entry_type_name_enum">byte</span>
26963 <span class="entry_type_visibility"> [hidden as boolean]</span>
26969 <ul class="entry_type_enum">
26971 <span class="entry_type_enum_name">OFF (v3.2)</span>
26974 <span class="entry_type_enum_name">ON (v3.2)</span>
26978 </td> <!-- entry_type -->
26980 <td class="entry_description">
26981 <p>This LED is nominally used to indicate to the user
26982 that the camera is powered on and may be streaming images back to the
26983 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
26984 disable this when video is processed locally and not transmitted to
26985 any untrusted applications.<wbr/></p>
26986 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
26987 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
26988 data is stored locally on the device.<wbr/></p>
26989 <p>The LED <em>may</em> be off if a trusted application is using the data that
26990 doesn't violate the above rules.<wbr/></p>
26993 <td class="entry_units">
26996 <td class="entry_range">
26999 <td class="entry_hal_version">
27003 <td class="entry_tags">
27009 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27010 <!-- end of entry -->
27014 <!-- end of kind -->
27016 <tr><td colspan="7" class="kind">dynamic</td></tr>
27018 <thead class="entries_header">
27020 <th class="th_name">Property Name</th>
27021 <th class="th_type">Type</th>
27022 <th class="th_description">Description</th>
27023 <th class="th_units">Units</th>
27024 <th class="th_range">Range</th>
27025 <th class="th_hal_version">Initial HIDL HAL version</th>
27026 <th class="th_tags">Tags</th>
27041 <tr class="entry" id="dynamic_android.led.transmit">
27042 <td class="entry_name
27044 android.<wbr/>led.<wbr/>transmit
27046 <td class="entry_type">
27047 <span class="entry_type_name entry_type_name_enum">byte</span>
27049 <span class="entry_type_visibility"> [hidden as boolean]</span>
27055 <ul class="entry_type_enum">
27057 <span class="entry_type_enum_name">OFF (v3.2)</span>
27060 <span class="entry_type_enum_name">ON (v3.2)</span>
27064 </td> <!-- entry_type -->
27066 <td class="entry_description">
27067 <p>This LED is nominally used to indicate to the user
27068 that the camera is powered on and may be streaming images back to the
27069 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27070 disable this when video is processed locally and not transmitted to
27071 any untrusted applications.<wbr/></p>
27072 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27073 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27074 data is stored locally on the device.<wbr/></p>
27075 <p>The LED <em>may</em> be off if a trusted application is using the data that
27076 doesn't violate the above rules.<wbr/></p>
27079 <td class="entry_units">
27082 <td class="entry_range">
27085 <td class="entry_hal_version">
27089 <td class="entry_tags">
27095 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27096 <!-- end of entry -->
27100 <!-- end of kind -->
27102 <tr><td colspan="7" class="kind">static</td></tr>
27104 <thead class="entries_header">
27106 <th class="th_name">Property Name</th>
27107 <th class="th_type">Type</th>
27108 <th class="th_description">Description</th>
27109 <th class="th_units">Units</th>
27110 <th class="th_range">Range</th>
27111 <th class="th_hal_version">Initial HIDL HAL version</th>
27112 <th class="th_tags">Tags</th>
27127 <tr class="entry" id="static_android.led.availableLeds">
27128 <td class="entry_name
27130 android.<wbr/>led.<wbr/>available<wbr/>Leds
27132 <td class="entry_type">
27133 <span class="entry_type_name entry_type_name_enum">byte</span>
27134 <span class="entry_type_container">x</span>
27136 <span class="entry_type_array">
27139 <span class="entry_type_visibility"> [hidden]</span>
27145 <ul class="entry_type_enum">
27147 <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
27148 <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>
27152 </td> <!-- entry_type -->
27154 <td class="entry_description">
27155 <p>A list of camera LEDs that are available on this system.<wbr/></p>
27158 <td class="entry_units">
27161 <td class="entry_range">
27164 <td class="entry_hal_version">
27168 <td class="entry_tags">
27174 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27175 <!-- end of entry -->
27179 <!-- end of kind -->
27182 <!-- end of section -->
27183 <tr><td colspan="7" id="section_info" class="section">info</td></tr>
27186 <tr><td colspan="7" class="kind">static</td></tr>
27188 <thead class="entries_header">
27190 <th class="th_name">Property Name</th>
27191 <th class="th_type">Type</th>
27192 <th class="th_description">Description</th>
27193 <th class="th_units">Units</th>
27194 <th class="th_range">Range</th>
27195 <th class="th_hal_version">Initial HIDL HAL version</th>
27196 <th class="th_tags">Tags</th>
27211 <tr class="entry" id="static_android.info.supportedHardwareLevel">
27212 <td class="entry_name
27214 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
27216 <td class="entry_type">
27217 <span class="entry_type_name entry_type_name_enum">byte</span>
27219 <span class="entry_type_visibility"> [public]</span>
27222 <span class="entry_type_hwlevel">[legacy] </span>
27226 <ul class="entry_type_enum">
27228 <span class="entry_type_enum_name">LIMITED (v3.2)</span>
27229 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
27231 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
27232 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27233 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
27234 support for color image capture.<wbr/> The only exception is that the device may
27235 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
27236 measurements and not color images.<wbr/></p>
27237 <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>
27238 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
27239 capturing a high-quality still image.<wbr/></p>
27240 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
27241 required to support full-automatic operation and post-processing (<code>OFF</code> is not
27242 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
27243 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
27244 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
27245 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
27248 <span class="entry_type_enum_name">FULL (v3.2)</span>
27249 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
27250 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
27251 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27252 <p>A <code>FULL</code> device will support below capabilities:</p>
27254 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27255 <code>BURST_<wbr/>CAPTURE</code>)</li>
27256 <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>
27257 <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>
27258 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27259 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
27260 <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>
27261 <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>
27264 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
27265 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
27266 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
27269 <span class="entry_type_enum_name">LEGACY (v3.2)</span>
27270 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
27271 <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>
27272 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
27273 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
27274 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
27275 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
27276 <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>
27277 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
27278 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may
27279 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
27280 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
27281 enable the flash.<wbr/></p></span>
27284 <span class="entry_type_enum_name">3 (v3.2)</span>
27285 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
27286 FULL-level capabilities.<wbr/></p>
27287 <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
27288 <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>
27289 <p>The following additional capabilities are guaranteed to be supported:</p>
27291 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27292 <code>YUV_<wbr/>REPROCESSING</code>)</li>
27293 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27294 <code>RAW</code>)</li>
27299 </td> <!-- entry_type -->
27301 <td class="entry_description">
27302 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
27305 <td class="entry_units">
27308 <td class="entry_range">
27311 <td class="entry_hal_version">
27315 <td class="entry_tags">
27319 <tr class="entries_header">
27320 <th class="th_details" colspan="6">Details</th>
27322 <tr class="entry_cont">
27323 <td class="entry_details" colspan="6">
27324 <p>The supported hardware level is a high-level description of the camera device's
27325 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional
27326 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
27327 The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p>
27328 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
27329 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
27330 the following code snippet can be used:</p>
27331 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
27332 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
27333 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
27334 if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
27335 return requiredLevel == deviceLevel;
27337 //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
27338 return requiredLevel <= deviceLevel;
27341 <p>At a high level,<wbr/> the levels are:</p>
27343 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
27344 Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
27345 <li><code>LIMITED</code> devices represent the
27346 baseline feature set,<wbr/> and may also include additional capabilities that are
27347 subsets of <code>FULL</code>.<wbr/></li>
27348 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
27349 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
27350 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
27351 with additional output stream configurations.<wbr/></li>
27353 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The
27354 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
27355 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
27356 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
27357 <p>Some features are not part of any particular hardware level or capability and must be
27358 queried separately.<wbr/> These include:</p>
27360 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
27361 <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>
27362 <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>
27363 <li>Optical or electrical image stabilization
27364 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
27365 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
27370 <tr class="entries_header">
27371 <th class="th_details" colspan="6">HAL Implementation Details</th>
27373 <tr class="entry_cont">
27374 <td class="entry_details" colspan="6">
27375 <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
27376 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
27377 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
27378 mode has hardware requirements roughly in line with those for a camera HAL device v1
27379 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
27380 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
27381 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
27382 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
27383 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
27384 implemented by the camera framework code.<wbr/></p>
27388 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27389 <!-- end of entry -->
27392 <tr class="entry" id="static_android.info.version">
27393 <td class="entry_name
27395 android.<wbr/>info.<wbr/>version
27397 <td class="entry_type">
27398 <span class="entry_type_name">byte</span>
27400 <span class="entry_type_visibility"> [public as string]</span>
27407 </td> <!-- entry_type -->
27409 <td class="entry_description">
27410 <p>A short string for manufacturer version information about the camera device,<wbr/> such as
27411 ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
27414 <td class="entry_units">
27417 <td class="entry_range">
27420 <td class="entry_hal_version">
27424 <td class="entry_tags">
27428 <tr class="entries_header">
27429 <th class="th_details" colspan="6">Details</th>
27431 <tr class="entry_cont">
27432 <td class="entry_details" colspan="6">
27433 <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>
27434 in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
27439 <tr class="entries_header">
27440 <th class="th_details" colspan="6">HAL Implementation Details</th>
27442 <tr class="entry_cont">
27443 <td class="entry_details" colspan="6">
27444 <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
27445 whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
27446 It must not exceed 256 characters.<wbr/></p>
27450 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27451 <!-- end of entry -->
27455 <!-- end of kind -->
27458 <!-- end of section -->
27459 <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
27462 <tr><td colspan="7" class="kind">controls</td></tr>
27464 <thead class="entries_header">
27466 <th class="th_name">Property Name</th>
27467 <th class="th_type">Type</th>
27468 <th class="th_description">Description</th>
27469 <th class="th_units">Units</th>
27470 <th class="th_range">Range</th>
27471 <th class="th_hal_version">Initial HIDL HAL version</th>
27472 <th class="th_tags">Tags</th>
27487 <tr class="entry" id="controls_android.blackLevel.lock">
27488 <td class="entry_name
27490 android.<wbr/>black<wbr/>Level.<wbr/>lock
27492 <td class="entry_type">
27493 <span class="entry_type_name entry_type_name_enum">byte</span>
27495 <span class="entry_type_visibility"> [public as boolean]</span>
27498 <span class="entry_type_hwlevel">[full] </span>
27502 <ul class="entry_type_enum">
27504 <span class="entry_type_enum_name">OFF (v3.2)</span>
27507 <span class="entry_type_enum_name">ON (v3.2)</span>
27511 </td> <!-- entry_type -->
27513 <td class="entry_description">
27514 <p>Whether black-level compensation is locked
27515 to its current values,<wbr/> or is free to vary.<wbr/></p>
27518 <td class="entry_units">
27521 <td class="entry_range">
27524 <td class="entry_hal_version">
27528 <td class="entry_tags">
27529 <ul class="entry_tags">
27530 <li><a href="#tag_HAL2">HAL2</a></li>
27535 <tr class="entries_header">
27536 <th class="th_details" colspan="6">Details</th>
27538 <tr class="entry_cont">
27539 <td class="entry_details" colspan="6">
27540 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
27541 compensation will not change until the lock is set to
27542 <code>false</code> (OFF).<wbr/></p>
27543 <p>Since changes to certain capture parameters (such as
27544 exposure time) may require resetting of black level
27545 compensation,<wbr/> the camera device must report whether setting
27546 the black level lock was successful in the output result
27547 metadata.<wbr/></p>
27548 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
27550 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
27551 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27552 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27553 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27554 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27555 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27557 <p>And the exposure change in Request 4 requires the camera
27558 device to reset the black level offsets,<wbr/> then the output
27559 result metadata is expected to be:</p>
27561 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
27562 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27563 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27564 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
27565 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27566 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27568 <p>This indicates to the application that on frame 4,<wbr/> black
27569 levels were reset due to exposure value changes,<wbr/> and pixel
27570 values may not be consistent across captures.<wbr/></p>
27571 <p>The camera device will maintain the lock to the extent
27572 possible,<wbr/> only overriding the lock to OFF when changes to
27573 other request parameters require a black level recalculation
27574 or reset.<wbr/></p>
27578 <tr class="entries_header">
27579 <th class="th_details" colspan="6">HAL Implementation Details</th>
27581 <tr class="entry_cont">
27582 <td class="entry_details" colspan="6">
27583 <p>If for some reason black level locking is no longer possible
27584 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
27585 black level offsets to be recalculated),<wbr/> then the HAL must
27586 override this request (and it must report 'OFF' when this
27587 does happen) until the next capture for which locking is
27588 possible again.<wbr/></p>
27592 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27593 <!-- end of entry -->
27597 <!-- end of kind -->
27599 <tr><td colspan="7" class="kind">dynamic</td></tr>
27601 <thead class="entries_header">
27603 <th class="th_name">Property Name</th>
27604 <th class="th_type">Type</th>
27605 <th class="th_description">Description</th>
27606 <th class="th_units">Units</th>
27607 <th class="th_range">Range</th>
27608 <th class="th_hal_version">Initial HIDL HAL version</th>
27609 <th class="th_tags">Tags</th>
27624 <tr class="entry" id="dynamic_android.blackLevel.lock">
27625 <td class="entry_name
27627 android.<wbr/>black<wbr/>Level.<wbr/>lock
27629 <td class="entry_type">
27630 <span class="entry_type_name entry_type_name_enum">byte</span>
27632 <span class="entry_type_visibility"> [public as boolean]</span>
27635 <span class="entry_type_hwlevel">[full] </span>
27639 <ul class="entry_type_enum">
27641 <span class="entry_type_enum_name">OFF (v3.2)</span>
27644 <span class="entry_type_enum_name">ON (v3.2)</span>
27648 </td> <!-- entry_type -->
27650 <td class="entry_description">
27651 <p>Whether black-level compensation is locked
27652 to its current values,<wbr/> or is free to vary.<wbr/></p>
27655 <td class="entry_units">
27658 <td class="entry_range">
27661 <td class="entry_hal_version">
27665 <td class="entry_tags">
27666 <ul class="entry_tags">
27667 <li><a href="#tag_HAL2">HAL2</a></li>
27672 <tr class="entries_header">
27673 <th class="th_details" colspan="6">Details</th>
27675 <tr class="entry_cont">
27676 <td class="entry_details" colspan="6">
27677 <p>Whether the black level offset was locked for this frame.<wbr/> Should be
27678 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
27679 a change in other capture settings forced the camera device to
27680 perform a black level reset.<wbr/></p>
27684 <tr class="entries_header">
27685 <th class="th_details" colspan="6">HAL Implementation Details</th>
27687 <tr class="entry_cont">
27688 <td class="entry_details" colspan="6">
27689 <p>If for some reason black level locking is no longer possible
27690 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
27691 black level offsets to be recalculated),<wbr/> then the HAL must
27692 override this request (and it must report 'OFF' when this
27693 does happen) until the next capture for which locking is
27694 possible again.<wbr/></p>
27698 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27699 <!-- end of entry -->
27703 <!-- end of kind -->
27706 <!-- end of section -->
27707 <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
27710 <tr><td colspan="7" class="kind">dynamic</td></tr>
27712 <thead class="entries_header">
27714 <th class="th_name">Property Name</th>
27715 <th class="th_type">Type</th>
27716 <th class="th_description">Description</th>
27717 <th class="th_units">Units</th>
27718 <th class="th_range">Range</th>
27719 <th class="th_hal_version">Initial HIDL HAL version</th>
27720 <th class="th_tags">Tags</th>
27735 <tr class="entry" id="dynamic_android.sync.frameNumber">
27736 <td class="entry_name
27738 android.<wbr/>sync.<wbr/>frame<wbr/>Number
27740 <td class="entry_type">
27741 <span class="entry_type_name entry_type_name_enum">int64</span>
27743 <span class="entry_type_visibility"> [ndk_public]</span>
27746 <span class="entry_type_hwlevel">[legacy] </span>
27750 <ul class="entry_type_enum">
27752 <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
27753 <span class="entry_type_enum_value">-1</span>
27754 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
27755 <p>Synchronization is in progress,<wbr/> and reading metadata from this
27756 result may include a mix of data that have taken effect since the
27757 last synchronization time.<wbr/></p>
27758 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
27759 this value will update to the actual frame number frame number
27760 the result is guaranteed to be synchronized to (as long as the
27761 request settings remain constant).<wbr/></p></span>
27764 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
27765 <span class="entry_type_enum_value">-2</span>
27766 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
27767 <p>The result may have already converged,<wbr/> or it may be in
27768 progress.<wbr/> Reading from this result may include some mix
27769 of settings from past requests.<wbr/></p>
27770 <p>After a settings change,<wbr/> the new settings will eventually all
27771 take effect for the output buffers and results.<wbr/> However,<wbr/> this
27772 value will not change when that happens.<wbr/> Altering settings
27773 rapidly may provide outcomes using mixes of settings from recent
27774 requests.<wbr/></p>
27775 <p>This value is intended primarily for backwards compatibility with
27776 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
27780 </td> <!-- entry_type -->
27782 <td class="entry_description">
27783 <p>The frame number corresponding to the last request
27784 with which the output result (metadata + buffers) has been fully
27785 synchronized.<wbr/></p>
27788 <td class="entry_units">
27791 <td class="entry_range">
27792 <p>Either a non-negative value corresponding to a
27793 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
27796 <td class="entry_hal_version">
27800 <td class="entry_tags">
27801 <ul class="entry_tags">
27802 <li><a href="#tag_V1">V1</a></li>
27807 <tr class="entries_header">
27808 <th class="th_details" colspan="6">Details</th>
27810 <tr class="entry_cont">
27811 <td class="entry_details" colspan="6">
27812 <p>When a request is submitted to the camera device,<wbr/> there is usually a
27813 delay of several frames before the controls get applied.<wbr/> A camera
27814 device may either choose to account for this delay by implementing a
27815 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
27816 it may start streaming control changes that span over several frame
27817 boundaries.<wbr/></p>
27818 <p>In the latter case,<wbr/> whenever a request's settings change relative to
27819 the previous submitted request,<wbr/> the full set of changes may take
27820 multiple frame durations to fully take effect.<wbr/> Some settings may
27821 take effect sooner (in less frame durations) than others.<wbr/></p>
27822 <p>While a set of control changes are being propagated,<wbr/> this value
27823 will be CONVERGING.<wbr/></p>
27824 <p>Once it is fully known that a set of control changes have been
27825 finished propagating,<wbr/> and the resulting updated control settings
27826 have been read back by the camera device,<wbr/> this value will be set
27827 to a non-negative frame number (corresponding to the request to
27828 which the results have synchronized to).<wbr/></p>
27829 <p>Older camera device implementations may not have a way to detect
27830 when all camera controls have been applied,<wbr/> and will always set this
27831 value to UNKNOWN.<wbr/></p>
27832 <p>FULL capability devices will always have this value set to the
27833 frame number of the request corresponding to this result.<wbr/></p>
27834 <p><em>Further details</em>:</p>
27836 <li>Whenever a request differs from the last request,<wbr/> any future
27837 results not yet returned may have this value set to CONVERGING (this
27838 could include any in-progress captures not yet returned by the camera
27839 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
27840 <li>Submitting a series of multiple requests that differ from the
27841 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
27842 moves the new synchronization frame to the last non-repeating
27843 request (using the smallest frame number from the contiguous list of
27844 repeating requests).<wbr/></li>
27845 <li>Submitting the same request repeatedly will not change this value
27846 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
27847 <li>When this value changes to non-negative,<wbr/> that means that all of the
27848 metadata controls from the request have been applied,<wbr/> all of the
27849 metadata controls from the camera device have been read to the
27850 updated values (into the result),<wbr/> and all of the graphics buffers
27851 corresponding to this result are also synchronized to the request.<wbr/></li>
27853 <p><em>Pipeline considerations</em>:</p>
27854 <p>Submitting a request with updated controls relative to the previously
27855 submitted requests may also invalidate the synchronization state
27856 of all the results corresponding to currently in-flight requests.<wbr/></p>
27857 <p>In other words,<wbr/> results for this current request and up to
27858 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
27859 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
27863 <tr class="entries_header">
27864 <th class="th_details" colspan="6">HAL Implementation Details</th>
27866 <tr class="entry_cont">
27867 <td class="entry_details" colspan="6">
27868 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
27869 is also UNKNOWN.<wbr/></p>
27870 <p>FULL capability devices should simply set this value to the
27871 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
27875 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27876 <!-- end of entry -->
27880 <!-- end of kind -->
27882 <tr><td colspan="7" class="kind">static</td></tr>
27884 <thead class="entries_header">
27886 <th class="th_name">Property Name</th>
27887 <th class="th_type">Type</th>
27888 <th class="th_description">Description</th>
27889 <th class="th_units">Units</th>
27890 <th class="th_range">Range</th>
27891 <th class="th_hal_version">Initial HIDL HAL version</th>
27892 <th class="th_tags">Tags</th>
27907 <tr class="entry" id="static_android.sync.maxLatency">
27908 <td class="entry_name
27910 android.<wbr/>sync.<wbr/>max<wbr/>Latency
27912 <td class="entry_type">
27913 <span class="entry_type_name entry_type_name_enum">int32</span>
27915 <span class="entry_type_visibility"> [public]</span>
27918 <span class="entry_type_hwlevel">[legacy] </span>
27922 <ul class="entry_type_enum">
27924 <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
27925 <span class="entry_type_enum_value">0</span>
27926 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
27927 <p>Changing controls over multiple requests one after another will
27928 produce results that have those controls applied atomically
27929 each frame.<wbr/></p>
27930 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
27933 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
27934 <span class="entry_type_enum_value">-1</span>
27935 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
27936 of the past requests applied to the camera settings.<wbr/></p>
27937 <p>By submitting a series of identical requests,<wbr/> the camera device
27938 will eventually have the camera settings applied,<wbr/> but it is
27939 unknown when that exact point will be.<wbr/></p>
27940 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
27944 </td> <!-- entry_type -->
27946 <td class="entry_description">
27947 <p>The maximum number of frames that can occur after a request
27948 (different than the previous) has been submitted,<wbr/> and before the
27949 result's state becomes synchronized.<wbr/></p>
27952 <td class="entry_units">
27956 <td class="entry_range">
27957 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
27960 <td class="entry_hal_version">
27964 <td class="entry_tags">
27965 <ul class="entry_tags">
27966 <li><a href="#tag_V1">V1</a></li>
27971 <tr class="entries_header">
27972 <th class="th_details" colspan="6">Details</th>
27974 <tr class="entry_cont">
27975 <td class="entry_details" colspan="6">
27976 <p>This defines the maximum distance (in number of metadata results),<wbr/>
27977 between the frame number of the request that has new controls to apply
27978 and the frame number of the result that has all the controls applied.<wbr/></p>
27979 <p>In other words this acts as an upper boundary for how many frames
27980 must occur before the camera device knows for a fact that the new
27981 submitted camera settings have been applied in outgoing frames.<wbr/></p>
27985 <tr class="entries_header">
27986 <th class="th_details" colspan="6">HAL Implementation Details</th>
27988 <tr class="entry_cont">
27989 <td class="entry_details" colspan="6">
27990 <p>For example if maxLatency was 2,<wbr/></p>
27991 <pre><code>initial request = X (repeating)
27997 where requestN has frameNumber N,<wbr/> and the first of the repeating
27998 initial request's has frameNumber F (and F < 1).<wbr/>
28000 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28001 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28002 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28003 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28004 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
28006 where resultN has frameNumber N.<wbr/>
28008 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
28009 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
28010 <code>4 - 2 = 2</code>.<wbr/></p>
28011 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
28012 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
28013 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
28014 <p>LIMITED devices are strongly encouraged to use a non-negative
28015 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
28016 to know when sensor settings have been applied.<wbr/></p>
28020 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28021 <!-- end of entry -->
28025 <!-- end of kind -->
28028 <!-- end of section -->
28029 <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
28032 <tr><td colspan="7" class="kind">controls</td></tr>
28034 <thead class="entries_header">
28036 <th class="th_name">Property Name</th>
28037 <th class="th_type">Type</th>
28038 <th class="th_description">Description</th>
28039 <th class="th_units">Units</th>
28040 <th class="th_range">Range</th>
28041 <th class="th_hal_version">Initial HIDL HAL version</th>
28042 <th class="th_tags">Tags</th>
28057 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
28058 <td class="entry_name
28060 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28062 <td class="entry_type">
28063 <span class="entry_type_name">float</span>
28065 <span class="entry_type_visibility"> [java_public]</span>
28068 <span class="entry_type_hwlevel">[limited] </span>
28073 </td> <!-- entry_type -->
28075 <td class="entry_description">
28076 <p>The amount of exposure time increase factor applied to the original output
28077 frame by the application processing before sending for reprocessing.<wbr/></p>
28080 <td class="entry_units">
28081 Relative exposure time increase factor.<wbr/>
28084 <td class="entry_range">
28085 <p>>= 1.<wbr/>0</p>
28088 <td class="entry_hal_version">
28092 <td class="entry_tags">
28093 <ul class="entry_tags">
28094 <li><a href="#tag_REPROC">REPROC</a></li>
28099 <tr class="entries_header">
28100 <th class="th_details" colspan="6">Details</th>
28102 <tr class="entry_cont">
28103 <td class="entry_details" colspan="6">
28104 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28105 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28106 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28107 output frames to effectively reduce the noise to the same level as a frame that was
28108 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28109 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28110 the camera device is that the amount of noise in the image would be approximately what
28111 would be expected if the original capture parameters had been a sensitivity of
28112 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28113 than S and T respectively.<wbr/> If the captured images were processed by the application
28114 before being sent for reprocessing,<wbr/> then the application may have used image processing
28115 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28116 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28117 control,<wbr/> the application can communicate to the camera device the actual noise level
28118 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28119 device can select appropriate noise reduction and edge enhancement parameters to avoid
28120 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28121 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28122 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28123 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28124 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28125 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28126 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28127 produce the best quality images.<wbr/></p>
28128 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28129 buffer in a way that affects its effective exposure time.<wbr/></p>
28130 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28131 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/>
28132 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28133 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28138 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28139 <!-- end of entry -->
28143 <!-- end of kind -->
28145 <tr><td colspan="7" class="kind">dynamic</td></tr>
28147 <thead class="entries_header">
28149 <th class="th_name">Property Name</th>
28150 <th class="th_type">Type</th>
28151 <th class="th_description">Description</th>
28152 <th class="th_units">Units</th>
28153 <th class="th_range">Range</th>
28154 <th class="th_hal_version">Initial HIDL HAL version</th>
28155 <th class="th_tags">Tags</th>
28170 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
28171 <td class="entry_name
28173 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28175 <td class="entry_type">
28176 <span class="entry_type_name">float</span>
28178 <span class="entry_type_visibility"> [java_public]</span>
28181 <span class="entry_type_hwlevel">[limited] </span>
28186 </td> <!-- entry_type -->
28188 <td class="entry_description">
28189 <p>The amount of exposure time increase factor applied to the original output
28190 frame by the application processing before sending for reprocessing.<wbr/></p>
28193 <td class="entry_units">
28194 Relative exposure time increase factor.<wbr/>
28197 <td class="entry_range">
28198 <p>>= 1.<wbr/>0</p>
28201 <td class="entry_hal_version">
28205 <td class="entry_tags">
28206 <ul class="entry_tags">
28207 <li><a href="#tag_REPROC">REPROC</a></li>
28212 <tr class="entries_header">
28213 <th class="th_details" colspan="6">Details</th>
28215 <tr class="entry_cont">
28216 <td class="entry_details" colspan="6">
28217 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28218 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28219 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28220 output frames to effectively reduce the noise to the same level as a frame that was
28221 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28222 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28223 the camera device is that the amount of noise in the image would be approximately what
28224 would be expected if the original capture parameters had been a sensitivity of
28225 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28226 than S and T respectively.<wbr/> If the captured images were processed by the application
28227 before being sent for reprocessing,<wbr/> then the application may have used image processing
28228 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28229 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28230 control,<wbr/> the application can communicate to the camera device the actual noise level
28231 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28232 device can select appropriate noise reduction and edge enhancement parameters to avoid
28233 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28234 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28235 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28236 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28237 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28238 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28239 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28240 produce the best quality images.<wbr/></p>
28241 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28242 buffer in a way that affects its effective exposure time.<wbr/></p>
28243 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28244 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/>
28245 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28246 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28251 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28252 <!-- end of entry -->
28256 <!-- end of kind -->
28258 <tr><td colspan="7" class="kind">static</td></tr>
28260 <thead class="entries_header">
28262 <th class="th_name">Property Name</th>
28263 <th class="th_type">Type</th>
28264 <th class="th_description">Description</th>
28265 <th class="th_units">Units</th>
28266 <th class="th_range">Range</th>
28267 <th class="th_hal_version">Initial HIDL HAL version</th>
28268 <th class="th_tags">Tags</th>
28283 <tr class="entry" id="static_android.reprocess.maxCaptureStall">
28284 <td class="entry_name
28286 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
28288 <td class="entry_type">
28289 <span class="entry_type_name">int32</span>
28291 <span class="entry_type_visibility"> [java_public]</span>
28294 <span class="entry_type_hwlevel">[limited] </span>
28299 </td> <!-- entry_type -->
28301 <td class="entry_description">
28302 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
28303 reprocess capture request.<wbr/></p>
28306 <td class="entry_units">
28307 Number of frames.<wbr/>
28310 <td class="entry_range">
28314 <td class="entry_hal_version">
28318 <td class="entry_tags">
28319 <ul class="entry_tags">
28320 <li><a href="#tag_REPROC">REPROC</a></li>
28325 <tr class="entries_header">
28326 <th class="th_details" colspan="6">Details</th>
28328 <tr class="entry_cont">
28329 <td class="entry_details" colspan="6">
28330 <p>The key describes the maximal interference that one reprocess (input) request
28331 can introduce to the camera simultaneous streaming of regular (output) capture
28332 requests,<wbr/> including repeating requests.<wbr/></p>
28333 <p>When a reprocessing capture request is submitted while a camera output repeating request
28334 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
28335 pipeline for at least one frame duration so that the camera device is unable to process
28336 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
28337 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
28338 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
28339 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
28340 the worst-case number of frame stall introduced by one reprocess request with any kind of
28341 formats/<wbr/>sizes combination.<wbr/></p>
28342 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
28343 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
28344 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
28345 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
28346 YUV_<wbr/>REPROCESSING).<wbr/></p>
28351 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28352 <!-- end of entry -->
28356 <!-- end of kind -->
28359 <!-- end of section -->
28360 <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
28363 <tr><td colspan="7" class="kind">static</td></tr>
28365 <thead class="entries_header">
28367 <th class="th_name">Property Name</th>
28368 <th class="th_type">Type</th>
28369 <th class="th_description">Description</th>
28370 <th class="th_units">Units</th>
28371 <th class="th_range">Range</th>
28372 <th class="th_hal_version">Initial HIDL HAL version</th>
28373 <th class="th_tags">Tags</th>
28388 <tr class="entry" id="static_android.depth.maxDepthSamples">
28389 <td class="entry_name
28391 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
28393 <td class="entry_type">
28394 <span class="entry_type_name">int32</span>
28396 <span class="entry_type_visibility"> [system]</span>
28399 <span class="entry_type_hwlevel">[limited] </span>
28404 </td> <!-- entry_type -->
28406 <td class="entry_description">
28407 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
28410 <td class="entry_units">
28413 <td class="entry_range">
28416 <td class="entry_hal_version">
28420 <td class="entry_tags">
28421 <ul class="entry_tags">
28422 <li><a href="#tag_DEPTH">DEPTH</a></li>
28427 <tr class="entries_header">
28428 <th class="th_details" colspan="6">Details</th>
28430 <tr class="entry_cont">
28431 <td class="entry_details" colspan="6">
28432 <p>If a camera device supports outputting depth range data in the form of a depth point
28433 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
28434 number of points an output buffer may contain.<wbr/></p>
28435 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
28436 If output in the depth point cloud format is not supported,<wbr/> this entry will
28437 not be defined.<wbr/></p>
28442 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28443 <!-- end of entry -->
28446 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
28447 <td class="entry_name
28449 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
28451 <td class="entry_type">
28452 <span class="entry_type_name entry_type_name_enum">int32</span>
28453 <span class="entry_type_container">x</span>
28455 <span class="entry_type_array">
28458 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
28461 <span class="entry_type_hwlevel">[limited] </span>
28465 <ul class="entry_type_enum">
28467 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
28470 <span class="entry_type_enum_name">INPUT (v3.2)</span>
28474 </td> <!-- entry_type -->
28476 <td class="entry_description">
28477 <p>The available depth dataspace stream
28478 configurations that this camera device supports
28479 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
28482 <td class="entry_units">
28485 <td class="entry_range">
28488 <td class="entry_hal_version">
28492 <td class="entry_tags">
28493 <ul class="entry_tags">
28494 <li><a href="#tag_DEPTH">DEPTH</a></li>
28499 <tr class="entries_header">
28500 <th class="th_details" colspan="6">Details</th>
28502 <tr class="entry_cont">
28503 <td class="entry_details" colspan="6">
28504 <p>These are output stream configurations for use with
28505 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
28506 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
28507 <p>Only devices that support depth output for at least
28508 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
28509 this entry.<wbr/></p>
28510 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
28511 sparse depth point cloud must report a single entry for
28512 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
28513 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
28514 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
28519 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28520 <!-- end of entry -->
28523 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
28524 <td class="entry_name
28526 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
28528 <td class="entry_type">
28529 <span class="entry_type_name">int64</span>
28530 <span class="entry_type_container">x</span>
28532 <span class="entry_type_array">
28535 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
28538 <span class="entry_type_hwlevel">[limited] </span>
28543 </td> <!-- entry_type -->
28545 <td class="entry_description">
28546 <p>This lists the minimum frame duration for each
28547 format/<wbr/>size combination for depth output formats.<wbr/></p>
28550 <td class="entry_units">
28551 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
28554 <td class="entry_range">
28557 <td class="entry_hal_version">
28561 <td class="entry_tags">
28562 <ul class="entry_tags">
28563 <li><a href="#tag_DEPTH">DEPTH</a></li>
28568 <tr class="entries_header">
28569 <th class="th_details" colspan="6">Details</th>
28571 <tr class="entry_cont">
28572 <td class="entry_details" colspan="6">
28573 <p>This should correspond to the frame duration when only that
28574 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
28575 set to either OFF or FAST.<wbr/></p>
28576 <p>When multiple streams are used in a request,<wbr/> the minimum frame
28577 duration will be max(individual stream min durations).<wbr/></p>
28578 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
28579 is the same regardless of whether the stream is input or output.<wbr/></p>
28580 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
28581 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
28582 calculating the max frame rate.<wbr/></p>
28587 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28588 <!-- end of entry -->
28591 <tr class="entry" id="static_android.depth.availableDepthStallDurations">
28592 <td class="entry_name
28594 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
28596 <td class="entry_type">
28597 <span class="entry_type_name">int64</span>
28598 <span class="entry_type_container">x</span>
28600 <span class="entry_type_array">
28603 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
28606 <span class="entry_type_hwlevel">[limited] </span>
28611 </td> <!-- entry_type -->
28613 <td class="entry_description">
28614 <p>This lists the maximum stall duration for each
28615 output format/<wbr/>size combination for depth streams.<wbr/></p>
28618 <td class="entry_units">
28619 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
28622 <td class="entry_range">
28625 <td class="entry_hal_version">
28629 <td class="entry_tags">
28630 <ul class="entry_tags">
28631 <li><a href="#tag_DEPTH">DEPTH</a></li>
28636 <tr class="entries_header">
28637 <th class="th_details" colspan="6">Details</th>
28639 <tr class="entry_cont">
28640 <td class="entry_details" colspan="6">
28641 <p>A stall duration is how much extra time would get added
28642 to the normal minimum frame duration for a repeating request
28643 that has streams with non-zero stall.<wbr/></p>
28644 <p>This functions similarly to
28645 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
28647 <p>All depth output stream formats may have a nonzero stall
28648 duration.<wbr/></p>
28653 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28654 <!-- end of entry -->
28657 <tr class="entry" id="static_android.depth.depthIsExclusive">
28658 <td class="entry_name
28660 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
28662 <td class="entry_type">
28663 <span class="entry_type_name entry_type_name_enum">byte</span>
28665 <span class="entry_type_visibility"> [public as boolean]</span>
28668 <span class="entry_type_hwlevel">[limited] </span>
28672 <ul class="entry_type_enum">
28674 <span class="entry_type_enum_name">FALSE (v3.2)</span>
28677 <span class="entry_type_enum_name">TRUE (v3.2)</span>
28681 </td> <!-- entry_type -->
28683 <td class="entry_description">
28684 <p>Indicates whether a capture request may target both a
28685 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
28686 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
28689 <td class="entry_units">
28692 <td class="entry_range">
28695 <td class="entry_hal_version">
28699 <td class="entry_tags">
28703 <tr class="entries_header">
28704 <th class="th_details" colspan="6">Details</th>
28706 <tr class="entry_cont">
28707 <td class="entry_details" colspan="6">
28708 <p>If TRUE,<wbr/> including both depth and color outputs in a single
28709 capture request is not supported.<wbr/> An application must interleave color
28710 and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types
28711 of output.<wbr/></p>
28712 <p>Typically,<wbr/> this restriction exists on camera devices that
28713 need to emit a specific pattern or wavelength of light to
28714 measure depth values,<wbr/> which causes the color image to be
28715 corrupted during depth measurement.<wbr/></p>
28720 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28721 <!-- end of entry -->
28725 <!-- end of kind -->
28728 <!-- end of section -->
28729 <!-- </namespace> -->
28732 <div class="tags" id="tag_index">
28735 <li id="tag_BC">BC -
28736 Needed for backwards compatibility with old Java API
28738 <ul class="tags_entries">
28739 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
28740 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
28741 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
28742 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
28743 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
28744 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
28745 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
28746 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
28747 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
28748 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
28749 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
28750 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
28751 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
28752 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
28753 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
28754 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
28755 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
28756 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
28757 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
28758 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
28759 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
28760 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
28761 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
28762 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
28763 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
28764 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
28765 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
28766 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
28767 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
28768 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
28769 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
28770 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
28771 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
28772 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
28773 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
28774 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
28775 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
28776 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
28777 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
28778 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
28779 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
28780 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
28781 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
28782 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
28783 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
28784 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
28785 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
28786 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
28787 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
28788 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
28789 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
28790 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
28791 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
28792 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
28793 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
28794 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
28795 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
28796 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
28797 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
28798 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
28799 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
28800 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
28801 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
28802 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
28803 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
28804 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
28805 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
28807 </li> <!-- tag_BC -->
28808 <li id="tag_V1">V1 -
28809 New features for first camera 2 release (API1)
28811 <ul class="tags_entries">
28812 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
28813 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
28814 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
28815 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
28816 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
28817 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
28818 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
28819 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
28820 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
28821 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
28822 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
28823 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
28824 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
28825 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
28826 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
28827 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
28828 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
28829 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
28830 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
28831 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
28832 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
28833 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
28834 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
28835 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
28836 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
28837 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
28838 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
28839 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
28840 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
28841 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
28842 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
28843 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
28844 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
28845 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
28846 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
28847 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
28848 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
28849 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
28850 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
28851 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
28852 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
28853 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
28854 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
28855 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
28856 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
28858 </li> <!-- tag_V1 -->
28859 <li id="tag_RAW">RAW -
28860 Needed for useful RAW image processing and DNG file support
28862 <ul class="tags_entries">
28863 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
28864 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
28865 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
28866 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
28867 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
28868 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
28869 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
28870 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
28871 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
28872 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
28873 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
28874 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
28875 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
28876 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
28877 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
28878 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
28879 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
28880 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
28881 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
28882 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
28883 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
28884 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
28885 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
28886 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
28887 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
28888 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
28889 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
28890 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
28891 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
28893 </li> <!-- tag_RAW -->
28894 <li id="tag_HAL2">HAL2 -
28895 Entry is only used by camera device legacy HAL 2.x
28897 <ul class="tags_entries">
28898 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
28899 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
28900 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
28901 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
28902 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
28904 </li> <!-- tag_HAL2 -->
28905 <li id="tag_FULL">FULL -
28906 Entry is required for full hardware level devices, and optional for other hardware levels
28908 <ul class="tags_entries">
28909 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
28911 </li> <!-- tag_FULL -->
28912 <li id="tag_DEPTH">DEPTH -
28913 Entry is required for the depth capability.
28915 <ul class="tags_entries">
28916 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
28917 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
28918 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
28919 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
28920 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
28921 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
28922 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
28923 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
28925 </li> <!-- tag_DEPTH -->
28926 <li id="tag_REPROC">REPROC -
28927 Entry is required for the YUV or PRIVATE reprocessing capability.
28929 <ul class="tags_entries">
28930 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
28931 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
28932 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
28933 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
28934 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
28935 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
28936 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
28937 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
28938 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
28939 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
28941 </li> <!-- tag_REPROC -->
28942 <li id="tag_FUTURE">FUTURE -
28943 Entry is under-specified and is not required for now. This is for book-keeping purpose,
28944 do not implement or use it, it may be revised for future.
28946 <ul class="tags_entries">
28947 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
28948 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
28949 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
28950 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
28951 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
28952 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
28953 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
28954 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
28955 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
28956 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
28957 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
28958 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
28959 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
28960 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
28961 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
28962 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
28963 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
28964 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
28965 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
28966 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
28967 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
28969 </li> <!-- tag_FUTURE -->
28973 [ <a href="#">top</a> ]